From a91334264b49368e98b293115debdbb807ddbcd9 Mon Sep 17 00:00:00 2001 From: apanizo Date: Thu, 26 Apr 2018 08:00:40 +0200 Subject: [PATCH 001/138] WA-238 updating package.json with project name and next version --- package.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 5edf549978..ee4c372957 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { - "name": "gnosis-team-safe", - "version": "1.0.0", + "name": "safe-react", + "version": "0.3.2", "description": "Allowing crypto users manage funds in a safer way", "directories": { "test": "test" @@ -17,14 +17,14 @@ }, "repository": { "type": "git", - "url": "https://github.com/gnosis/gnosis-team-safe" + "url": "https://github.com/gnosis/safe-react" }, "author": "Gnosis Team", "license": "MIT", "bugs": { - "url": "https://github.com/gnosis/gnosis-team-safe/issues" + "url": "https://github.com/gnosis/safe-react/issues" }, - "homepage": "https://github.com/gnosis/gnosis-team-safe#readme", + "homepage": "https://github.com/gnosis/safe-react#readme", "pre-commit": [ "precommit" ], From 98204506347e887e616066b1bf785c725e26ab63 Mon Sep 17 00:00:00 2001 From: apanizo Date: Thu, 26 Apr 2018 15:06:45 +0200 Subject: [PATCH 002/138] WA-238 Add Balance List component --- src/routes/safe/component/Safe/Balance.jsx | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 src/routes/safe/component/Safe/Balance.jsx diff --git a/src/routes/safe/component/Safe/Balance.jsx b/src/routes/safe/component/Safe/Balance.jsx new file mode 100644 index 0000000000..95aeef3f24 --- /dev/null +++ b/src/routes/safe/component/Safe/Balance.jsx @@ -0,0 +1,20 @@ +// @flow +import * as React from 'react' +import { ListItem, ListItemText } from 'material-ui/List' +import Avatar from 'material-ui/Avatar' +import AccountBalance from 'material-ui-icons/AccountBalance' + +type Props = { + balance: string, +} + +const Balance = ({ balance }: Props) => ( + + + + + + +) + +export default Balance From 9904e1b12e833e720e813e137c6a0bb232f886d0 Mon Sep 17 00:00:00 2001 From: apanizo Date: Thu, 26 Apr 2018 15:07:16 +0200 Subject: [PATCH 003/138] WA-238 Add recompose library --- package.json | 3 ++- yarn.lock | 15 +++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index ee4c372957..8055814f8a 100644 --- a/package.json +++ b/package.json @@ -104,7 +104,8 @@ "material-ui-icons": "^1.0.0-beta.35", "react-final-form": "^3.1.2", "react-loadable": "^5.3.1", - "react-router-dom": "^4.2.2" + "react-router-dom": "^4.2.2", + "recompose": "^0.27.0" }, "jest": { "verbose": true, diff --git a/yarn.lock b/yarn.lock index 0884500b88..58b044c3f3 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9249,6 +9249,10 @@ react-lifecycles-compat@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-1.0.2.tgz#551d8b1d156346e5fcf30ffac9b32ce3f78b8850" +react-lifecycles-compat@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.2.tgz#7279047275bd727a912e25f734c0559527e84eff" + react-loadable@^5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/react-loadable/-/react-loadable-5.3.1.tgz#9699e9a08fed49bacd69caaa282034b62a76bcdd" @@ -9559,6 +9563,17 @@ recompose@^0.26.0: hoist-non-react-statics "^2.3.1" symbol-observable "^1.0.4" +recompose@^0.27.0: + version "0.27.0" + resolved "https://registry.yarnpkg.com/recompose/-/recompose-0.27.0.tgz#8230ebd651bf1159097006f79083fe224b1501cf" + dependencies: + babel-runtime "^6.26.0" + change-emitter "^0.1.2" + fbjs "^0.8.1" + hoist-non-react-statics "^2.3.1" + react-lifecycles-compat "^3.0.2" + symbol-observable "^1.0.4" + recursive-readdir@2.2.1: version "2.2.1" resolved "https://registry.yarnpkg.com/recursive-readdir/-/recursive-readdir-2.2.1.tgz#90ef231d0778c5ce093c9a48d74e5c5422d13a99" From b7d4944b0102311ecbbe46078aef46c3d2ad9730 Mon Sep 17 00:00:00 2001 From: apanizo Date: Thu, 26 Apr 2018 15:11:03 +0200 Subject: [PATCH 004/138] WA-238 Create openHoc component using withStateHandlers --- src/components/hoc/OpenHoc.jsx | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 src/components/hoc/OpenHoc.jsx diff --git a/src/components/hoc/OpenHoc.jsx b/src/components/hoc/OpenHoc.jsx new file mode 100644 index 0000000000..1491c7bf47 --- /dev/null +++ b/src/components/hoc/OpenHoc.jsx @@ -0,0 +1,12 @@ +// @flow +import { withStateHandlers } from 'recompose' + +export type Open = { + open: boolean, + toggle: () => void, +} + +export default withStateHandlers( + () => ({ open: false }), + { toggle: ({ open }) => () => ({ open: !open }) }, +) From 64c03415398949bc49c3fa7f3fb0d29ca48c9086 Mon Sep 17 00:00:00 2001 From: apanizo Date: Thu, 26 Apr 2018 15:17:21 +0200 Subject: [PATCH 005/138] WA-238 Adding WithStyles type in theme/mui.js --- src/theme/mui.js | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/theme/mui.js b/src/theme/mui.js index cd9d9ea307..486d342251 100644 --- a/src/theme/mui.js +++ b/src/theme/mui.js @@ -1,7 +1,12 @@ -import red from 'material-ui/colors/red'; +// @flow +import red from 'material-ui/colors/red' import { createMuiTheme } from 'material-ui/styles' import { primary, secondary } from './variables' +export type WithStyles = { + classes: Object, +} + const palette = { primary: { main: primary, @@ -18,7 +23,7 @@ const palette = { // see https://github.com/mui-org/material-ui/blob/v1-beta/src/styles/createMuiTheme.js export default createMuiTheme({ typography: { - fontFamily: 'Montserrat,sans-serif' - }, + fontFamily: 'Montserrat,sans-serif', + }, palette, }) From ee23a77e0866a8b36d341894c1af7714d7197d6c Mon Sep 17 00:00:00 2001 From: apanizo Date: Thu, 26 Apr 2018 15:24:08 +0200 Subject: [PATCH 006/138] WA-238 Owners ListItem component of Safe --- src/routes/safe/component/Safe/Owners.jsx | 68 +++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 src/routes/safe/component/Safe/Owners.jsx diff --git a/src/routes/safe/component/Safe/Owners.jsx b/src/routes/safe/component/Safe/Owners.jsx new file mode 100644 index 0000000000..f2a2294654 --- /dev/null +++ b/src/routes/safe/component/Safe/Owners.jsx @@ -0,0 +1,68 @@ +// @flow +import * as React from 'react' +import openHoc, { type Open } from '~/components/hoc/OpenHoc' +import { withStyles } from 'material-ui/styles' +import Collapse from 'material-ui/transitions/Collapse' +import List, { ListItem, ListItemIcon, ListItemText } from 'material-ui/List' +import Avatar from 'material-ui/Avatar' +import Group from 'material-ui-icons/Group' +import Person from 'material-ui-icons/Person' +import ExpandLess from 'material-ui-icons/ExpandLess' +import ExpandMore from 'material-ui-icons/ExpandMore' +import { type OwnerProps } from '~/routes/safe/store/model/owner' +import { type WithStyles } from '~/theme/mui' + +const styles = { + nested: { + paddingLeft: '40px', + }, + itemTextSecondary: { + textOverflow: 'ellipsis', + overflow: 'hidden', + }, +} + +type Props = Open & WithStyles & { + owners: List, +} + +const Owners = openHoc(({ + open, toggle, owners, classes, +}: Props) => { + const itemTextClasses = { + secondary: classes.itemTextSecondary, + } + + return ( + + + + + + + + {open ? : } + + + + + {owners.map(owner => ( + + + + + + + ))} + + + + ) +}) + +export default withStyles(styles)(Owners) From 0d7f52ace800df98dbe06416fd417c8accc100f3 Mon Sep 17 00:00:00 2001 From: apanizo Date: Thu, 26 Apr 2018 15:31:25 +0200 Subject: [PATCH 007/138] WA-238 Confirmations ListItem component for Safe --- .../safe/component/Safe/Confirmations.jsx | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 src/routes/safe/component/Safe/Confirmations.jsx diff --git a/src/routes/safe/component/Safe/Confirmations.jsx b/src/routes/safe/component/Safe/Confirmations.jsx new file mode 100644 index 0000000000..5838f6c07d --- /dev/null +++ b/src/routes/safe/component/Safe/Confirmations.jsx @@ -0,0 +1,20 @@ +// @flow +import * as React from 'react' +import { ListItem, ListItemText } from 'material-ui/List' +import Avatar from 'material-ui/Avatar' +import DoneAll from 'material-ui-icons/DoneAll' + +type Props = { + confirmations: number, +} + +const Confirmations = ({ confirmations }: Props) => ( + + + + + + +) + +export default Confirmations From 35788d9bafc73d33083f5b921337897070c2f67d Mon Sep 17 00:00:00 2001 From: apanizo Date: Thu, 26 Apr 2018 15:36:05 +0200 Subject: [PATCH 008/138] WA-238 Address ListItem component for Safe --- src/routes/safe/component/Safe/Address.jsx | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 src/routes/safe/component/Safe/Address.jsx diff --git a/src/routes/safe/component/Safe/Address.jsx b/src/routes/safe/component/Safe/Address.jsx new file mode 100644 index 0000000000..7bd3d890fc --- /dev/null +++ b/src/routes/safe/component/Safe/Address.jsx @@ -0,0 +1,20 @@ +// @flow +import * as React from 'react' +import { ListItem, ListItemText } from 'material-ui/List' +import Avatar from 'material-ui/Avatar' +import Mail from 'material-ui-icons/Mail' + +type Props = { + address: string, +} + +const Address = ({ address }: Props) => ( + + + + + + +) + +export default Address From 82c2522046e1c7d431f5b60494507facc9af7b56 Mon Sep 17 00:00:00 2001 From: apanizo Date: Thu, 26 Apr 2018 15:51:44 +0200 Subject: [PATCH 009/138] WA-238 created GnoListItemText with cut ellipsis prop --- src/components/List/ListItemText/index.jsx | 38 ++++++++++ src/routes/safe/component/Safe/Address.jsx | 5 +- .../safe/component/Safe/Confirmations.jsx | 9 ++- src/routes/safe/component/Safe/Owners.jsx | 72 ++++++++----------- 4 files changed, 79 insertions(+), 45 deletions(-) create mode 100644 src/components/List/ListItemText/index.jsx diff --git a/src/components/List/ListItemText/index.jsx b/src/components/List/ListItemText/index.jsx new file mode 100644 index 0000000000..0ee309ab12 --- /dev/null +++ b/src/components/List/ListItemText/index.jsx @@ -0,0 +1,38 @@ +// @flow +import * as React from 'react' +import { ListItemText } from 'material-ui/List' +import { withStyles } from 'material-ui/styles' +import { type WithStyles } from '~/theme/mui' + +type Props = WithStyles & { + primary: string, + secondary: string, + cut?: boolean, +} + +const styles = { + itemTextSecondary: { + textOverflow: 'ellipsis', + overflow: 'hidden', + whiteSpace: 'nowrap', + }, +} + +const GnoListItemText = ({ + primary, secondary, classes, cut = false, +}: Props) => { + const cutStyle = cut ? { + secondary: classes.itemTextSecondary, + } : undefined + + return ( + + ) +} + +export default withStyles(styles)(GnoListItemText) diff --git a/src/routes/safe/component/Safe/Address.jsx b/src/routes/safe/component/Safe/Address.jsx index 7bd3d890fc..3a21532e01 100644 --- a/src/routes/safe/component/Safe/Address.jsx +++ b/src/routes/safe/component/Safe/Address.jsx @@ -1,8 +1,9 @@ // @flow import * as React from 'react' -import { ListItem, ListItemText } from 'material-ui/List' +import { ListItem } from 'material-ui/List' import Avatar from 'material-ui/Avatar' import Mail from 'material-ui-icons/Mail' +import ListItemText from '~/components/List/ListItemText' type Props = { address: string, @@ -13,7 +14,7 @@ const Address = ({ address }: Props) => ( - + ) diff --git a/src/routes/safe/component/Safe/Confirmations.jsx b/src/routes/safe/component/Safe/Confirmations.jsx index 5838f6c07d..91c192d928 100644 --- a/src/routes/safe/component/Safe/Confirmations.jsx +++ b/src/routes/safe/component/Safe/Confirmations.jsx @@ -1,8 +1,9 @@ // @flow import * as React from 'react' -import { ListItem, ListItemText } from 'material-ui/List' +import { ListItem } from 'material-ui/List' import Avatar from 'material-ui/Avatar' import DoneAll from 'material-ui-icons/DoneAll' +import ListItemText from '~/components/List/ListItemText' type Props = { confirmations: number, @@ -13,7 +14,11 @@ const Confirmations = ({ confirmations }: Props) => ( - + ) diff --git a/src/routes/safe/component/Safe/Owners.jsx b/src/routes/safe/component/Safe/Owners.jsx index f2a2294654..e552beb1d2 100644 --- a/src/routes/safe/component/Safe/Owners.jsx +++ b/src/routes/safe/component/Safe/Owners.jsx @@ -3,7 +3,8 @@ import * as React from 'react' import openHoc, { type Open } from '~/components/hoc/OpenHoc' import { withStyles } from 'material-ui/styles' import Collapse from 'material-ui/transitions/Collapse' -import List, { ListItem, ListItemIcon, ListItemText } from 'material-ui/List' +import ListItemText from '~/components/List/ListItemText' +import List, { ListItem, ListItemIcon } from 'material-ui/List' import Avatar from 'material-ui/Avatar' import Group from 'material-ui-icons/Group' import Person from 'material-ui-icons/Person' @@ -16,10 +17,6 @@ const styles = { nested: { paddingLeft: '40px', }, - itemTextSecondary: { - textOverflow: 'ellipsis', - overflow: 'hidden', - }, } type Props = Open & WithStyles & { @@ -28,41 +25,34 @@ type Props = Open & WithStyles & { const Owners = openHoc(({ open, toggle, owners, classes, -}: Props) => { - const itemTextClasses = { - secondary: classes.itemTextSecondary, - } - - return ( - - - - - - - - {open ? : } - - - - - {owners.map(owner => ( - - - - - - - ))} - - - - ) -}) +}: Props) => ( + + + + + + + + {open ? : } + + + + + {owners.map(owner => ( + + + + + + + ))} + + + +)) export default withStyles(styles)(Owners) From 4b39ebf98778f455e8673a51f1be5a4e6f0cd33e Mon Sep 17 00:00:00 2001 From: apanizo Date: Thu, 26 Apr 2018 17:52:39 +0200 Subject: [PATCH 010/138] WA-238 Refactor Safe component leaving space for user interaction --- src/components/layout/Block/index.jsx | 6 +- src/components/layout/Block/index.scss | 13 ++-- src/components/layout/Col/index.jsx | 4 +- src/components/layout/Col/index.scss | 20 ++++-- src/routes/safe/component/Safe.jsx | 86 ------------------------ src/routes/safe/component/Safe/index.jsx | 58 ++++++++++++++++ 6 files changed, 87 insertions(+), 100 deletions(-) delete mode 100644 src/routes/safe/component/Safe.jsx create mode 100644 src/routes/safe/component/Safe/index.jsx diff --git a/src/components/layout/Block/index.jsx b/src/components/layout/Block/index.jsx index 04e080c301..a92dd06061 100644 --- a/src/components/layout/Block/index.jsx +++ b/src/components/layout/Block/index.jsx @@ -11,7 +11,7 @@ type Size = 'sm' | 'md' | 'lg' | 'xl' type Props = { margin?: Size, padding?: Size, - center?: boolean, + align?: 'center' | 'right', children: React$Node, className?: string, } @@ -19,12 +19,12 @@ type Props = { class Block extends PureComponent { render() { const { - margin, padding, center, children, className, ...props + margin, padding, align, children, className, ...props } = this.props const paddingStyle = padding ? capitalize(padding, 'padding') : undefined return ( -
+
{ children }
) diff --git a/src/components/layout/Block/index.scss b/src/components/layout/Block/index.scss index b8e523a094..62a278cbb2 100644 --- a/src/components/layout/Block/index.scss +++ b/src/components/layout/Block/index.scss @@ -1,5 +1,4 @@ .block { - display: inline-block; width: 100%; overflow: hidden; } @@ -37,7 +36,13 @@ } .center { - display: flex; - align-items: center; - justify-content: center; + display: flex; + align-items: center; + justify-content: center; +} + +.right { + display: flex; + align-items: center; + justify-content: flex-end; } \ No newline at end of file diff --git a/src/components/layout/Col/index.jsx b/src/components/layout/Col/index.jsx index 5260e678ef..1e8137c5e0 100644 --- a/src/components/layout/Col/index.jsx +++ b/src/components/layout/Col/index.jsx @@ -16,6 +16,7 @@ type Props = { around?: 'xs' | 'sm' | 'md' | 'lg', between?: 'xs' | 'sm' | 'md' | 'lg', margin?: 'sm' | 'md' | 'lg' | 'xl', + layout?: 'inherit' | 'block', xs?: number | boolean, sm?: number | boolean, md?: number | boolean, @@ -29,7 +30,7 @@ type Props = { } const Col = ({ - children, margin, + children, margin, layout = 'inherit', xs, sm, md, lg, start, center, end, top, middle, bottom, around, between, xsOffset, smOffset, mdOffset, lgOffset, @@ -54,6 +55,7 @@ const Col = ({ smOffset ? capitalize(smOffset, 'smOffset') : undefined, mdOffset ? capitalize(mdOffset, 'mdOffset') : undefined, lgOffset ? capitalize(lgOffset, 'lgOffset') : undefined, + layout, props.className, ) diff --git a/src/components/layout/Col/index.scss b/src/components/layout/Col/index.scss index dfe5e16473..91fb43d600 100644 --- a/src/components/layout/Col/index.scss +++ b/src/components/layout/Col/index.scss @@ -1,7 +1,15 @@ .col { flex: 1 1 auto; - display: flex; align-items: center; + display: inherit; +} + +.inherit { + display: inherit; +} + +.block { + display: block; } .marginSm { @@ -128,11 +136,11 @@ @define-mixin autoWidth $size { .$(size) { - -ms-flex-positive: 1; - flex-grow: 1; - -ms-flex-preferred-size: 0; - flex-basis: 0; - max-width: 100%; + -ms-flex-positive: 1; + flex-grow: 1; + -ms-flex-preferred-size: 0; + flex-basis: 0; + max-width: 100%; } } diff --git a/src/routes/safe/component/Safe.jsx b/src/routes/safe/component/Safe.jsx deleted file mode 100644 index 69b86137f0..0000000000 --- a/src/routes/safe/component/Safe.jsx +++ /dev/null @@ -1,86 +0,0 @@ -// @flow -import * as React from 'react' -import Block from '~/components/layout/Block' -import Bold from '~/components/layout/Bold' -import Col from '~/components/layout/Col' -import Paragraph from '~/components/layout/Paragraph' -import Row from '~/components/layout/Row' -import Table, { TableBody, TableCell, TableHead, TableRow } from '~/components/layout/Table' -import { type Safe } from '~/routes/safe/store/model/safe' - -type SafeProps = { - safe: Safe, - balance: string, -} - -const GnoSafe = ({ safe, balance }: SafeProps) => ( - - - - - {safe.name.toUpperCase()} - - - - - - Balance - - - - - - {balance} - ETH - - - - - - Address - - - - - - {safe.address} - - - - - - Number of required confirmations per transaction - - - - - {safe.get('confirmations')} - - - - - Owners - - - - - - - Name - Adress - - - - {safe.owners.map(owner => ( - - {owner.name} - {owner.address} - - ))} - -
-
- - -) - -export default GnoSafe diff --git a/src/routes/safe/component/Safe/index.jsx b/src/routes/safe/component/Safe/index.jsx new file mode 100644 index 0000000000..40a1c9c63d --- /dev/null +++ b/src/routes/safe/component/Safe/index.jsx @@ -0,0 +1,58 @@ +// @flow +import * as React from 'react' +import Block from '~/components/layout/Block' +import Col from '~/components/layout/Col' +import Bold from '~/components/layout/Bold' +import Paragraph from '~/components/layout/Paragraph' +import Row from '~/components/layout/Row' +import { type Safe } from '~/routes/safe/store/model/safe' +import List from 'material-ui/List' + +import Address from './Address' +import Balance from './Balance' +import Owners from './Owners' +import Confirmations from './Confirmations' + +type SafeProps = { + safe: Safe, + balance: string, +} + +const listStyle = { + width: '100%', +} + +class GnoSafe extends React.PureComponent { + render() { + const { safe, balance } = this.props + + return ( + + + + + + +
+ + + + + + {safe.name.toUpperCase()} + + + + Extra info will be placed here + + + + ) + } +} + +/* + + {safe.name.toUpperCase()} +*/ +export default GnoSafe From 854952f126c08d31eabb2a928389355a0b4917d1 Mon Sep 17 00:00:00 2001 From: apanizo Date: Fri, 27 Apr 2018 12:48:03 +0200 Subject: [PATCH 011/138] WA-238 Including Daily Limit in form --- .../components/SafeForm/DailyLimit/index.jsx | 22 +++++++++++++++++++ src/routes/open/components/SafeForm/index.jsx | 2 ++ src/routes/open/components/fields.js | 1 + 3 files changed, 25 insertions(+) create mode 100644 src/routes/open/components/SafeForm/DailyLimit/index.jsx diff --git a/src/routes/open/components/SafeForm/DailyLimit/index.jsx b/src/routes/open/components/SafeForm/DailyLimit/index.jsx new file mode 100644 index 0000000000..cad36dbfa7 --- /dev/null +++ b/src/routes/open/components/SafeForm/DailyLimit/index.jsx @@ -0,0 +1,22 @@ +// @flow +import * as React from 'react' +import Field from '~/components/forms/Field' +import TextField from '~/components/forms/TextField' +import { composeValidators, mustBeNumber, required, minValue } from '~/components/forms/validator' +import Block from '~/components/layout/Block' +import { FIELD_DAILY_LIMIT } from '~/routes/open/components/fields' + +const DailyLimit = () => ( + + + +) + +export default DailyLimit diff --git a/src/routes/open/components/SafeForm/index.jsx b/src/routes/open/components/SafeForm/index.jsx index 478e2e8376..b79d00a27c 100644 --- a/src/routes/open/components/SafeForm/index.jsx +++ b/src/routes/open/components/SafeForm/index.jsx @@ -6,6 +6,7 @@ import { getAccountsFrom } from '~/routes/open/utils/safeDataExtractor' import Name from './Name' import Owners from './Owners' import Confirmations from './Confirmations' +import DailyLimit from './DailyLimit' export const CONFIRMATIONS_ERROR = 'Number of confirmations can not be higher than the number of owners' @@ -25,5 +26,6 @@ export default () => ({ values }: Object) => ( + ) diff --git a/src/routes/open/components/fields.js b/src/routes/open/components/fields.js index b7e37ac993..6755b83957 100644 --- a/src/routes/open/components/fields.js +++ b/src/routes/open/components/fields.js @@ -2,6 +2,7 @@ export const FIELD_NAME: string = 'name' export const FIELD_CONFIRMATIONS: string = 'confirmations' export const FIELD_OWNERS: string = 'owners' +export const FIELD_DAILY_LIMIT: string = 'limit' export const getOwnerNameBy = (index: number) => `owner${index}Name` export const getOwnerAddressBy = (index: number) => `owner${index}Address` From 7dbc14f31e1eea9d7c657e233472d9c6a002a221 Mon Sep 17 00:00:00 2001 From: apanizo Date: Fri, 27 Apr 2018 13:10:18 +0200 Subject: [PATCH 012/138] WA-238 Updating review safe creation view with Daily Limit --- src/routes/open/components/ReviewInformation/index.jsx | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/routes/open/components/ReviewInformation/index.jsx b/src/routes/open/components/ReviewInformation/index.jsx index 8b2b286aaa..2909aa8c11 100644 --- a/src/routes/open/components/ReviewInformation/index.jsx +++ b/src/routes/open/components/ReviewInformation/index.jsx @@ -7,6 +7,7 @@ import Col from '~/components/layout/Col' import Heading from '~/components/layout/Heading' import Row from '~/components/layout/Row' import Paragraph from '~/components/layout/Paragraph' +import { FIELD_NAME, FIELD_CONFIRMATIONS, FIELD_DAILY_LIMIT } from '../fields' type FormProps = { values: Object, @@ -20,10 +21,13 @@ const ReviewInformation = () => ({ values }: FormProps) => { Review the Safe information - Safe Name: {values.name} + Safe Name: {values[FIELD_NAME]} - Required confirmations: {values.confirmations} + Required confirmations: {values[FIELD_CONFIRMATIONS]} + + + Daily limit: {values[FIELD_DAILY_LIMIT]} ETH Owners { names.map((name, index) => ( From 7a05972d7fe14776dd1e22f1acab68a856755f6a Mon Sep 17 00:00:00 2001 From: apanizo Date: Fri, 27 Apr 2018 13:29:44 +0200 Subject: [PATCH 013/138] WA-238 Fixing tests including Daily Limit --- src/routes/open/components/Layout.test.js | 13 ++++++++++++- .../components/SafeForm/Confirmations/index.test.js | 4 ++-- .../safe/store/test/builder/deployedSafe.builder.js | 2 ++ 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/src/routes/open/components/Layout.test.js b/src/routes/open/components/Layout.test.js index 4193d974d2..db2eaf1fac 100644 --- a/src/routes/open/components/Layout.test.js +++ b/src/routes/open/components/Layout.test.js @@ -1,7 +1,14 @@ // @flow import TestUtils from 'react-dom/test-utils' import { store } from '~/store' -import { FIELD_NAME, FIELD_OWNERS, FIELD_CONFIRMATIONS, getOwnerNameBy, getOwnerAddressBy } from '~/routes/open/components/fields' +import { + FIELD_NAME, + FIELD_OWNERS, + FIELD_CONFIRMATIONS, + FIELD_DAILY_LIMIT, + getOwnerNameBy, + getOwnerAddressBy, +} from '~/routes/open/components/fields' import { DEPLOYED_COMPONENT_ID } from '~/routes/open/components/FormConfirmation' import { sleep } from '~/utils/timer' import { getProviderInfo } from '~/wallets/getWeb3' @@ -26,6 +33,9 @@ describe('React DOM TESTS > Create Safe form', () => { const fieldConfirmations = inputs[2] expect(fieldConfirmations.name).toEqual(FIELD_CONFIRMATIONS) + const dailyLimitConfirmations = inputs[3] + expect(dailyLimitConfirmations.name).toEqual(FIELD_DAILY_LIMIT) + TestUtils.Simulate.change(fieldOwners, { target: { value: '1' } }) const inputsExpanded = TestUtils.scryRenderedDOMComponentsWithTag(open, 'input') @@ -39,6 +49,7 @@ describe('React DOM TESTS > Create Safe form', () => { TestUtils.Simulate.change(fieldName, { target: { value: 'Adolfo Safe' } }) TestUtils.Simulate.change(fieldConfirmations, { target: { value: '1' } }) TestUtils.Simulate.change(ownerName, { target: { value: 'Adolfo Eth Account' } }) + TestUtils.Simulate.change(dailyLimitConfirmations, { target: { value: '10' } }) const form = TestUtils.findRenderedDOMComponentWithTag(open, 'form') // One submit per step when creating a safe diff --git a/src/routes/open/components/SafeForm/Confirmations/index.test.js b/src/routes/open/components/SafeForm/Confirmations/index.test.js index a86ae028c3..2c95c3c54c 100644 --- a/src/routes/open/components/SafeForm/Confirmations/index.test.js +++ b/src/routes/open/components/SafeForm/Confirmations/index.test.js @@ -49,7 +49,7 @@ describe('React DOM TESTS > Create Safe form', () => { // THEN const muiFields = TestUtils.scryRenderedComponentsWithType(open, TextField) - expect(5).toEqual(muiFields.length) + expect(6).toEqual(muiFields.length) const confirmationsField = muiFields[4] expect(confirmationsField.props.meta.valid).toBe(false) @@ -64,7 +64,7 @@ describe('React DOM TESTS > Create Safe form', () => { // THEN const muiFields = TestUtils.scryRenderedComponentsWithType(open, TextField) - expect(7).toEqual(muiFields.length) + expect(8).toEqual(muiFields.length) const confirmationsField = muiFields[6] expect(confirmationsField.props.meta.valid).toBe(false) diff --git a/src/routes/safe/store/test/builder/deployedSafe.builder.js b/src/routes/safe/store/test/builder/deployedSafe.builder.js index 34bb71b02c..6c9b9dcac8 100644 --- a/src/routes/safe/store/test/builder/deployedSafe.builder.js +++ b/src/routes/safe/store/test/builder/deployedSafe.builder.js @@ -33,6 +33,7 @@ const deploySafe = async (safe: React$Component<{}>) => { const fieldName = inputs[0] const fieldOwners = inputs[1] const fieldConfirmations = inputs[2] + const fieldDailyLimit = inputs[3] TestUtils.Simulate.change(fieldOwners, { target: { value: '1' } }) const inputsExpanded = TestUtils.scryRenderedDOMComponentsWithTag(safe, 'input') @@ -41,6 +42,7 @@ const deploySafe = async (safe: React$Component<{}>) => { TestUtils.Simulate.change(fieldName, { target: { value: 'Adolfo Safe' } }) TestUtils.Simulate.change(fieldConfirmations, { target: { value: '1' } }) TestUtils.Simulate.change(ownerName, { target: { value: 'Adolfo Eth Account' } }) + TestUtils.Simulate.change(fieldDailyLimit, { target: { value: '10' } }) const form = TestUtils.findRenderedDOMComponentWithTag(safe, 'form') From d3ab3ec6583d4476153d2c3b1b45bc4adb8ee068 Mon Sep 17 00:00:00 2001 From: apanizo Date: Fri, 27 Apr 2018 15:06:13 +0200 Subject: [PATCH 014/138] WA-238 Adding Daily Limit when showing safe route --- src/routes/open/container/Open.jsx | 5 ++-- src/routes/open/utils/safeDataExtractor.js | 2 ++ src/routes/safe/component/Safe/DailyLimit.jsx | 21 ++++++++++++++ src/routes/safe/component/Safe/index.jsx | 2 ++ src/routes/safe/store/actions/addSafe.js | 5 ++-- src/routes/safe/store/model/safe.js | 2 ++ .../safe/store/test/builder/safe.builder.js | 6 ++++ src/routes/safe/store/test/safe.reducer.js | 28 ++++++++----------- 8 files changed, 51 insertions(+), 20 deletions(-) create mode 100644 src/routes/safe/component/Safe/DailyLimit.jsx diff --git a/src/routes/open/container/Open.jsx b/src/routes/open/container/Open.jsx index c80aadf446..e3897ef79f 100644 --- a/src/routes/open/container/Open.jsx +++ b/src/routes/open/container/Open.jsx @@ -3,7 +3,7 @@ import * as React from 'react' import { connect } from 'react-redux' import contract from 'truffle-contract' import Page from '~/components/layout/Page' -import { getAccountsFrom, getThresholdFrom, getNamesFrom, getSafeNameFrom } from '~/routes/open/utils/safeDataExtractor' +import { getAccountsFrom, getThresholdFrom, getNamesFrom, getSafeNameFrom, getDailyLimitFrom } from '~/routes/open/utils/safeDataExtractor' import { getWeb3 } from '~/wallets/getWeb3' import { promisify } from '~/utils/promisify' import Safe from '#/GnosisSafe.json' @@ -26,12 +26,13 @@ const createSafe = async (safeContract, values, userAccount, addSafe) => { const numConfirmations = getThresholdFrom(values) const name = getSafeNameFrom(values) const owners = getNamesFrom(values) + const dailyLimit = getDailyLimitFrom(values) const web3 = getWeb3() safeContract.setProvider(web3.currentProvider) const safe = await safeContract.new(accounts, numConfirmations, 0, 0, { from: userAccount, gas: '5000000' }) - addSafe(name, safe.address, numConfirmations, owners, accounts) + addSafe(name, safe.address, numConfirmations, dailyLimit, owners, accounts) return safe } diff --git a/src/routes/open/utils/safeDataExtractor.js b/src/routes/open/utils/safeDataExtractor.js index e0d8413016..25a91fc57a 100644 --- a/src/routes/open/utils/safeDataExtractor.js +++ b/src/routes/open/utils/safeDataExtractor.js @@ -1,4 +1,6 @@ // @flow +export const getDailyLimitFrom = (values: Object): number => Number(values.limit) + export const getAccountsFrom = (values: Object): string[] => { const accounts = Object.keys(values).sort().filter(key => /^owner\d+Address$/.test(key)) diff --git a/src/routes/safe/component/Safe/DailyLimit.jsx b/src/routes/safe/component/Safe/DailyLimit.jsx new file mode 100644 index 0000000000..20bd47c719 --- /dev/null +++ b/src/routes/safe/component/Safe/DailyLimit.jsx @@ -0,0 +1,21 @@ +// @flow +import * as React from 'react' +import { ListItem } from 'material-ui/List' +import Avatar from 'material-ui/Avatar' +import NotificationsPaused from 'material-ui-icons/NotificationsPaused' +import ListItemText from '~/components/List/ListItemText' + +type Props = { + limit: number, +} + +const DailyLimit = ({ limit }: Props) => ( + + + + + + +) + +export default DailyLimit diff --git a/src/routes/safe/component/Safe/index.jsx b/src/routes/safe/component/Safe/index.jsx index 40a1c9c63d..dab8c26ecc 100644 --- a/src/routes/safe/component/Safe/index.jsx +++ b/src/routes/safe/component/Safe/index.jsx @@ -12,6 +12,7 @@ import Address from './Address' import Balance from './Balance' import Owners from './Owners' import Confirmations from './Confirmations' +import DailyLimit from './DailyLimit' type SafeProps = { safe: Safe, @@ -34,6 +35,7 @@ class GnoSafe extends React.PureComponent {
+ diff --git a/src/routes/safe/store/actions/addSafe.js b/src/routes/safe/store/actions/addSafe.js index 8a7a924f2f..e4a1801e69 100644 --- a/src/routes/safe/store/actions/addSafe.js +++ b/src/routes/safe/store/actions/addSafe.js @@ -15,13 +15,14 @@ export const buildOwnersFrom = (names: string[], addresses: string[]) => { const addSafe = createAction( ADD_SAFE, ( - name: string, address: string, confirmations: number, + name: string, address: string, + confirmations: number, dailyLimit: number, ownersName: string[], ownersAddress: string[], ): SafeProps => { const owners: List = buildOwnersFrom(ownersName, ownersAddress) return ({ - address, name, confirmations, owners, + address, name, confirmations, owners, dailyLimit, }) }, ) diff --git a/src/routes/safe/store/model/safe.js b/src/routes/safe/store/model/safe.js index 146085a052..28e25209e2 100644 --- a/src/routes/safe/store/model/safe.js +++ b/src/routes/safe/store/model/safe.js @@ -8,6 +8,7 @@ export type SafeProps = { address: string, confirmations: number, owners: List, + dailyLimit: number, } export const makeSafe: RecordFactory = Record({ @@ -15,6 +16,7 @@ export const makeSafe: RecordFactory = Record({ address: '', confirmations: 0, owners: List([]), + dailyLimit: 0, }) export type Safe = RecordOf diff --git a/src/routes/safe/store/test/builder/safe.builder.js b/src/routes/safe/store/test/builder/safe.builder.js index d7ad86bd4d..0bde9e05b3 100644 --- a/src/routes/safe/store/test/builder/safe.builder.js +++ b/src/routes/safe/store/test/builder/safe.builder.js @@ -24,6 +24,11 @@ class SafeBuilder { return this } + withDailyLimit(limit: number) { + this.safe = this.safe.set('dailyLimit', limit) + return this + } + withOwner(names: string[], adresses: string[]) { const owners = buildOwnersFrom(names, adresses) this.safe = this.safe.set('owners', owners) @@ -42,6 +47,7 @@ export class SafeFactory { .withAddress('0x03db1a8b26d08df23337e9276a36b474510f0025') .withName('Adol ICO Safe') .withConfirmations(1) + .withDailyLimit(10) .withOwner(['Adol Metamask'], ['0x03db1a8b26d08df23337e9276a36b474510f0023']) .get() diff --git a/src/routes/safe/store/test/safe.reducer.js b/src/routes/safe/store/test/safe.reducer.js index c9c241dfb6..dea0bfbd28 100644 --- a/src/routes/safe/store/test/safe.reducer.js +++ b/src/routes/safe/store/test/safe.reducer.js @@ -23,27 +23,31 @@ const aStore = (initState) => { const providerReducerTests = () => { describe('Safe Actions[addSafe]', () => { let store + let address + let formValues beforeEach(() => { store = aStore() - }) - - it('reducer should return SafeRecord from form values', () => { - // GIVEN - const address = '0x03db1a8b26d08df23337e9276a36b474510f0025' - const formValues = { + address = '0x03db1a8b26d08df23337e9276a36b474510f0025' + formValues = { [SafeFields.FIELD_NAME]: 'Adol ICO Safe', [SafeFields.FIELD_CONFIRMATIONS]: 1, [SafeFields.FIELD_OWNERS]: 1, + [SafeFields.FIELD_DAILY_LIMIT]: 10, [SafeFields.getOwnerAddressBy(0)]: '0x03db1a8b26d08df23337e9276a36b474510f0023', [SafeFields.getOwnerNameBy(0)]: 'Adol Metamask', address, } + }) + + it('reducer should return SafeRecord from form values', () => { + // GIVEN in beforeEach method // WHEN store.dispatch(addSafe( formValues[SafeFields.FIELD_NAME], formValues.address, formValues[SafeFields.FIELD_CONFIRMATIONS], + formValues[SafeFields.FIELD_DAILY_LIMIT], getNamesFrom(formValues), getAccountsFrom(formValues), )) @@ -54,22 +58,14 @@ const providerReducerTests = () => { }) it('reducer loads information from localStorage', async () => { - // GIVEN - const address = '0x03db1a8b26d08df23337e9276a36b474510f0025' - const formValues = { - [SafeFields.FIELD_NAME]: 'Adol ICO Safe', - [SafeFields.FIELD_CONFIRMATIONS]: 1, - [SafeFields.FIELD_OWNERS]: 1, - [SafeFields.getOwnerAddressBy(0)]: '0x03db1a8b26d08df23337e9276a36b474510f0023', - [SafeFields.getOwnerNameBy(0)]: 'Adol Metamask', - address, - } + // GIVEN in beforeEach method // WHEN store.dispatch(addSafe( formValues[SafeFields.FIELD_NAME], formValues.address, formValues[SafeFields.FIELD_CONFIRMATIONS], + formValues[SafeFields.FIELD_DAILY_LIMIT], getNamesFrom(formValues), getAccountsFrom(formValues), )) From 69a486a66f3527b27995ccad3c1a2dd0ebc08a4c Mon Sep 17 00:00:00 2001 From: apanizo Date: Fri, 27 Apr 2018 15:16:04 +0200 Subject: [PATCH 015/138] WA-238 Adding Daily Limit when displaying the list of safes --- src/routes/safe/component/Safe/Owners.jsx | 2 +- src/routes/safe/component/Safe/index.jsx | 1 + src/routes/safeList/components/SafeTable.jsx | 10 ++++++---- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/src/routes/safe/component/Safe/Owners.jsx b/src/routes/safe/component/Safe/Owners.jsx index e552beb1d2..e4801fb02d 100644 --- a/src/routes/safe/component/Safe/Owners.jsx +++ b/src/routes/safe/component/Safe/Owners.jsx @@ -39,7 +39,7 @@ const Owners = openHoc(({ {owners.map(owner => ( - + diff --git a/src/routes/safe/component/Safe/index.jsx b/src/routes/safe/component/Safe/index.jsx index dab8c26ecc..442373e5c8 100644 --- a/src/routes/safe/component/Safe/index.jsx +++ b/src/routes/safe/component/Safe/index.jsx @@ -21,6 +21,7 @@ type SafeProps = { const listStyle = { width: '100%', + minWidth: '485px', } class GnoSafe extends React.PureComponent { diff --git a/src/routes/safeList/components/SafeTable.jsx b/src/routes/safeList/components/SafeTable.jsx index 9b1c97d8a3..ed7e825c57 100644 --- a/src/routes/safeList/components/SafeTable.jsx +++ b/src/routes/safeList/components/SafeTable.jsx @@ -19,6 +19,7 @@ const SafeTable = ({ safes }: Props) => ( Deployed Address Confirmations Number of owners + Daily Limit @@ -29,10 +30,11 @@ const SafeTable = ({ safes }: Props) => ( - {safe.name} - {safe.address} - {safe.confirmations} - {safe.owners.count()} + {safe.get('name')} + {safe.get('address')} + {safe.get('confirmations')} + {safe.get('owners').count()} + {`${safe.get('dailyLimit')} ETH`} ))} From fdca1781cb5d3c976523572fca6088d2d6f6c6c2 Mon Sep 17 00:00:00 2001 From: apanizo Date: Fri, 27 Apr 2018 16:23:50 +0200 Subject: [PATCH 016/138] WA-238 Specify daily limit validation. Should be greater than 0 --- src/components/forms/validator.js | 8 ++++++++ src/routes/open/components/SafeForm/DailyLimit/index.jsx | 4 ++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/components/forms/validator.js b/src/components/forms/validator.js index f807840c8d..8637f158a9 100644 --- a/src/components/forms/validator.js +++ b/src/components/forms/validator.js @@ -8,6 +8,14 @@ export const required = (value: Field) => (value ? undefined : 'Required') export const mustBeNumber = (value: number) => (Number.isNaN(Number(value)) ? 'Must be a number' : undefined) +export const greaterThan = (min: number) => (value: string) => { + if (Number.isNaN(Number(value)) || Number.parseFloat(value) > Number(min)) { + return undefined + } + + return `Should be greater than ${min}` +} + export const minValue = (min: number) => (value: string) => { if (Number.isNaN(Number(value)) || Number.parseInt(value, 10) >= Number(min)) { return undefined diff --git a/src/routes/open/components/SafeForm/DailyLimit/index.jsx b/src/routes/open/components/SafeForm/DailyLimit/index.jsx index cad36dbfa7..83c4ff6b55 100644 --- a/src/routes/open/components/SafeForm/DailyLimit/index.jsx +++ b/src/routes/open/components/SafeForm/DailyLimit/index.jsx @@ -2,7 +2,7 @@ import * as React from 'react' import Field from '~/components/forms/Field' import TextField from '~/components/forms/TextField' -import { composeValidators, mustBeNumber, required, minValue } from '~/components/forms/validator' +import { composeValidators, mustBeNumber, required, greaterThan } from '~/components/forms/validator' import Block from '~/components/layout/Block' import { FIELD_DAILY_LIMIT } from '~/routes/open/components/fields' @@ -12,7 +12,7 @@ const DailyLimit = () => ( name={FIELD_DAILY_LIMIT} component={TextField} type="text" - validate={composeValidators(required, mustBeNumber, minValue(1))} + validate={composeValidators(required, mustBeNumber, greaterThan(0))} placeholder="Daily Limit*" text="Daily Limit" /> From 0a646ad893cc5d3547c56d2833f191a9b5b4a7db Mon Sep 17 00:00:00 2001 From: apanizo Date: Mon, 30 Apr 2018 14:08:07 +0200 Subject: [PATCH 017/138] WA-238 Adding 4.1.15 version --- package.json | 1 + yarn.lock | 123 +++++++++++++++++++++++++++++++++++++++++++++------ 2 files changed, 111 insertions(+), 13 deletions(-) diff --git a/package.json b/package.json index 8055814f8a..76f3bac65d 100644 --- a/package.json +++ b/package.json @@ -87,6 +87,7 @@ "storybook-host": "^4.1.5", "storybook-router": "^0.3.3", "style-loader": "^0.20.2", + "truffle": "4.1.5", "truffle-contract": "^1.1.8", "truffle-solidity-loader": "0.0.8", "uglifyjs-webpack-plugin": "^1.2.2", diff --git a/yarn.lock b/yarn.lock index 58b044c3f3..799524f3cb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2641,6 +2641,10 @@ browser-resolve@^1.11.0, browser-resolve@^1.11.2, browser-resolve@^1.7.0: dependencies: resolve "1.1.7" +browser-stdout@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.0.tgz#f351d32969d32fa5d7a5567154263d928ae3bd1f" + browserify-aes@^1.0.0, browserify-aes@^1.0.4, browserify-aes@^1.0.6: version "1.1.1" resolved "https://registry.yarnpkg.com/browserify-aes/-/browserify-aes-1.1.1.tgz#38b7ab55edb806ff2dcda1a7f1620773a477c49f" @@ -3301,6 +3305,12 @@ commander@2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.3.0.tgz#fd430e889832ec353b9acd1de217c11cb3eef873" +commander@2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4" + dependencies: + graceful-readlink ">= 1.0.0" + commander@^2.11.0, commander@^2.12.2, commander@^2.13.0, commander@^2.8.1, commander@^2.9.0: version "2.15.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.0.tgz#ad2a23a1c3b036e392469b8012cec6b33b4c1322" @@ -3747,6 +3757,12 @@ debug@2.2.0, debug@~2.2.0: dependencies: ms "0.7.1" +debug@2.6.8: + version "2.6.8" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.8.tgz#e731531ca2ede27d188222427da17821d68ff4fc" + dependencies: + ms "2.0.0" + debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.6, debug@^2.6.8, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" @@ -3943,6 +3959,10 @@ diff@1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/diff/-/diff-1.4.0.tgz#7f28d2eb9ee7b15a97efd89ce63dcfdaa3ccbabf" +diff@3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-3.2.0.tgz#c9ce393a4b7cbd0b058a725c93df299027868ff9" + diff@^3.2.0, diff@^3.3.1, diff@^3.5.0: version "3.5.0" resolved "https://registry.yarnpkg.com/diff/-/diff-3.5.0.tgz#800c0dd1e0a8bfbc95835c202ad220fe317e5a12" @@ -5296,6 +5316,17 @@ glob@3.2.11: inherits "2" minimatch "0.3" +glob@7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8" + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.2" + once "^1.3.0" + path-is-absolute "^1.0.0" + glob@^6.0.1: version "6.0.4" resolved "https://registry.yarnpkg.com/glob/-/glob-6.0.4.tgz#0f08860f6a155127b2fadd4f9ce24b1aab6e4d22" @@ -5424,6 +5455,10 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9, version "4.1.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" +"graceful-readlink@>= 1.0.0": + version "1.0.1" + resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" + graphlib@^2.0.0: version "2.1.5" resolved "https://registry.yarnpkg.com/graphlib/-/graphlib-2.1.5.tgz#6afe1afcc5148555ec799e499056795bd6938c87" @@ -5607,7 +5642,7 @@ hdkey@^0.7.0: coinstring "^2.0.0" secp256k1 "^3.0.1" -he@1.1.x: +he@1.1.1, he@1.1.x: version "1.1.1" resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" @@ -6863,7 +6898,7 @@ json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" -json3@^3.3.2: +json3@3.3.2, json3@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1" @@ -7228,10 +7263,29 @@ lodash-es@^4.17.4, lodash-es@^4.17.5, lodash-es@^4.2.1: version "4.17.7" resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.7.tgz#db240a3252c3dd8360201ac9feef91ac977ea856" +lodash._baseassign@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz#8c38a099500f215ad09e59f1722fd0c52bfe0a4e" + dependencies: + lodash._basecopy "^3.0.0" + lodash.keys "^3.0.0" + +lodash._basecopy@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36" + +lodash._basecreate@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz#1bc661614daa7fc311b7d03bf16806a0213cf821" + lodash._getnative@^3.0.0: version "3.9.1" resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5" +lodash._isiterateecall@^3.0.0: + version "3.0.9" + resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c" + lodash.assign@^4.0.3, lodash.assign@^4.0.6, lodash.assign@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7" @@ -7244,6 +7298,14 @@ lodash.clonedeep@^4.3.2: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" +lodash.create@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/lodash.create/-/lodash.create-3.1.1.tgz#d7f2849f0dbda7e04682bb8cd72ab022461debe7" + dependencies: + lodash._baseassign "^3.0.0" + lodash._basecreate "^3.0.0" + lodash._isiterateecall "^3.0.0" + lodash.debounce@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" @@ -7264,7 +7326,7 @@ lodash.isplainobject@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" -lodash.keys@^3.1.2: +lodash.keys@^3.0.0, lodash.keys@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a" dependencies: @@ -7744,6 +7806,23 @@ mocha@^2.3.3, mocha@^2.4.5: supports-color "1.2.0" to-iso-string "0.0.2" +mocha@^3.4.2: + version "3.5.3" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-3.5.3.tgz#1e0480fe36d2da5858d1eb6acc38418b26eaa20d" + dependencies: + browser-stdout "1.3.0" + commander "2.9.0" + debug "2.6.8" + diff "3.2.0" + escape-string-regexp "1.0.5" + glob "7.1.1" + growl "1.9.2" + he "1.1.1" + json3 "3.3.2" + lodash.create "3.1.1" + mkdirp "0.5.1" + supports-color "3.1.2" + module-deps@^4.0.8: version "4.1.1" resolved "https://registry.yarnpkg.com/module-deps/-/module-deps-4.1.1.tgz#23215833f1da13fd606ccb8087b44852dcb821fd" @@ -8220,6 +8299,10 @@ ora@^0.2.3: cli-spinners "^0.1.2" object-assign "^4.0.1" +original-require@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/original-require/-/original-require-1.0.1.tgz#0f130471584cd33511c5ec38c8d59213f9ac5e20" + original@>=0.0.5: version "1.0.0" resolved "https://registry.yarnpkg.com/original/-/original-1.0.0.tgz#9147f93fa1696d04be61e01bd50baeaca656bd3b" @@ -10394,6 +10477,16 @@ sockjs@0.3.19: faye-websocket "^0.10.0" uuid "^3.0.1" +solc@0.4.21, solc@^0.4.2: + version "0.4.21" + resolved "https://registry.yarnpkg.com/solc/-/solc-0.4.21.tgz#6a7ecd505bfa0fc268330d5de6b9ae65c8c68264" + dependencies: + fs-extra "^0.30.0" + memorystream "^0.3.1" + require-from-string "^1.1.0" + semver "^5.3.0" + yargs "^4.7.1" + solc@0.4.8: version "0.4.8" resolved "https://registry.yarnpkg.com/solc/-/solc-0.4.8.tgz#96abbee1266341ae97fb4bdc3abcc9bc1b5052ab" @@ -10412,16 +10505,6 @@ solc@^0.3.6: require-from-string "^1.1.0" yargs "^4.7.1" -solc@^0.4.2: - version "0.4.21" - resolved "https://registry.yarnpkg.com/solc/-/solc-0.4.21.tgz#6a7ecd505bfa0fc268330d5de6b9ae65c8c68264" - dependencies: - fs-extra "^0.30.0" - memorystream "^0.3.1" - require-from-string "^1.1.0" - semver "^5.3.0" - yargs "^4.7.1" - solidity-parser@^0.1.0, solidity-parser@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/solidity-parser/-/solidity-parser-0.1.1.tgz#0fb3b665ed7041bef4575962ee426e7cd9d0a90a" @@ -10833,6 +10916,12 @@ supports-color@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-1.2.0.tgz#ff1ed1e61169d06b3cf2d588e188b18d8847e17e" +supports-color@3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.1.2.tgz#72a262894d9d408b956ca05ff37b2ed8a6e2a2d5" + dependencies: + has-flag "^1.0.0" + supports-color@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" @@ -11163,6 +11252,14 @@ truffle-solidity-loader@0.0.8: truffle "^2.0.8" web3 "^0.17.0-alpha" +truffle@4.1.5: + version "4.1.5" + resolved "https://registry.yarnpkg.com/truffle/-/truffle-4.1.5.tgz#763c8175fe5ea1ada92aa7a02eff84b4ab272f72" + dependencies: + mocha "^3.4.2" + original-require "^1.0.1" + solc "0.4.21" + truffle@^2.0.8: version "2.1.2" resolved "https://registry.yarnpkg.com/truffle/-/truffle-2.1.2.tgz#1ee61b9d785f6f2edb42801579e31f15b66c3746" From 9735b73431445395725ae101189a74cf21d916e5 Mon Sep 17 00:00:00 2001 From: apanizo Date: Mon, 30 Apr 2018 14:09:38 +0200 Subject: [PATCH 018/138] WA-238 Running optmized improvements of safe contracts --- .travis.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 729a21e17b..29363b1fc7 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,10 +4,11 @@ node_js: os: - linux before_script: - - yarn global add truffle@4.1.3 + - yarn global add truffle@4.1.5 - yarn global add surge - git clone https://github.com/gnosis/gnosis-safe-contracts.git - cd gnosis-safe-contracts + - git fetch && git checkout feature/optimize_personal_edition - truffle compile && cd .. after_success: - yarn build-storybook From ec9c78b88bed9e9a4b3eb6eef2fce4b315c40a3d Mon Sep 17 00:00:00 2001 From: apanizo Date: Mon, 30 Apr 2018 14:10:24 +0200 Subject: [PATCH 019/138] WA-238 Deploying contracts with Daily limit and ProxyFactory --- src/routes/open/container/Open.jsx | 59 ++++++++++++------- src/routes/safe/store/test/balance.reducer.js | 4 +- .../test/builder/deployedSafe.builder.js | 2 +- src/utils/singleton.js | 3 +- src/wallets/safeContracts.js | 40 +++++++++++++ 5 files changed, 84 insertions(+), 24 deletions(-) create mode 100644 src/wallets/safeContracts.js diff --git a/src/routes/open/container/Open.jsx b/src/routes/open/container/Open.jsx index e3897ef79f..cd070ecffc 100644 --- a/src/routes/open/container/Open.jsx +++ b/src/routes/open/container/Open.jsx @@ -1,12 +1,16 @@ // @flow import * as React from 'react' import { connect } from 'react-redux' -import contract from 'truffle-contract' + import Page from '~/components/layout/Page' import { getAccountsFrom, getThresholdFrom, getNamesFrom, getSafeNameFrom, getDailyLimitFrom } from '~/routes/open/utils/safeDataExtractor' import { getWeb3 } from '~/wallets/getWeb3' -import { promisify } from '~/utils/promisify' -import Safe from '#/GnosisSafe.json' +import { + getCreateAddExtensionContract, + getCreateDailyLimitExtensionContract, + getCreateProxyFactoryContract, + getGnosisSafeContract, +} from '~/wallets/safeContracts' import selector from './selector' import actions, { type Actions } from './actions' import Layout from '../components/Layout' @@ -21,7 +25,7 @@ type State = { safeTx: string, } -const createSafe = async (safeContract, values, userAccount, addSafe) => { +const createSafe = async (values, userAccount, addSafe): State => { const accounts = getAccountsFrom(values) const numConfirmations = getThresholdFrom(values) const name = getSafeNameFrom(values) @@ -29,11 +33,36 @@ const createSafe = async (safeContract, values, userAccount, addSafe) => { const dailyLimit = getDailyLimitFrom(values) const web3 = getWeb3() - safeContract.setProvider(web3.currentProvider) + const GnosisSafe = getGnosisSafeContract(web3) + const ProxyFactory = getCreateProxyFactoryContract(web3) + const CreateAndAddExtension = getCreateAddExtensionContract(web3) + const DailyLimitExtension = getCreateDailyLimitExtensionContract(web3) + + // Create Master Copies + const proxyFactory = await ProxyFactory.new({ from: userAccount, gas: '5000000' }) + const createAndAddExtension = await CreateAndAddExtension.new({ from: userAccount, gas: '5000000' }) + + // Initialize safe master copy + const gnosisSafeMasterCopy = await GnosisSafe.new({ from: userAccount, gas: '5000000' }) + gnosisSafeMasterCopy.setup([userAccount], 1, 0, 0, { from: userAccount, gas: '5000000' }) + + // Initialize extension master copy + const dailyLimitExtensionMasterCopy = await DailyLimitExtension.new({ from: userAccount, gas: '5000000' }) + dailyLimitExtensionMasterCopy.setup([], [], { from: userAccount, gas: '5000000' }) + + // Create Gnosis Safe and Daily Limit Extension in one transactions + const extensionData = await dailyLimitExtensionMasterCopy.contract.setup.getData([0], [100], { from: userAccount, gas: '5000000' }) + const proxyFactoryData = await proxyFactory.contract.createProxy.getData(dailyLimitExtensionMasterCopy.address, extensionData, { from: userAccount, gas: '5000000' }) + const createAndAddExtensionData = createAndAddExtension.contract.createAndAddExtension.getData(proxyFactory.address, proxyFactoryData, { from: userAccount, gas: '5000000' }) + const gnosisSafeData = await gnosisSafeMasterCopy.contract.setup.getData(accounts, numConfirmations, createAndAddExtension.address, createAndAddExtensionData, { from: userAccount, gas: '5000000' }) + const safe = await proxyFactory.createProxy(gnosisSafeMasterCopy.address, gnosisSafeData, { from: userAccount, gas: '5000000' }) + + const param = safe.logs[1].args.proxy + const safeContract = GnosisSafe.at(param) - const safe = await safeContract.new(accounts, numConfirmations, 0, 0, { from: userAccount, gas: '5000000' }) - addSafe(name, safe.address, numConfirmations, dailyLimit, owners, accounts) - return safe + addSafe(name, safeContract.address, numConfirmations, dailyLimit, owners, accounts) + + return { safeAddress: safeContract.address, safeTx: safe } } class Open extends React.Component { @@ -44,29 +73,19 @@ class Open extends React.Component { safeAddress: '', safeTx: '', } - - this.safe = contract(Safe) } onCallSafeContractSubmit = async (values) => { try { const { userAccount, addSafe } = this.props - const web3 = getWeb3() - - const safeInstance = await createSafe(this.safe, values, userAccount, addSafe) - const { address, transactionHash } = safeInstance - - const transactionReceipt = await promisify(cb => web3.eth.getTransactionReceipt(transactionHash, cb)) - - this.setState({ safeAddress: address, safeTx: transactionReceipt }) + const safeInstance = await createSafe(values, userAccount, addSafe) + this.setState(safeInstance) } catch (error) { // eslint-disable-next-line console.log('Error while creating the Safe' + error) } } - safe: any - render() { const { safeAddress, safeTx } = this.state const { provider, userAccount } = this.props diff --git a/src/routes/safe/store/test/balance.reducer.js b/src/routes/safe/store/test/balance.reducer.js index 923fc44940..b10487f5b4 100644 --- a/src/routes/safe/store/test/balance.reducer.js +++ b/src/routes/safe/store/test/balance.reducer.js @@ -23,7 +23,7 @@ const balanceReducerTests = () => { it('reducer should return 0 to just deployed safe', async () => { // GIVEN const safeTx = await aDeployedSafe(store) - const address = safeTx.contractAddress + const address = safeTx.logs[1].args.proxy // WHEN await store.dispatch(fetchBalance(address)) @@ -37,7 +37,7 @@ const balanceReducerTests = () => { it('reducer should return 1.3456 ETH as funds to safe with 1 ETH', async () => { // GIVEN const safeTx = await aDeployedSafe(store) - const address = safeTx.contractAddress + const address = safeTx.logs[1].args.proxy // WHEN await addEtherTo(address, '1.3456') diff --git a/src/routes/safe/store/test/builder/deployedSafe.builder.js b/src/routes/safe/store/test/builder/deployedSafe.builder.js index 6c9b9dcac8..43cfd125a8 100644 --- a/src/routes/safe/store/test/builder/deployedSafe.builder.js +++ b/src/routes/safe/store/test/builder/deployedSafe.builder.js @@ -61,7 +61,7 @@ const deploySafe = async (safe: React$Component<{}>) => { } const transactionHash = JSON.parse(deployed.getElementsByTagName('pre')[0].innerHTML) - delete transactionHash.logsBloom + delete transactionHash.receipt.logsBloom return transactionHash } diff --git a/src/utils/singleton.js b/src/utils/singleton.js index 5517a77072..8a68534346 100644 --- a/src/utils/singleton.js +++ b/src/utils/singleton.js @@ -7,7 +7,8 @@ export const ensureOnce = (fn: Function): Function => { if (executed) { return response } executed = true - response = fn(args) + // eslint-disable-next-line + response = fn.apply(undefined, args) return response } diff --git a/src/wallets/safeContracts.js b/src/wallets/safeContracts.js new file mode 100644 index 0000000000..267d1128b0 --- /dev/null +++ b/src/wallets/safeContracts.js @@ -0,0 +1,40 @@ +// @flow +import contract from 'truffle-contract' +import { ensureOnce } from '~/utils/singleton' +import GnosisSafeSol from '#/GnosisSafe.json' +import ProxyFactorySol from '#/ProxyFactory.json' +import CreateAndAddExtensionSol from '#/CreateAndAddExtension.json' +import DailyLimitExtensionSol from '#/DailyLimitExtension.json' + +const createGnosisSafeContract = (web3: any) => { + const gnosisSafe = contract(GnosisSafeSol) + gnosisSafe.setProvider(web3.currentProvider) + + return gnosisSafe +} + +const createProxyFactoryContract = (web3: any) => { + const proxyFactory = contract(ProxyFactorySol) + proxyFactory.setProvider(web3.currentProvider) + + return proxyFactory +} + +const createAddExtensionContract = (web3: any) => { + const createAndAddExtension = contract(CreateAndAddExtensionSol) + createAndAddExtension.setProvider(web3.currentProvider) + + return createAndAddExtension +} + +const createDailyLimitExtensionContract = (web3: any) => { + const dailyLimitExtension = contract(DailyLimitExtensionSol) + dailyLimitExtension.setProvider(web3.currentProvider) + + return dailyLimitExtension +} + +export const getGnosisSafeContract = ensureOnce(createGnosisSafeContract) +export const getCreateProxyFactoryContract = ensureOnce(createProxyFactoryContract) +export const getCreateAddExtensionContract = ensureOnce(createAddExtensionContract) +export const getCreateDailyLimitExtensionContract = ensureOnce(createDailyLimitExtensionContract) From d8dc5201cece854b5156ace435fb407c37028ac2 Mon Sep 17 00:00:00 2001 From: apanizo Date: Wed, 2 May 2018 15:24:01 +0200 Subject: [PATCH 020/138] WA-238 Removing unused code for fetching balance --- src/routes/open/container/old.js | 45 -------------------------------- 1 file changed, 45 deletions(-) delete mode 100644 src/routes/open/container/old.js diff --git a/src/routes/open/container/old.js b/src/routes/open/container/old.js deleted file mode 100644 index c9ee214755..0000000000 --- a/src/routes/open/container/old.js +++ /dev/null @@ -1,45 +0,0 @@ -// @flow - -/* -onAddFunds = async (values: Object) => { - const { fundsToAdd } = values - const { safeAddress } = this.state - try { - const web3 = getWeb3() - const accounts = await promisify(cb => web3.eth.getAccounts(cb)) - const txData = { from: accounts[0], to: safeAddress, value: web3.toWei(fundsToAdd, 'ether') } - await promisify(cb => web3.eth.sendTransaction(txData, cb)) - const funds = await promisify(cb => web3.eth.getBalance(safeAddress, cb)) - const fundsInEther = funds ? web3.fromWei(funds.toNumber(), 'ether') : 0 - this.setState({ funds: fundsInEther }) - } catch (error) { - // eslint-disable-next-line - console.log(`Errog adding funds to safe${error}`) - } - } - - - - {(pristine, invalid) => ( - - Add Funds to the safe -
- -
- { safeAddress && -
- - -
- } - { safeAddress && -
- Total funds in this safe: { funds || 0 } ETH -
- } -
- )} -
-*/ From 2cd55379ee84769126875f33683f8c3d89895e8d Mon Sep 17 00:00:00 2001 From: apanizo Date: Wed, 2 May 2018 15:24:23 +0200 Subject: [PATCH 021/138] WA-238 Adding assSafe action type --- src/routes/open/container/actions.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/routes/open/container/actions.js b/src/routes/open/container/actions.js index c3c7d97310..f8fb50395e 100644 --- a/src/routes/open/container/actions.js +++ b/src/routes/open/container/actions.js @@ -1,6 +1,8 @@ // @flow import addSafe from '~/routes/safe/store/actions/addSafe' +export type AddSafe = typeof addSafe + export type Actions = { addSafe: typeof addSafe, } From 068b08eb82625dccc5468ad30797b6cb186cad3a Mon Sep 17 00:00:00 2001 From: apanizo Date: Wed, 2 May 2018 15:31:26 +0200 Subject: [PATCH 022/138] WA-238 Creating Safe Master Copy once --- src/routes/open/container/Open.jsx | 34 +++---------------- src/wallets/safeContracts.js | 54 ++++++++++++++++++++++++++++-- 2 files changed, 56 insertions(+), 32 deletions(-) diff --git a/src/routes/open/container/Open.jsx b/src/routes/open/container/Open.jsx index cd070ecffc..dd65906bda 100644 --- a/src/routes/open/container/Open.jsx +++ b/src/routes/open/container/Open.jsx @@ -5,14 +5,9 @@ import { connect } from 'react-redux' import Page from '~/components/layout/Page' import { getAccountsFrom, getThresholdFrom, getNamesFrom, getSafeNameFrom, getDailyLimitFrom } from '~/routes/open/utils/safeDataExtractor' import { getWeb3 } from '~/wallets/getWeb3' -import { - getCreateAddExtensionContract, - getCreateDailyLimitExtensionContract, - getCreateProxyFactoryContract, - getGnosisSafeContract, -} from '~/wallets/safeContracts' +import { getGnosisSafeContract, deploySafeContract, initContracts } from '~/wallets/safeContracts' import selector from './selector' -import actions, { type Actions } from './actions' +import actions, { type Actions, type AddSafe } from './actions' import Layout from '../components/Layout' type Props = Actions & { @@ -25,7 +20,7 @@ type State = { safeTx: string, } -const createSafe = async (values, userAccount, addSafe): State => { +const createSafe = async (values: Object, userAccount: string, addSafe: AddSafe): Promise => { const accounts = getAccountsFrom(values) const numConfirmations = getThresholdFrom(values) const name = getSafeNameFrom(values) @@ -34,28 +29,9 @@ const createSafe = async (values, userAccount, addSafe): State => { const web3 = getWeb3() const GnosisSafe = getGnosisSafeContract(web3) - const ProxyFactory = getCreateProxyFactoryContract(web3) - const CreateAndAddExtension = getCreateAddExtensionContract(web3) - const DailyLimitExtension = getCreateDailyLimitExtensionContract(web3) - // Create Master Copies - const proxyFactory = await ProxyFactory.new({ from: userAccount, gas: '5000000' }) - const createAndAddExtension = await CreateAndAddExtension.new({ from: userAccount, gas: '5000000' }) - - // Initialize safe master copy - const gnosisSafeMasterCopy = await GnosisSafe.new({ from: userAccount, gas: '5000000' }) - gnosisSafeMasterCopy.setup([userAccount], 1, 0, 0, { from: userAccount, gas: '5000000' }) - - // Initialize extension master copy - const dailyLimitExtensionMasterCopy = await DailyLimitExtension.new({ from: userAccount, gas: '5000000' }) - dailyLimitExtensionMasterCopy.setup([], [], { from: userAccount, gas: '5000000' }) - - // Create Gnosis Safe and Daily Limit Extension in one transactions - const extensionData = await dailyLimitExtensionMasterCopy.contract.setup.getData([0], [100], { from: userAccount, gas: '5000000' }) - const proxyFactoryData = await proxyFactory.contract.createProxy.getData(dailyLimitExtensionMasterCopy.address, extensionData, { from: userAccount, gas: '5000000' }) - const createAndAddExtensionData = createAndAddExtension.contract.createAndAddExtension.getData(proxyFactory.address, proxyFactoryData, { from: userAccount, gas: '5000000' }) - const gnosisSafeData = await gnosisSafeMasterCopy.contract.setup.getData(accounts, numConfirmations, createAndAddExtension.address, createAndAddExtensionData, { from: userAccount, gas: '5000000' }) - const safe = await proxyFactory.createProxy(gnosisSafeMasterCopy.address, gnosisSafeData, { from: userAccount, gas: '5000000' }) + await initContracts() + const safe = await deploySafeContract(accounts, numConfirmations, userAccount) const param = safe.logs[1].args.proxy const safeContract = GnosisSafe.at(param) diff --git a/src/wallets/safeContracts.js b/src/wallets/safeContracts.js index 267d1128b0..b95c47d702 100644 --- a/src/wallets/safeContracts.js +++ b/src/wallets/safeContracts.js @@ -1,11 +1,18 @@ // @flow import contract from 'truffle-contract' +import { promisify } from '~/utils/promisify' import { ensureOnce } from '~/utils/singleton' +import { getWeb3 } from '~/wallets/getWeb3' import GnosisSafeSol from '#/GnosisSafe.json' import ProxyFactorySol from '#/ProxyFactory.json' import CreateAndAddExtensionSol from '#/CreateAndAddExtension.json' import DailyLimitExtensionSol from '#/DailyLimitExtension.json' +let proxyFactoryMaster +let createAndAddExtensionMaster +let safeMaster +let dailyLimitMaster + const createGnosisSafeContract = (web3: any) => { const gnosisSafe = contract(GnosisSafeSol) gnosisSafe.setProvider(web3.currentProvider) @@ -35,6 +42,47 @@ const createDailyLimitExtensionContract = (web3: any) => { } export const getGnosisSafeContract = ensureOnce(createGnosisSafeContract) -export const getCreateProxyFactoryContract = ensureOnce(createProxyFactoryContract) -export const getCreateAddExtensionContract = ensureOnce(createAddExtensionContract) -export const getCreateDailyLimitExtensionContract = ensureOnce(createDailyLimitExtensionContract) +const getCreateProxyFactoryContract = ensureOnce(createProxyFactoryContract) +const getCreateAddExtensionContract = ensureOnce(createAddExtensionContract) +const getCreateDailyLimitExtensionContract = ensureOnce(createDailyLimitExtensionContract) + +const createMasterCopies = async () => { + const web3 = getWeb3() + const accounts = await promisify(cb => web3.eth.getAccounts(cb)) + const userAccount = accounts[0] + const ProxyFactory = getCreateProxyFactoryContract(web3) + const CreateAndAddExtension = getCreateAddExtensionContract(web3) + const DailyLimitExtension = getCreateDailyLimitExtensionContract(web3) + + // Create Master Copies + proxyFactoryMaster = await ProxyFactory.new({ from: userAccount, gas: '5000000' }) + createAndAddExtensionMaster = await CreateAndAddExtension.new({ from: userAccount, gas: '5000000' }) + + // Initialize safe master copy + const GnosisSafe = getGnosisSafeContract(web3) + safeMaster = await GnosisSafe.new({ from: userAccount, gas: '5000000' }) + safeMaster.setup([userAccount], 1, 0, 0, { from: userAccount, gas: '5000000' }) + + // Initialize extension master copy + dailyLimitMaster = await DailyLimitExtension.new({ from: userAccount, gas: '5000000' }) + dailyLimitMaster.setup([], [], { from: userAccount, gas: '5000000' }) +} + +export const initContracts = ensureOnce(createMasterCopies) + +const getSafeDataBasedOn = async (accounts, numConfirmations) => { + const extensionData = await dailyLimitMaster.contract.setup + .getData([0], [100]) + const proxyFactoryData = await proxyFactoryMaster.contract.createProxy + .getData(dailyLimitMaster.address, extensionData) + const createAndAddExtensionData = createAndAddExtensionMaster.contract.createAndAddExtension + .getData(proxyFactoryMaster.address, proxyFactoryData) + + return safeMaster.contract.setup + .getData(accounts, numConfirmations, createAndAddExtensionMaster.address, createAndAddExtensionData) +} + +export const deploySafeContract = async (safeAccounts: string[], numConfirmations: number, userAccount: string) => { + const gnosisSafeData = await getSafeDataBasedOn(safeAccounts, numConfirmations) + return proxyFactoryMaster.createProxy(safeMaster.address, gnosisSafeData, { from: userAccount, gas: '5000000' }) +} From b5bafe2baa004bdd59590953e4b5119f68274689 Mon Sep 17 00:00:00 2001 From: apanizo Date: Wed, 2 May 2018 16:21:32 +0200 Subject: [PATCH 023/138] WA-238 Reusing deployed master contracts --- src/wallets/safeContracts.js | 32 +++++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/src/wallets/safeContracts.js b/src/wallets/safeContracts.js index b95c47d702..d3a344b7df 100644 --- a/src/wallets/safeContracts.js +++ b/src/wallets/safeContracts.js @@ -50,22 +50,36 @@ const createMasterCopies = async () => { const web3 = getWeb3() const accounts = await promisify(cb => web3.eth.getAccounts(cb)) const userAccount = accounts[0] + + // Create ProxyFactory Master Copy const ProxyFactory = getCreateProxyFactoryContract(web3) - const CreateAndAddExtension = getCreateAddExtensionContract(web3) - const DailyLimitExtension = getCreateDailyLimitExtensionContract(web3) + proxyFactoryMaster = await ProxyFactory.deployed() + if (!proxyFactoryMaster) { + proxyFactoryMaster = await ProxyFactory.new({ from: userAccount, gas: '5000000' }) + } - // Create Master Copies - proxyFactoryMaster = await ProxyFactory.new({ from: userAccount, gas: '5000000' }) - createAndAddExtensionMaster = await CreateAndAddExtension.new({ from: userAccount, gas: '5000000' }) + // Create AddExtension Master Copy + const CreateAndAddExtension = getCreateAddExtensionContract(web3) + createAndAddExtensionMaster = await CreateAndAddExtension.deployed() + if (!createAndAddExtensionMaster) { + createAndAddExtensionMaster = await CreateAndAddExtension.new({ from: userAccount, gas: '5000000' }) + } // Initialize safe master copy const GnosisSafe = getGnosisSafeContract(web3) - safeMaster = await GnosisSafe.new({ from: userAccount, gas: '5000000' }) - safeMaster.setup([userAccount], 1, 0, 0, { from: userAccount, gas: '5000000' }) + safeMaster = await GnosisSafe.deployed() + if (!safeMaster) { + safeMaster = await GnosisSafe.new({ from: userAccount, gas: '5000000' }) + safeMaster.setup([userAccount], 1, 0, 0, { from: userAccount, gas: '5000000' }) + } // Initialize extension master copy - dailyLimitMaster = await DailyLimitExtension.new({ from: userAccount, gas: '5000000' }) - dailyLimitMaster.setup([], [], { from: userAccount, gas: '5000000' }) + const DailyLimitExtension = getCreateDailyLimitExtensionContract(web3) + dailyLimitMaster = await DailyLimitExtension.deployed() + if (!dailyLimitMaster) { + dailyLimitMaster = await DailyLimitExtension.new({ from: userAccount, gas: '5000000' }) + dailyLimitMaster.setup([], [], { from: userAccount, gas: '5000000' }) + } } export const initContracts = ensureOnce(createMasterCopies) From 7f53e43fe9e40d3fe9fb644cb10d45768d360f7c Mon Sep 17 00:00:00 2001 From: apanizo Date: Wed, 2 May 2018 16:43:16 +0200 Subject: [PATCH 024/138] WA-238 FIX creating master copy if contract has not been deployed --- src/wallets/safeContracts.js | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/src/wallets/safeContracts.js b/src/wallets/safeContracts.js index d3a344b7df..fc4521db96 100644 --- a/src/wallets/safeContracts.js +++ b/src/wallets/safeContracts.js @@ -53,30 +53,34 @@ const createMasterCopies = async () => { // Create ProxyFactory Master Copy const ProxyFactory = getCreateProxyFactoryContract(web3) - proxyFactoryMaster = await ProxyFactory.deployed() - if (!proxyFactoryMaster) { + try { + proxyFactoryMaster = await ProxyFactory.deployed() + } catch (err) { proxyFactoryMaster = await ProxyFactory.new({ from: userAccount, gas: '5000000' }) } // Create AddExtension Master Copy const CreateAndAddExtension = getCreateAddExtensionContract(web3) - createAndAddExtensionMaster = await CreateAndAddExtension.deployed() - if (!createAndAddExtensionMaster) { + try { + createAndAddExtensionMaster = await CreateAndAddExtension.deployed() + } catch (err) { createAndAddExtensionMaster = await CreateAndAddExtension.new({ from: userAccount, gas: '5000000' }) } // Initialize safe master copy const GnosisSafe = getGnosisSafeContract(web3) - safeMaster = await GnosisSafe.deployed() - if (!safeMaster) { + try { + safeMaster = await GnosisSafe.deployed() + } catch (err) { safeMaster = await GnosisSafe.new({ from: userAccount, gas: '5000000' }) safeMaster.setup([userAccount], 1, 0, 0, { from: userAccount, gas: '5000000' }) } // Initialize extension master copy const DailyLimitExtension = getCreateDailyLimitExtensionContract(web3) - dailyLimitMaster = await DailyLimitExtension.deployed() - if (!dailyLimitMaster) { + try { + dailyLimitMaster = await DailyLimitExtension.deployed() + } catch (err) { dailyLimitMaster = await DailyLimitExtension.new({ from: userAccount, gas: '5000000' }) dailyLimitMaster.setup([], [], { from: userAccount, gas: '5000000' }) } From e4c56f8888d679f50de34bbabf2ac9e7e7170ce0 Mon Sep 17 00:00:00 2001 From: apanizo Date: Fri, 4 May 2018 12:50:24 +0200 Subject: [PATCH 025/138] WA-238 Added contracts after migrated to Kovan and Rinkeby --- .flowconfig | 2 +- .gitignore | 4 ---- .travis.yml | 5 ----- config/paths.js | 2 +- jsconfig.json | 2 +- package.json | 2 +- readme.md | 4 ++-- safe-contracts | 1 + src/wallets/safeContracts.js | 6 ++---- 9 files changed, 9 insertions(+), 19 deletions(-) create mode 160000 safe-contracts diff --git a/.flowconfig b/.flowconfig index ce5ba0d3b2..37c72da20c 100644 --- a/.flowconfig +++ b/.flowconfig @@ -17,7 +17,7 @@ module.file_ext=.css module.file_ext=.scss module.name_mapper='^~' ->'/src' -module.name_mapper='^#' ->'/gnosis-safe-contracts/build/contracts' +module.name_mapper='^#' ->'/safe-contracts/build/contracts' module.name_mapper='.*\(.s?css\)' -> '{}' [strict] diff --git a/.gitignore b/.gitignore index 8240cdac76..17a75e7b64 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,4 @@ node_modules/ -build/ build_webpack/ build_storybook/ -build/contracts/ -truffle-config.js -gnosis-safe-contracts/ .DS_Store \ No newline at end of file diff --git a/.travis.yml b/.travis.yml index 29363b1fc7..7f5b70c508 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,12 +4,7 @@ node_js: os: - linux before_script: - - yarn global add truffle@4.1.5 - yarn global add surge - - git clone https://github.com/gnosis/gnosis-safe-contracts.git - - cd gnosis-safe-contracts - - git fetch && git checkout feature/optimize_personal_edition - - truffle compile && cd .. after_success: - yarn build-storybook - yarn build diff --git a/config/paths.js b/config/paths.js index adf78ce5c0..e964a29a26 100644 --- a/config/paths.js +++ b/config/paths.js @@ -38,7 +38,7 @@ module.exports = { appIndexJs: resolveApp('src/index.js'), appPackageJson: resolveApp('package.json'), appSrc: resolveApp('src'), - appContracts: resolveApp('gnosis-safe-contracts/build/contracts'), + appContracts: resolveApp('safe-contracts/build/contracts'), yarnLockFile: resolveApp('yarn.lock'), testsSetup: resolveApp('src/setupTests.js'), appNodeModules: resolveApp('node_modules'), diff --git a/jsconfig.json b/jsconfig.json index 03732c9418..a1d9002c40 100644 --- a/jsconfig.json +++ b/jsconfig.json @@ -5,7 +5,7 @@ "baseUrl": "./", "paths": { "~/*":["src/*"], - "@/*":["gnosis-safe-contracts/build/contracts"] + "@/*":["safe-contracts/build/contracts"] } }, "exclude": [ diff --git a/package.json b/package.json index 76f3bac65d..71bb2202d6 100644 --- a/package.json +++ b/package.json @@ -136,7 +136,7 @@ ], "moduleNameMapper": { "~(.*)$": "/src/$1", - "#(.*)$": "/gnosis-safe-contracts/build/contracts/$1", + "#(.*)$": "/safe-contracts/build/contracts/$1", "^react-native$": "react-native-web" } } diff --git a/readme.md b/readme.md index 3b3e849a33..f23b412d87 100644 --- a/readme.md +++ b/readme.md @@ -14,7 +14,7 @@ What things you need to install the software and how to install them npm install truffle // recommended usage of -g flag npm install ganache-cli // recommended usage of -g flag npm install flow-type // recommended usage of -g flag -git clone https://github.com/gnosis/gnosis-safe-contracts.git +git clone https://github.com/gnosis/safe-contracts.git ``` ### Installing @@ -28,7 +28,7 @@ ganache-cli -b 3 Start the project in the other one ``` -cd gnosis-safe-contracts && truffle compile && truffle migrate && cd .. +cd safe-contracts && truffle compile && truffle migrate && cd .. npm install npm start ``` diff --git a/safe-contracts b/safe-contracts new file mode 160000 index 0000000000..299e972345 --- /dev/null +++ b/safe-contracts @@ -0,0 +1 @@ +Subproject commit 299e972345691a25f91dc25ae6caeea765aa53c3 diff --git a/src/wallets/safeContracts.js b/src/wallets/safeContracts.js index fc4521db96..547ab9cb93 100644 --- a/src/wallets/safeContracts.js +++ b/src/wallets/safeContracts.js @@ -72,8 +72,7 @@ const createMasterCopies = async () => { try { safeMaster = await GnosisSafe.deployed() } catch (err) { - safeMaster = await GnosisSafe.new({ from: userAccount, gas: '5000000' }) - safeMaster.setup([userAccount], 1, 0, 0, { from: userAccount, gas: '5000000' }) + safeMaster = await GnosisSafe.new([userAccount], 1, 0, 0, { from: userAccount, gas: '5000000' }) } // Initialize extension master copy @@ -81,8 +80,7 @@ const createMasterCopies = async () => { try { dailyLimitMaster = await DailyLimitExtension.deployed() } catch (err) { - dailyLimitMaster = await DailyLimitExtension.new({ from: userAccount, gas: '5000000' }) - dailyLimitMaster.setup([], [], { from: userAccount, gas: '5000000' }) + dailyLimitMaster = await DailyLimitExtension.new([], [], { from: userAccount, gas: '5000000' }) } } From f145d12ce1dd9d8de10a1068338742e306362897 Mon Sep 17 00:00:00 2001 From: apanizo Date: Fri, 4 May 2018 16:04:04 +0200 Subject: [PATCH 026/138] WA-238 Adding safe-contracts --- safe-contracts | 1 - .../contracts/CreateAndAddExtension.json | 1209 + .../build/contracts/DailyLimitExtension.json | 9128 ++++++ safe-contracts/build/contracts/Extension.json | 531 + .../build/contracts/GnosisSafe.json | 25229 ++++++++++++++++ .../build/contracts/Migrations.json | 1391 + safe-contracts/build/contracts/MultiSend.json | 359 + .../build/contracts/MultiSendStruct.json | 1678 + safe-contracts/build/contracts/Proxy.json | 644 + .../build/contracts/ProxyFactory.json | 1008 + .../contracts/SocialRecoveryExtension.json | 9115 ++++++ .../build/contracts/WhitelistExtension.json | 5400 ++++ 12 files changed, 55692 insertions(+), 1 deletion(-) delete mode 160000 safe-contracts create mode 100644 safe-contracts/build/contracts/CreateAndAddExtension.json create mode 100644 safe-contracts/build/contracts/DailyLimitExtension.json create mode 100644 safe-contracts/build/contracts/Extension.json create mode 100644 safe-contracts/build/contracts/GnosisSafe.json create mode 100644 safe-contracts/build/contracts/Migrations.json create mode 100644 safe-contracts/build/contracts/MultiSend.json create mode 100644 safe-contracts/build/contracts/MultiSendStruct.json create mode 100644 safe-contracts/build/contracts/Proxy.json create mode 100644 safe-contracts/build/contracts/ProxyFactory.json create mode 100644 safe-contracts/build/contracts/SocialRecoveryExtension.json create mode 100644 safe-contracts/build/contracts/WhitelistExtension.json diff --git a/safe-contracts b/safe-contracts deleted file mode 160000 index 299e972345..0000000000 --- a/safe-contracts +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 299e972345691a25f91dc25ae6caeea765aa53c3 diff --git a/safe-contracts/build/contracts/CreateAndAddExtension.json b/safe-contracts/build/contracts/CreateAndAddExtension.json new file mode 100644 index 0000000000..72dd995c02 --- /dev/null +++ b/safe-contracts/build/contracts/CreateAndAddExtension.json @@ -0,0 +1,1209 @@ +{ + "contractName": "CreateAndAddExtension", + "abi": [ + { + "constant": false, + "inputs": [ + { + "name": "extension", + "type": "address" + } + ], + "name": "addExtension", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "proxyFactory", + "type": "address" + }, + { + "name": "data", + "type": "bytes" + } + ], + "name": "createAndAddExtension", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x6060604052341561000f57600080fd5b61023f8061001e6000396000f30060606040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063170ff3e11461005157806324aae6941461008a575b600080fd5b341561005c57600080fd5b610088600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610106565b005b341561009557600080fd5b610104600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190505061010b565b005b600080fd5b600061011783836101cc565b90503073ffffffffffffffffffffffffffffffffffffffff1663170ff3e1826040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15156101b357600080fd5b6102c65a03f115156101c457600080fd5b505050505050565b600060405160208184516020860187600019f4600081146101ec576101f1565b600080fd5b5073ffffffffffffffffffffffffffffffffffffffff815116915050929150505600a165627a7a723058208120395f85344344c66227841e7bb657a31240594ca20234664dc785131ecbcd0029", + "deployedBytecode": "0x60606040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063170ff3e11461005157806324aae6941461008a575b600080fd5b341561005c57600080fd5b610088600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610106565b005b341561009557600080fd5b610104600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190505061010b565b005b600080fd5b600061011783836101cc565b90503073ffffffffffffffffffffffffffffffffffffffff1663170ff3e1826040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15156101b357600080fd5b6102c65a03f115156101c457600080fd5b505050505050565b600060405160208184516020860187600019f4600081146101ec576101f1565b600080fd5b5073ffffffffffffffffffffffffffffffffffffffff815116915050929150505600a165627a7a723058208120395f85344344c66227841e7bb657a31240594ca20234664dc785131ecbcd0029", + "sourceMap": "199:1057:8:-;;;;;;;;;;;;;;;;;", + "deployedSourceMap": "199:1057:8:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;364:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;638:196;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;364:87;436:8;;;638:196;732:19;754:35;770:12;784:4;754:15;:35::i;:::-;732:57;;799:4;:17;;;817:9;799:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;638:196;;;:::o;840:414::-;933:19;1011:4;1005:5;1109:4;1101:6;1094:4;1088:5;1081:4;1075;1071:3;1057:12;1053:1;1049:3;1036:12;1132:1;1127:23;;;;1029:121;;1127:23;1146:1;1143;1136:6;1029:121;;1195:42;1186:6;1180:5;1176:3;1163:75;;977:271;;;;;:::o", + "source": "pragma solidity 0.4.19;\nimport \"../Extension.sol\";\n\n\n/// @title Create and Add Extension - Allows to create and add a new extension in one transaction.\n/// @author Stefan George - \ncontract CreateAndAddExtension {\n\n /// @dev Function required to compile contract. Gnosis Safe function is called instead.\n /// @param extension Not used.\n function addExtension(Extension extension)\n public\n {\n revert();\n }\n\n /// @dev Allows to create and add a new extension in one transaction.\n /// @param proxyFactory Extension factory contract.\n /// @param data Extension constructor payload.\n function createAndAddExtension(address proxyFactory, bytes data)\n public\n {\n Extension extension = createExtension(proxyFactory, data);\n this.addExtension(extension);\n }\n\n function createExtension(address proxyFactory, bytes data)\n internal\n returns (Extension extension)\n {\n assembly {\n let output := mload(0x40)\n switch delegatecall(not(0), proxyFactory, add(data, 0x20), mload(data), output, 0x20)\n case 0 { revert(0, 0) }\n extension := and(mload(output), 0xffffffffffffffffffffffffffffffffffffffff)\n }\n }\n}\n", + "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/libraries/CreateAndAddExtension.sol", + "ast": { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/libraries/CreateAndAddExtension.sol", + "exportedSymbols": { + "CreateAndAddExtension": [ + 2006 + ] + }, + "id": 2007, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1963, + "literals": [ + "solidity", + "0.4", + ".19" + ], + "nodeType": "PragmaDirective", + "src": "0:23:8" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Extension.sol", + "file": "../Extension.sol", + "id": 1964, + "nodeType": "ImportDirective", + "scope": 2007, + "sourceUnit": 19, + "src": "24:26:8", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": "@title Create and Add Extension - Allows to create and add a new extension in one transaction.\n @author Stefan George - ", + "fullyImplemented": true, + "id": 2006, + "linearizedBaseContracts": [ + 2006 + ], + "name": "CreateAndAddExtension", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 1972, + "nodeType": "Block", + "src": "426:25:8", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1969, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2093, + "src": "436:6:8", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 1970, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "436:8:8", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1971, + "nodeType": "ExpressionStatement", + "src": "436:8:8" + } + ] + }, + "id": 1973, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "addExtension", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1967, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1966, + "name": "extension", + "nodeType": "VariableDeclaration", + "scope": 1973, + "src": "386:19:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + }, + "typeName": { + "contractScope": null, + "id": 1965, + "name": "Extension", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 18, + "src": "386:9:8", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "385:21:8" + }, + "payable": false, + "returnParameters": { + "id": 1968, + "nodeType": "ParameterList", + "parameters": [], + "src": "426:0:8" + }, + "scope": 2006, + "src": "364:87:8", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1993, + "nodeType": "Block", + "src": "722:112:8", + "statements": [ + { + "assignments": [ + 1981 + ], + "declarations": [ + { + "constant": false, + "id": 1981, + "name": "extension", + "nodeType": "VariableDeclaration", + "scope": 1994, + "src": "732:19:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + }, + "typeName": { + "contractScope": null, + "id": 1980, + "name": "Extension", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 18, + "src": "732:9:8", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1986, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1983, + "name": "proxyFactory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1975, + "src": "770:12:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1984, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1977, + "src": "784:4:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 1982, + "name": "createExtension", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2005, + "src": "754:15:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_contract$_Extension_$18_$", + "typeString": "function (address,bytes memory) returns (contract Extension)" + } + }, + "id": 1985, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "754:35:8", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "732:57:8" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1990, + "name": "extension", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1981, + "src": "817:9:8", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + ], + "expression": { + "argumentTypes": null, + "id": 1987, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2116, + "src": "799:4:8", + "typeDescriptions": { + "typeIdentifier": "t_contract$_CreateAndAddExtension_$2006", + "typeString": "contract CreateAndAddExtension" + } + }, + "id": 1989, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "addExtension", + "nodeType": "MemberAccess", + "referencedDeclaration": 1973, + "src": "799:17:8", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_contract$_Extension_$18_$returns$__$", + "typeString": "function (contract Extension) external" + } + }, + "id": 1991, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "799:28:8", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1992, + "nodeType": "ExpressionStatement", + "src": "799:28:8" + } + ] + }, + "id": 1994, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "createAndAddExtension", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1978, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1975, + "name": "proxyFactory", + "nodeType": "VariableDeclaration", + "scope": 1994, + "src": "669:20:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1974, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "669:7:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1977, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 1994, + "src": "691:10:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + "typeName": { + "id": 1976, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "691:5:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "668:34:8" + }, + "payable": false, + "returnParameters": { + "id": 1979, + "nodeType": "ParameterList", + "parameters": [], + "src": "722:0:8" + }, + "scope": 2006, + "src": "638:196:8", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2004, + "nodeType": "Block", + "src": "958:296:8", + "statements": [ + { + "externalReferences": [ + { + "extension": { + "declaration": 2001, + "isOffset": false, + "isSlot": false, + "src": "1163:9:8", + "valueSize": 1 + } + }, + { + "data": { + "declaration": 1998, + "isOffset": false, + "isSlot": false, + "src": "1075:4:8", + "valueSize": 1 + } + }, + { + "data": { + "declaration": 1998, + "isOffset": false, + "isSlot": false, + "src": "1094:4:8", + "valueSize": 1 + } + }, + { + "proxyFactory": { + "declaration": 1996, + "isOffset": false, + "isSlot": false, + "src": "1057:12:8", + "valueSize": 1 + } + } + ], + "id": 2003, + "nodeType": "InlineAssembly", + "operations": "{\n let output := mload(0x40)\n switch delegatecall(not(0), proxyFactory, add(data, 0x20), mload(data), output, 0x20)\n case 0 {\n revert(0, 0)\n }\n extension := and(mload(output), 0xffffffffffffffffffffffffffffffffffffffff)\n}", + "src": "968:286:8" + } + ] + }, + "id": 2005, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "createExtension", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1999, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1996, + "name": "proxyFactory", + "nodeType": "VariableDeclaration", + "scope": 2005, + "src": "865:20:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1995, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "865:7:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1998, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 2005, + "src": "887:10:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + "typeName": { + "id": 1997, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "887:5:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "864:34:8" + }, + "payable": false, + "returnParameters": { + "id": 2002, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2001, + "name": "extension", + "nodeType": "VariableDeclaration", + "scope": 2005, + "src": "933:19:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + }, + "typeName": { + "contractScope": null, + "id": 2000, + "name": "Extension", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 18, + "src": "933:9:8", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "932:21:8" + }, + "scope": 2006, + "src": "840:414:8", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 2007, + "src": "199:1057:8" + } + ], + "src": "0:1257:8" + }, + "legacyAST": { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/libraries/CreateAndAddExtension.sol", + "exportedSymbols": { + "CreateAndAddExtension": [ + 2006 + ] + }, + "id": 2007, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1963, + "literals": [ + "solidity", + "0.4", + ".19" + ], + "nodeType": "PragmaDirective", + "src": "0:23:8" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Extension.sol", + "file": "../Extension.sol", + "id": 1964, + "nodeType": "ImportDirective", + "scope": 2007, + "sourceUnit": 19, + "src": "24:26:8", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": "@title Create and Add Extension - Allows to create and add a new extension in one transaction.\n @author Stefan George - ", + "fullyImplemented": true, + "id": 2006, + "linearizedBaseContracts": [ + 2006 + ], + "name": "CreateAndAddExtension", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 1972, + "nodeType": "Block", + "src": "426:25:8", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1969, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2093, + "src": "436:6:8", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 1970, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "436:8:8", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1971, + "nodeType": "ExpressionStatement", + "src": "436:8:8" + } + ] + }, + "id": 1973, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "addExtension", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1967, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1966, + "name": "extension", + "nodeType": "VariableDeclaration", + "scope": 1973, + "src": "386:19:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + }, + "typeName": { + "contractScope": null, + "id": 1965, + "name": "Extension", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 18, + "src": "386:9:8", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "385:21:8" + }, + "payable": false, + "returnParameters": { + "id": 1968, + "nodeType": "ParameterList", + "parameters": [], + "src": "426:0:8" + }, + "scope": 2006, + "src": "364:87:8", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1993, + "nodeType": "Block", + "src": "722:112:8", + "statements": [ + { + "assignments": [ + 1981 + ], + "declarations": [ + { + "constant": false, + "id": 1981, + "name": "extension", + "nodeType": "VariableDeclaration", + "scope": 1994, + "src": "732:19:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + }, + "typeName": { + "contractScope": null, + "id": 1980, + "name": "Extension", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 18, + "src": "732:9:8", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1986, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1983, + "name": "proxyFactory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1975, + "src": "770:12:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1984, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1977, + "src": "784:4:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 1982, + "name": "createExtension", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2005, + "src": "754:15:8", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_contract$_Extension_$18_$", + "typeString": "function (address,bytes memory) returns (contract Extension)" + } + }, + "id": 1985, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "754:35:8", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "732:57:8" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1990, + "name": "extension", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1981, + "src": "817:9:8", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + ], + "expression": { + "argumentTypes": null, + "id": 1987, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2116, + "src": "799:4:8", + "typeDescriptions": { + "typeIdentifier": "t_contract$_CreateAndAddExtension_$2006", + "typeString": "contract CreateAndAddExtension" + } + }, + "id": 1989, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "addExtension", + "nodeType": "MemberAccess", + "referencedDeclaration": 1973, + "src": "799:17:8", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_contract$_Extension_$18_$returns$__$", + "typeString": "function (contract Extension) external" + } + }, + "id": 1991, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "799:28:8", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1992, + "nodeType": "ExpressionStatement", + "src": "799:28:8" + } + ] + }, + "id": 1994, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "createAndAddExtension", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1978, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1975, + "name": "proxyFactory", + "nodeType": "VariableDeclaration", + "scope": 1994, + "src": "669:20:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1974, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "669:7:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1977, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 1994, + "src": "691:10:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + "typeName": { + "id": 1976, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "691:5:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "668:34:8" + }, + "payable": false, + "returnParameters": { + "id": 1979, + "nodeType": "ParameterList", + "parameters": [], + "src": "722:0:8" + }, + "scope": 2006, + "src": "638:196:8", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2004, + "nodeType": "Block", + "src": "958:296:8", + "statements": [ + { + "externalReferences": [ + { + "extension": { + "declaration": 2001, + "isOffset": false, + "isSlot": false, + "src": "1163:9:8", + "valueSize": 1 + } + }, + { + "data": { + "declaration": 1998, + "isOffset": false, + "isSlot": false, + "src": "1075:4:8", + "valueSize": 1 + } + }, + { + "data": { + "declaration": 1998, + "isOffset": false, + "isSlot": false, + "src": "1094:4:8", + "valueSize": 1 + } + }, + { + "proxyFactory": { + "declaration": 1996, + "isOffset": false, + "isSlot": false, + "src": "1057:12:8", + "valueSize": 1 + } + } + ], + "id": 2003, + "nodeType": "InlineAssembly", + "operations": "{\n let output := mload(0x40)\n switch delegatecall(not(0), proxyFactory, add(data, 0x20), mload(data), output, 0x20)\n case 0 {\n revert(0, 0)\n }\n extension := and(mload(output), 0xffffffffffffffffffffffffffffffffffffffff)\n}", + "src": "968:286:8" + } + ] + }, + "id": 2005, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "createExtension", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1999, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1996, + "name": "proxyFactory", + "nodeType": "VariableDeclaration", + "scope": 2005, + "src": "865:20:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1995, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "865:7:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1998, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 2005, + "src": "887:10:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + "typeName": { + "id": 1997, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "887:5:8", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "864:34:8" + }, + "payable": false, + "returnParameters": { + "id": 2002, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2001, + "name": "extension", + "nodeType": "VariableDeclaration", + "scope": 2005, + "src": "933:19:8", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + }, + "typeName": { + "contractScope": null, + "id": 2000, + "name": "Extension", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 18, + "src": "933:9:8", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "932:21:8" + }, + "scope": 2006, + "src": "840:414:8", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 2007, + "src": "199:1057:8" + } + ], + "src": "0:1257:8" + }, + "compiler": { + "name": "solc", + "version": "0.4.19+commit.c4cbbb05.Emscripten.clang" + }, + "networks": { + "4": { + "events": {}, + "links": {}, + "address": "0xb19cd8c86c13dcade8f680a67e49aaa48c0817a9", + "transactionHash": "0x11ae4fbe0e73a77a68f8229c126331e9fb4e6ff09ebee7e8b60890913a1ca440" + }, + "42": { + "events": {}, + "links": {}, + "address": "0xce33c528bca2944d25eeadf7107a896018702a98", + "transactionHash": "0x99b20dea53ddbbb9757e414a9a36289c379203be870619b55af681ee86d3b953" + }, + "1525342778744": { + "events": {}, + "links": {}, + "address": "0x69c1cca644134e10f5f82fc28b3d45e136786dfc", + "transactionHash": "0x2af139a9359ac4b51195eab08a5958d134195ea3793c8851e63b2657d6b1a1be" + } + }, + "schemaVersion": "2.0.0", + "updatedAt": "2018-05-04T13:47:03.968Z" +} \ No newline at end of file diff --git a/safe-contracts/build/contracts/DailyLimitExtension.json b/safe-contracts/build/contracts/DailyLimitExtension.json new file mode 100644 index 0000000000..75f1fd8b00 --- /dev/null +++ b/safe-contracts/build/contracts/DailyLimitExtension.json @@ -0,0 +1,9128 @@ +{ + "contractName": "DailyLimitExtension", + "abi": [ + { + "constant": true, + "inputs": [], + "name": "TRANSFER_FUNCTION_IDENTIFIER", + "outputs": [ + { + "name": "", + "type": "bytes4" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "NAME", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "gnosisSafe", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "address" + } + ], + "name": "dailyLimits", + "outputs": [ + { + "name": "dailyLimit", + "type": "uint256" + }, + { + "name": "spentToday", + "type": "uint256" + }, + { + "name": "lastDay", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "VERSION", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "name": "tokens", + "type": "address[]" + }, + { + "name": "_dailyLimits", + "type": "uint256[]" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "constant": false, + "inputs": [ + { + "name": "tokens", + "type": "address[]" + }, + { + "name": "_dailyLimits", + "type": "uint256[]" + } + ], + "name": "setup", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_masterCopy", + "type": "address" + } + ], + "name": "changeMasterCopy", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "token", + "type": "address" + }, + { + "name": "dailyLimit", + "type": "uint256" + } + ], + "name": "changeDailyLimit", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "sender", + "type": "address" + }, + { + "name": "to", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + }, + { + "name": "data", + "type": "bytes" + }, + { + "name": "operation", + "type": "uint8" + } + ], + "name": "isExecutable", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "today", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x6060604052341561000f57600080fd5b604051610dbf380380610dbf833981016040528080518201919060200180518201919050506100518282610058640100000000026104e2176401000000009004565b5050610176565b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156100a057600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600090505b82518110156101715781818151811015156100fd57fe5b9060200190602002015160026000858481518110151561011957fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555080806001019150506100e6565b505050565b610c3a806101856000396000f3006060604052600436106100a4576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806328814f03146100a9578063430e47f8146101435780637de7edef146101aa57806381c5e03b146101e3578063a3f4df7e14610225578063a84173ae146102b3578063b74e452b14610308578063cde09ca914610331578063d7bffc92146103f9578063ffa1ad7414610454575b600080fd5b34156100b457600080fd5b610141600480803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919050506104e2565b005b341561014e57600080fd5b610156610600565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b34156101b557600080fd5b6101e1600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610624565b005b34156101ee57600080fd5b610223600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506106e9565b005b341561023057600080fd5b610238610790565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561027857808201518184015260208101905061025d565b50505050905090810190601f1680156102a55780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156102be57600080fd5b6102c66107c9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561031357600080fd5b61031b6107ef565b6040518082815260200191505060405180910390f35b341561033c57600080fd5b6103df600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803560ff16906020019091905050610807565b604051808215151515815260200191505060405180910390f35b341561040457600080fd5b610430600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610afc565b60405180848152602001838152602001828152602001935050505060405180910390f35b341561045f57600080fd5b610467610b26565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104a757808201518184015260208101905061048c565b50505050905090810190601f1680156104d45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561052a57600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600090505b82518110156105fb57818181518110151561058757fe5b906020019060200201516002600085848151811015156105a357fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055508080600101915050610570565b505050565b7fa9059cbb0000000000000000000000000000000000000000000000000000000081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561068057600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156106a657600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561074557600080fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055505050565b6040805190810160405280601581526020017f4461696c79204c696d697420457874656e73696f6e000000000000000000000081525081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600062015180428115156107ff57fe5b064203905090565b6000806000806000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561086b57600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e8b6000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b151561093057600080fd5b6102c65a03f1151561094157600080fd5b50505060405180519050151561095657600080fd5b6000600281111561096357fe5b86600281111561096f57fe5b14151561097b57600080fd5b6000875114801561098c5750600088115b806109a45750600087511180156109a35750600088145b5b15156109af57600080fd5b6000875114156109c85760009350889250879150610a4d565b8893506020870151905060248701519250604487015191507fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141515610a4c57600080fd5b5b60008373ffffffffffffffffffffffffffffffffffffffff1614151515610a7357600080fd5b600082111515610a8257600080fd5b610a8c8483610b5f565b15610aea5781600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016000828254019250508190555060019450610aef565b600094505b5050505095945050505050565b60026020528060005260406000206000915090508060000154908060010154908060020154905083565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b600080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060020154610bb06107ef565b1115610bd157610bbe6107ef565b8160020181905550600081600101819055505b80600001548382600101540111158015610bf45750806001015483826001015401115b15610c025760019150610c07565b600091505b50929150505600a165627a7a72305820f7f238174a987b01a6474c913fd8e1b521a4e9437201243a233835e7739be3730029", + "deployedBytecode": "0x6060604052600436106100a4576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806328814f03146100a9578063430e47f8146101435780637de7edef146101aa57806381c5e03b146101e3578063a3f4df7e14610225578063a84173ae146102b3578063b74e452b14610308578063cde09ca914610331578063d7bffc92146103f9578063ffa1ad7414610454575b600080fd5b34156100b457600080fd5b610141600480803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919050506104e2565b005b341561014e57600080fd5b610156610600565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b34156101b557600080fd5b6101e1600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610624565b005b34156101ee57600080fd5b610223600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506106e9565b005b341561023057600080fd5b610238610790565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561027857808201518184015260208101905061025d565b50505050905090810190601f1680156102a55780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156102be57600080fd5b6102c66107c9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561031357600080fd5b61031b6107ef565b6040518082815260200191505060405180910390f35b341561033c57600080fd5b6103df600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803560ff16906020019091905050610807565b604051808215151515815260200191505060405180910390f35b341561040457600080fd5b610430600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610afc565b60405180848152602001838152602001828152602001935050505060405180910390f35b341561045f57600080fd5b610467610b26565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104a757808201518184015260208101905061048c565b50505050905090810190601f1680156104d45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561052a57600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600090505b82518110156105fb57818181518110151561058757fe5b906020019060200201516002600085848151811015156105a357fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055508080600101915050610570565b505050565b7fa9059cbb0000000000000000000000000000000000000000000000000000000081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561068057600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156106a657600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561074557600080fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055505050565b6040805190810160405280601581526020017f4461696c79204c696d697420457874656e73696f6e000000000000000000000081525081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600062015180428115156107ff57fe5b064203905090565b6000806000806000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561086b57600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e8b6000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b151561093057600080fd5b6102c65a03f1151561094157600080fd5b50505060405180519050151561095657600080fd5b6000600281111561096357fe5b86600281111561096f57fe5b14151561097b57600080fd5b6000875114801561098c5750600088115b806109a45750600087511180156109a35750600088145b5b15156109af57600080fd5b6000875114156109c85760009350889250879150610a4d565b8893506020870151905060248701519250604487015191507fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141515610a4c57600080fd5b5b60008373ffffffffffffffffffffffffffffffffffffffff1614151515610a7357600080fd5b600082111515610a8257600080fd5b610a8c8483610b5f565b15610aea5781600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016000828254019250508190555060019450610aef565b600094505b5050505095945050505050565b60026020528060005260406000206000915090508060000154908060010154908060020154905083565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b600080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060020154610bb06107ef565b1115610bd157610bbe6107ef565b8160020181905550600081600101819055505b80600001548382600101540111158015610bf45750806001015483826001015401115b15610c025760019150610c07565b600091505b50929150505600a165627a7a72305820f7f238174a987b01a6474c913fd8e1b521a4e9437201243a233835e7739be3730029", + "sourceMap": "247:5028:5:-;;;1209:134;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1309:27;1315:6;1323:12;1309:5;;;;;:27;;;:::i;:::-;1209:134;;247:5028;;1585:424;1900:9;1838:1;1823:10;;;;;;;;;;;1815:24;;;1807:33;;;;;;;;1874:10;1850;;:35;;;;;;;;;;;;;;;;;;1912:1;1900:13;;1895:107;1919:6;:13;1915:1;:17;1895:107;;;1987:12;2000:1;1987:15;;;;;;;;;;;;;;;;;;1951:11;:22;1963:6;1970:1;1963:9;;;;;;;;;;;;;;;;;;1951:22;;;;;;;;;;;;;;;:33;;:51;;;;1934:3;;;;;;;1895:107;;;1585:424;;;:::o;247:5028::-;;;;;;;", + "deployedSourceMap": "247:5028:5:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1585:424;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;401:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2155:186;;;;;;;;;;;;;;;;;;;;;;;;;;;;2569:162;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;296:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;511:28:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5157:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3233:1338;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;617:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;355:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1585:424:5;1900:9;1838:1;1823:10;;;;;;;;;;;1815:24;;;1807:33;;;;;;;;1874:10;1850;;:35;;;;;;;;;;;;;;;;;;1912:1;1900:13;;1895:107;1919:6;:13;1915:1;:17;1895:107;;;1987:12;2000:1;1987:15;;;;;;;;;;;;;;;;;;1951:11;:22;1963:6;1970:1;1963:9;;;;;;;;;;;;;;;;;;1951:22;;;;;;;;;;;;;;;:33;;:51;;;;1934:3;;;;;;;1895:107;;;1585:424;;;:::o;401:67::-;;;:::o;2155:186::-;852:10;;;;;;;;;;;830:33;;:10;:33;;;822:42;;;;;;;;2298:1;2282:11;2274:25;;;;2266:34;;;;;;;;2323:11;2310:10;;:24;;;;;;;;;;;;;;;;;;2155:186;:::o;2569:162::-;852:10;;;;;;;;;;;830:33;;:10;:33;;;822:42;;;;;;;;2714:10;2682:11;:18;2694:5;2682:18;;;;;;;;;;;;;;;:29;;:42;;;;2569:162;;:::o;296:53::-;;;;;;;;;;;;;;;;;;;;:::o;511:28::-;;;;;;;;;;;;;:::o;5157:116::-;5219:4;5259:6;5253:3;:12;;;;;;;;5246:3;:20;5239:27;;5157:116;:::o;3233:1338::-;3397:4;3744:13;3767:16;3793:14;3980:25;852:10;;;;;;;;;;;830:33;;:10;:33;;;822:42;;;;;;;;3502:10;;;;;;;;;;;:18;;;3521:6;3502:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3494:35;;;;;;;;3560:25;3547:38;;;;;;;;:9;:38;;;;;;;;;3539:47;;;;;;;;3686:1;3671:4;:11;:16;:29;;;;;3699:1;3691:5;:9;3671:29;:62;;;;3718:1;3704:4;:11;:15;:29;;;;;3732:1;3723:5;:10;3704:29;3671:62;3663:71;;;;;;;;3836:1;3821:4;:11;:16;3817:470;;;3861:1;3853:9;;3887:2;3876:13;;3912:5;3903:14;;3817:470;;;3964:2;3956:10;;4084:4;4078;4074:3;4068:5;4046:44;;4135:4;4129;4125:3;4119:5;4107:34;;4184:4;4178;4174:3;4168:5;4158:32;;4247:28;4225:50;;;:18;:50;;;;4217:59;;;;;;;;3817:470;4316:1;4304:8;:13;;;;4296:22;;;;;;;;4345:1;4336:6;:10;4328:19;;;;;;;;4425:27;4438:5;4445:6;4425:12;:27::i;:::-;4421:122;;;4501:6;4468:11;:18;4480:5;4468:18;;;;;;;;;;;;;;;:29;;;:39;;;;;;;;;;;4528:4;4521:11;;;;4421:122;4559:5;4552:12;;874:1;3233:1338;;;;;;;;;;;:::o;617:50::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;355:40::-;;;;;;;;;;;;;;;;;;;;:::o;4577:488::-;4664:4;4684:29;4716:11;:18;4728:5;4716:18;;;;;;;;;;;;;;;4684:50;;4758:10;:18;;;4748:7;:5;:7::i;:::-;:28;4744:126;;;4813:7;:5;:7::i;:::-;4792:10;:18;;:28;;;;4858:1;4834:10;:21;;:25;;;;4744:126;4920:10;:21;;;4910:6;4886:10;:21;;;:30;:55;;:125;;;;;4990:10;:21;;;4981:6;4957:10;:21;;;:30;:54;4886:125;4879:157;;;5032:4;5025:11;;;;4879:157;5053:5;5046:12;;4577:488;;;;;;:::o", + "source": "pragma solidity 0.4.19;\nimport \"../Extension.sol\";\nimport \"../GnosisSafe.sol\";\n\n\n/// @title Daily Limit Extension - Allows to transfer limited amounts of ERC20 tokens and Ether without confirmations.\n/// @author Stefan George - \ncontract DailyLimitExtension is Extension {\n\n string public constant NAME = \"Daily Limit Extension\";\n string public constant VERSION = \"0.0.1\";\n bytes4 public constant TRANSFER_FUNCTION_IDENTIFIER = hex\"a9059cbb\";\n\n DailyLimitExtension masterCopy;\n GnosisSafe public gnosisSafe;\n\n // dailyLimits mapping maps token address to daily limit settings.\n mapping (address => DailyLimit) public dailyLimits;\n\n struct DailyLimit {\n uint256 dailyLimit;\n uint256 spentToday;\n uint256 lastDay;\n }\n\n modifier onlyGnosisSafe() {\n require(msg.sender == address(gnosisSafe));\n _;\n }\n\n /// @dev Constructor function triggers setup function.\n /// @param tokens List of token addresses. Ether is represented with address 0x0.\n /// @param _dailyLimits List of daily limits in smallest unit (e.g. Wei for Ether). \n /// First entry of array corresponds to first entry in token address array.\n function DailyLimitExtension(address[] tokens, uint256[] _dailyLimits)\n public\n {\n setup(tokens, _dailyLimits);\n }\n\n /// @dev Setup function sets initial storage of contract.\n /// @param tokens List of token addresses. Ether is represented with address 0x0.\n /// @param _dailyLimits List of daily limits in smalles units (e.g. Wei for Ether).\n function setup(address[] tokens, uint256[] _dailyLimits)\n public\n {\n // gnosisSafe can only be 0 at initalization of contract.\n // Check ensures that setup function can only be called once.\n require(address(gnosisSafe) == 0);\n gnosisSafe = GnosisSafe(msg.sender);\n for (uint256 i = 0; i < tokens.length; i++)\n dailyLimits[tokens[i]].dailyLimit = _dailyLimits[i];\n }\n\n /// @dev Allows to upgrade the contract. This can only be done via a Safe transaction.\n /// @param _masterCopy New contract address.\n function changeMasterCopy(DailyLimitExtension _masterCopy)\n public\n onlyGnosisSafe\n {\n require(address(_masterCopy) != 0);\n masterCopy = _masterCopy;\n }\n\n /// @dev Allows to update the daily limit for a specified token. This can only be done via a Safe transaction.\n /// @param token Token contract address.\n /// @param dailyLimit Daily limit in smallest token unit.\n function changeDailyLimit(address token, uint256 dailyLimit)\n public\n onlyGnosisSafe\n {\n dailyLimits[token].dailyLimit = dailyLimit;\n }\n\n /// @dev Returns if Safe transaction is a valid daily limit transaction.\n /// @param sender Safe owner sending Safe transaction.\n /// @param to Receiver address in case of Ether transfer, token address in case of a token transfer.\n /// @param value Ether value in case of an Ether transfer.\n /// @param data Encoded token transfer. Empty in case of Ether transfer.\n /// @param operation Only Call operations are allowed.\n /// @return Returns if transaction can be executed.\n function isExecutable(address sender, address to, uint256 value, bytes data, GnosisSafe.Operation operation)\n public\n onlyGnosisSafe\n returns (bool)\n {\n // Only Safe owners are allowed to execute daily limit transactions.\n require(gnosisSafe.isOwner(sender));\n require(operation == GnosisSafe.Operation.Call);\n // Data has to encode a token transfer or has to be empty.\n require(data.length == 0 && value > 0 || data.length > 0 && value == 0);\n address token;\n address receiver;\n uint256 amount;\n if (data.length == 0) {\n token = 0;\n receiver = to;\n amount = value;\n }\n else {\n token = to;\n bytes4 functionIdentifier;\n assembly {\n functionIdentifier := mload(add(data, 0x20))\n receiver := mload(add(data, 0x24))\n amount := mload(add(data, 0x44))\n }\n require(functionIdentifier == TRANSFER_FUNCTION_IDENTIFIER);\n }\n require(receiver != 0);\n require(amount > 0);\n // Validate that transfer is not exceeding daily limit.\n if (isUnderLimit(token, amount)) {\n dailyLimits[token].spentToday += amount;\n return true;\n }\n return false;\n }\n\n function isUnderLimit(address token, uint256 amount)\n internal\n returns (bool)\n {\n DailyLimit storage dailyLimit = dailyLimits[token];\n if (today() > dailyLimit.lastDay) {\n dailyLimit.lastDay = today();\n dailyLimit.spentToday = 0;\n }\n if ( dailyLimit.spentToday + amount <= dailyLimit.dailyLimit\n && dailyLimit.spentToday + amount > dailyLimit.spentToday)\n return true;\n return false;\n }\n\n /// @dev Returns last midnight as Unix timestamp.\n /// @return Unix timestamp.\n function today()\n public\n view\n returns (uint)\n {\n return now - (now % 1 days);\n }\n}\n", + "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/extensions/DailyLimitExtension.sol", + "ast": { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/extensions/DailyLimitExtension.sol", + "exportedSymbols": { + "DailyLimitExtension": [ + 1418 + ] + }, + "id": 1419, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1083, + "literals": [ + "solidity", + "0.4", + ".19" + ], + "nodeType": "PragmaDirective", + "src": "0:23:5" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Extension.sol", + "file": "../Extension.sol", + "id": 1084, + "nodeType": "ImportDirective", + "scope": 1419, + "sourceUnit": 19, + "src": "24:26:5", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", + "file": "../GnosisSafe.sol", + "id": 1085, + "nodeType": "ImportDirective", + "scope": 1419, + "sourceUnit": 964, + "src": "51:27:5", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": [], + "baseName": { + "contractScope": null, + "id": 1086, + "name": "Extension", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 18, + "src": "279:9:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + }, + "id": 1087, + "nodeType": "InheritanceSpecifier", + "src": "279:9:5" + } + ], + "contractDependencies": [ + 18 + ], + "contractKind": "contract", + "documentation": "@title Daily Limit Extension - Allows to transfer limited amounts of ERC20 tokens and Ether without confirmations.\n @author Stefan George - ", + "fullyImplemented": true, + "id": 1418, + "linearizedBaseContracts": [ + 1418, + 18 + ], + "name": "DailyLimitExtension", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "id": 1090, + "name": "NAME", + "nodeType": "VariableDeclaration", + "scope": 1418, + "src": "296:53:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory", + "typeString": "string memory" + }, + "typeName": { + "id": 1088, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "296:6:5", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string storage pointer" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "4461696c79204c696d697420457874656e73696f6e", + "id": 1089, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "326:23:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_d825d71e418e7ec5e1c3c51592576f08c81f26d9ede420759434d9e0a688c12f", + "typeString": "literal_string \"Daily Limit Extension\"" + }, + "value": "Daily Limit Extension" + }, + "visibility": "public" + }, + { + "constant": true, + "id": 1093, + "name": "VERSION", + "nodeType": "VariableDeclaration", + "scope": 1418, + "src": "355:40:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory", + "typeString": "string memory" + }, + "typeName": { + "id": 1091, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "355:6:5", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string storage pointer" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "302e302e31", + "id": 1092, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "388:7:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", + "typeString": "literal_string \"0.0.1\"" + }, + "value": "0.0.1" + }, + "visibility": "public" + }, + { + "constant": true, + "id": 1096, + "name": "TRANSFER_FUNCTION_IDENTIFIER", + "nodeType": "VariableDeclaration", + "scope": 1418, + "src": "401:67:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 1094, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "401:6:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "a9059cbb", + "id": 1095, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "455:13:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_abce0605a16ff5e998983a0af570b8ad942bb11e305eb20ae3ada0a3be24eb97", + "typeString": "literal_string (contains invalid UTF-8 sequence at position 0)" + }, + "value": null + }, + "visibility": "public" + }, + { + "constant": false, + "id": 1098, + "name": "masterCopy", + "nodeType": "VariableDeclaration", + "scope": 1418, + "src": "475:30:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_DailyLimitExtension_$1418", + "typeString": "contract DailyLimitExtension" + }, + "typeName": { + "contractScope": null, + "id": 1097, + "name": "DailyLimitExtension", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1418, + "src": "475:19:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_DailyLimitExtension_$1418", + "typeString": "contract DailyLimitExtension" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1100, + "name": "gnosisSafe", + "nodeType": "VariableDeclaration", + "scope": 1418, + "src": "511:28:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + }, + "typeName": { + "contractScope": null, + "id": 1099, + "name": "GnosisSafe", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 963, + "src": "511:10:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 1104, + "name": "dailyLimits", + "nodeType": "VariableDeclaration", + "scope": 1418, + "src": "617:50:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1111_storage_$", + "typeString": "mapping(address => struct DailyLimitExtension.DailyLimit storage ref)" + }, + "typeName": { + "id": 1103, + "keyType": { + "id": 1101, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "626:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "617:31:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1111_storage_$", + "typeString": "mapping(address => struct DailyLimitExtension.DailyLimit storage ref)" + }, + "valueType": { + "contractScope": null, + "id": 1102, + "name": "DailyLimit", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1111, + "src": "637:10:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr", + "typeString": "struct DailyLimitExtension.DailyLimit storage pointer" + } + } + }, + "value": null, + "visibility": "public" + }, + { + "canonicalName": "DailyLimitExtension.DailyLimit", + "id": 1111, + "members": [ + { + "constant": false, + "id": 1106, + "name": "dailyLimit", + "nodeType": "VariableDeclaration", + "scope": 1111, + "src": "702:18:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1105, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "702:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1108, + "name": "spentToday", + "nodeType": "VariableDeclaration", + "scope": 1111, + "src": "730:18:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1107, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "730:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1110, + "name": "lastDay", + "nodeType": "VariableDeclaration", + "scope": 1111, + "src": "758:15:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1109, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "758:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "DailyLimit", + "nodeType": "StructDefinition", + "scope": 1418, + "src": "674:106:5", + "visibility": "public" + }, + { + "body": { + "id": 1123, + "nodeType": "Block", + "src": "812:70:5", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1119, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1114, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2089, + "src": "830:3:5", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1115, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "830:10:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1117, + "name": "gnosisSafe", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1100, + "src": "852:10:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + ], + "id": 1116, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "844:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1118, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "844:19:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "830:33:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1113, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "822:7:5", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1120, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "822:42:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1121, + "nodeType": "ExpressionStatement", + "src": "822:42:5" + }, + { + "id": 1122, + "nodeType": "PlaceholderStatement", + "src": "874:1:5" + } + ] + }, + "id": 1124, + "name": "onlyGnosisSafe", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 1112, + "nodeType": "ParameterList", + "parameters": [], + "src": "809:2:5" + }, + "src": "786:96:5", + "visibility": "internal" + }, + { + "body": { + "id": 1138, + "nodeType": "Block", + "src": "1299:44:5", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1134, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1127, + "src": "1315:6:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + { + "argumentTypes": null, + "id": 1135, + "name": "_dailyLimits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1130, + "src": "1323:12:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + ], + "id": 1133, + "name": "setup", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1187, + "src": "1309:5:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$", + "typeString": "function (address[] memory,uint256[] memory)" + } + }, + "id": 1136, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1309:27:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1137, + "nodeType": "ExpressionStatement", + "src": "1309:27:5" + } + ] + }, + "id": 1139, + "implemented": true, + "isConstructor": true, + "isDeclaredConst": false, + "modifiers": [], + "name": "DailyLimitExtension", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1131, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1127, + "name": "tokens", + "nodeType": "VariableDeclaration", + "scope": 1139, + "src": "1238:16:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + }, + "typeName": { + "baseType": { + "id": 1125, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1238:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1126, + "length": null, + "nodeType": "ArrayTypeName", + "src": "1238:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[] storage pointer" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1130, + "name": "_dailyLimits", + "nodeType": "VariableDeclaration", + "scope": 1139, + "src": "1256:22:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + }, + "typeName": { + "baseType": { + "id": 1128, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1256:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1129, + "length": null, + "nodeType": "ArrayTypeName", + "src": "1256:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[] storage pointer" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1237:42:5" + }, + "payable": false, + "returnParameters": { + "id": 1132, + "nodeType": "ParameterList", + "parameters": [], + "src": "1299:0:5" + }, + "scope": 1418, + "src": "1209:134:5", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1186, + "nodeType": "Block", + "src": "1661:348:5", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1153, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1150, + "name": "gnosisSafe", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1100, + "src": "1823:10:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + ], + "id": 1149, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1815:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1151, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1815:19:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1152, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1838:1:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1815:24:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1148, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "1807:7:5", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1154, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1807:33:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1155, + "nodeType": "ExpressionStatement", + "src": "1807:33:5" + }, + { + "expression": { + "argumentTypes": null, + "id": 1161, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1156, + "name": "gnosisSafe", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1100, + "src": "1850:10:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1158, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2089, + "src": "1874:3:5", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1159, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1874:10:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1157, + "name": "GnosisSafe", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 963, + "src": "1863:10:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_GnosisSafe_$963_$", + "typeString": "type(contract GnosisSafe)" + } + }, + "id": 1160, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1863:22:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + }, + "src": "1850:35:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + }, + "id": 1162, + "nodeType": "ExpressionStatement", + "src": "1850:35:5" + }, + { + "body": { + "expression": { + "argumentTypes": null, + "id": 1183, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1174, + "name": "dailyLimits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1104, + "src": "1951:11:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1111_storage_$", + "typeString": "mapping(address => struct DailyLimitExtension.DailyLimit storage ref)" + } + }, + "id": 1178, + "indexExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1175, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1142, + "src": "1963:6:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 1177, + "indexExpression": { + "argumentTypes": null, + "id": 1176, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1164, + "src": "1970:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1963:9:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1951:22:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DailyLimit_$1111_storage", + "typeString": "struct DailyLimitExtension.DailyLimit storage ref" + } + }, + "id": 1179, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "dailyLimit", + "nodeType": "MemberAccess", + "referencedDeclaration": 1106, + "src": "1951:33:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1180, + "name": "_dailyLimits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1145, + "src": "1987:12:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 1182, + "indexExpression": { + "argumentTypes": null, + "id": 1181, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1164, + "src": "2000:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1987:15:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1951:51:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1184, + "nodeType": "ExpressionStatement", + "src": "1951:51:5" + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1170, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1167, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1164, + "src": "1915:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1168, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1142, + "src": "1919:6:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 1169, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1919:13:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1915:17:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1185, + "initializationExpression": { + "assignments": [ + 1164 + ], + "declarations": [ + { + "constant": false, + "id": 1164, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 1187, + "src": "1900:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1163, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1900:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1166, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 1165, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1912:1:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "1900:13:5" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 1172, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "1934:3:5", + "subExpression": { + "argumentTypes": null, + "id": 1171, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1164, + "src": "1934:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1173, + "nodeType": "ExpressionStatement", + "src": "1934:3:5" + }, + "nodeType": "ForStatement", + "src": "1895:107:5" + } + ] + }, + "id": 1187, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "setup", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1146, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1142, + "name": "tokens", + "nodeType": "VariableDeclaration", + "scope": 1187, + "src": "1600:16:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + }, + "typeName": { + "baseType": { + "id": 1140, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1600:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1141, + "length": null, + "nodeType": "ArrayTypeName", + "src": "1600:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[] storage pointer" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1145, + "name": "_dailyLimits", + "nodeType": "VariableDeclaration", + "scope": 1187, + "src": "1618:22:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + }, + "typeName": { + "baseType": { + "id": 1143, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1618:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1144, + "length": null, + "nodeType": "ArrayTypeName", + "src": "1618:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[] storage pointer" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1599:42:5" + }, + "payable": false, + "returnParameters": { + "id": 1147, + "nodeType": "ParameterList", + "parameters": [], + "src": "1661:0:5" + }, + "scope": 1418, + "src": "1585:424:5", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1206, + "nodeType": "Block", + "src": "2256:85:5", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1199, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1196, + "name": "_masterCopy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1189, + "src": "2282:11:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_DailyLimitExtension_$1418", + "typeString": "contract DailyLimitExtension" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_DailyLimitExtension_$1418", + "typeString": "contract DailyLimitExtension" + } + ], + "id": 1195, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2274:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1197, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2274:20:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1198, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2298:1:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2274:25:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1194, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "2266:7:5", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1200, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2266:34:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1201, + "nodeType": "ExpressionStatement", + "src": "2266:34:5" + }, + { + "expression": { + "argumentTypes": null, + "id": 1204, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1202, + "name": "masterCopy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1098, + "src": "2310:10:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_DailyLimitExtension_$1418", + "typeString": "contract DailyLimitExtension" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1203, + "name": "_masterCopy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1189, + "src": "2323:11:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_DailyLimitExtension_$1418", + "typeString": "contract DailyLimitExtension" + } + }, + "src": "2310:24:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_DailyLimitExtension_$1418", + "typeString": "contract DailyLimitExtension" + } + }, + "id": 1205, + "nodeType": "ExpressionStatement", + "src": "2310:24:5" + } + ] + }, + "id": 1207, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": [], + "id": 1192, + "modifierName": { + "argumentTypes": null, + "id": 1191, + "name": "onlyGnosisSafe", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1124, + "src": "2237:14:5", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "2237:14:5" + } + ], + "name": "changeMasterCopy", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1190, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1189, + "name": "_masterCopy", + "nodeType": "VariableDeclaration", + "scope": 1207, + "src": "2181:31:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_DailyLimitExtension_$1418", + "typeString": "contract DailyLimitExtension" + }, + "typeName": { + "contractScope": null, + "id": 1188, + "name": "DailyLimitExtension", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1418, + "src": "2181:19:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_DailyLimitExtension_$1418", + "typeString": "contract DailyLimitExtension" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2180:33:5" + }, + "payable": false, + "returnParameters": { + "id": 1193, + "nodeType": "ParameterList", + "parameters": [], + "src": "2256:0:5" + }, + "scope": 1418, + "src": "2155:186:5", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1223, + "nodeType": "Block", + "src": "2672:59:5", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1221, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1216, + "name": "dailyLimits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1104, + "src": "2682:11:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1111_storage_$", + "typeString": "mapping(address => struct DailyLimitExtension.DailyLimit storage ref)" + } + }, + "id": 1218, + "indexExpression": { + "argumentTypes": null, + "id": 1217, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1209, + "src": "2694:5:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2682:18:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DailyLimit_$1111_storage", + "typeString": "struct DailyLimitExtension.DailyLimit storage ref" + } + }, + "id": 1219, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "dailyLimit", + "nodeType": "MemberAccess", + "referencedDeclaration": 1106, + "src": "2682:29:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1220, + "name": "dailyLimit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1211, + "src": "2714:10:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2682:42:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1222, + "nodeType": "ExpressionStatement", + "src": "2682:42:5" + } + ] + }, + "id": 1224, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": [], + "id": 1214, + "modifierName": { + "argumentTypes": null, + "id": 1213, + "name": "onlyGnosisSafe", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1124, + "src": "2653:14:5", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "2653:14:5" + } + ], + "name": "changeDailyLimit", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1212, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1209, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 1224, + "src": "2595:13:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1208, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2595:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1211, + "name": "dailyLimit", + "nodeType": "VariableDeclaration", + "scope": 1224, + "src": "2610:18:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1210, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2610:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2594:35:5" + }, + "payable": false, + "returnParameters": { + "id": 1215, + "nodeType": "ParameterList", + "parameters": [], + "src": "2672:0:5" + }, + "scope": 1418, + "src": "2569:162:5", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1347, + "nodeType": "Block", + "src": "3407:1164:5", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1244, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1226, + "src": "3521:6:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 1242, + "name": "gnosisSafe", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1100, + "src": "3502:10:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + }, + "id": 1243, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "isOwner", + "nodeType": "MemberAccess", + "referencedDeclaration": 47, + "src": "3502:18:5", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view external returns (bool)" + } + }, + "id": 1245, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3502:26:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1241, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "3494:7:5", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1246, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3494:35:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1247, + "nodeType": "ExpressionStatement", + "src": "3494:35:5" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + }, + "id": 1253, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1249, + "name": "operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1234, + "src": "3547:9:5", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1250, + "name": "GnosisSafe", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 963, + "src": "3560:10:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_GnosisSafe_$963_$", + "typeString": "type(contract GnosisSafe)" + } + }, + "id": 1251, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "Operation", + "nodeType": "MemberAccess", + "referencedDeclaration": 61, + "src": "3560:20:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_Operation_$61_$", + "typeString": "type(enum GnosisSafe.Operation)" + } + }, + "id": 1252, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Call", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3560:25:5", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + }, + "src": "3547:38:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1248, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "3539:7:5", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1254, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3539:47:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1255, + "nodeType": "ExpressionStatement", + "src": "3539:47:5" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1273, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1264, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1260, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1257, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1232, + "src": "3671:4:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 1258, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3671:11:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1259, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3686:1:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3671:16:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1263, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1261, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1230, + "src": "3691:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1262, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3699:1:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3691:9:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3671:29:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1272, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1268, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1265, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1232, + "src": "3704:4:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 1266, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3704:11:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1267, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3718:1:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3704:15:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1271, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1269, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1230, + "src": "3723:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1270, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3732:1:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3723:10:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3704:29:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3671:62:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1256, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "3663:7:5", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1274, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3663:71:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1275, + "nodeType": "ExpressionStatement", + "src": "3663:71:5" + }, + { + "assignments": [], + "declarations": [ + { + "constant": false, + "id": 1277, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 1348, + "src": "3744:13:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1276, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3744:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1278, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "3744:13:5" + }, + { + "assignments": [], + "declarations": [ + { + "constant": false, + "id": 1280, + "name": "receiver", + "nodeType": "VariableDeclaration", + "scope": 1348, + "src": "3767:16:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1279, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3767:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1281, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "3767:16:5" + }, + { + "assignments": [], + "declarations": [ + { + "constant": false, + "id": 1283, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 1348, + "src": "3793:14:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1282, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3793:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1284, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "3793:14:5" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1288, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1285, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1232, + "src": "3821:4:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 1286, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3821:11:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1287, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3836:1:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3821:16:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 1316, + "nodeType": "Block", + "src": "3942:345:5", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1304, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1302, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1277, + "src": "3956:5:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1303, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1228, + "src": "3964:2:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3956:10:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1305, + "nodeType": "ExpressionStatement", + "src": "3956:10:5" + }, + { + "assignments": [], + "declarations": [ + { + "constant": false, + "id": 1307, + "name": "functionIdentifier", + "nodeType": "VariableDeclaration", + "scope": 1348, + "src": "3980:25:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 1306, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "3980:6:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1308, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "3980:25:5" + }, + { + "externalReferences": [ + { + "functionIdentifier": { + "declaration": 1307, + "isOffset": false, + "isSlot": false, + "src": "4046:18:5", + "valueSize": 1 + } + }, + { + "amount": { + "declaration": 1283, + "isOffset": false, + "isSlot": false, + "src": "4158:6:5", + "valueSize": 1 + } + }, + { + "data": { + "declaration": 1232, + "isOffset": false, + "isSlot": false, + "src": "4078:4:5", + "valueSize": 1 + } + }, + { + "receiver": { + "declaration": 1280, + "isOffset": false, + "isSlot": false, + "src": "4107:8:5", + "valueSize": 1 + } + }, + { + "data": { + "declaration": 1232, + "isOffset": false, + "isSlot": false, + "src": "4129:4:5", + "valueSize": 1 + } + }, + { + "data": { + "declaration": 1232, + "isOffset": false, + "isSlot": false, + "src": "4178:4:5", + "valueSize": 1 + } + } + ], + "id": 1309, + "nodeType": "InlineAssembly", + "operations": "{\n functionIdentifier := mload(add(data, 0x20))\n receiver := mload(add(data, 0x24))\n amount := mload(add(data, 0x44))\n}", + "src": "4019:205:5" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 1313, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1311, + "name": "functionIdentifier", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1307, + "src": "4225:18:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 1312, + "name": "TRANSFER_FUNCTION_IDENTIFIER", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1096, + "src": "4247:28:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "src": "4225:50:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1310, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "4217:7:5", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1314, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4217:59:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1315, + "nodeType": "ExpressionStatement", + "src": "4217:59:5" + } + ] + }, + "id": 1317, + "nodeType": "IfStatement", + "src": "3817:470:5", + "trueBody": { + "id": 1301, + "nodeType": "Block", + "src": "3839:89:5", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1291, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1289, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1277, + "src": "3853:5:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 1290, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3861:1:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3853:9:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1292, + "nodeType": "ExpressionStatement", + "src": "3853:9:5" + }, + { + "expression": { + "argumentTypes": null, + "id": 1295, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1293, + "name": "receiver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1280, + "src": "3876:8:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1294, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1228, + "src": "3887:2:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3876:13:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1296, + "nodeType": "ExpressionStatement", + "src": "3876:13:5" + }, + { + "expression": { + "argumentTypes": null, + "id": 1299, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1297, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1283, + "src": "3903:6:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1298, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1230, + "src": "3912:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3903:14:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1300, + "nodeType": "ExpressionStatement", + "src": "3903:14:5" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1321, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1319, + "name": "receiver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1280, + "src": "4304:8:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1320, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4316:1:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4304:13:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1318, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "4296:7:5", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1322, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4296:22:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1323, + "nodeType": "ExpressionStatement", + "src": "4296:22:5" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1327, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1325, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1283, + "src": "4336:6:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1326, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4345:1:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4336:10:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1324, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "4328:7:5", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1328, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4328:19:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1329, + "nodeType": "ExpressionStatement", + "src": "4328:19:5" + }, + { + "condition": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1331, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1277, + "src": "4438:5:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1332, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1283, + "src": "4445:6:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1330, + "name": "isUnderLimit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1404, + "src": "4425:12:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) returns (bool)" + } + }, + "id": 1333, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4425:27:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1344, + "nodeType": "IfStatement", + "src": "4421:122:5", + "trueBody": { + "id": 1343, + "nodeType": "Block", + "src": "4454:89:5", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1339, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1334, + "name": "dailyLimits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1104, + "src": "4468:11:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1111_storage_$", + "typeString": "mapping(address => struct DailyLimitExtension.DailyLimit storage ref)" + } + }, + "id": 1336, + "indexExpression": { + "argumentTypes": null, + "id": 1335, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1277, + "src": "4480:5:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4468:18:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DailyLimit_$1111_storage", + "typeString": "struct DailyLimitExtension.DailyLimit storage ref" + } + }, + "id": 1337, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "spentToday", + "nodeType": "MemberAccess", + "referencedDeclaration": 1108, + "src": "4468:29:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "argumentTypes": null, + "id": 1338, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1283, + "src": "4501:6:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4468:39:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1340, + "nodeType": "ExpressionStatement", + "src": "4468:39:5" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1341, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4528:4:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 1240, + "id": 1342, + "nodeType": "Return", + "src": "4521:11:5" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 1345, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4559:5:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 1240, + "id": 1346, + "nodeType": "Return", + "src": "4552:12:5" + } + ] + }, + "id": 1348, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": [], + "id": 1237, + "modifierName": { + "argumentTypes": null, + "id": 1236, + "name": "onlyGnosisSafe", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1124, + "src": "3365:14:5", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "3365:14:5" + } + ], + "name": "isExecutable", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1235, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1226, + "name": "sender", + "nodeType": "VariableDeclaration", + "scope": 1348, + "src": "3255:14:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1225, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3255:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1228, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 1348, + "src": "3271:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1227, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3271:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1230, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 1348, + "src": "3283:13:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1229, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3283:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1232, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 1348, + "src": "3298:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + "typeName": { + "id": 1231, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3298:5:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1234, + "name": "operation", + "nodeType": "VariableDeclaration", + "scope": 1348, + "src": "3310:30:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + }, + "typeName": { + "contractScope": null, + "id": 1233, + "name": "GnosisSafe.Operation", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 61, + "src": "3310:20:5", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3254:87:5" + }, + "payable": false, + "returnParameters": { + "id": 1240, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1239, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1348, + "src": "3397:4:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1238, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3397:4:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3396:6:5" + }, + "scope": 1418, + "src": "3233:1338:5", + "stateMutability": "nonpayable", + "superFunction": 17, + "visibility": "public" + }, + { + "body": { + "id": 1403, + "nodeType": "Block", + "src": "4674:391:5", + "statements": [ + { + "assignments": [ + 1358 + ], + "declarations": [ + { + "constant": false, + "id": 1358, + "name": "dailyLimit", + "nodeType": "VariableDeclaration", + "scope": 1404, + "src": "4684:29:5", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr", + "typeString": "struct DailyLimitExtension.DailyLimit storage pointer" + }, + "typeName": { + "contractScope": null, + "id": 1357, + "name": "DailyLimit", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1111, + "src": "4684:10:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr", + "typeString": "struct DailyLimitExtension.DailyLimit storage pointer" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1362, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1359, + "name": "dailyLimits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1104, + "src": "4716:11:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1111_storage_$", + "typeString": "mapping(address => struct DailyLimitExtension.DailyLimit storage ref)" + } + }, + "id": 1361, + "indexExpression": { + "argumentTypes": null, + "id": 1360, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1350, + "src": "4728:5:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4716:18:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DailyLimit_$1111_storage", + "typeString": "struct DailyLimitExtension.DailyLimit storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4684:50:5" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1367, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1363, + "name": "today", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1417, + "src": "4748:5:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 1364, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4748:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1365, + "name": "dailyLimit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1358, + "src": "4758:10:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr", + "typeString": "struct DailyLimitExtension.DailyLimit storage pointer" + } + }, + "id": 1366, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "lastDay", + "nodeType": "MemberAccess", + "referencedDeclaration": 1110, + "src": "4758:18:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4748:28:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1382, + "nodeType": "IfStatement", + "src": "4744:126:5", + "trueBody": { + "id": 1381, + "nodeType": "Block", + "src": "4778:92:5", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1373, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1368, + "name": "dailyLimit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1358, + "src": "4792:10:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr", + "typeString": "struct DailyLimitExtension.DailyLimit storage pointer" + } + }, + "id": 1370, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "lastDay", + "nodeType": "MemberAccess", + "referencedDeclaration": 1110, + "src": "4792:18:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1371, + "name": "today", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1417, + "src": "4813:5:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 1372, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4813:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4792:28:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1374, + "nodeType": "ExpressionStatement", + "src": "4792:28:5" + }, + { + "expression": { + "argumentTypes": null, + "id": 1379, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1375, + "name": "dailyLimit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1358, + "src": "4834:10:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr", + "typeString": "struct DailyLimitExtension.DailyLimit storage pointer" + } + }, + "id": 1377, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "spentToday", + "nodeType": "MemberAccess", + "referencedDeclaration": 1108, + "src": "4834:21:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 1378, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4858:1:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4834:25:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1380, + "nodeType": "ExpressionStatement", + "src": "4834:25:5" + } + ] + } + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1397, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1389, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1386, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1383, + "name": "dailyLimit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1358, + "src": "4886:10:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr", + "typeString": "struct DailyLimitExtension.DailyLimit storage pointer" + } + }, + "id": 1384, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "spentToday", + "nodeType": "MemberAccess", + "referencedDeclaration": 1108, + "src": "4886:21:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "id": 1385, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1352, + "src": "4910:6:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4886:30:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1387, + "name": "dailyLimit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1358, + "src": "4920:10:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr", + "typeString": "struct DailyLimitExtension.DailyLimit storage pointer" + } + }, + "id": 1388, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "dailyLimit", + "nodeType": "MemberAccess", + "referencedDeclaration": 1106, + "src": "4920:21:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4886:55:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1396, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1393, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1390, + "name": "dailyLimit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1358, + "src": "4957:10:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr", + "typeString": "struct DailyLimitExtension.DailyLimit storage pointer" + } + }, + "id": 1391, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "spentToday", + "nodeType": "MemberAccess", + "referencedDeclaration": 1108, + "src": "4957:21:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "id": 1392, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1352, + "src": "4981:6:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4957:30:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1394, + "name": "dailyLimit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1358, + "src": "4990:10:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr", + "typeString": "struct DailyLimitExtension.DailyLimit storage pointer" + } + }, + "id": 1395, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "spentToday", + "nodeType": "MemberAccess", + "referencedDeclaration": 1108, + "src": "4990:21:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4957:54:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "4886:125:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1400, + "nodeType": "IfStatement", + "src": "4879:157:5", + "trueBody": { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1398, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5032:4:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 1356, + "id": 1399, + "nodeType": "Return", + "src": "5025:11:5" + } + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 1401, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5053:5:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 1356, + "id": 1402, + "nodeType": "Return", + "src": "5046:12:5" + } + ] + }, + "id": 1404, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "isUnderLimit", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1353, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1350, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 1404, + "src": "4599:13:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1349, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4599:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1352, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 1404, + "src": "4614:14:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1351, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4614:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4598:31:5" + }, + "payable": false, + "returnParameters": { + "id": 1356, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1355, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1404, + "src": "4664:4:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1354, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4664:4:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4663:6:5" + }, + "scope": 1418, + "src": "4577:488:5", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 1416, + "nodeType": "Block", + "src": "5229:44:5", + "statements": [ + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1414, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1409, + "name": "now", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2091, + "src": "5246:3:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1412, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1410, + "name": "now", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2091, + "src": "5253:3:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "%", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 1411, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5259:6:5", + "subdenomination": "days", + "typeDescriptions": { + "typeIdentifier": "t_rational_86400_by_1", + "typeString": "int_const 86400" + }, + "value": "1" + }, + "src": "5253:12:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1413, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "5252:14:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5246:20:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1408, + "id": 1415, + "nodeType": "Return", + "src": "5239:27:5" + } + ] + }, + "id": 1417, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "today", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1405, + "nodeType": "ParameterList", + "parameters": [], + "src": "5171:2:5" + }, + "payable": false, + "returnParameters": { + "id": 1408, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1407, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1417, + "src": "5219:4:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1406, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "5219:4:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5218:6:5" + }, + "scope": 1418, + "src": "5157:116:5", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 1419, + "src": "247:5028:5" + } + ], + "src": "0:5276:5" + }, + "legacyAST": { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/extensions/DailyLimitExtension.sol", + "exportedSymbols": { + "DailyLimitExtension": [ + 1418 + ] + }, + "id": 1419, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1083, + "literals": [ + "solidity", + "0.4", + ".19" + ], + "nodeType": "PragmaDirective", + "src": "0:23:5" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Extension.sol", + "file": "../Extension.sol", + "id": 1084, + "nodeType": "ImportDirective", + "scope": 1419, + "sourceUnit": 19, + "src": "24:26:5", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", + "file": "../GnosisSafe.sol", + "id": 1085, + "nodeType": "ImportDirective", + "scope": 1419, + "sourceUnit": 964, + "src": "51:27:5", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": [], + "baseName": { + "contractScope": null, + "id": 1086, + "name": "Extension", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 18, + "src": "279:9:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + }, + "id": 1087, + "nodeType": "InheritanceSpecifier", + "src": "279:9:5" + } + ], + "contractDependencies": [ + 18 + ], + "contractKind": "contract", + "documentation": "@title Daily Limit Extension - Allows to transfer limited amounts of ERC20 tokens and Ether without confirmations.\n @author Stefan George - ", + "fullyImplemented": true, + "id": 1418, + "linearizedBaseContracts": [ + 1418, + 18 + ], + "name": "DailyLimitExtension", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "id": 1090, + "name": "NAME", + "nodeType": "VariableDeclaration", + "scope": 1418, + "src": "296:53:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory", + "typeString": "string memory" + }, + "typeName": { + "id": 1088, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "296:6:5", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string storage pointer" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "4461696c79204c696d697420457874656e73696f6e", + "id": 1089, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "326:23:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_d825d71e418e7ec5e1c3c51592576f08c81f26d9ede420759434d9e0a688c12f", + "typeString": "literal_string \"Daily Limit Extension\"" + }, + "value": "Daily Limit Extension" + }, + "visibility": "public" + }, + { + "constant": true, + "id": 1093, + "name": "VERSION", + "nodeType": "VariableDeclaration", + "scope": 1418, + "src": "355:40:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory", + "typeString": "string memory" + }, + "typeName": { + "id": 1091, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "355:6:5", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string storage pointer" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "302e302e31", + "id": 1092, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "388:7:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", + "typeString": "literal_string \"0.0.1\"" + }, + "value": "0.0.1" + }, + "visibility": "public" + }, + { + "constant": true, + "id": 1096, + "name": "TRANSFER_FUNCTION_IDENTIFIER", + "nodeType": "VariableDeclaration", + "scope": 1418, + "src": "401:67:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 1094, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "401:6:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "a9059cbb", + "id": 1095, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "455:13:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_abce0605a16ff5e998983a0af570b8ad942bb11e305eb20ae3ada0a3be24eb97", + "typeString": "literal_string (contains invalid UTF-8 sequence at position 0)" + }, + "value": null + }, + "visibility": "public" + }, + { + "constant": false, + "id": 1098, + "name": "masterCopy", + "nodeType": "VariableDeclaration", + "scope": 1418, + "src": "475:30:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_DailyLimitExtension_$1418", + "typeString": "contract DailyLimitExtension" + }, + "typeName": { + "contractScope": null, + "id": 1097, + "name": "DailyLimitExtension", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1418, + "src": "475:19:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_DailyLimitExtension_$1418", + "typeString": "contract DailyLimitExtension" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1100, + "name": "gnosisSafe", + "nodeType": "VariableDeclaration", + "scope": 1418, + "src": "511:28:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + }, + "typeName": { + "contractScope": null, + "id": 1099, + "name": "GnosisSafe", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 963, + "src": "511:10:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 1104, + "name": "dailyLimits", + "nodeType": "VariableDeclaration", + "scope": 1418, + "src": "617:50:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1111_storage_$", + "typeString": "mapping(address => struct DailyLimitExtension.DailyLimit storage ref)" + }, + "typeName": { + "id": 1103, + "keyType": { + "id": 1101, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "626:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "617:31:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1111_storage_$", + "typeString": "mapping(address => struct DailyLimitExtension.DailyLimit storage ref)" + }, + "valueType": { + "contractScope": null, + "id": 1102, + "name": "DailyLimit", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1111, + "src": "637:10:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr", + "typeString": "struct DailyLimitExtension.DailyLimit storage pointer" + } + } + }, + "value": null, + "visibility": "public" + }, + { + "canonicalName": "DailyLimitExtension.DailyLimit", + "id": 1111, + "members": [ + { + "constant": false, + "id": 1106, + "name": "dailyLimit", + "nodeType": "VariableDeclaration", + "scope": 1111, + "src": "702:18:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1105, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "702:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1108, + "name": "spentToday", + "nodeType": "VariableDeclaration", + "scope": 1111, + "src": "730:18:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1107, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "730:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1110, + "name": "lastDay", + "nodeType": "VariableDeclaration", + "scope": 1111, + "src": "758:15:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1109, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "758:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "DailyLimit", + "nodeType": "StructDefinition", + "scope": 1418, + "src": "674:106:5", + "visibility": "public" + }, + { + "body": { + "id": 1123, + "nodeType": "Block", + "src": "812:70:5", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1119, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1114, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2089, + "src": "830:3:5", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1115, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "830:10:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1117, + "name": "gnosisSafe", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1100, + "src": "852:10:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + ], + "id": 1116, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "844:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1118, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "844:19:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "830:33:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1113, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "822:7:5", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1120, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "822:42:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1121, + "nodeType": "ExpressionStatement", + "src": "822:42:5" + }, + { + "id": 1122, + "nodeType": "PlaceholderStatement", + "src": "874:1:5" + } + ] + }, + "id": 1124, + "name": "onlyGnosisSafe", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 1112, + "nodeType": "ParameterList", + "parameters": [], + "src": "809:2:5" + }, + "src": "786:96:5", + "visibility": "internal" + }, + { + "body": { + "id": 1138, + "nodeType": "Block", + "src": "1299:44:5", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1134, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1127, + "src": "1315:6:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + { + "argumentTypes": null, + "id": 1135, + "name": "_dailyLimits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1130, + "src": "1323:12:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + }, + { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + ], + "id": 1133, + "name": "setup", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1187, + "src": "1309:5:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$", + "typeString": "function (address[] memory,uint256[] memory)" + } + }, + "id": 1136, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1309:27:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1137, + "nodeType": "ExpressionStatement", + "src": "1309:27:5" + } + ] + }, + "id": 1139, + "implemented": true, + "isConstructor": true, + "isDeclaredConst": false, + "modifiers": [], + "name": "DailyLimitExtension", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1131, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1127, + "name": "tokens", + "nodeType": "VariableDeclaration", + "scope": 1139, + "src": "1238:16:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + }, + "typeName": { + "baseType": { + "id": 1125, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1238:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1126, + "length": null, + "nodeType": "ArrayTypeName", + "src": "1238:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[] storage pointer" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1130, + "name": "_dailyLimits", + "nodeType": "VariableDeclaration", + "scope": 1139, + "src": "1256:22:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + }, + "typeName": { + "baseType": { + "id": 1128, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1256:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1129, + "length": null, + "nodeType": "ArrayTypeName", + "src": "1256:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[] storage pointer" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1237:42:5" + }, + "payable": false, + "returnParameters": { + "id": 1132, + "nodeType": "ParameterList", + "parameters": [], + "src": "1299:0:5" + }, + "scope": 1418, + "src": "1209:134:5", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1186, + "nodeType": "Block", + "src": "1661:348:5", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1153, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1150, + "name": "gnosisSafe", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1100, + "src": "1823:10:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + ], + "id": 1149, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1815:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1151, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1815:19:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1152, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1838:1:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1815:24:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1148, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "1807:7:5", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1154, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1807:33:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1155, + "nodeType": "ExpressionStatement", + "src": "1807:33:5" + }, + { + "expression": { + "argumentTypes": null, + "id": 1161, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1156, + "name": "gnosisSafe", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1100, + "src": "1850:10:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1158, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2089, + "src": "1874:3:5", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1159, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1874:10:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1157, + "name": "GnosisSafe", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 963, + "src": "1863:10:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_GnosisSafe_$963_$", + "typeString": "type(contract GnosisSafe)" + } + }, + "id": 1160, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1863:22:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + }, + "src": "1850:35:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + }, + "id": 1162, + "nodeType": "ExpressionStatement", + "src": "1850:35:5" + }, + { + "body": { + "expression": { + "argumentTypes": null, + "id": 1183, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1174, + "name": "dailyLimits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1104, + "src": "1951:11:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1111_storage_$", + "typeString": "mapping(address => struct DailyLimitExtension.DailyLimit storage ref)" + } + }, + "id": 1178, + "indexExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1175, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1142, + "src": "1963:6:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 1177, + "indexExpression": { + "argumentTypes": null, + "id": 1176, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1164, + "src": "1970:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1963:9:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1951:22:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DailyLimit_$1111_storage", + "typeString": "struct DailyLimitExtension.DailyLimit storage ref" + } + }, + "id": 1179, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "dailyLimit", + "nodeType": "MemberAccess", + "referencedDeclaration": 1106, + "src": "1951:33:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1180, + "name": "_dailyLimits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1145, + "src": "1987:12:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 1182, + "indexExpression": { + "argumentTypes": null, + "id": 1181, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1164, + "src": "2000:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1987:15:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1951:51:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1184, + "nodeType": "ExpressionStatement", + "src": "1951:51:5" + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1170, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1167, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1164, + "src": "1915:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1168, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1142, + "src": "1919:6:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 1169, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1919:13:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1915:17:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1185, + "initializationExpression": { + "assignments": [ + 1164 + ], + "declarations": [ + { + "constant": false, + "id": 1164, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 1187, + "src": "1900:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1163, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1900:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1166, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 1165, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1912:1:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "1900:13:5" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 1172, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "1934:3:5", + "subExpression": { + "argumentTypes": null, + "id": 1171, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1164, + "src": "1934:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1173, + "nodeType": "ExpressionStatement", + "src": "1934:3:5" + }, + "nodeType": "ForStatement", + "src": "1895:107:5" + } + ] + }, + "id": 1187, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "setup", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1146, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1142, + "name": "tokens", + "nodeType": "VariableDeclaration", + "scope": 1187, + "src": "1600:16:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + }, + "typeName": { + "baseType": { + "id": 1140, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1600:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1141, + "length": null, + "nodeType": "ArrayTypeName", + "src": "1600:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[] storage pointer" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1145, + "name": "_dailyLimits", + "nodeType": "VariableDeclaration", + "scope": 1187, + "src": "1618:22:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + }, + "typeName": { + "baseType": { + "id": 1143, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1618:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1144, + "length": null, + "nodeType": "ArrayTypeName", + "src": "1618:9:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[] storage pointer" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1599:42:5" + }, + "payable": false, + "returnParameters": { + "id": 1147, + "nodeType": "ParameterList", + "parameters": [], + "src": "1661:0:5" + }, + "scope": 1418, + "src": "1585:424:5", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1206, + "nodeType": "Block", + "src": "2256:85:5", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1199, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1196, + "name": "_masterCopy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1189, + "src": "2282:11:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_DailyLimitExtension_$1418", + "typeString": "contract DailyLimitExtension" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_DailyLimitExtension_$1418", + "typeString": "contract DailyLimitExtension" + } + ], + "id": 1195, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2274:7:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1197, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2274:20:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1198, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2298:1:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2274:25:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1194, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "2266:7:5", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1200, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2266:34:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1201, + "nodeType": "ExpressionStatement", + "src": "2266:34:5" + }, + { + "expression": { + "argumentTypes": null, + "id": 1204, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1202, + "name": "masterCopy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1098, + "src": "2310:10:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_DailyLimitExtension_$1418", + "typeString": "contract DailyLimitExtension" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1203, + "name": "_masterCopy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1189, + "src": "2323:11:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_DailyLimitExtension_$1418", + "typeString": "contract DailyLimitExtension" + } + }, + "src": "2310:24:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_DailyLimitExtension_$1418", + "typeString": "contract DailyLimitExtension" + } + }, + "id": 1205, + "nodeType": "ExpressionStatement", + "src": "2310:24:5" + } + ] + }, + "id": 1207, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": [], + "id": 1192, + "modifierName": { + "argumentTypes": null, + "id": 1191, + "name": "onlyGnosisSafe", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1124, + "src": "2237:14:5", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "2237:14:5" + } + ], + "name": "changeMasterCopy", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1190, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1189, + "name": "_masterCopy", + "nodeType": "VariableDeclaration", + "scope": 1207, + "src": "2181:31:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_DailyLimitExtension_$1418", + "typeString": "contract DailyLimitExtension" + }, + "typeName": { + "contractScope": null, + "id": 1188, + "name": "DailyLimitExtension", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1418, + "src": "2181:19:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_DailyLimitExtension_$1418", + "typeString": "contract DailyLimitExtension" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2180:33:5" + }, + "payable": false, + "returnParameters": { + "id": 1193, + "nodeType": "ParameterList", + "parameters": [], + "src": "2256:0:5" + }, + "scope": 1418, + "src": "2155:186:5", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1223, + "nodeType": "Block", + "src": "2672:59:5", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1221, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1216, + "name": "dailyLimits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1104, + "src": "2682:11:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1111_storage_$", + "typeString": "mapping(address => struct DailyLimitExtension.DailyLimit storage ref)" + } + }, + "id": 1218, + "indexExpression": { + "argumentTypes": null, + "id": 1217, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1209, + "src": "2694:5:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2682:18:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DailyLimit_$1111_storage", + "typeString": "struct DailyLimitExtension.DailyLimit storage ref" + } + }, + "id": 1219, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "dailyLimit", + "nodeType": "MemberAccess", + "referencedDeclaration": 1106, + "src": "2682:29:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1220, + "name": "dailyLimit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1211, + "src": "2714:10:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2682:42:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1222, + "nodeType": "ExpressionStatement", + "src": "2682:42:5" + } + ] + }, + "id": 1224, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": [], + "id": 1214, + "modifierName": { + "argumentTypes": null, + "id": 1213, + "name": "onlyGnosisSafe", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1124, + "src": "2653:14:5", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "2653:14:5" + } + ], + "name": "changeDailyLimit", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1212, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1209, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 1224, + "src": "2595:13:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1208, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2595:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1211, + "name": "dailyLimit", + "nodeType": "VariableDeclaration", + "scope": 1224, + "src": "2610:18:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1210, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2610:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2594:35:5" + }, + "payable": false, + "returnParameters": { + "id": 1215, + "nodeType": "ParameterList", + "parameters": [], + "src": "2672:0:5" + }, + "scope": 1418, + "src": "2569:162:5", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1347, + "nodeType": "Block", + "src": "3407:1164:5", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1244, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1226, + "src": "3521:6:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 1242, + "name": "gnosisSafe", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1100, + "src": "3502:10:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + }, + "id": 1243, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "isOwner", + "nodeType": "MemberAccess", + "referencedDeclaration": 47, + "src": "3502:18:5", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view external returns (bool)" + } + }, + "id": 1245, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3502:26:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1241, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "3494:7:5", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1246, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3494:35:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1247, + "nodeType": "ExpressionStatement", + "src": "3494:35:5" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + }, + "id": 1253, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1249, + "name": "operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1234, + "src": "3547:9:5", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1250, + "name": "GnosisSafe", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 963, + "src": "3560:10:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_GnosisSafe_$963_$", + "typeString": "type(contract GnosisSafe)" + } + }, + "id": 1251, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "Operation", + "nodeType": "MemberAccess", + "referencedDeclaration": 61, + "src": "3560:20:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_Operation_$61_$", + "typeString": "type(enum GnosisSafe.Operation)" + } + }, + "id": 1252, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Call", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3560:25:5", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + }, + "src": "3547:38:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1248, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "3539:7:5", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1254, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3539:47:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1255, + "nodeType": "ExpressionStatement", + "src": "3539:47:5" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1273, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1264, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1260, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1257, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1232, + "src": "3671:4:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 1258, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3671:11:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1259, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3686:1:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3671:16:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1263, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1261, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1230, + "src": "3691:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1262, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3699:1:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3691:9:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3671:29:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1272, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1268, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1265, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1232, + "src": "3704:4:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 1266, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3704:11:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1267, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3718:1:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3704:15:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1271, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1269, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1230, + "src": "3723:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1270, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3732:1:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3723:10:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3704:29:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3671:62:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1256, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "3663:7:5", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1274, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3663:71:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1275, + "nodeType": "ExpressionStatement", + "src": "3663:71:5" + }, + { + "assignments": [], + "declarations": [ + { + "constant": false, + "id": 1277, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 1348, + "src": "3744:13:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1276, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3744:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1278, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "3744:13:5" + }, + { + "assignments": [], + "declarations": [ + { + "constant": false, + "id": 1280, + "name": "receiver", + "nodeType": "VariableDeclaration", + "scope": 1348, + "src": "3767:16:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1279, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3767:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1281, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "3767:16:5" + }, + { + "assignments": [], + "declarations": [ + { + "constant": false, + "id": 1283, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 1348, + "src": "3793:14:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1282, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3793:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1284, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "3793:14:5" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1288, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1285, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1232, + "src": "3821:4:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 1286, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3821:11:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1287, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3836:1:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3821:16:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 1316, + "nodeType": "Block", + "src": "3942:345:5", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1304, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1302, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1277, + "src": "3956:5:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1303, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1228, + "src": "3964:2:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3956:10:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1305, + "nodeType": "ExpressionStatement", + "src": "3956:10:5" + }, + { + "assignments": [], + "declarations": [ + { + "constant": false, + "id": 1307, + "name": "functionIdentifier", + "nodeType": "VariableDeclaration", + "scope": 1348, + "src": "3980:25:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 1306, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "3980:6:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1308, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "3980:25:5" + }, + { + "externalReferences": [ + { + "functionIdentifier": { + "declaration": 1307, + "isOffset": false, + "isSlot": false, + "src": "4046:18:5", + "valueSize": 1 + } + }, + { + "amount": { + "declaration": 1283, + "isOffset": false, + "isSlot": false, + "src": "4158:6:5", + "valueSize": 1 + } + }, + { + "data": { + "declaration": 1232, + "isOffset": false, + "isSlot": false, + "src": "4078:4:5", + "valueSize": 1 + } + }, + { + "receiver": { + "declaration": 1280, + "isOffset": false, + "isSlot": false, + "src": "4107:8:5", + "valueSize": 1 + } + }, + { + "data": { + "declaration": 1232, + "isOffset": false, + "isSlot": false, + "src": "4129:4:5", + "valueSize": 1 + } + }, + { + "data": { + "declaration": 1232, + "isOffset": false, + "isSlot": false, + "src": "4178:4:5", + "valueSize": 1 + } + } + ], + "id": 1309, + "nodeType": "InlineAssembly", + "operations": "{\n functionIdentifier := mload(add(data, 0x20))\n receiver := mload(add(data, 0x24))\n amount := mload(add(data, 0x44))\n}", + "src": "4019:205:5" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 1313, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1311, + "name": "functionIdentifier", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1307, + "src": "4225:18:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 1312, + "name": "TRANSFER_FUNCTION_IDENTIFIER", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1096, + "src": "4247:28:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "src": "4225:50:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1310, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "4217:7:5", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1314, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4217:59:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1315, + "nodeType": "ExpressionStatement", + "src": "4217:59:5" + } + ] + }, + "id": 1317, + "nodeType": "IfStatement", + "src": "3817:470:5", + "trueBody": { + "id": 1301, + "nodeType": "Block", + "src": "3839:89:5", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1291, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1289, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1277, + "src": "3853:5:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 1290, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3861:1:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3853:9:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1292, + "nodeType": "ExpressionStatement", + "src": "3853:9:5" + }, + { + "expression": { + "argumentTypes": null, + "id": 1295, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1293, + "name": "receiver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1280, + "src": "3876:8:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1294, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1228, + "src": "3887:2:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3876:13:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1296, + "nodeType": "ExpressionStatement", + "src": "3876:13:5" + }, + { + "expression": { + "argumentTypes": null, + "id": 1299, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1297, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1283, + "src": "3903:6:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1298, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1230, + "src": "3912:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3903:14:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1300, + "nodeType": "ExpressionStatement", + "src": "3903:14:5" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1321, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1319, + "name": "receiver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1280, + "src": "4304:8:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1320, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4316:1:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4304:13:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1318, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "4296:7:5", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1322, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4296:22:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1323, + "nodeType": "ExpressionStatement", + "src": "4296:22:5" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1327, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1325, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1283, + "src": "4336:6:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1326, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4345:1:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4336:10:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1324, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "4328:7:5", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1328, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4328:19:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1329, + "nodeType": "ExpressionStatement", + "src": "4328:19:5" + }, + { + "condition": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1331, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1277, + "src": "4438:5:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1332, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1283, + "src": "4445:6:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1330, + "name": "isUnderLimit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1404, + "src": "4425:12:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) returns (bool)" + } + }, + "id": 1333, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4425:27:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1344, + "nodeType": "IfStatement", + "src": "4421:122:5", + "trueBody": { + "id": 1343, + "nodeType": "Block", + "src": "4454:89:5", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1339, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1334, + "name": "dailyLimits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1104, + "src": "4468:11:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1111_storage_$", + "typeString": "mapping(address => struct DailyLimitExtension.DailyLimit storage ref)" + } + }, + "id": 1336, + "indexExpression": { + "argumentTypes": null, + "id": 1335, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1277, + "src": "4480:5:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4468:18:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DailyLimit_$1111_storage", + "typeString": "struct DailyLimitExtension.DailyLimit storage ref" + } + }, + "id": 1337, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "spentToday", + "nodeType": "MemberAccess", + "referencedDeclaration": 1108, + "src": "4468:29:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "argumentTypes": null, + "id": 1338, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1283, + "src": "4501:6:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4468:39:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1340, + "nodeType": "ExpressionStatement", + "src": "4468:39:5" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1341, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4528:4:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 1240, + "id": 1342, + "nodeType": "Return", + "src": "4521:11:5" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 1345, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4559:5:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 1240, + "id": 1346, + "nodeType": "Return", + "src": "4552:12:5" + } + ] + }, + "id": 1348, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": [], + "id": 1237, + "modifierName": { + "argumentTypes": null, + "id": 1236, + "name": "onlyGnosisSafe", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1124, + "src": "3365:14:5", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "3365:14:5" + } + ], + "name": "isExecutable", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1235, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1226, + "name": "sender", + "nodeType": "VariableDeclaration", + "scope": 1348, + "src": "3255:14:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1225, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3255:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1228, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 1348, + "src": "3271:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1227, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3271:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1230, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 1348, + "src": "3283:13:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1229, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3283:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1232, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 1348, + "src": "3298:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + "typeName": { + "id": 1231, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3298:5:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1234, + "name": "operation", + "nodeType": "VariableDeclaration", + "scope": 1348, + "src": "3310:30:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + }, + "typeName": { + "contractScope": null, + "id": 1233, + "name": "GnosisSafe.Operation", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 61, + "src": "3310:20:5", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3254:87:5" + }, + "payable": false, + "returnParameters": { + "id": 1240, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1239, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1348, + "src": "3397:4:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1238, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3397:4:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3396:6:5" + }, + "scope": 1418, + "src": "3233:1338:5", + "stateMutability": "nonpayable", + "superFunction": 17, + "visibility": "public" + }, + { + "body": { + "id": 1403, + "nodeType": "Block", + "src": "4674:391:5", + "statements": [ + { + "assignments": [ + 1358 + ], + "declarations": [ + { + "constant": false, + "id": 1358, + "name": "dailyLimit", + "nodeType": "VariableDeclaration", + "scope": 1404, + "src": "4684:29:5", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr", + "typeString": "struct DailyLimitExtension.DailyLimit storage pointer" + }, + "typeName": { + "contractScope": null, + "id": 1357, + "name": "DailyLimit", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1111, + "src": "4684:10:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr", + "typeString": "struct DailyLimitExtension.DailyLimit storage pointer" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1362, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1359, + "name": "dailyLimits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1104, + "src": "4716:11:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1111_storage_$", + "typeString": "mapping(address => struct DailyLimitExtension.DailyLimit storage ref)" + } + }, + "id": 1361, + "indexExpression": { + "argumentTypes": null, + "id": 1360, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1350, + "src": "4728:5:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4716:18:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DailyLimit_$1111_storage", + "typeString": "struct DailyLimitExtension.DailyLimit storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4684:50:5" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1367, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1363, + "name": "today", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1417, + "src": "4748:5:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 1364, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4748:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1365, + "name": "dailyLimit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1358, + "src": "4758:10:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr", + "typeString": "struct DailyLimitExtension.DailyLimit storage pointer" + } + }, + "id": 1366, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "lastDay", + "nodeType": "MemberAccess", + "referencedDeclaration": 1110, + "src": "4758:18:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4748:28:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1382, + "nodeType": "IfStatement", + "src": "4744:126:5", + "trueBody": { + "id": 1381, + "nodeType": "Block", + "src": "4778:92:5", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1373, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1368, + "name": "dailyLimit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1358, + "src": "4792:10:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr", + "typeString": "struct DailyLimitExtension.DailyLimit storage pointer" + } + }, + "id": 1370, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "lastDay", + "nodeType": "MemberAccess", + "referencedDeclaration": 1110, + "src": "4792:18:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1371, + "name": "today", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1417, + "src": "4813:5:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 1372, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4813:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4792:28:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1374, + "nodeType": "ExpressionStatement", + "src": "4792:28:5" + }, + { + "expression": { + "argumentTypes": null, + "id": 1379, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1375, + "name": "dailyLimit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1358, + "src": "4834:10:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr", + "typeString": "struct DailyLimitExtension.DailyLimit storage pointer" + } + }, + "id": 1377, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "spentToday", + "nodeType": "MemberAccess", + "referencedDeclaration": 1108, + "src": "4834:21:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 1378, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4858:1:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4834:25:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1380, + "nodeType": "ExpressionStatement", + "src": "4834:25:5" + } + ] + } + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1397, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1389, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1386, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1383, + "name": "dailyLimit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1358, + "src": "4886:10:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr", + "typeString": "struct DailyLimitExtension.DailyLimit storage pointer" + } + }, + "id": 1384, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "spentToday", + "nodeType": "MemberAccess", + "referencedDeclaration": 1108, + "src": "4886:21:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "id": 1385, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1352, + "src": "4910:6:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4886:30:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1387, + "name": "dailyLimit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1358, + "src": "4920:10:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr", + "typeString": "struct DailyLimitExtension.DailyLimit storage pointer" + } + }, + "id": 1388, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "dailyLimit", + "nodeType": "MemberAccess", + "referencedDeclaration": 1106, + "src": "4920:21:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4886:55:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1396, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1393, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1390, + "name": "dailyLimit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1358, + "src": "4957:10:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr", + "typeString": "struct DailyLimitExtension.DailyLimit storage pointer" + } + }, + "id": 1391, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "spentToday", + "nodeType": "MemberAccess", + "referencedDeclaration": 1108, + "src": "4957:21:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "id": 1392, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1352, + "src": "4981:6:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4957:30:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1394, + "name": "dailyLimit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1358, + "src": "4990:10:5", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr", + "typeString": "struct DailyLimitExtension.DailyLimit storage pointer" + } + }, + "id": 1395, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "spentToday", + "nodeType": "MemberAccess", + "referencedDeclaration": 1108, + "src": "4990:21:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4957:54:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "4886:125:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1400, + "nodeType": "IfStatement", + "src": "4879:157:5", + "trueBody": { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1398, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5032:4:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 1356, + "id": 1399, + "nodeType": "Return", + "src": "5025:11:5" + } + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 1401, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5053:5:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 1356, + "id": 1402, + "nodeType": "Return", + "src": "5046:12:5" + } + ] + }, + "id": 1404, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "isUnderLimit", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1353, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1350, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 1404, + "src": "4599:13:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1349, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4599:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1352, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 1404, + "src": "4614:14:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1351, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4614:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4598:31:5" + }, + "payable": false, + "returnParameters": { + "id": 1356, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1355, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1404, + "src": "4664:4:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1354, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4664:4:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4663:6:5" + }, + "scope": 1418, + "src": "4577:488:5", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 1416, + "nodeType": "Block", + "src": "5229:44:5", + "statements": [ + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1414, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1409, + "name": "now", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2091, + "src": "5246:3:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1412, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1410, + "name": "now", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2091, + "src": "5253:3:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "%", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 1411, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5259:6:5", + "subdenomination": "days", + "typeDescriptions": { + "typeIdentifier": "t_rational_86400_by_1", + "typeString": "int_const 86400" + }, + "value": "1" + }, + "src": "5253:12:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1413, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "5252:14:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "5246:20:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1408, + "id": 1415, + "nodeType": "Return", + "src": "5239:27:5" + } + ] + }, + "id": 1417, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "today", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1405, + "nodeType": "ParameterList", + "parameters": [], + "src": "5171:2:5" + }, + "payable": false, + "returnParameters": { + "id": 1408, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1407, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1417, + "src": "5219:4:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1406, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "5219:4:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5218:6:5" + }, + "scope": 1418, + "src": "5157:116:5", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 1419, + "src": "247:5028:5" + } + ], + "src": "0:5276:5" + }, + "compiler": { + "name": "solc", + "version": "0.4.19+commit.c4cbbb05.Emscripten.clang" + }, + "networks": { + "4": { + "events": {}, + "links": {}, + "address": "0xa79d02e23d840830c4f6c623a2b60310769c3a4b", + "transactionHash": "0xb3a98f4a3e8373b6de6b63eaf25e88a3593003119f1df8a30a020f4c9a6cc322" + }, + "42": { + "events": {}, + "links": {}, + "address": "0xd563051ec0a4aa4756dd1f0d21ef2e6ef0fae3e2", + "transactionHash": "0xdec49def750774a696ff6d1de86b27d3eac5967850d8f56e85f7c93bfaf17592" + }, + "1525342778744": { + "events": {}, + "links": {}, + "address": "0x1b701c69619a38a7b779bef1f8a72dec2b9f402f", + "transactionHash": "0xe329bfbfb0449b969df0e144a935e7f94e58f4e7188f6c6626faf1d7ee7ded84" + } + }, + "schemaVersion": "2.0.0", + "updatedAt": "2018-05-04T13:47:03.962Z" +} \ No newline at end of file diff --git a/safe-contracts/build/contracts/Extension.json b/safe-contracts/build/contracts/Extension.json new file mode 100644 index 0000000000..7cdcf70df3 --- /dev/null +++ b/safe-contracts/build/contracts/Extension.json @@ -0,0 +1,531 @@ +{ + "contractName": "Extension", + "abi": [ + { + "constant": false, + "inputs": [ + { + "name": "sender", + "type": "address" + }, + { + "name": "to", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + }, + { + "name": "data", + "type": "bytes" + }, + { + "name": "operation", + "type": "uint8" + } + ], + "name": "isExecutable", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "sourceMap": "", + "deployedSourceMap": "", + "source": "pragma solidity 0.4.19;\nimport \"./GnosisSafe.sol\";\n\n\n/// @title Abstract Extension - Functions to be implemented by extensions.\n/// @author Stefan George - \ncontract Extension {\n\n /// @dev Function to be implmeneted by extension. Returns if Safe transaction is valid and can be executed.\n /// @param sender Safe transaction sender address. This is not necessarily a Safe owner and needs to be \n /// verified in case only Safe owners are allowed.\n /// @param to Destination address.\n /// @param value Ether value.\n /// @param data Data payload.\n /// @param operation Operation type.\n /// @return Returns if transaction can be executed.\n function isExecutable(address sender, address to, uint256 value, bytes data, GnosisSafe.Operation operation) public returns (bool);\n}\n", + "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Extension.sol", + "ast": { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Extension.sol", + "exportedSymbols": { + "Extension": [ + 18 + ] + }, + "id": 19, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1, + "literals": [ + "solidity", + "0.4", + ".19" + ], + "nodeType": "PragmaDirective", + "src": "0:23:0" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", + "file": "./GnosisSafe.sol", + "id": 2, + "nodeType": "ImportDirective", + "scope": 19, + "sourceUnit": 964, + "src": "24:26:0", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": "@title Abstract Extension - Functions to be implemented by extensions.\n @author Stefan George - ", + "fullyImplemented": false, + "id": 18, + "linearizedBaseContracts": [ + 18 + ], + "name": "Extension", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": null, + "id": 17, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "isExecutable", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 13, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4, + "name": "sender", + "nodeType": "VariableDeclaration", + "scope": 17, + "src": "710:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "710:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 17, + "src": "726:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "726:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 8, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 17, + "src": "738:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "738:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 10, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 17, + "src": "753:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + "typeName": { + "id": 9, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "753:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12, + "name": "operation", + "nodeType": "VariableDeclaration", + "scope": 17, + "src": "765:30:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + }, + "typeName": { + "contractScope": null, + "id": 11, + "name": "GnosisSafe.Operation", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 61, + "src": "765:20:0", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "709:87:0" + }, + "payable": false, + "returnParameters": { + "id": 16, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 15, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 17, + "src": "813:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 14, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "813:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "812:6:0" + }, + "scope": 18, + "src": "688:131:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 19, + "src": "175:646:0" + } + ], + "src": "0:822:0" + }, + "legacyAST": { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Extension.sol", + "exportedSymbols": { + "Extension": [ + 18 + ] + }, + "id": 19, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1, + "literals": [ + "solidity", + "0.4", + ".19" + ], + "nodeType": "PragmaDirective", + "src": "0:23:0" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", + "file": "./GnosisSafe.sol", + "id": 2, + "nodeType": "ImportDirective", + "scope": 19, + "sourceUnit": 964, + "src": "24:26:0", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": "@title Abstract Extension - Functions to be implemented by extensions.\n @author Stefan George - ", + "fullyImplemented": false, + "id": 18, + "linearizedBaseContracts": [ + 18 + ], + "name": "Extension", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": null, + "id": 17, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "isExecutable", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 13, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 4, + "name": "sender", + "nodeType": "VariableDeclaration", + "scope": 17, + "src": "710:14:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 3, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "710:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 6, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 17, + "src": "726:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "726:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 8, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 17, + "src": "738:13:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 7, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "738:7:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 10, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 17, + "src": "753:10:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + "typeName": { + "id": 9, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "753:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 12, + "name": "operation", + "nodeType": "VariableDeclaration", + "scope": 17, + "src": "765:30:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + }, + "typeName": { + "contractScope": null, + "id": 11, + "name": "GnosisSafe.Operation", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 61, + "src": "765:20:0", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "709:87:0" + }, + "payable": false, + "returnParameters": { + "id": 16, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 15, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 17, + "src": "813:4:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 14, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "813:4:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "812:6:0" + }, + "scope": 18, + "src": "688:131:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 19, + "src": "175:646:0" + } + ], + "src": "0:822:0" + }, + "compiler": { + "name": "solc", + "version": "0.4.19+commit.c4cbbb05.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "2.0.0", + "updatedAt": "2018-05-04T10:42:18.365Z" +} \ No newline at end of file diff --git a/safe-contracts/build/contracts/GnosisSafe.json b/safe-contracts/build/contracts/GnosisSafe.json new file mode 100644 index 0000000000..210d90981a --- /dev/null +++ b/safe-contracts/build/contracts/GnosisSafe.json @@ -0,0 +1,25229 @@ +{ + "contractName": "GnosisSafe", + "abi": [ + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "uint256" + } + ], + "name": "owners", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "address" + } + ], + "name": "isOwner", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "threshold", + "outputs": [ + { + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "address" + }, + { + "name": "", + "type": "bytes32" + } + ], + "name": "isConfirmed", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "NAME", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "nonce", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "uint256" + } + ], + "name": "extensions", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "address" + } + ], + "name": "isExtension", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "VERSION", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "name": "_owners", + "type": "address[]" + }, + { + "name": "_threshold", + "type": "uint8" + }, + { + "name": "to", + "type": "address" + }, + { + "name": "data", + "type": "bytes" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "payable": true, + "stateMutability": "payable", + "type": "fallback" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "newContract", + "type": "address" + } + ], + "name": "ContractCreation", + "type": "event" + }, + { + "constant": false, + "inputs": [ + { + "name": "_owners", + "type": "address[]" + }, + { + "name": "_threshold", + "type": "uint8" + }, + { + "name": "to", + "type": "address" + }, + { + "name": "data", + "type": "bytes" + } + ], + "name": "setup", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_masterCopy", + "type": "address" + } + ], + "name": "changeMasterCopy", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "owner", + "type": "address" + }, + { + "name": "_threshold", + "type": "uint8" + } + ], + "name": "addOwner", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "ownerIndex", + "type": "uint256" + }, + { + "name": "owner", + "type": "address" + }, + { + "name": "_threshold", + "type": "uint8" + } + ], + "name": "removeOwner", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "oldOwnerIndex", + "type": "uint256" + }, + { + "name": "oldOwner", + "type": "address" + }, + { + "name": "newOwner", + "type": "address" + } + ], + "name": "replaceOwner", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_threshold", + "type": "uint8" + } + ], + "name": "changeThreshold", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "extension", + "type": "address" + } + ], + "name": "addExtension", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "extensionIndex", + "type": "uint256" + }, + { + "name": "extension", + "type": "address" + } + ], + "name": "removeExtension", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "to", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + }, + { + "name": "data", + "type": "bytes" + }, + { + "name": "operation", + "type": "uint8" + }, + { + "name": "_nonce", + "type": "uint256" + } + ], + "name": "confirmTransaction", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "to", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + }, + { + "name": "data", + "type": "bytes" + }, + { + "name": "operation", + "type": "uint8" + }, + { + "name": "v", + "type": "uint8[]" + }, + { + "name": "r", + "type": "bytes32[]" + }, + { + "name": "s", + "type": "bytes32[]" + }, + { + "name": "_owners", + "type": "address[]" + }, + { + "name": "indices", + "type": "uint256[]" + } + ], + "name": "executeTransaction", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "to", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + }, + { + "name": "data", + "type": "bytes" + }, + { + "name": "operation", + "type": "uint8" + }, + { + "name": "extension", + "type": "address" + } + ], + "name": "executeExtension", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "to", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + }, + { + "name": "data", + "type": "bytes" + }, + { + "name": "operation", + "type": "uint8" + }, + { + "name": "_nonce", + "type": "uint256" + } + ], + "name": "getTransactionHash", + "outputs": [ + { + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getOwners", + "outputs": [ + { + "name": "", + "type": "address[]" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getExtensions", + "outputs": [ + { + "name": "", + "type": "address[]" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "transactionHash", + "type": "bytes32" + } + ], + "name": "getConfirmationCount", + "outputs": [ + { + "name": "confirmationCount", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "transactionHash", + "type": "bytes32" + } + ], + "name": "getConfirmingOwners", + "outputs": [ + { + "name": "confirmingOwners", + "type": "address[]" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x606060405234156200001057600080fd5b60405162002d6738038062002d67833981016040528080518201919060200180519060200190919080519060200190919080518201919050506200006b84848484620000756401000000000262001b33176401000000009004565b5050505062000374565b600080600060149054906101000a900460ff1660ff161415156200009857600080fd5b84518460ff1611151515620000ac57600080fd5b60018460ff1610151515620000c057600080fd5b600090505b8451811015620001fe5760008582815181101515620000e057fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff16141515156200010e57600080fd5b6004600086838151811015156200012157fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156200018057600080fd5b60016004600087848151811015156200019557fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080600101915050620000c5565b8460029080519060200190620002169291906200029f565b5083600060146101000a81548160ff021916908360ff16021790555060008373ffffffffffffffffffffffffffffffffffffffff161415156200028057620002738383620002876401000000000262002698176401000000009004565b15156200027f57600080fd5b5b5050505050565b600080600083516020850186600019f4905092915050565b8280548282559060005260206000209081019282156200031b579160200282015b828111156200031a5782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190620002c0565b5b5090506200032a91906200032e565b5090565b6200037191905b808211156200036d57600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555060010162000335565b5090565b90565b6129e380620003846000396000f300606060405260043610610149576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063025e7c271461014b57806307fa7017146101ae5780630e5229b0146101f0578063113642e514610235578063170ff3e1146102705780632b500041146102a95780632b5b1f821461035f5780632f54bf6e146103f957806342cde4e81461044a57806354e99c6e146104795780637b0519f3146104da5780637de7edef1461053857806383b7db6314610571578063842b954e146105db578063a04222e114610629578063a0e67e2b146106f1578063a3f4df7e1461075b578063affed0e0146107e9578063b6a9002e14610812578063b7f3358d146108c2578063c676920a146108e8578063db85d59c14610964578063f6d3fd86146109c7578063f847ed4814610b98578063ffa1ad7414610be9575b005b341561015657600080fd5b61016c6004808035906020019091905050610c77565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156101b957600080fd5b6101ee600480803590602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cb6565b005b34156101fb57600080fd5b610233600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803560ff16906020019091905050610e71565b005b341561024057600080fd5b61025a600480803560001916906020019091905050611011565b6040518082815260200191505060405180910390f35b341561027b57600080fd5b6102a7600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506110e7565b005b34156102b457600080fd5b610341600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803560ff1690602001909190803590602001909190505061125e565b60405180826000191660001916815260200191505060405180910390f35b341561036a57600080fd5b6103f7600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803560ff1690602001909190803590602001909190505061140b565b005b341561040457600080fd5b610430600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611561565b604051808215151515815260200191505060405180910390f35b341561045557600080fd5b61045d611581565b604051808260ff1660ff16815260200191505060405180910390f35b341561048457600080fd5b6104d8600480803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611594565b005b34156104e557600080fd5b61051e600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035600019169060200190919050506117cf565b604051808215151515815260200191505060405180910390f35b341561054357600080fd5b61056f600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506117fe565b005b341561057c57600080fd5b6105846118a1565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156105c75780820151818401526020810190506105ac565b505050509050019250505060405180910390f35b34156105e657600080fd5b610627600480803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803560ff16906020019091905050611935565b005b341561063457600080fd5b6106ef60048080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190803560ff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611b33565b005b34156106fc57600080fd5b610704611d21565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561074757808201518184015260208101905061072c565b505050509050019250505060405180910390f35b341561076657600080fd5b61076e611db5565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107ae578082015181840152602081019050610793565b50505050905090810190601f1680156107db5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156107f457600080fd5b6107fc611dee565b6040518082815260200191505060405180910390f35b341561081d57600080fd5b6108c0600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803560ff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611df4565b005b34156108cd57600080fd5b6108e6600480803560ff16906020019091905050611fe7565b005b34156108f357600080fd5b61090d600480803560001916906020019091905050612069565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610950578082015181840152602081019050610935565b505050509050019250505060405180910390f35b341561096f57600080fd5b61098560048080359060200190919050506121fd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156109d257600080fd5b610b96600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803560ff16906020019091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190505061223c565b005b3415610ba357600080fd5b610bcf600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061263f565b604051808215151515815260200191505060405180910390f35b3415610bf457600080fd5b610bfc61265f565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610c3c578082015181840152602081019050610c21565b50505050905090810190601f168015610c695780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600281815481101515610c8657fe5b90600052602060002090016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610cf057600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600383815481101515610d1657fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610d6457600080fd5b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506003600160038054905003815481101515610dd357fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600383815481101515610e0e57fe5b906000526020600020900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003805480919060019003610e6c91906127ed565b505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610eab57600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614151515610ed157600080fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610f2a57600080fd5b60028054806001018281610f3e9190612819565b9160005260206000209001600084909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508060ff16600060149054906101000a900460ff1660ff1614151561100d5761100c81611fe7565b5b5050565b600080600090505b6002805490508110156110e1576006600060028381548110151561103957fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000846000191660001916815260200190815260200160002060009054906101000a900460ff16156110d45781806001019250505b8080600101915050611019565b50919050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561112157600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561114757600080fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156111a057600080fd5b600380548060010182816111b49190612845565b9160005260206000209001600083909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600060197f01000000000000000000000000000000000000000000000000000000000000000230878787878760405180887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083835b602083101515611391578051825260208201915060208101905060208303925061136c565b6001836020036101000a0380198251168184511680821785525050505050509050018360028111156113bf57fe5b60ff167f01000000000000000000000000000000000000000000000000000000000000000281526001018281526020019750505050505050506040518091039020905095945050505050565b6000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561146557600080fd5b6114748686868660015461125e565b9050600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000826000191660001916815260200190815260200160002060009054906101000a900460ff161515156114e857600080fd5b6001600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550505050505050565b60046020528060005260406000206000915054906101000a900460ff1681565b600060149054906101000a900460ff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156115ce57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156115f457600080fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561164d57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff1660028481548110151561167357fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156116c157600080fd5b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508060028481548110151561178157fe5b906000526020600020900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b60066020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561183857600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561185e57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6118a9612871565b600380548060200260200160405190810160405280929190818152602001828054801561192b57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116118e1575b5050505050905090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561196f57600080fd5b8060ff166001600280549050031015151561198957600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166002848154811015156119af57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156119fd57600080fd5b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506002600160028054905003815481101515611a6c57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600284815481101515611aa757fe5b906000526020600020900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506002805480919060019003611b059190612885565b508060ff16600060149054906101000a900460ff1660ff16141515611b2e57611b2d81611fe7565b5b505050565b600080600060149054906101000a900460ff1660ff16141515611b5557600080fd5b84518460ff1611151515611b6857600080fd5b60018460ff1610151515611b7b57600080fd5b600090505b8451811015611cb25760008582815181101515611b9957fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1614151515611bc657600080fd5b600460008683815181101515611bd857fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515611c3657600080fd5b6001600460008784815181101515611c4a57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080600101915050611b80565b8460029080519060200190611cc89291906128b1565b5083600060146101000a81548160ff021916908360ff16021790555060008373ffffffffffffffffffffffffffffffffffffffff16141515611d1a57611d0e8383612698565b1515611d1957600080fd5b5b5050505050565b611d2961293b565b6002805480602002602001604051908101604052809291908181526020018280548015611dab57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611d61575b5050505050905090565b6040805190810160405280600b81526020017f476e6f736973205361666500000000000000000000000000000000000000000081525081565b60015481565b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611e4c57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff1663cde09ca933878787876000604051602001526040518663ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001836002811115611f1f57fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b83811015611f5f578082015181840152602081019050611f44565b50505050905090810190601f168015611f8c5780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b1515611fae57600080fd5b6102c65a03f11515611fbf57600080fd5b505050604051805190501515611fd457600080fd5b611fe0858585856126b0565b5050505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561202157600080fd5b6002805490508160ff161115151561203857600080fd5b60018160ff161015151561204b57600080fd5b80600060146101000a81548160ff021916908360ff16021790555050565b61207161293b565b60008061207d84611011565b91508160405180591061208d5750595b9080825280602002602001820160405250925060009150600090505b6002805490508110156121f657600660006002838154811015156120c957fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000856000191660001916815260200190815260200160002060009054906101000a900460ff16156121e95760028181548110151561216a57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683838151811015156121a457fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505081806001019250505b80806001019150506120a9565b5050919050565b60038181548110151561220c57fe5b90600052602060002090016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008060006122538e8e8e8e60015461125e565b94506000935060009050600091505b600060149054906101000a900460ff1660ff16821015612518578086511180156122a25750858181518110151561229557fe5b9060200190602002015182145b156123a15786818151811015156122b557fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480612371575060066000888381518110151561230557fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000866000191660001916815260200190815260200160002060009054906101000a900460ff165b151561237c57600080fd5b868181518110151561238a57fe5b906020019060200201519250600181019050612476565b6001858b8385038151811015156123b457fe5b906020019060200201518b8486038151811015156123ce57fe5b906020019060200201518b8587038151811015156123e857fe5b90602001906020020151604051600081526020016040526000604051602001526040518085600019166000191681526020018460ff1660ff16815260200183600019166000191681526020018260001916600019168152602001945050505050602060405160208103908084039060008661646e5a03f1151561246a57600080fd5b50506020604051035192505b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156124ce57600080fd5b8373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1611151561250857600080fd5b8293508180600101925050612262565b60008751111561261357600091505b865182101561261257868281518110151561253e57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561260557600060066000898581518110151561259057fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000876000191660001916815260200190815260200160002060006101000a81548160ff0219169083151502179055505b8180600101925050612527565b5b6001806000828254019250508190555061262f8e8e8e8e6126b0565b5050505050505050505050505050565b60056020528060005260406000206000915054906101000a900460ff1681565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b600080600083516020850186600019f4905092915050565b60008060028111156126be57fe5b8260028111156126ca57fe5b14156126eb576126db8585856127c1565b15156126e657600080fd5b6127ba565b600160028111156126f857fe5b82600281111561270457fe5b1415612724576127148584612698565b151561271f57600080fd5b6127b9565b61272d836127db565b905060008173ffffffffffffffffffffffffffffffffffffffff161415151561275557600080fd5b7f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5050505050565b60008060008351602085018688600019f190509392505050565b60008151602083016000f09050919050565b81548183558181151161281457818360005260206000209182019101612813919061294f565b5b505050565b8154818355818115116128405781836000526020600020918201910161283f919061294f565b5b505050565b81548183558181151161286c5781836000526020600020918201910161286b919061294f565b5b505050565b602060405190810160405280600081525090565b8154818355818115116128ac578183600052602060002091820191016128ab919061294f565b5b505050565b82805482825590600052602060002090810192821561292a579160200282015b828111156129295782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550916020019190600101906128d1565b5b5090506129379190612974565b5090565b602060405190810160405280600081525090565b61297191905b8082111561296d576000816000905550600101612955565b5090565b90565b6129b491905b808211156129b057600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555060010161297a565b5090565b905600a165627a7a72305820b9309aeae0cb4d289bc66fdd1b641936b903e87d406ff75007e08dd9fd54ff590029", + "deployedBytecode": "0x606060405260043610610149576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063025e7c271461014b57806307fa7017146101ae5780630e5229b0146101f0578063113642e514610235578063170ff3e1146102705780632b500041146102a95780632b5b1f821461035f5780632f54bf6e146103f957806342cde4e81461044a57806354e99c6e146104795780637b0519f3146104da5780637de7edef1461053857806383b7db6314610571578063842b954e146105db578063a04222e114610629578063a0e67e2b146106f1578063a3f4df7e1461075b578063affed0e0146107e9578063b6a9002e14610812578063b7f3358d146108c2578063c676920a146108e8578063db85d59c14610964578063f6d3fd86146109c7578063f847ed4814610b98578063ffa1ad7414610be9575b005b341561015657600080fd5b61016c6004808035906020019091905050610c77565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156101b957600080fd5b6101ee600480803590602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cb6565b005b34156101fb57600080fd5b610233600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803560ff16906020019091905050610e71565b005b341561024057600080fd5b61025a600480803560001916906020019091905050611011565b6040518082815260200191505060405180910390f35b341561027b57600080fd5b6102a7600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506110e7565b005b34156102b457600080fd5b610341600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803560ff1690602001909190803590602001909190505061125e565b60405180826000191660001916815260200191505060405180910390f35b341561036a57600080fd5b6103f7600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803560ff1690602001909190803590602001909190505061140b565b005b341561040457600080fd5b610430600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611561565b604051808215151515815260200191505060405180910390f35b341561045557600080fd5b61045d611581565b604051808260ff1660ff16815260200191505060405180910390f35b341561048457600080fd5b6104d8600480803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611594565b005b34156104e557600080fd5b61051e600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035600019169060200190919050506117cf565b604051808215151515815260200191505060405180910390f35b341561054357600080fd5b61056f600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506117fe565b005b341561057c57600080fd5b6105846118a1565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156105c75780820151818401526020810190506105ac565b505050509050019250505060405180910390f35b34156105e657600080fd5b610627600480803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803560ff16906020019091905050611935565b005b341561063457600080fd5b6106ef60048080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190803560ff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611b33565b005b34156106fc57600080fd5b610704611d21565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561074757808201518184015260208101905061072c565b505050509050019250505060405180910390f35b341561076657600080fd5b61076e611db5565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107ae578082015181840152602081019050610793565b50505050905090810190601f1680156107db5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156107f457600080fd5b6107fc611dee565b6040518082815260200191505060405180910390f35b341561081d57600080fd5b6108c0600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803560ff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611df4565b005b34156108cd57600080fd5b6108e6600480803560ff16906020019091905050611fe7565b005b34156108f357600080fd5b61090d600480803560001916906020019091905050612069565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610950578082015181840152602081019050610935565b505050509050019250505060405180910390f35b341561096f57600080fd5b61098560048080359060200190919050506121fd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156109d257600080fd5b610b96600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803560ff16906020019091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190505061223c565b005b3415610ba357600080fd5b610bcf600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061263f565b604051808215151515815260200191505060405180910390f35b3415610bf457600080fd5b610bfc61265f565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610c3c578082015181840152602081019050610c21565b50505050905090810190601f168015610c695780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600281815481101515610c8657fe5b90600052602060002090016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610cf057600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600383815481101515610d1657fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610d6457600080fd5b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506003600160038054905003815481101515610dd357fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600383815481101515610e0e57fe5b906000526020600020900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003805480919060019003610e6c91906127ed565b505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610eab57600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614151515610ed157600080fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610f2a57600080fd5b60028054806001018281610f3e9190612819565b9160005260206000209001600084909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508060ff16600060149054906101000a900460ff1660ff1614151561100d5761100c81611fe7565b5b5050565b600080600090505b6002805490508110156110e1576006600060028381548110151561103957fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000846000191660001916815260200190815260200160002060009054906101000a900460ff16156110d45781806001019250505b8080600101915050611019565b50919050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561112157600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561114757600080fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156111a057600080fd5b600380548060010182816111b49190612845565b9160005260206000209001600083909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600060197f01000000000000000000000000000000000000000000000000000000000000000230878787878760405180887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083835b602083101515611391578051825260208201915060208101905060208303925061136c565b6001836020036101000a0380198251168184511680821785525050505050509050018360028111156113bf57fe5b60ff167f01000000000000000000000000000000000000000000000000000000000000000281526001018281526020019750505050505050506040518091039020905095945050505050565b6000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561146557600080fd5b6114748686868660015461125e565b9050600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000826000191660001916815260200190815260200160002060009054906101000a900460ff161515156114e857600080fd5b6001600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550505050505050565b60046020528060005260406000206000915054906101000a900460ff1681565b600060149054906101000a900460ff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156115ce57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156115f457600080fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561164d57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff1660028481548110151561167357fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156116c157600080fd5b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508060028481548110151561178157fe5b906000526020600020900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b60066020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561183857600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561185e57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6118a9612871565b600380548060200260200160405190810160405280929190818152602001828054801561192b57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116118e1575b5050505050905090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561196f57600080fd5b8060ff166001600280549050031015151561198957600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166002848154811015156119af57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156119fd57600080fd5b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506002600160028054905003815481101515611a6c57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600284815481101515611aa757fe5b906000526020600020900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506002805480919060019003611b059190612885565b508060ff16600060149054906101000a900460ff1660ff16141515611b2e57611b2d81611fe7565b5b505050565b600080600060149054906101000a900460ff1660ff16141515611b5557600080fd5b84518460ff1611151515611b6857600080fd5b60018460ff1610151515611b7b57600080fd5b600090505b8451811015611cb25760008582815181101515611b9957fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1614151515611bc657600080fd5b600460008683815181101515611bd857fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515611c3657600080fd5b6001600460008784815181101515611c4a57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080600101915050611b80565b8460029080519060200190611cc89291906128b1565b5083600060146101000a81548160ff021916908360ff16021790555060008373ffffffffffffffffffffffffffffffffffffffff16141515611d1a57611d0e8383612698565b1515611d1957600080fd5b5b5050505050565b611d2961293b565b6002805480602002602001604051908101604052809291908181526020018280548015611dab57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611d61575b5050505050905090565b6040805190810160405280600b81526020017f476e6f736973205361666500000000000000000000000000000000000000000081525081565b60015481565b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611e4c57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff1663cde09ca933878787876000604051602001526040518663ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001836002811115611f1f57fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b83811015611f5f578082015181840152602081019050611f44565b50505050905090810190601f168015611f8c5780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b1515611fae57600080fd5b6102c65a03f11515611fbf57600080fd5b505050604051805190501515611fd457600080fd5b611fe0858585856126b0565b5050505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561202157600080fd5b6002805490508160ff161115151561203857600080fd5b60018160ff161015151561204b57600080fd5b80600060146101000a81548160ff021916908360ff16021790555050565b61207161293b565b60008061207d84611011565b91508160405180591061208d5750595b9080825280602002602001820160405250925060009150600090505b6002805490508110156121f657600660006002838154811015156120c957fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000856000191660001916815260200190815260200160002060009054906101000a900460ff16156121e95760028181548110151561216a57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683838151811015156121a457fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505081806001019250505b80806001019150506120a9565b5050919050565b60038181548110151561220c57fe5b90600052602060002090016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008060006122538e8e8e8e60015461125e565b94506000935060009050600091505b600060149054906101000a900460ff1660ff16821015612518578086511180156122a25750858181518110151561229557fe5b9060200190602002015182145b156123a15786818151811015156122b557fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480612371575060066000888381518110151561230557fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000866000191660001916815260200190815260200160002060009054906101000a900460ff165b151561237c57600080fd5b868181518110151561238a57fe5b906020019060200201519250600181019050612476565b6001858b8385038151811015156123b457fe5b906020019060200201518b8486038151811015156123ce57fe5b906020019060200201518b8587038151811015156123e857fe5b90602001906020020151604051600081526020016040526000604051602001526040518085600019166000191681526020018460ff1660ff16815260200183600019166000191681526020018260001916600019168152602001945050505050602060405160208103908084039060008661646e5a03f1151561246a57600080fd5b50506020604051035192505b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156124ce57600080fd5b8373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1611151561250857600080fd5b8293508180600101925050612262565b60008751111561261357600091505b865182101561261257868281518110151561253e57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561260557600060066000898581518110151561259057fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000876000191660001916815260200190815260200160002060006101000a81548160ff0219169083151502179055505b8180600101925050612527565b5b6001806000828254019250508190555061262f8e8e8e8e6126b0565b5050505050505050505050505050565b60056020528060005260406000206000915054906101000a900460ff1681565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b600080600083516020850186600019f4905092915050565b60008060028111156126be57fe5b8260028111156126ca57fe5b14156126eb576126db8585856127c1565b15156126e657600080fd5b6127ba565b600160028111156126f857fe5b82600281111561270457fe5b1415612724576127148584612698565b151561271f57600080fd5b6127b9565b61272d836127db565b905060008173ffffffffffffffffffffffffffffffffffffffff161415151561275557600080fd5b7f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5050505050565b60008060008351602085018688600019f190509392505050565b60008151602083016000f09050919050565b81548183558181151161281457818360005260206000209182019101612813919061294f565b5b505050565b8154818355818115116128405781836000526020600020918201910161283f919061294f565b5b505050565b81548183558181151161286c5781836000526020600020918201910161286b919061294f565b5b505050565b602060405190810160405280600081525090565b8154818355818115116128ac578183600052602060002091820191016128ab919061294f565b5b505050565b82805482825590600052602060002090810192821561292a579160200282015b828111156129295782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550916020019190600101906128d1565b5b5090506129379190612974565b5090565b602060405190810160405280600081525090565b61297191905b8082111561296d576000816000905550600101612955565b5090565b90565b6129b491905b808211156129b057600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555060010161297a565b5090565b905600a165627a7a72305820b9309aeae0cb4d289bc66fdd1b641936b903e87d406ff75007e08dd9fd54ff590029", + "sourceMap": "218:14623:1:-;;;1567:153;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1677:36;1683:7;1692:10;1704:2;1708:4;1677:5;;;;;:36;;;:::i;:::-;1567:153;;;;218:14623;;2039:1141;2550:9;2289:1;2276:9;;;;;;;;;;;:14;;;2268:23;;;;;;;;2397:7;:14;2383:10;:28;;;;2375:37;;;;;;;;2496:1;2482:10;:15;;;;2474:24;;;;;;;;2562:1;2550:13;;2545:266;2569:7;:14;2565:1;:18;2545:266;;;2671:1;2657:7;2665:1;2657:10;;;;;;;;;;;;;;;;;;:15;;;;2649:24;;;;;;;;2740:7;:19;2748:7;2756:1;2748:10;;;;;;;;;;;;;;;;;;2740:19;;;;;;;;;;;;;;;;;;;;;;;;;2739:20;2731:29;;;;;;;;2796:4;2774:7;:19;2782:7;2790:1;2782:10;;;;;;;;;;;;;;;;;;2774:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;2585:3;;;;;;;2545:266;;;2829:7;2820:6;:16;;;;;;;;;;;;:::i;:::-;;2858:10;2846:9;;:22;;;;;;;;;;;;;;;;;;3048:1;3042:2;:7;;;;3038:135;;;3143:29;3163:2;3167:4;3143:19;;;;;:29;;;:::i;:::-;3135:38;;;;;;;;3038:135;2039:1141;;;;;:::o;12356:225::-;12443:12;12563:1;12560;12553:4;12547:5;12540:4;12534;12530:3;12526:2;12522:1;12518:3;12505:12;12494:71;;12480:95;;;;:::o;218:14623::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;", + "deployedSourceMap": "218:14623:1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;472:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7264:384;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3786:431;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13870:290;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6656:336;;;;;;;;;;;;;;;;;;;;;;;;;;;;13076:249;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7979:506;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;607:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;418:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5468:502;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;892:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3326:220;;;;;;;;;;;;;;;;;;;;;;;;;;;;13603:121;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;4548:599:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2039:1141;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13407:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;295:43:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;446:20:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11178:464;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6159:320;;;;;;;;;;;;;;;;;;;;;;;;;;;;14301:538;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;501:29:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9222:1531;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;729:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;344:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;472:23:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7264:384::-;1105:4;1083:27;;:10;:27;;;1075:36;;;;;;;;7490:9;7460:39;;:10;7471:14;7460:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;:39;;;7452:48;;;;;;;;7535:5;7510:11;:22;7522:9;7510:22;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;7579:10;7610:1;7590:10;:17;;;;:21;7579:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;7550:10;7561:14;7550:26;;;;;;;;;;;;;;;;;;;:62;;;;;;;;;;;;;;;;;;7622:10;:19;;;;;;;;;;;;:::i;:::-;;7264:384;;:::o;3786:431::-;1105:4;1083:27;;:10;:27;;;1075:36;;;;;;;;3943:1;3934:5;:10;;;;3926:19;;;;;;;;4004:7;:14;4012:5;4004:14;;;;;;;;;;;;;;;;;;;;;;;;;4003:15;3995:24;;;;;;;;4029:6;:18;;;;;;;;;;;:::i;:::-;;;;;;;;;;4041:5;4029:18;;;;;;;;;;;;;;;;;;;;;;;4074:4;4057:7;:14;4065:5;4057:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;4159:10;4146:23;;:9;;;;;;;;;;;:23;;;;4142:68;;;4183:27;4199:10;4183:15;:27::i;:::-;4142:68;3786:431;;:::o;13870:290::-;13970:22;14013:6;14022:1;14013:10;;14008:146;14029:6;:13;;;;14025:1;:17;14008:146;;;14067:11;:22;14079:6;14086:1;14079:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;14067:22;;;;;;;;;;;;;;;:39;14090:15;14067:39;;;;;;;;;;;;;;;;;;;;;;;;;;;14063:80;;;14124:19;;;;;;;14063:80;14044:3;;;;;;;14008:146;;;13870:290;;;;:::o;6656:336::-;1105:4;1083:27;;:10;:27;;;1075:36;;;;;;;;6822:1;6808:9;6800:23;;;;6792:32;;;;;;;;6887:11;:22;6899:9;6887:22;;;;;;;;;;;;;;;;;;;;;;;;;6886:23;6878:32;;;;;;;;6920:10;:26;;;;;;;;;;;:::i;:::-;;;;;;;;;;6936:9;6920:26;;;;;;;;;;;;;;;;;;;;;;;6981:4;6956:11;:22;6968:9;6956:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;6656:336;:::o;13076:249::-;13225:7;13270:4;13265:10;;13277:4;13283:2;13287:5;13294:4;13300:9;13311:6;13255:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13248:70:1;;13076:249;;;;;;;:::o;7979:506::-;8220:23;8190:7;:19;8198:10;8190:19;;;;;;;;;;;;;;;;;;;;;;;;;8182:28;;;;;;;;8246:53;8265:2;8269:5;8276:4;8282:9;8293:5;;8246:18;:53::i;:::-;8220:79;;8380:11;:23;8392:10;8380:23;;;;;;;;;;;;;;;:40;8404:15;8380:40;;;;;;;;;;;;;;;;;;;;;;;;;;;8379:41;8371:50;;;;;;;;8474:4;8431:11;:23;8443:10;8431:23;;;;;;;;;;;;;;;:40;8455:15;8431:40;;;;;;;;;;;;;;;;;;:47;;;;;;;;;;;;;;;;;;7979:506;;;;;;:::o;607:40::-;;;;;;;;;;;;;;;;;;;;;;:::o;418:22::-;;;;;;;;;;;;;:::o;5468:502::-;1105:4;1083:27;;:10;:27;;;1075:36;;;;;;;;5658:1;5646:8;:13;;;;5638:22;;;;;;;;5719:7;:17;5727:8;5719:17;;;;;;;;;;;;;;;;;;;;;;;;;5718:18;5710:27;;;;;;;;5842:8;5817:33;;:6;5824:13;5817:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;:33;;;5809:42;;;;;;;;5881:5;5861:7;:17;5869:8;5861:17;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;5917:4;5896:7;:17;5904:8;5896:17;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;5955:8;5931:6;5938:13;5931:21;;;;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;5468:502;;;:::o;892:65::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3326:220::-;1105:4;1083:27;;:10;:27;;;1075:36;;;;;;;;3503:1;3487:11;3479:25;;;;3471:34;;;;;;;;3528:11;3515:10;;:24;;;;;;;;;;;;;;;;;;3326:220;:::o;13603:121::-;13673:11;;:::i;:::-;13707:10;13700:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13603:121;:::o;4548:599::-;1105:4;1083:27;;:10;:27;;;1075:36;;;;;;;;4776:10;4755:31;;4771:1;4755:6;:13;;;;:17;:31;;4747:40;;;;;;;;4889:5;4867:27;;:6;4874:10;4867:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;:27;;;4859:36;;;;;;;;4922:5;4905:7;:14;4913:5;4905:14;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;4958:6;4981:1;4965:6;:13;;;;:17;4958:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;4937:6;4944:10;4937:18;;;;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;4993:6;:15;;;;;;;;;;;;:::i;:::-;;5089:10;5076:23;;:9;;;;;;;;;;;:23;;;;5072:68;;;5113:27;5129:10;5113:15;:27::i;:::-;5072:68;4548:599;;;:::o;2039:1141::-;2550:9;2289:1;2276:9;;;;;;;;;;;:14;;;2268:23;;;;;;;;2397:7;:14;2383:10;:28;;;;2375:37;;;;;;;;2496:1;2482:10;:15;;;;2474:24;;;;;;;;2562:1;2550:13;;2545:266;2569:7;:14;2565:1;:18;2545:266;;;2671:1;2657:7;2665:1;2657:10;;;;;;;;;;;;;;;;;;:15;;;;2649:24;;;;;;;;2740:7;:19;2748:7;2756:1;2748:10;;;;;;;;;;;;;;;;;;2740:19;;;;;;;;;;;;;;;;;;;;;;;;;2739:20;2731:29;;;;;;;;2796:4;2774:7;:19;2782:7;2790:1;2782:10;;;;;;;;;;;;;;;;;;2774:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;2585:3;;;;;;;2545:266;;;2829:7;2820:6;:16;;;;;;;;;;;;:::i;:::-;;2858:10;2846:9;;:22;;;;;;;;;;;;;;;;;;3048:1;3042:2;:7;;;;3038:135;;;3143:29;3163:2;3167:4;3143:19;:29::i;:::-;3135:38;;;;;;;;3038:135;2039:1141;;;;;:::o;13407:111::-;13473:9;;:::i;:::-;13505:6;13498:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13407:111;:::o;295:43::-;;;;;;;;;;;;;;;;;;;;:::o;446:20::-;;;;:::o;11178:464::-;11374:11;:22;11386:9;11374:22;;;;;;;;;;;;;;;;;;;;;;;;;11366:31;;;;;;;;11464:9;:22;;;11487:10;11499:2;11503:5;11510:4;11516:9;11464:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11456:71:1;;;;;;;;11600:35;11608:2;11612:5;11619:4;11625:9;11600:7;:35::i;:::-;11178:464;;;;;:::o;6159:320::-;1105:4;1083:27;;:10;:27;;;1075:36;;;;;;;;6340:6;:13;;;;6326:10;:27;;;;6318:36;;;;;;;;6438:1;6424:10;:15;;;;6416:24;;;;;;;;6462:10;6450:9;;:22;;;;;;;;;;;;;;;;;;6159:320;:::o;14301:538::-;14400:26;;:::i;:::-;14442:22;14611:6;14467:37;14488:15;14467:20;:37::i;:::-;14442:62;;14547:17;14533:32;;;;;;;;;;;;;;;;;;;;;;;;14514:51;;14595:1;14575:21;;14620:1;14611:10;;14606:227;14627:6;:13;;;;14623:1;:17;14606:227;;;14665:11;:22;14677:6;14684:1;14677:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;14665:22;;;;;;;;;;;;;;;:39;14688:15;14665:39;;;;;;;;;;;;;;;;;;;;;;;;;;;14661:162;;;14762:6;14769:1;14762:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;14724:16;14741:17;14724:35;;;;;;;;;;;;;;;;;:47;;;;;;;;;;;14789:19;;;;;;;14661:162;14642:3;;;;;;;14606:227;;;14301:538;;;;;:::o;501:29::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;9222:1531::-;9414:23;9555:17;9595:20;9625:9;9644;9440:53;9459:2;9463:5;9470:4;9476:9;9487:5;;9440:18;:53::i;:::-;9414:79;;9583:1;9555:30;;9656:1;9644:13;;9718:1;9714:5;;9709:651;9725:9;;;;;;;;;;;9721:13;;:1;:13;9709:651;;;9860:1;9843:7;:14;:18;:37;;;;;9870:7;9878:1;9870:10;;;;;;;;;;;;;;;;;;9865:1;:15;9843:37;9839:381;;;9922:7;9930:1;9922:10;;;;;;;;;;;;;;;;;;9908:24;;:10;:24;;;:68;;;;9936:11;:23;9948:7;9956:1;9948:10;;;;;;;;;;;;;;;;;;9936:23;;;;;;;;;;;;;;;:40;9960:15;9936:40;;;;;;;;;;;;;;;;;;;;;;;;;;;9908:68;9900:77;;;;;;;;10010:7;10018:1;10010:10;;;;;;;;;;;;;;;;;;9995:25;;10043:1;10038:6;;;;9839:381;;;10170:50;10180:15;10197:1;10201;10199;:3;10197:6;;;;;;;;;;;;;;;;;;10205:1;10209;10207;:3;10205:6;;;;;;;;;;;;;;;;;;10213:1;10217;10215;:3;10213:6;;;;;;;;;;;;;;;;;;10170:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10155:65;;9839:381;10242:7;:21;10250:12;10242:21;;;;;;;;;;;;;;;;;;;;;;;;;10234:30;;;;;;;;10301:9;10286:24;;:12;:24;;;10278:33;;;;;;;;10337:12;10325:24;;9736:3;;;;;;;9709:651;;;10436:1;10419:7;:14;:18;10415:216;;;10462:1;10458:5;;10453:168;10469:7;:14;10465:1;:18;10453:168;;;10526:7;10534:1;10526:10;;;;;;;;;;;;;;;;;;10512:24;;:10;:24;;;;10508:98;;;10601:5;10558:11;:23;10570:7;10578:1;10570:10;;;;;;;;;;;;;;;;;;10558:23;;;;;;;;;;;;;;;:40;10582:15;10558:40;;;;;;;;;;;;;;;;;;:48;;;;;;;;;;;;;;;;;;10508:98;10485:3;;;;;;;10453:168;;;10415:216;10700:1;10691:5;;:10;;;;;;;;;;;10711:35;10719:2;10723:5;10730:4;10736:9;10711:7;:35::i;:::-;9222:1531;;;;;;;;;;;;;;:::o;729:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;344:40::-;;;;;;;;;;;;;;;;;;;;:::o;12356:225::-;12443:12;12563:1;12560;12553:4;12547:5;12540:4;12534;12530:3;12526:2;12522:1;12518:3;12505:12;12494:71;;12480:95;;;;:::o;11648:465::-;11973:19;11773:14;11760:27;;;;;;;;:9;:27;;;;;;;;;11756:351;;;11809:28;11821:2;11825:5;11832:4;11809:11;:28::i;:::-;11801:37;;;;;;;;11756:351;;;11870:22;11857:35;;;;;;;;:9;:35;;;;;;;;;11853:254;;;11914:29;11934:2;11938:4;11914:19;:29::i;:::-;11906:38;;;;;;;;11853:254;;;11995:19;12009:4;11995:13;:19::i;:::-;11973:41;;12051:1;12036:11;:16;;;;12028:25;;;;;;;;12067:29;12084:11;12067:29;;;;;;;;;;;;;;;;;;;;;;11853:254;11756:351;11648:465;;;;;:::o;12119:231::-;12213:12;12332:1;12329;12322:4;12316:5;12309:4;12303;12299:3;12292:5;12288:2;12284:1;12280:3;12275:4;12264:70;;12250:94;;;;;:::o;12587:197::-;12656:19;12762:4;12756:5;12749:4;12743;12739:3;12736:1;12729:6;12714:54;;12700:78;;;:::o;218:14623::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", + "source": "pragma solidity 0.4.19;\nimport \"./Extension.sol\";\n\n\n/// @title Gnosis Safe - A multisignature wallet with support for confirmations using signed messages based on ERC191.\n/// @author Stefan George - \ncontract GnosisSafe {\n\n event ContractCreation(address newContract);\n\n string public constant NAME = \"Gnosis Safe\";\n string public constant VERSION = \"0.0.1\";\n\n GnosisSafe masterCopy;\n uint8 public threshold;\n uint256 public nonce;\n address[] public owners;\n Extension[] public extensions;\n\n // isOwner mapping allows to check if an address is a Safe owner.\n mapping (address => bool) public isOwner;\n // isExtension mapping allows to check if an extension was whitelisted.\n mapping (address => bool) public isExtension;\n // isConfirmed mapping allows to check if a transaction was confirmed by an owner via a confirm transaction.\n mapping (address => mapping (bytes32 => bool)) public isConfirmed;\n\n enum Operation {\n Call,\n DelegateCall,\n Create\n }\n\n modifier onlyWallet() {\n require(msg.sender == address(this));\n _;\n }\n\n /// @dev Fallback function accepts Ether transactions.\n function ()\n external\n payable\n {\n\n }\n\n /// @dev Constructor function triggers setup function.\n /// @param _owners List of Safe owners.\n /// @param _threshold Number of required confirmations for a Safe transaction.\n /// @param to Contract address for optional delegate call.\n /// @param data Data payload for optional delegate call.\n function GnosisSafe(address[] _owners, uint8 _threshold, address to, bytes data)\n public\n {\n setup(_owners, _threshold, to, data);\n }\n\n /// @dev Setup function sets initial storage of contract.\n /// @param _owners List of Safe owners.\n /// @param _threshold Number of required confirmations for a Safe transaction.\n /// @param to Contract address for optional delegate call.\n /// @param data Data payload for optional delegate call.\n function setup(address[] _owners, uint8 _threshold, address to, bytes data)\n public\n {\n // Threshold can only be 0 at initialization.\n // Check ensures that setup function can only be called once.\n require(threshold == 0);\n // Validate that threshold is smaller than numbr of added owners.\n require(_threshold <= _owners.length);\n // There has to be at least one Safe owner.\n require(_threshold >= 1);\n // Initializing Safe owners.\n for (uint256 i = 0; i < _owners.length; i++) {\n // Owner address cannot be null.\n require(_owners[i] != 0);\n // No duplicate owners allowed.\n require(!isOwner[_owners[i]]);\n isOwner[_owners[i]] = true;\n }\n owners = _owners;\n threshold = _threshold;\n // If a to address is set, an additional delegate call is executed.\n // This call allows further contract setup steps, like adding an extension.\n if (to != 0)\n // Setup has to complete successfully or transaction fails.\n require(executeDelegateCall(to, data));\n }\n\n /// @dev Allows to upgrade the contract. This can only be done via a Safe transaction.\n /// @param _masterCopy New contract address.\n function changeMasterCopy(GnosisSafe _masterCopy)\n public\n onlyWallet\n {\n // Master copy address cannot be null.\n require(address(_masterCopy) != 0);\n masterCopy = _masterCopy;\n }\n\n /// @dev Allows to add a new owner to the Safe and update the threshold at the same time.\n /// This can only be done via a Safe transaction.\n /// @param owner New owner address.\n /// @param _threshold New threshold.\n function addOwner(address owner, uint8 _threshold)\n public\n onlyWallet\n {\n // Owner address cannot be null.\n require(owner != 0);\n // No duplicate owners allowed.\n require(!isOwner[owner]);\n owners.push(owner);\n isOwner[owner] = true;\n // Change threshold if threshold was changed.\n if (threshold != _threshold)\n changeThreshold(_threshold);\n }\n\n /// @dev Allows to remove an owner from the Safe and update the threshold at the same time.\n /// This can only be done via a Safe transaction.\n /// @param ownerIndex Array index position of owner address to be removed.\n /// @param owner Owner address to be removed.\n /// @param _threshold New threshold.\n function removeOwner(uint256 ownerIndex, address owner, uint8 _threshold)\n public\n onlyWallet\n {\n // Only allow to remove an owner, if threshold can still be reached.\n require(owners.length - 1 >= _threshold);\n // Validate owner address corresponds to owner index.\n require(owners[ownerIndex] == owner);\n isOwner[owner] = false;\n owners[ownerIndex] = owners[owners.length - 1];\n owners.length--;\n // Change threshold if threshold was changed.\n if (threshold != _threshold)\n changeThreshold(_threshold);\n }\n\n /// @dev Allows to replace an owner from the Safe with another address.\n /// This can only be done via a Safe transaction.\n /// @param oldOwnerIndex Array index position of owner address to be replaced.\n /// @param oldOwner Owner address to be replaced.\n /// @param newOwner New owner address.\n function replaceOwner(uint256 oldOwnerIndex, address oldOwner, address newOwner)\n public\n onlyWallet\n {\n // Owner address cannot be null.\n require(newOwner != 0);\n // No duplicate owners allowed.\n require(!isOwner[newOwner]);\n // Validate owner address corresponds to owner index.\n require(owners[oldOwnerIndex] == oldOwner);\n isOwner[oldOwner] = false;\n isOwner[newOwner] = true;\n owners[oldOwnerIndex] = newOwner;\n }\n\n /// @dev Allows to update the number of required confirmations by Safe owners.\n /// This can only be done via a Safe transaction.\n /// @param _threshold New threshold.\n function changeThreshold(uint8 _threshold)\n public\n onlyWallet\n {\n // Validate that threshold is smaller than numbr of owners.\n require(_threshold <= owners.length);\n // There has to be at least one Safe owner.\n require(_threshold >= 1);\n threshold = _threshold;\n }\n\n /// @dev Allows to add an extension to the whitelist.\n /// This can only be done via a Safe transaction.\n /// @param extension Extension to be whitelisted.\n function addExtension(Extension extension)\n public\n onlyWallet\n {\n // Extension address cannot be null.\n require(address(extension) != 0);\n // Extension cannot be added twice.\n require(!isExtension[extension]);\n extensions.push(extension);\n isExtension[extension] = true;\n }\n\n /// @dev Allows to remove an extension from the whitelist.\n /// This can only be done via a Safe transaction.\n /// @param extensionIndex Array index position of extension to be removed from whitelist.\n /// @param extension Extension to be removed.\n function removeExtension(uint256 extensionIndex, Extension extension)\n public\n onlyWallet\n {\n // Validate extension address corresponds to extension index.\n require(extensions[extensionIndex] == extension);\n isExtension[extension] = false;\n extensions[extensionIndex] = extensions[extensions.length - 1];\n extensions.length--;\n }\n\n /// @dev Allows to confirm a Safe transaction with a regular transaction.\n /// This can only be done from an owner address.\n /// @param to Destination address.\n /// @param value Ether value.\n /// @param data Data payload.\n /// @param operation Operation type.\n /// @param _nonce Transaction nonce.\n function confirmTransaction(address to, uint256 value, bytes data, Operation operation, uint256 _nonce)\n public\n {\n // Only Safe owners are allowed to confirm Safe transactions.\n require(isOwner[msg.sender]);\n bytes32 transactionHash = getTransactionHash(to, value, data, operation, nonce);\n // It is only possible to confirm a transaction once.\n require(!isConfirmed[msg.sender][transactionHash]);\n isConfirmed[msg.sender][transactionHash] = true;\n }\n\n /// @dev Allows to execute a Safe transaction confirmed by required number of owners.\n /// @param to Destination address of Safe transaction.\n /// @param value Ether value of Safe transaction.\n /// @param data Data payload of Safe transaction.\n /// @param operation Operation type of Safe transaction.\n /// @param v Array of signature V values sorted by owner addresses.\n /// @param r Array of signature R values sorted by owner addresses.\n /// @param s Array of signature S values sorted by owner addresses.\n /// @param _owners List of Safe owners confirming via regular transactions sorted by owner addresses.\n /// @param indices List of indeces of Safe owners confirming via regular transactions.\n function executeTransaction(address to, uint256 value, bytes data, Operation operation, uint8[] v, bytes32[] r, bytes32[] s, address[] _owners, uint256[] indices)\n public\n {\n bytes32 transactionHash = getTransactionHash(to, value, data, operation, nonce);\n // There cannot be an owner with address 0.\n address lastOwner = address(0);\n address currentOwner;\n uint256 i;\n uint256 j = 0;\n // Validate threshold is reached.\n for (i = 0; i < threshold; i++) {\n // Check confirmations done with regular transactions or by msg.sender.\n if (indices.length > j && i == indices[j]) {\n require(msg.sender == _owners[j] || isConfirmed[_owners[j]][transactionHash]);\n currentOwner = _owners[j];\n j += 1;\n }\n // Check confirmations done with signed messages.\n else\n currentOwner = ecrecover(transactionHash, v[i-j], r[i-j], s[i-j]);\n require(isOwner[currentOwner]);\n require(currentOwner > lastOwner);\n lastOwner = currentOwner;\n }\n // Delete storage to receive refunds.\n if (_owners.length > 0) {\n for (i = 0; i < _owners.length; i++) {\n if (msg.sender != _owners[i])\n isConfirmed[_owners[i]][transactionHash] = false;\n }\n }\n // Increase nonce and execute transaction.\n nonce += 1;\n execute(to, value, data, operation);\n }\n\n /// @dev Allows to execute a Safe transaction via an extension without any further confirmations.\n /// @param to Destination address of extension transaction.\n /// @param value Ether value of extension transaction.\n /// @param data Data payload of extension transaction.\n /// @param operation Operation type of extension transaction.\n /// @param extension Extension address of extension transaction.\n function executeExtension(address to, uint256 value, bytes data, Operation operation, Extension extension)\n public\n {\n // Only whitelisted extensions are allowed.\n require(isExtension[extension]);\n // Extension has to confirm transaction.\n require(extension.isExecutable(msg.sender, to, value, data, operation));\n // Exectute transaction without further confirmations.\n execute(to, value, data, operation);\n }\n\n function execute(address to, uint256 value, bytes data, Operation operation)\n internal\n {\n if (operation == Operation.Call)\n require(executeCall(to, value, data));\n else if (operation == Operation.DelegateCall)\n require(executeDelegateCall(to, data));\n else {\n address newContract = executeCreate(data);\n require(newContract != 0);\n ContractCreation(newContract);\n }\n }\n\n function executeCall(address to, uint256 value, bytes data)\n internal\n returns (bool success)\n {\n assembly {\n success := call(not(0), to, value, add(data, 0x20), mload(data), 0, 0)\n }\n }\n\n function executeDelegateCall(address to, bytes data)\n internal\n returns (bool success)\n {\n assembly {\n success := delegatecall(not(0), to, add(data, 0x20), mload(data), 0, 0)\n }\n }\n\n function executeCreate(bytes data)\n internal\n returns (address newContract)\n {\n assembly {\n newContract := create(0, add(data, 0x20), mload(data))\n }\n }\n\n /// @dev Returns transactions hash to be signed by owners.\n /// @param to Destination address.\n /// @param value Ether value.\n /// @param data Data payload.\n /// @param operation Operation type.\n /// @param _nonce Transaction nonce.\n /// @return Transaction hash.\n function getTransactionHash(address to, uint256 value, bytes data, Operation operation, uint256 _nonce)\n public\n view\n returns (bytes32)\n {\n return keccak256(byte(0x19), this, to, value, data, operation, _nonce);\n }\n\n /// @dev Returns array of owners.\n /// @return Array of Safe owners.\n function getOwners()\n public\n view\n returns (address[])\n {\n return owners;\n }\n\n /// @dev Returns array of extensions.\n /// @return Array of extensions.\n function getExtensions()\n public\n view\n returns (Extension[])\n {\n return extensions;\n }\n\n /// @dev Returns a the count of owners that have confirmed the given transaction.\n /// @param transactionHash Safe transaction hash.\n function getConfirmationCount(bytes32 transactionHash)\n public\n view\n returns (uint confirmationCount)\n {\n for (uint i = 0; i < owners.length; i++) {\n if (isConfirmed[owners[i]][transactionHash])\n confirmationCount++;\n }\n }\n\n /// @dev Returns a list of owners that have confirmed the given transaction.\n /// @param transactionHash Safe transaction hash.\n function getConfirmingOwners(bytes32 transactionHash)\n public\n view\n returns (address[] confirmingOwners)\n {\n uint confirmationCount = getConfirmationCount(transactionHash);\n confirmingOwners = new address[](confirmationCount);\n confirmationCount = 0;\n for (uint i = 0; i < owners.length; i++) {\n if (isConfirmed[owners[i]][transactionHash]) {\n confirmingOwners[confirmationCount] = owners[i];\n confirmationCount++;\n }\n }\n }\n}\n", + "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", + "ast": { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", + "exportedSymbols": { + "GnosisSafe": [ + 963 + ] + }, + "id": 964, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 20, + "literals": [ + "solidity", + "0.4", + ".19" + ], + "nodeType": "PragmaDirective", + "src": "0:23:1" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Extension.sol", + "file": "./Extension.sol", + "id": 21, + "nodeType": "ImportDirective", + "scope": 964, + "sourceUnit": 19, + "src": "24:25:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": "@title Gnosis Safe - A multisignature wallet with support for confirmations using signed messages based on ERC191.\n @author Stefan George - ", + "fullyImplemented": true, + "id": 963, + "linearizedBaseContracts": [ + 963 + ], + "name": "GnosisSafe", + "nodeType": "ContractDefinition", + "nodes": [ + { + "anonymous": false, + "id": 25, + "name": "ContractCreation", + "nodeType": "EventDefinition", + "parameters": { + "id": 24, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 23, + "indexed": false, + "name": "newContract", + "nodeType": "VariableDeclaration", + "scope": 25, + "src": "268:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 22, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "268:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "267:21:1" + }, + "src": "245:44:1" + }, + { + "constant": true, + "id": 28, + "name": "NAME", + "nodeType": "VariableDeclaration", + "scope": 963, + "src": "295:43:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory", + "typeString": "string memory" + }, + "typeName": { + "id": 26, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "295:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string storage pointer" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "476e6f7369732053616665", + "id": 27, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "325:13:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_72ec6775392f699e8ffd72b7c600556d49bdc746bf22bce93d3ae6019cdaff63", + "typeString": "literal_string \"Gnosis Safe\"" + }, + "value": "Gnosis Safe" + }, + "visibility": "public" + }, + { + "constant": true, + "id": 31, + "name": "VERSION", + "nodeType": "VariableDeclaration", + "scope": 963, + "src": "344:40:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory", + "typeString": "string memory" + }, + "typeName": { + "id": 29, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "344:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string storage pointer" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "302e302e31", + "id": 30, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "377:7:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", + "typeString": "literal_string \"0.0.1\"" + }, + "value": "0.0.1" + }, + "visibility": "public" + }, + { + "constant": false, + "id": 33, + "name": "masterCopy", + "nodeType": "VariableDeclaration", + "scope": 963, + "src": "391:21:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + }, + "typeName": { + "contractScope": null, + "id": 32, + "name": "GnosisSafe", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 963, + "src": "391:10:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 35, + "name": "threshold", + "nodeType": "VariableDeclaration", + "scope": 963, + "src": "418:22:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 34, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "418:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 37, + "name": "nonce", + "nodeType": "VariableDeclaration", + "scope": 963, + "src": "446:20:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 36, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "446:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 40, + "name": "owners", + "nodeType": "VariableDeclaration", + "scope": 963, + "src": "472:23:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + }, + "typeName": { + "baseType": { + "id": 38, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "472:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 39, + "length": null, + "nodeType": "ArrayTypeName", + "src": "472:9:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[] storage pointer" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 43, + "name": "extensions", + "nodeType": "VariableDeclaration", + "scope": 963, + "src": "501:29:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage", + "typeString": "contract Extension[] storage ref" + }, + "typeName": { + "baseType": { + "contractScope": null, + "id": 41, + "name": "Extension", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 18, + "src": "501:9:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + }, + "id": 42, + "length": null, + "nodeType": "ArrayTypeName", + "src": "501:11:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage_ptr", + "typeString": "contract Extension[] storage pointer" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 47, + "name": "isOwner", + "nodeType": "VariableDeclaration", + "scope": 963, + "src": "607:40:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "typeName": { + "id": 46, + "keyType": { + "id": 44, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "616:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "607:25:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "valueType": { + "id": 45, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "627:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 51, + "name": "isExtension", + "nodeType": "VariableDeclaration", + "scope": 963, + "src": "729:44:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "typeName": { + "id": 50, + "keyType": { + "id": 48, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "738:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "729:25:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "valueType": { + "id": 49, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "749:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 57, + "name": "isConfirmed", + "nodeType": "VariableDeclaration", + "scope": 963, + "src": "892:65:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$", + "typeString": "mapping(address => mapping(bytes32 => bool))" + }, + "typeName": { + "id": 56, + "keyType": { + "id": 52, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "901:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "892:46:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$", + "typeString": "mapping(address => mapping(bytes32 => bool))" + }, + "valueType": { + "id": 55, + "keyType": { + "id": 53, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "921:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Mapping", + "src": "912:25:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + }, + "valueType": { + "id": 54, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "932:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + } + }, + "value": null, + "visibility": "public" + }, + { + "canonicalName": "GnosisSafe.Operation", + "id": 61, + "members": [ + { + "id": 58, + "name": "Call", + "nodeType": "EnumValue", + "src": "989:4:1" + }, + { + "id": 59, + "name": "DelegateCall", + "nodeType": "EnumValue", + "src": "1003:12:1" + }, + { + "id": 60, + "name": "Create", + "nodeType": "EnumValue", + "src": "1025:6:1" + } + ], + "name": "Operation", + "nodeType": "EnumDefinition", + "src": "964:73:1" + }, + { + "body": { + "id": 73, + "nodeType": "Block", + "src": "1065:64:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 69, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 64, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2089, + "src": "1083:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 65, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1083:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 67, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2100, + "src": "1105:4:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + ], + "id": 66, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1097:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 68, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1097:13:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1083:27:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 63, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "1075:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 70, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1075:36:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 71, + "nodeType": "ExpressionStatement", + "src": "1075:36:1" + }, + { + "id": 72, + "nodeType": "PlaceholderStatement", + "src": "1121:1:1" + } + ] + }, + "id": 74, + "name": "onlyWallet", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 62, + "nodeType": "ParameterList", + "parameters": [], + "src": "1062:2:1" + }, + "src": "1043:86:1", + "visibility": "internal" + }, + { + "body": { + "id": 77, + "nodeType": "Block", + "src": "1243:8:1", + "statements": [] + }, + "id": 78, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 75, + "nodeType": "ParameterList", + "parameters": [], + "src": "1203:2:1" + }, + "payable": true, + "returnParameters": { + "id": 76, + "nodeType": "ParameterList", + "parameters": [], + "src": "1243:0:1" + }, + "scope": 963, + "src": "1194:57:1", + "stateMutability": "payable", + "superFunction": null, + "visibility": "external" + }, + { + "body": { + "id": 97, + "nodeType": "Block", + "src": "1667:53:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 91, + "name": "_owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 81, + "src": "1683:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + { + "argumentTypes": null, + "id": 92, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 83, + "src": "1692:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "argumentTypes": null, + "id": 93, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 85, + "src": "1704:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 94, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 87, + "src": "1708:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 90, + "name": "setup", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 187, + "src": "1677:5:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_uint8_$_t_address_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address[] memory,uint8,address,bytes memory)" + } + }, + "id": 95, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1677:36:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 96, + "nodeType": "ExpressionStatement", + "src": "1677:36:1" + } + ] + }, + "id": 98, + "implemented": true, + "isConstructor": true, + "isDeclaredConst": false, + "modifiers": [], + "name": "GnosisSafe", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 88, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 81, + "name": "_owners", + "nodeType": "VariableDeclaration", + "scope": 98, + "src": "1587:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + }, + "typeName": { + "baseType": { + "id": 79, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1587:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 80, + "length": null, + "nodeType": "ArrayTypeName", + "src": "1587:9:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[] storage pointer" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 83, + "name": "_threshold", + "nodeType": "VariableDeclaration", + "scope": 98, + "src": "1606:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 82, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1606:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 85, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 98, + "src": "1624:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 84, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1624:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 87, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 98, + "src": "1636:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + "typeName": { + "id": 86, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1636:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1586:61:1" + }, + "payable": false, + "returnParameters": { + "id": 89, + "nodeType": "ParameterList", + "parameters": [], + "src": "1667:0:1" + }, + "scope": 963, + "src": "1567:153:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 186, + "nodeType": "Block", + "src": "2134:1046:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 113, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 111, + "name": "threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 35, + "src": "2276:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 112, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2289:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2276:14:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 110, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "2268:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 114, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2268:23:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 115, + "nodeType": "ExpressionStatement", + "src": "2268:23:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 120, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 117, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 103, + "src": "2383:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 118, + "name": "_owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 101, + "src": "2397:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 119, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2397:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2383:28:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 116, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "2375:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 121, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2375:37:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 122, + "nodeType": "ExpressionStatement", + "src": "2375:37:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 126, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 124, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 103, + "src": "2482:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 125, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2496:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "2482:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 123, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "2474:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 127, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2474:24:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 128, + "nodeType": "ExpressionStatement", + "src": "2474:24:1" + }, + { + "body": { + "id": 165, + "nodeType": "Block", + "src": "2590:221:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 145, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 141, + "name": "_owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 101, + "src": "2657:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 143, + "indexExpression": { + "argumentTypes": null, + "id": 142, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 130, + "src": "2665:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2657:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 144, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2671:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2657:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 140, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "2649:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 146, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2649:24:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 147, + "nodeType": "ExpressionStatement", + "src": "2649:24:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 154, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "2739:20:1", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 149, + "name": "isOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47, + "src": "2740:7:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 153, + "indexExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 150, + "name": "_owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 101, + "src": "2748:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 152, + "indexExpression": { + "argumentTypes": null, + "id": 151, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 130, + "src": "2756:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2748:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2740:19:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 148, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "2731:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 155, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2731:29:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 156, + "nodeType": "ExpressionStatement", + "src": "2731:29:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 163, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 157, + "name": "isOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47, + "src": "2774:7:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 161, + "indexExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 158, + "name": "_owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 101, + "src": "2782:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 160, + "indexExpression": { + "argumentTypes": null, + "id": 159, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 130, + "src": "2790:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2782:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2774:19:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 162, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2796:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "2774:26:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 164, + "nodeType": "ExpressionStatement", + "src": "2774:26:1" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 136, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 133, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 130, + "src": "2565:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 134, + "name": "_owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 101, + "src": "2569:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 135, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2569:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2565:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 166, + "initializationExpression": { + "assignments": [ + 130 + ], + "declarations": [ + { + "constant": false, + "id": 130, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 187, + "src": "2550:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 129, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2550:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 132, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 131, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2562:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "2550:13:1" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 138, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "2585:3:1", + "subExpression": { + "argumentTypes": null, + "id": 137, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 130, + "src": "2585:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 139, + "nodeType": "ExpressionStatement", + "src": "2585:3:1" + }, + "nodeType": "ForStatement", + "src": "2545:266:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 169, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 167, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "2820:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 168, + "name": "_owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 101, + "src": "2829:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "src": "2820:16:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 170, + "nodeType": "ExpressionStatement", + "src": "2820:16:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 173, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 171, + "name": "threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 35, + "src": "2846:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 172, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 103, + "src": "2858:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "2846:22:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 174, + "nodeType": "ExpressionStatement", + "src": "2846:22:1" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 177, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 175, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 105, + "src": "3042:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 176, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3048:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3042:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 185, + "nodeType": "IfStatement", + "src": "3038:135:1", + "trueBody": { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 180, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 105, + "src": "3163:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 181, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 107, + "src": "3167:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 179, + "name": "executeDelegateCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 815, + "src": "3143:19:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bool_$", + "typeString": "function (address,bytes memory) returns (bool)" + } + }, + "id": 182, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3143:29:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 178, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "3135:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 183, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3135:38:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 184, + "nodeType": "ExpressionStatement", + "src": "3135:38:1" + } + } + ] + }, + "id": 187, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "setup", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 108, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 101, + "name": "_owners", + "nodeType": "VariableDeclaration", + "scope": 187, + "src": "2054:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + }, + "typeName": { + "baseType": { + "id": 99, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2054:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 100, + "length": null, + "nodeType": "ArrayTypeName", + "src": "2054:9:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[] storage pointer" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 103, + "name": "_threshold", + "nodeType": "VariableDeclaration", + "scope": 187, + "src": "2073:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 102, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "2073:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 105, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 187, + "src": "2091:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 104, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2091:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 107, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 187, + "src": "2103:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + "typeName": { + "id": 106, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2103:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2053:61:1" + }, + "payable": false, + "returnParameters": { + "id": 109, + "nodeType": "ParameterList", + "parameters": [], + "src": "2134:0:1" + }, + "scope": 963, + "src": "2039:1141:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 206, + "nodeType": "Block", + "src": "3414:132:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 199, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 196, + "name": "_masterCopy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 189, + "src": "3487:11:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + ], + "id": 195, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3479:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 197, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3479:20:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 198, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3503:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3479:25:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 194, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "3471:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 200, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3471:34:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 201, + "nodeType": "ExpressionStatement", + "src": "3471:34:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 204, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 202, + "name": "masterCopy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33, + "src": "3515:10:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 203, + "name": "_masterCopy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 189, + "src": "3528:11:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + }, + "src": "3515:24:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + }, + "id": 205, + "nodeType": "ExpressionStatement", + "src": "3515:24:1" + } + ] + }, + "id": 207, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": [], + "id": 192, + "modifierName": { + "argumentTypes": null, + "id": 191, + "name": "onlyWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 74, + "src": "3399:10:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "3399:10:1" + } + ], + "name": "changeMasterCopy", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 190, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 189, + "name": "_masterCopy", + "nodeType": "VariableDeclaration", + "scope": 207, + "src": "3352:22:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + }, + "typeName": { + "contractScope": null, + "id": 188, + "name": "GnosisSafe", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 963, + "src": "3352:10:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3351:24:1" + }, + "payable": false, + "returnParameters": { + "id": 193, + "nodeType": "ParameterList", + "parameters": [], + "src": "3414:0:1" + }, + "scope": 963, + "src": "3326:220:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 249, + "nodeType": "Block", + "src": "3875:342:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 219, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 217, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 209, + "src": "3934:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 218, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3943:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3934:10:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 216, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "3926:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 220, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3926:19:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 221, + "nodeType": "ExpressionStatement", + "src": "3926:19:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 226, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "4003:15:1", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 223, + "name": "isOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47, + "src": "4004:7:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 225, + "indexExpression": { + "argumentTypes": null, + "id": 224, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 209, + "src": "4012:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4004:14:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 222, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "3995:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 227, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3995:24:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 228, + "nodeType": "ExpressionStatement", + "src": "3995:24:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 232, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 209, + "src": "4041:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 229, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "4029:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 231, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "push", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4029:11:1", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypush_nonpayable$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) returns (uint256)" + } + }, + "id": 233, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4029:18:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 234, + "nodeType": "ExpressionStatement", + "src": "4029:18:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 239, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 235, + "name": "isOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47, + "src": "4057:7:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 237, + "indexExpression": { + "argumentTypes": null, + "id": 236, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 209, + "src": "4065:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4057:14:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 238, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4074:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "4057:21:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 240, + "nodeType": "ExpressionStatement", + "src": "4057:21:1" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 243, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 241, + "name": "threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 35, + "src": "4146:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "id": 242, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 211, + "src": "4159:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "4146:23:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 248, + "nodeType": "IfStatement", + "src": "4142:68:1", + "trueBody": { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 245, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 211, + "src": "4199:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "id": 244, + "name": "changeThreshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 385, + "src": "4183:15:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$returns$__$", + "typeString": "function (uint8)" + } + }, + "id": 246, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4183:27:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 247, + "nodeType": "ExpressionStatement", + "src": "4183:27:1" + } + } + ] + }, + "id": 250, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": [], + "id": 214, + "modifierName": { + "argumentTypes": null, + "id": 213, + "name": "onlyWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 74, + "src": "3860:10:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "3860:10:1" + } + ], + "name": "addOwner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 212, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 209, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 250, + "src": "3804:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 208, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3804:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 211, + "name": "_threshold", + "nodeType": "VariableDeclaration", + "scope": 250, + "src": "3819:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 210, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "3819:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3803:33:1" + }, + "payable": false, + "returnParameters": { + "id": 215, + "nodeType": "ParameterList", + "parameters": [], + "src": "3875:0:1" + }, + "scope": 963, + "src": "3786:431:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 308, + "nodeType": "Block", + "src": "4660:487:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 267, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 265, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 262, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "4755:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 263, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4755:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 264, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4771:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "4755:17:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 266, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 256, + "src": "4776:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "4755:31:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 261, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "4747:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 268, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4747:40:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 269, + "nodeType": "ExpressionStatement", + "src": "4747:40:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 275, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 271, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "4867:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 273, + "indexExpression": { + "argumentTypes": null, + "id": 272, + "name": "ownerIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 252, + "src": "4874:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4867:18:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 274, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 254, + "src": "4889:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "4867:27:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 270, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "4859:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 276, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4859:36:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 277, + "nodeType": "ExpressionStatement", + "src": "4859:36:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 282, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 278, + "name": "isOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47, + "src": "4905:7:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 280, + "indexExpression": { + "argumentTypes": null, + "id": 279, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 254, + "src": "4913:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4905:14:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 281, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4922:5:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "4905:22:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 283, + "nodeType": "ExpressionStatement", + "src": "4905:22:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 293, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 284, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "4937:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 286, + "indexExpression": { + "argumentTypes": null, + "id": 285, + "name": "ownerIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 252, + "src": "4944:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4937:18:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 287, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "4958:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 292, + "indexExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 291, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 288, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "4965:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 289, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4965:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 290, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4981:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "4965:17:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4958:25:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "4937:46:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 294, + "nodeType": "ExpressionStatement", + "src": "4937:46:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 298, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "--", + "prefix": false, + "src": "4993:15:1", + "subExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 295, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "4993:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 297, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4993:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 299, + "nodeType": "ExpressionStatement", + "src": "4993:15:1" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 302, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 300, + "name": "threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 35, + "src": "5076:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "id": 301, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 256, + "src": "5089:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "5076:23:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 307, + "nodeType": "IfStatement", + "src": "5072:68:1", + "trueBody": { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 304, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 256, + "src": "5129:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "id": 303, + "name": "changeThreshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 385, + "src": "5113:15:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$returns$__$", + "typeString": "function (uint8)" + } + }, + "id": 305, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5113:27:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 306, + "nodeType": "ExpressionStatement", + "src": "5113:27:1" + } + } + ] + }, + "id": 309, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": [], + "id": 259, + "modifierName": { + "argumentTypes": null, + "id": 258, + "name": "onlyWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 74, + "src": "4645:10:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "4645:10:1" + } + ], + "name": "removeOwner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 257, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 252, + "name": "ownerIndex", + "nodeType": "VariableDeclaration", + "scope": 309, + "src": "4569:18:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 251, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4569:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 254, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 309, + "src": "4589:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 253, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4589:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 256, + "name": "_threshold", + "nodeType": "VariableDeclaration", + "scope": 309, + "src": "4604:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 255, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "4604:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4568:53:1" + }, + "payable": false, + "returnParameters": { + "id": 260, + "nodeType": "ParameterList", + "parameters": [], + "src": "4660:0:1" + }, + "scope": 963, + "src": "4548:599:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 359, + "nodeType": "Block", + "src": "5587:383:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 323, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 321, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 315, + "src": "5646:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 322, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5658:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "5646:13:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 320, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "5638:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 324, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5638:22:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 325, + "nodeType": "ExpressionStatement", + "src": "5638:22:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 330, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "5718:18:1", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 327, + "name": "isOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47, + "src": "5719:7:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 329, + "indexExpression": { + "argumentTypes": null, + "id": 328, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 315, + "src": "5727:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5719:17:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 326, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "5710:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 331, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5710:27:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 332, + "nodeType": "ExpressionStatement", + "src": "5710:27:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 338, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 334, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "5817:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 336, + "indexExpression": { + "argumentTypes": null, + "id": 335, + "name": "oldOwnerIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 311, + "src": "5824:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5817:21:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 337, + "name": "oldOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 313, + "src": "5842:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "5817:33:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 333, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "5809:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 339, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5809:42:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 340, + "nodeType": "ExpressionStatement", + "src": "5809:42:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 345, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 341, + "name": "isOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47, + "src": "5861:7:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 343, + "indexExpression": { + "argumentTypes": null, + "id": 342, + "name": "oldOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 313, + "src": "5869:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "5861:17:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 344, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5881:5:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "5861:25:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 346, + "nodeType": "ExpressionStatement", + "src": "5861:25:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 351, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 347, + "name": "isOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47, + "src": "5896:7:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 349, + "indexExpression": { + "argumentTypes": null, + "id": 348, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 315, + "src": "5904:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "5896:17:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 350, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5917:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "5896:25:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 352, + "nodeType": "ExpressionStatement", + "src": "5896:25:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 357, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 353, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "5931:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 355, + "indexExpression": { + "argumentTypes": null, + "id": 354, + "name": "oldOwnerIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 311, + "src": "5938:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "5931:21:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 356, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 315, + "src": "5955:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "5931:32:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 358, + "nodeType": "ExpressionStatement", + "src": "5931:32:1" + } + ] + }, + "id": 360, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": [], + "id": 318, + "modifierName": { + "argumentTypes": null, + "id": 317, + "name": "onlyWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 74, + "src": "5572:10:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "5572:10:1" + } + ], + "name": "replaceOwner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 316, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 311, + "name": "oldOwnerIndex", + "nodeType": "VariableDeclaration", + "scope": 360, + "src": "5490:21:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 310, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5490:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 313, + "name": "oldOwner", + "nodeType": "VariableDeclaration", + "scope": 360, + "src": "5513:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 312, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5513:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 315, + "name": "newOwner", + "nodeType": "VariableDeclaration", + "scope": 360, + "src": "5531:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 314, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5531:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5489:59:1" + }, + "payable": false, + "returnParameters": { + "id": 319, + "nodeType": "ParameterList", + "parameters": [], + "src": "5587:0:1" + }, + "scope": 963, + "src": "5468:502:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 384, + "nodeType": "Block", + "src": "6240:239:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 371, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 368, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 362, + "src": "6326:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 369, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "6340:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 370, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "6340:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6326:27:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 367, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "6318:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 372, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6318:36:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 373, + "nodeType": "ExpressionStatement", + "src": "6318:36:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 377, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 375, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 362, + "src": "6424:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 376, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6438:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "6424:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 374, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "6416:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 378, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6416:24:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 379, + "nodeType": "ExpressionStatement", + "src": "6416:24:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 382, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 380, + "name": "threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 35, + "src": "6450:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 381, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 362, + "src": "6462:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "6450:22:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 383, + "nodeType": "ExpressionStatement", + "src": "6450:22:1" + } + ] + }, + "id": 385, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": [], + "id": 365, + "modifierName": { + "argumentTypes": null, + "id": 364, + "name": "onlyWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 74, + "src": "6225:10:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "6225:10:1" + } + ], + "name": "changeThreshold", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 363, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 362, + "name": "_threshold", + "nodeType": "VariableDeclaration", + "scope": 385, + "src": "6184:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 361, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "6184:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6183:18:1" + }, + "payable": false, + "returnParameters": { + "id": 366, + "nodeType": "ParameterList", + "parameters": [], + "src": "6240:0:1" + }, + "scope": 963, + "src": "6159:320:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 419, + "nodeType": "Block", + "src": "6737:255:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 397, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 394, + "name": "extension", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 387, + "src": "6808:9:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + ], + "id": 393, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6800:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 395, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6800:18:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 396, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6822:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "6800:23:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 392, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "6792:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 398, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6792:32:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 399, + "nodeType": "ExpressionStatement", + "src": "6792:32:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 404, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "6886:23:1", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 401, + "name": "isExtension", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 51, + "src": "6887:11:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 403, + "indexExpression": { + "argumentTypes": null, + "id": 402, + "name": "extension", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 387, + "src": "6899:9:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6887:22:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 400, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "6878:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 405, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6878:32:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 406, + "nodeType": "ExpressionStatement", + "src": "6878:32:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 410, + "name": "extension", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 387, + "src": "6936:9:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + ], + "expression": { + "argumentTypes": null, + "id": 407, + "name": "extensions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43, + "src": "6920:10:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage", + "typeString": "contract Extension[] storage ref" + } + }, + "id": 409, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "push", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "6920:15:1", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypush_nonpayable$_t_contract$_Extension_$18_$returns$_t_uint256_$", + "typeString": "function (contract Extension) returns (uint256)" + } + }, + "id": 411, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6920:26:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 412, + "nodeType": "ExpressionStatement", + "src": "6920:26:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 417, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 413, + "name": "isExtension", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 51, + "src": "6956:11:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 415, + "indexExpression": { + "argumentTypes": null, + "id": 414, + "name": "extension", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 387, + "src": "6968:9:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "6956:22:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 416, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6981:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "6956:29:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 418, + "nodeType": "ExpressionStatement", + "src": "6956:29:1" + } + ] + }, + "id": 420, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": [], + "id": 390, + "modifierName": { + "argumentTypes": null, + "id": 389, + "name": "onlyWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 74, + "src": "6722:10:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "6722:10:1" + } + ], + "name": "addExtension", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 388, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 387, + "name": "extension", + "nodeType": "VariableDeclaration", + "scope": 420, + "src": "6678:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + }, + "typeName": { + "contractScope": null, + "id": 386, + "name": "Extension", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 18, + "src": "6678:9:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6677:21:1" + }, + "payable": false, + "returnParameters": { + "id": 391, + "nodeType": "ParameterList", + "parameters": [], + "src": "6737:0:1" + }, + "scope": 963, + "src": "6656:336:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 459, + "nodeType": "Block", + "src": "7372:276:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + }, + "id": 434, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 430, + "name": "extensions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43, + "src": "7460:10:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage", + "typeString": "contract Extension[] storage ref" + } + }, + "id": 432, + "indexExpression": { + "argumentTypes": null, + "id": 431, + "name": "extensionIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 422, + "src": "7471:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7460:26:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 433, + "name": "extension", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 424, + "src": "7490:9:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + }, + "src": "7460:39:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 429, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "7452:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 435, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7452:48:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 436, + "nodeType": "ExpressionStatement", + "src": "7452:48:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 441, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 437, + "name": "isExtension", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 51, + "src": "7510:11:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 439, + "indexExpression": { + "argumentTypes": null, + "id": 438, + "name": "extension", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 424, + "src": "7522:9:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "7510:22:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 440, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7535:5:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "7510:30:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 442, + "nodeType": "ExpressionStatement", + "src": "7510:30:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 452, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 443, + "name": "extensions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43, + "src": "7550:10:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage", + "typeString": "contract Extension[] storage ref" + } + }, + "id": 445, + "indexExpression": { + "argumentTypes": null, + "id": 444, + "name": "extensionIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 422, + "src": "7561:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "7550:26:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 446, + "name": "extensions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43, + "src": "7579:10:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage", + "typeString": "contract Extension[] storage ref" + } + }, + "id": 451, + "indexExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 450, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 447, + "name": "extensions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43, + "src": "7590:10:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage", + "typeString": "contract Extension[] storage ref" + } + }, + "id": 448, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "7590:17:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 449, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7610:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "7590:21:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7579:33:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + }, + "src": "7550:62:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + }, + "id": 453, + "nodeType": "ExpressionStatement", + "src": "7550:62:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 457, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "--", + "prefix": false, + "src": "7622:19:1", + "subExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 454, + "name": "extensions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43, + "src": "7622:10:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage", + "typeString": "contract Extension[] storage ref" + } + }, + "id": 456, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "7622:17:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 458, + "nodeType": "ExpressionStatement", + "src": "7622:19:1" + } + ] + }, + "id": 460, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": [], + "id": 427, + "modifierName": { + "argumentTypes": null, + "id": 426, + "name": "onlyWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 74, + "src": "7357:10:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "7357:10:1" + } + ], + "name": "removeExtension", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 425, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 422, + "name": "extensionIndex", + "nodeType": "VariableDeclaration", + "scope": 460, + "src": "7289:22:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 421, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7289:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 424, + "name": "extension", + "nodeType": "VariableDeclaration", + "scope": 460, + "src": "7313:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + }, + "typeName": { + "contractScope": null, + "id": 423, + "name": "Extension", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 18, + "src": "7313:9:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7288:45:1" + }, + "payable": false, + "returnParameters": { + "id": 428, + "nodeType": "ParameterList", + "parameters": [], + "src": "7372:0:1" + }, + "scope": 963, + "src": "7264:384:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 509, + "nodeType": "Block", + "src": "8102:383:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 474, + "name": "isOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47, + "src": "8190:7:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 477, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 475, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2089, + "src": "8198:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 476, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "8198:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "8190:19:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 473, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "8182:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 478, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8182:28:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 479, + "nodeType": "ExpressionStatement", + "src": "8182:28:1" + }, + { + "assignments": [ + 481 + ], + "declarations": [ + { + "constant": false, + "id": 481, + "name": "transactionHash", + "nodeType": "VariableDeclaration", + "scope": 510, + "src": "8220:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 480, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8220:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 489, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 483, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 462, + "src": "8265:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 484, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 464, + "src": "8269:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 485, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 466, + "src": "8276:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 486, + "name": "operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 468, + "src": "8282:9:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + }, + { + "argumentTypes": null, + "id": 487, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37, + "src": "8293:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 482, + "name": "getTransactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 852, + "src": "8246:18:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$61_$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (address,uint256,bytes memory,enum GnosisSafe.Operation,uint256) view returns (bytes32)" + } + }, + "id": 488, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8246:53:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8220:79:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 497, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "8379:41:1", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 491, + "name": "isConfirmed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57, + "src": "8380:11:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$", + "typeString": "mapping(address => mapping(bytes32 => bool))" + } + }, + "id": 494, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 492, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2089, + "src": "8392:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 493, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "8392:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "8380:23:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + } + }, + "id": 496, + "indexExpression": { + "argumentTypes": null, + "id": 495, + "name": "transactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 481, + "src": "8404:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "8380:40:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 490, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "8371:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 498, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8371:50:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 499, + "nodeType": "ExpressionStatement", + "src": "8371:50:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 507, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 500, + "name": "isConfirmed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57, + "src": "8431:11:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$", + "typeString": "mapping(address => mapping(bytes32 => bool))" + } + }, + "id": 504, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 501, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2089, + "src": "8443:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 502, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "8443:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "8431:23:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + } + }, + "id": 505, + "indexExpression": { + "argumentTypes": null, + "id": 503, + "name": "transactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 481, + "src": "8455:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "8431:40:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 506, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8474:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "8431:47:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 508, + "nodeType": "ExpressionStatement", + "src": "8431:47:1" + } + ] + }, + "id": 510, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "confirmTransaction", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 471, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 462, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 510, + "src": "8007:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 461, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8007:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 464, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 510, + "src": "8019:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 463, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8019:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 466, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 510, + "src": "8034:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + "typeName": { + "id": 465, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "8034:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 468, + "name": "operation", + "nodeType": "VariableDeclaration", + "scope": 510, + "src": "8046:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + }, + "typeName": { + "contractScope": null, + "id": 467, + "name": "Operation", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 61, + "src": "8046:9:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 470, + "name": "_nonce", + "nodeType": "VariableDeclaration", + "scope": 510, + "src": "8067:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 469, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8067:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8006:76:1" + }, + "payable": false, + "returnParameters": { + "id": 472, + "nodeType": "ParameterList", + "parameters": [], + "src": "8102:0:1" + }, + "scope": 963, + "src": "7979:506:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 697, + "nodeType": "Block", + "src": "9404:1349:1", + "statements": [ + { + "assignments": [ + 537 + ], + "declarations": [ + { + "constant": false, + "id": 537, + "name": "transactionHash", + "nodeType": "VariableDeclaration", + "scope": 698, + "src": "9414:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 536, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "9414:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 545, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 539, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 512, + "src": "9459:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 540, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 514, + "src": "9463:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 541, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 516, + "src": "9470:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 542, + "name": "operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 518, + "src": "9476:9:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + }, + { + "argumentTypes": null, + "id": 543, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37, + "src": "9487:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 538, + "name": "getTransactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 852, + "src": "9440:18:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$61_$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (address,uint256,bytes memory,enum GnosisSafe.Operation,uint256) view returns (bytes32)" + } + }, + "id": 544, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9440:53:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9414:79:1" + }, + { + "assignments": [ + 547 + ], + "declarations": [ + { + "constant": false, + "id": 547, + "name": "lastOwner", + "nodeType": "VariableDeclaration", + "scope": 698, + "src": "9555:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 546, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9555:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 551, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 549, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9583:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 548, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9575:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 550, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9575:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9555:30:1" + }, + { + "assignments": [], + "declarations": [ + { + "constant": false, + "id": 553, + "name": "currentOwner", + "nodeType": "VariableDeclaration", + "scope": 698, + "src": "9595:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 552, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9595:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 554, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "9595:20:1" + }, + { + "assignments": [], + "declarations": [ + { + "constant": false, + "id": 556, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 698, + "src": "9625:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 555, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9625:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 557, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "9625:9:1" + }, + { + "assignments": [ + 559 + ], + "declarations": [ + { + "constant": false, + "id": 559, + "name": "j", + "nodeType": "VariableDeclaration", + "scope": 698, + "src": "9644:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 558, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9644:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 561, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 560, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9656:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "9644:13:1" + }, + { + "body": { + "id": 648, + "nodeType": "Block", + "src": "9741:619:1", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 581, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 575, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 572, + "name": "indices", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 533, + "src": "9843:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 573, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "9843:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "id": 574, + "name": "j", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 559, + "src": "9860:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9843:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 580, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 576, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 556, + "src": "9865:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 577, + "name": "indices", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 533, + "src": "9870:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 579, + "indexExpression": { + "argumentTypes": null, + "id": 578, + "name": "j", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 559, + "src": "9878:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9870:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9865:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "9843:37:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "expression": { + "argumentTypes": null, + "id": 629, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 610, + "name": "currentOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 553, + "src": "10155:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 612, + "name": "transactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 537, + "src": "10180:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 613, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 521, + "src": "10197:1:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", + "typeString": "uint8[] memory" + } + }, + "id": 617, + "indexExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 616, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 614, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 556, + "src": "10199:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "id": 615, + "name": "j", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 559, + "src": "10201:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10199:3:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10197:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 618, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 524, + "src": "10205:1:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 622, + "indexExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 621, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 619, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 556, + "src": "10207:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "id": 620, + "name": "j", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 559, + "src": "10209:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10207:3:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10205:6:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 623, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 527, + "src": "10213:1:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 627, + "indexExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 626, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 624, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 556, + "src": "10215:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "id": 625, + "name": "j", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 559, + "src": "10217:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10215:3:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10213:6:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 611, + "name": "ecrecover", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2082, + "src": "10170:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)" + } + }, + "id": 628, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10170:50:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "10155:65:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 630, + "nodeType": "ExpressionStatement", + "src": "10155:65:1" + }, + "id": 631, + "nodeType": "IfStatement", + "src": "9839:381:1", + "trueBody": { + "id": 609, + "nodeType": "Block", + "src": "9882:177:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 596, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 588, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 583, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2089, + "src": "9908:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 584, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "9908:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 585, + "name": "_owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 530, + "src": "9922:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 587, + "indexExpression": { + "argumentTypes": null, + "id": 586, + "name": "j", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 559, + "src": "9930:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9922:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "9908:24:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 589, + "name": "isConfirmed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57, + "src": "9936:11:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$", + "typeString": "mapping(address => mapping(bytes32 => bool))" + } + }, + "id": 593, + "indexExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 590, + "name": "_owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 530, + "src": "9948:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 592, + "indexExpression": { + "argumentTypes": null, + "id": 591, + "name": "j", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 559, + "src": "9956:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9948:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9936:23:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + } + }, + "id": 595, + "indexExpression": { + "argumentTypes": null, + "id": 594, + "name": "transactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 537, + "src": "9960:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9936:40:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "9908:68:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 582, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "9900:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 597, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9900:77:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 598, + "nodeType": "ExpressionStatement", + "src": "9900:77:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 603, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 599, + "name": "currentOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 553, + "src": "9995:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 600, + "name": "_owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 530, + "src": "10010:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 602, + "indexExpression": { + "argumentTypes": null, + "id": 601, + "name": "j", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 559, + "src": "10018:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10010:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "9995:25:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 604, + "nodeType": "ExpressionStatement", + "src": "9995:25:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 607, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 605, + "name": "j", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 559, + "src": "10038:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "31", + "id": 606, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10043:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "10038:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 608, + "nodeType": "ExpressionStatement", + "src": "10038:6:1" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 633, + "name": "isOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47, + "src": "10242:7:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 635, + "indexExpression": { + "argumentTypes": null, + "id": 634, + "name": "currentOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 553, + "src": "10250:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10242:21:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 632, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "10234:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 636, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10234:30:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 637, + "nodeType": "ExpressionStatement", + "src": "10234:30:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 641, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 639, + "name": "currentOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 553, + "src": "10286:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "id": 640, + "name": "lastOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 547, + "src": "10301:9:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "10286:24:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 638, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "10278:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 642, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10278:33:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 643, + "nodeType": "ExpressionStatement", + "src": "10278:33:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 646, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 644, + "name": "lastOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 547, + "src": "10325:9:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 645, + "name": "currentOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 553, + "src": "10337:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "10325:24:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 647, + "nodeType": "ExpressionStatement", + "src": "10325:24:1" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 568, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 566, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 556, + "src": "9721:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "id": 567, + "name": "threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 35, + "src": "9725:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "9721:13:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 649, + "initializationExpression": { + "expression": { + "argumentTypes": null, + "id": 564, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 562, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 556, + "src": "9714:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 563, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9718:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "9714:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 565, + "nodeType": "ExpressionStatement", + "src": "9714:5:1" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 570, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "9736:3:1", + "subExpression": { + "argumentTypes": null, + "id": 569, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 556, + "src": "9736:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 571, + "nodeType": "ExpressionStatement", + "src": "9736:3:1" + }, + "nodeType": "ForStatement", + "src": "9709:651:1" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 653, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 650, + "name": "_owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 530, + "src": "10419:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 651, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "10419:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 652, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10436:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "10419:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 685, + "nodeType": "IfStatement", + "src": "10415:216:1", + "trueBody": { + "id": 684, + "nodeType": "Block", + "src": "10439:192:1", + "statements": [ + { + "body": { + "id": 682, + "nodeType": "Block", + "src": "10490:131:1", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 670, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 665, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2089, + "src": "10512:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 666, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "10512:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 667, + "name": "_owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 530, + "src": "10526:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 669, + "indexExpression": { + "argumentTypes": null, + "id": 668, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 556, + "src": "10534:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10526:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "10512:24:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 681, + "nodeType": "IfStatement", + "src": "10508:98:1", + "trueBody": { + "expression": { + "argumentTypes": null, + "id": 679, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 671, + "name": "isConfirmed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57, + "src": "10558:11:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$", + "typeString": "mapping(address => mapping(bytes32 => bool))" + } + }, + "id": 676, + "indexExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 672, + "name": "_owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 530, + "src": "10570:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 674, + "indexExpression": { + "argumentTypes": null, + "id": 673, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 556, + "src": "10578:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10570:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10558:23:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + } + }, + "id": 677, + "indexExpression": { + "argumentTypes": null, + "id": 675, + "name": "transactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 537, + "src": "10582:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "10558:40:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 678, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10601:5:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "10558:48:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 680, + "nodeType": "ExpressionStatement", + "src": "10558:48:1" + } + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 661, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 658, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 556, + "src": "10465:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 659, + "name": "_owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 530, + "src": "10469:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 660, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "10469:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10465:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 683, + "initializationExpression": { + "expression": { + "argumentTypes": null, + "id": 656, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 654, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 556, + "src": "10458:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 655, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10462:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "10458:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 657, + "nodeType": "ExpressionStatement", + "src": "10458:5:1" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 663, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "10485:3:1", + "subExpression": { + "argumentTypes": null, + "id": 662, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 556, + "src": "10485:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 664, + "nodeType": "ExpressionStatement", + "src": "10485:3:1" + }, + "nodeType": "ForStatement", + "src": "10453:168:1" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "id": 688, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 686, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37, + "src": "10691:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "31", + "id": 687, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10700:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "10691:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 689, + "nodeType": "ExpressionStatement", + "src": "10691:10:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 691, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 512, + "src": "10719:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 692, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 514, + "src": "10723:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 693, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 516, + "src": "10730:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 694, + "name": "operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 518, + "src": "10736:9:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + ], + "id": 690, + "name": "execute", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 791, + "src": "10711:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$61_$returns$__$", + "typeString": "function (address,uint256,bytes memory,enum GnosisSafe.Operation)" + } + }, + "id": 695, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10711:35:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 696, + "nodeType": "ExpressionStatement", + "src": "10711:35:1" + } + ] + }, + "id": 698, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "executeTransaction", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 534, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 512, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 698, + "src": "9250:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 511, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9250:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 514, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 698, + "src": "9262:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 513, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9262:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 516, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 698, + "src": "9277:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + "typeName": { + "id": 515, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "9277:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 518, + "name": "operation", + "nodeType": "VariableDeclaration", + "scope": 698, + "src": "9289:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + }, + "typeName": { + "contractScope": null, + "id": 517, + "name": "Operation", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 61, + "src": "9289:9:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 521, + "name": "v", + "nodeType": "VariableDeclaration", + "scope": 698, + "src": "9310:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", + "typeString": "uint8[] memory" + }, + "typeName": { + "baseType": { + "id": 519, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "9310:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 520, + "length": null, + "nodeType": "ArrayTypeName", + "src": "9310:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr", + "typeString": "uint8[] storage pointer" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 524, + "name": "r", + "nodeType": "VariableDeclaration", + "scope": 698, + "src": "9321:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + }, + "typeName": { + "baseType": { + "id": 522, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "9321:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 523, + "length": null, + "nodeType": "ArrayTypeName", + "src": "9321:9:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[] storage pointer" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 527, + "name": "s", + "nodeType": "VariableDeclaration", + "scope": 698, + "src": "9334:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + }, + "typeName": { + "baseType": { + "id": 525, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "9334:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 526, + "length": null, + "nodeType": "ArrayTypeName", + "src": "9334:9:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[] storage pointer" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 530, + "name": "_owners", + "nodeType": "VariableDeclaration", + "scope": 698, + "src": "9347:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + }, + "typeName": { + "baseType": { + "id": 528, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9347:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 529, + "length": null, + "nodeType": "ArrayTypeName", + "src": "9347:9:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[] storage pointer" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 533, + "name": "indices", + "nodeType": "VariableDeclaration", + "scope": 698, + "src": "9366:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + }, + "typeName": { + "baseType": { + "id": 531, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9366:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 532, + "length": null, + "nodeType": "ArrayTypeName", + "src": "9366:9:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[] storage pointer" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "9249:135:1" + }, + "payable": false, + "returnParameters": { + "id": 535, + "nodeType": "ParameterList", + "parameters": [], + "src": "9404:0:1" + }, + "scope": 963, + "src": "9222:1531:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 736, + "nodeType": "Block", + "src": "11304:338:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 712, + "name": "isExtension", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 51, + "src": "11374:11:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 714, + "indexExpression": { + "argumentTypes": null, + "id": 713, + "name": "extension", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 708, + "src": "11386:9:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11374:22:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 711, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "11366:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 715, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11366:31:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 716, + "nodeType": "ExpressionStatement", + "src": "11366:31:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 720, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2089, + "src": "11487:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 721, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "11487:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 722, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 700, + "src": "11499:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 723, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 702, + "src": "11503:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 724, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 704, + "src": "11510:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 725, + "name": "operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 706, + "src": "11516:9:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + ], + "expression": { + "argumentTypes": null, + "id": 718, + "name": "extension", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 708, + "src": "11464:9:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + }, + "id": 719, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "isExecutable", + "nodeType": "MemberAccess", + "referencedDeclaration": 17, + "src": "11464:22:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$61_$returns$_t_bool_$", + "typeString": "function (address,address,uint256,bytes memory,enum GnosisSafe.Operation) external returns (bool)" + } + }, + "id": 726, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11464:62:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 717, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "11456:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 727, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11456:71:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 728, + "nodeType": "ExpressionStatement", + "src": "11456:71:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 730, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 700, + "src": "11608:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 731, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 702, + "src": "11612:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 732, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 704, + "src": "11619:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 733, + "name": "operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 706, + "src": "11625:9:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + ], + "id": 729, + "name": "execute", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 791, + "src": "11600:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$61_$returns$__$", + "typeString": "function (address,uint256,bytes memory,enum GnosisSafe.Operation)" + } + }, + "id": 734, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11600:35:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 735, + "nodeType": "ExpressionStatement", + "src": "11600:35:1" + } + ] + }, + "id": 737, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "executeExtension", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 709, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 700, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 737, + "src": "11204:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 699, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11204:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 702, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 737, + "src": "11216:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 701, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11216:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 704, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 737, + "src": "11231:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + "typeName": { + "id": 703, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "11231:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 706, + "name": "operation", + "nodeType": "VariableDeclaration", + "scope": 737, + "src": "11243:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + }, + "typeName": { + "contractScope": null, + "id": 705, + "name": "Operation", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 61, + "src": "11243:9:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 708, + "name": "extension", + "nodeType": "VariableDeclaration", + "scope": 737, + "src": "11264:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + }, + "typeName": { + "contractScope": null, + "id": 707, + "name": "Extension", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 18, + "src": "11264:9:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "11203:81:1" + }, + "payable": false, + "returnParameters": { + "id": 710, + "nodeType": "ParameterList", + "parameters": [], + "src": "11304:0:1" + }, + "scope": 963, + "src": "11178:464:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 790, + "nodeType": "Block", + "src": "11746:367:1", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + }, + "id": 751, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 748, + "name": "operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 745, + "src": "11760:9:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 749, + "name": "Operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 61, + "src": "11773:9:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_Operation_$61_$", + "typeString": "type(enum GnosisSafe.Operation)" + } + }, + "id": 750, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Call", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "11773:14:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + }, + "src": "11760:27:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + }, + "id": 763, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 760, + "name": "operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 745, + "src": "11857:9:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 761, + "name": "Operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 61, + "src": "11870:9:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_Operation_$61_$", + "typeString": "type(enum GnosisSafe.Operation)" + } + }, + "id": 762, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "DelegateCall", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "11870:22:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + }, + "src": "11857:35:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 787, + "nodeType": "Block", + "src": "11959:148:1", + "statements": [ + { + "assignments": [ + 772 + ], + "declarations": [ + { + "constant": false, + "id": 772, + "name": "newContract", + "nodeType": "VariableDeclaration", + "scope": 791, + "src": "11973:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 771, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11973:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 776, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 774, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 743, + "src": "12009:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 773, + "name": "executeCreate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 824, + "src": "11995:13:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$_t_address_$", + "typeString": "function (bytes memory) returns (address)" + } + }, + "id": 775, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11995:19:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "11973:41:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 780, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 778, + "name": "newContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 772, + "src": "12036:11:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 779, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12051:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "12036:16:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 777, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "12028:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 781, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12028:25:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 782, + "nodeType": "ExpressionStatement", + "src": "12028:25:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 784, + "name": "newContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 772, + "src": "12084:11:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 783, + "name": "ContractCreation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 25, + "src": "12067:16:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 785, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12067:29:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 786, + "nodeType": "ExpressionStatement", + "src": "12067:29:1" + } + ] + }, + "id": 788, + "nodeType": "IfStatement", + "src": "11853:254:1", + "trueBody": { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 766, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 739, + "src": "11934:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 767, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 743, + "src": "11938:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 765, + "name": "executeDelegateCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 815, + "src": "11914:19:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bool_$", + "typeString": "function (address,bytes memory) returns (bool)" + } + }, + "id": 768, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11914:29:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 764, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "11906:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 769, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11906:38:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 770, + "nodeType": "ExpressionStatement", + "src": "11906:38:1" + } + }, + "id": 789, + "nodeType": "IfStatement", + "src": "11756:351:1", + "trueBody": { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 754, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 739, + "src": "11821:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 755, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 741, + "src": "11825:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 756, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 743, + "src": "11832:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 753, + "name": "executeCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 804, + "src": "11809:11:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$", + "typeString": "function (address,uint256,bytes memory) returns (bool)" + } + }, + "id": 757, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11809:28:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 752, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "11801:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 758, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11801:37:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 759, + "nodeType": "ExpressionStatement", + "src": "11801:37:1" + } + } + ] + }, + "id": 791, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "execute", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 746, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 739, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 791, + "src": "11665:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 738, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11665:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 741, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 791, + "src": "11677:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 740, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11677:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 743, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 791, + "src": "11692:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + "typeName": { + "id": 742, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "11692:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 745, + "name": "operation", + "nodeType": "VariableDeclaration", + "scope": 791, + "src": "11704:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + }, + "typeName": { + "contractScope": null, + "id": 744, + "name": "Operation", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 61, + "src": "11704:9:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "11664:60:1" + }, + "payable": false, + "returnParameters": { + "id": 747, + "nodeType": "ParameterList", + "parameters": [], + "src": "11746:0:1" + }, + "scope": 963, + "src": "11648:465:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 803, + "nodeType": "Block", + "src": "12231:119:1", + "statements": [ + { + "externalReferences": [ + { + "data": { + "declaration": 797, + "isOffset": false, + "isSlot": false, + "src": "12303:4:1", + "valueSize": 1 + } + }, + { + "data": { + "declaration": 797, + "isOffset": false, + "isSlot": false, + "src": "12322:4:1", + "valueSize": 1 + } + }, + { + "success": { + "declaration": 800, + "isOffset": false, + "isSlot": false, + "src": "12264:7:1", + "valueSize": 1 + } + }, + { + "to": { + "declaration": 793, + "isOffset": false, + "isSlot": false, + "src": "12288:2:1", + "valueSize": 1 + } + }, + { + "value": { + "declaration": 795, + "isOffset": false, + "isSlot": false, + "src": "12292:5:1", + "valueSize": 1 + } + } + ], + "id": 802, + "nodeType": "InlineAssembly", + "operations": "{\n success := call(not(0), to, value, add(data, 0x20), mload(data), 0, 0)\n}", + "src": "12241:109:1" + } + ] + }, + "id": 804, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "executeCall", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 798, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 793, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 804, + "src": "12140:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 792, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12140:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 795, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 804, + "src": "12152:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 794, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12152:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 797, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 804, + "src": "12167:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + "typeName": { + "id": 796, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "12167:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12139:39:1" + }, + "payable": false, + "returnParameters": { + "id": 801, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 800, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 804, + "src": "12213:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 799, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "12213:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12212:14:1" + }, + "scope": 963, + "src": "12119:231:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 814, + "nodeType": "Block", + "src": "12461:120:1", + "statements": [ + { + "externalReferences": [ + { + "data": { + "declaration": 808, + "isOffset": false, + "isSlot": false, + "src": "12534:4:1", + "valueSize": 1 + } + }, + { + "data": { + "declaration": 808, + "isOffset": false, + "isSlot": false, + "src": "12553:4:1", + "valueSize": 1 + } + }, + { + "success": { + "declaration": 811, + "isOffset": false, + "isSlot": false, + "src": "12494:7:1", + "valueSize": 1 + } + }, + { + "to": { + "declaration": 806, + "isOffset": false, + "isSlot": false, + "src": "12526:2:1", + "valueSize": 1 + } + } + ], + "id": 813, + "nodeType": "InlineAssembly", + "operations": "{\n success := delegatecall(not(0), to, add(data, 0x20), mload(data), 0, 0)\n}", + "src": "12471:110:1" + } + ] + }, + "id": 815, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "executeDelegateCall", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 809, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 806, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 815, + "src": "12385:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 805, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12385:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 808, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 815, + "src": "12397:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + "typeName": { + "id": 807, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "12397:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12384:24:1" + }, + "payable": false, + "returnParameters": { + "id": 812, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 811, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 815, + "src": "12443:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 810, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "12443:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12442:14:1" + }, + "scope": 963, + "src": "12356:225:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 823, + "nodeType": "Block", + "src": "12681:103:1", + "statements": [ + { + "externalReferences": [ + { + "data": { + "declaration": 817, + "isOffset": false, + "isSlot": false, + "src": "12762:4:1", + "valueSize": 1 + } + }, + { + "newContract": { + "declaration": 820, + "isOffset": false, + "isSlot": false, + "src": "12714:11:1", + "valueSize": 1 + } + }, + { + "data": { + "declaration": 817, + "isOffset": false, + "isSlot": false, + "src": "12743:4:1", + "valueSize": 1 + } + } + ], + "id": 822, + "nodeType": "InlineAssembly", + "operations": "{\n newContract := create(0, add(data, 0x20), mload(data))\n}", + "src": "12691:93:1" + } + ] + }, + "id": 824, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "executeCreate", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 818, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 817, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 824, + "src": "12610:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + "typeName": { + "id": 816, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "12610:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12609:12:1" + }, + "payable": false, + "returnParameters": { + "id": 821, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 820, + "name": "newContract", + "nodeType": "VariableDeclaration", + "scope": 824, + "src": "12656:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 819, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12656:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12655:21:1" + }, + "scope": 963, + "src": "12587:197:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 851, + "nodeType": "Block", + "src": "13238:87:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30783139", + "id": 841, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13270:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_25_by_1", + "typeString": "int_const 25" + }, + "value": "0x19" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_25_by_1", + "typeString": "int_const 25" + } + ], + "id": 840, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "13265:4:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes1_$", + "typeString": "type(bytes1)" + }, + "typeName": "byte" + }, + "id": 842, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13265:10:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + { + "argumentTypes": null, + "id": 843, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2100, + "src": "13277:4:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + }, + { + "argumentTypes": null, + "id": 844, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 826, + "src": "13283:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 845, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 828, + "src": "13287:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 846, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 830, + "src": "13294:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 847, + "name": "operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 832, + "src": "13300:9:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + }, + { + "argumentTypes": null, + "id": 848, + "name": "_nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 834, + "src": "13311:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 839, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2083, + "src": "13255:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", + "typeString": "function () pure returns (bytes32)" + } + }, + "id": 849, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13255:63:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 838, + "id": 850, + "nodeType": "Return", + "src": "13248:70:1" + } + ] + }, + "id": 852, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "getTransactionHash", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 835, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 826, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 852, + "src": "13104:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 825, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13104:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 828, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 852, + "src": "13116:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 827, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13116:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 830, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 852, + "src": "13131:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + "typeName": { + "id": 829, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "13131:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 832, + "name": "operation", + "nodeType": "VariableDeclaration", + "scope": 852, + "src": "13143:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + }, + "typeName": { + "contractScope": null, + "id": 831, + "name": "Operation", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 61, + "src": "13143:9:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 834, + "name": "_nonce", + "nodeType": "VariableDeclaration", + "scope": 852, + "src": "13164:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 833, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13164:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "13103:76:1" + }, + "payable": false, + "returnParameters": { + "id": 838, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 837, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 852, + "src": "13225:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 836, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "13225:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "13224:9:1" + }, + "scope": 963, + "src": "13076:249:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 860, + "nodeType": "Block", + "src": "13488:30:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 858, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "13505:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "functionReturnParameters": 857, + "id": 859, + "nodeType": "Return", + "src": "13498:13:1" + } + ] + }, + "id": 861, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "getOwners", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 853, + "nodeType": "ParameterList", + "parameters": [], + "src": "13425:2:1" + }, + "payable": false, + "returnParameters": { + "id": 857, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 856, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 861, + "src": "13473:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + }, + "typeName": { + "baseType": { + "id": 854, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13473:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 855, + "length": null, + "nodeType": "ArrayTypeName", + "src": "13473:9:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[] storage pointer" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "13472:11:1" + }, + "scope": 963, + "src": "13407:111:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 869, + "nodeType": "Block", + "src": "13690:34:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 867, + "name": "extensions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43, + "src": "13707:10:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage", + "typeString": "contract Extension[] storage ref" + } + }, + "functionReturnParameters": 866, + "id": 868, + "nodeType": "Return", + "src": "13700:17:1" + } + ] + }, + "id": 870, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "getExtensions", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 862, + "nodeType": "ParameterList", + "parameters": [], + "src": "13625:2:1" + }, + "payable": false, + "returnParameters": { + "id": 866, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 865, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 870, + "src": "13673:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_memory_ptr", + "typeString": "contract Extension[] memory" + }, + "typeName": { + "baseType": { + "contractScope": null, + "id": 863, + "name": "Extension", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 18, + "src": "13673:9:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + }, + "id": 864, + "length": null, + "nodeType": "ArrayTypeName", + "src": "13673:11:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage_ptr", + "typeString": "contract Extension[] storage pointer" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "13672:13:1" + }, + "scope": 963, + "src": "13603:121:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 901, + "nodeType": "Block", + "src": "13998:162:1", + "statements": [ + { + "body": { + "id": 899, + "nodeType": "Block", + "src": "14049:105:1", + "statements": [ + { + "condition": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 888, + "name": "isConfirmed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57, + "src": "14067:11:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$", + "typeString": "mapping(address => mapping(bytes32 => bool))" + } + }, + "id": 892, + "indexExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 889, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "14079:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 891, + "indexExpression": { + "argumentTypes": null, + "id": 890, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 878, + "src": "14086:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14079:9:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14067:22:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + } + }, + "id": 894, + "indexExpression": { + "argumentTypes": null, + "id": 893, + "name": "transactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 872, + "src": "14090:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14067:39:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 898, + "nodeType": "IfStatement", + "src": "14063:80:1", + "trueBody": { + "expression": { + "argumentTypes": null, + "id": 896, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "14124:19:1", + "subExpression": { + "argumentTypes": null, + "id": 895, + "name": "confirmationCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 875, + "src": "14124:17:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 897, + "nodeType": "ExpressionStatement", + "src": "14124:19:1" + } + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 884, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 881, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 878, + "src": "14025:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 882, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "14029:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 883, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "14029:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "14025:17:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 900, + "initializationExpression": { + "assignments": [ + 878 + ], + "declarations": [ + { + "constant": false, + "id": 878, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 902, + "src": "14013:6:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 877, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "14013:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 880, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 879, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14022:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "14013:10:1" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 886, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "14044:3:1", + "subExpression": { + "argumentTypes": null, + "id": 885, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 878, + "src": "14044:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 887, + "nodeType": "ExpressionStatement", + "src": "14044:3:1" + }, + "nodeType": "ForStatement", + "src": "14008:146:1" + } + ] + }, + "id": 902, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "getConfirmationCount", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 873, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 872, + "name": "transactionHash", + "nodeType": "VariableDeclaration", + "scope": 902, + "src": "13900:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 871, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "13900:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "13899:25:1" + }, + "payable": false, + "returnParameters": { + "id": 876, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 875, + "name": "confirmationCount", + "nodeType": "VariableDeclaration", + "scope": 902, + "src": "13970:22:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 874, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "13970:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "13969:24:1" + }, + "scope": 963, + "src": "13870:290:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 961, + "nodeType": "Block", + "src": "14432:407:1", + "statements": [ + { + "assignments": [ + 911 + ], + "declarations": [ + { + "constant": false, + "id": 911, + "name": "confirmationCount", + "nodeType": "VariableDeclaration", + "scope": 962, + "src": "14442:22:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 910, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "14442:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 915, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 913, + "name": "transactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 904, + "src": "14488:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 912, + "name": "getConfirmationCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 902, + "src": "14467:20:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$", + "typeString": "function (bytes32) view returns (uint256)" + } + }, + "id": 914, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14467:37:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "14442:62:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 922, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 916, + "name": "confirmingOwners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 908, + "src": "14514:16:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 920, + "name": "confirmationCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 911, + "src": "14547:17:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 919, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "14533:13:1", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_$", + "typeString": "function (uint256) pure returns (address[] memory)" + }, + "typeName": { + "baseType": { + "id": 917, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14537:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 918, + "length": null, + "nodeType": "ArrayTypeName", + "src": "14537:9:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[] storage pointer" + } + } + }, + "id": 921, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14533:32:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory", + "typeString": "address[] memory" + } + }, + "src": "14514:51:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 923, + "nodeType": "ExpressionStatement", + "src": "14514:51:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 926, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 924, + "name": "confirmationCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 911, + "src": "14575:17:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 925, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14595:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "14575:21:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 927, + "nodeType": "ExpressionStatement", + "src": "14575:21:1" + }, + { + "body": { + "id": 959, + "nodeType": "Block", + "src": "14647:186:1", + "statements": [ + { + "condition": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 939, + "name": "isConfirmed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57, + "src": "14665:11:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$", + "typeString": "mapping(address => mapping(bytes32 => bool))" + } + }, + "id": 943, + "indexExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 940, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "14677:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 942, + "indexExpression": { + "argumentTypes": null, + "id": 941, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 929, + "src": "14684:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14677:9:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14665:22:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + } + }, + "id": 945, + "indexExpression": { + "argumentTypes": null, + "id": 944, + "name": "transactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 904, + "src": "14688:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14665:39:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 958, + "nodeType": "IfStatement", + "src": "14661:162:1", + "trueBody": { + "id": 957, + "nodeType": "Block", + "src": "14706:117:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 952, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 946, + "name": "confirmingOwners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 908, + "src": "14724:16:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 948, + "indexExpression": { + "argumentTypes": null, + "id": 947, + "name": "confirmationCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 911, + "src": "14741:17:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "14724:35:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 949, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "14762:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 951, + "indexExpression": { + "argumentTypes": null, + "id": 950, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 929, + "src": "14769:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14762:9:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "14724:47:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 953, + "nodeType": "ExpressionStatement", + "src": "14724:47:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 955, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "14789:19:1", + "subExpression": { + "argumentTypes": null, + "id": 954, + "name": "confirmationCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 911, + "src": "14789:17:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 956, + "nodeType": "ExpressionStatement", + "src": "14789:19:1" + } + ] + } + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 935, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 932, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 929, + "src": "14623:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 933, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "14627:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 934, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "14627:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "14623:17:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 960, + "initializationExpression": { + "assignments": [ + 929 + ], + "declarations": [ + { + "constant": false, + "id": 929, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 962, + "src": "14611:6:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 928, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "14611:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 931, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 930, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14620:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "14611:10:1" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 937, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "14642:3:1", + "subExpression": { + "argumentTypes": null, + "id": 936, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 929, + "src": "14642:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 938, + "nodeType": "ExpressionStatement", + "src": "14642:3:1" + }, + "nodeType": "ForStatement", + "src": "14606:227:1" + } + ] + }, + "id": 962, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "getConfirmingOwners", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 905, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 904, + "name": "transactionHash", + "nodeType": "VariableDeclaration", + "scope": 962, + "src": "14330:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 903, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "14330:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "14329:25:1" + }, + "payable": false, + "returnParameters": { + "id": 909, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 908, + "name": "confirmingOwners", + "nodeType": "VariableDeclaration", + "scope": 962, + "src": "14400:26:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + }, + "typeName": { + "baseType": { + "id": 906, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14400:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 907, + "length": null, + "nodeType": "ArrayTypeName", + "src": "14400:9:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[] storage pointer" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "14399:28:1" + }, + "scope": 963, + "src": "14301:538:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 964, + "src": "218:14623:1" + } + ], + "src": "0:14842:1" + }, + "legacyAST": { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", + "exportedSymbols": { + "GnosisSafe": [ + 963 + ] + }, + "id": 964, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 20, + "literals": [ + "solidity", + "0.4", + ".19" + ], + "nodeType": "PragmaDirective", + "src": "0:23:1" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Extension.sol", + "file": "./Extension.sol", + "id": 21, + "nodeType": "ImportDirective", + "scope": 964, + "sourceUnit": 19, + "src": "24:25:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": "@title Gnosis Safe - A multisignature wallet with support for confirmations using signed messages based on ERC191.\n @author Stefan George - ", + "fullyImplemented": true, + "id": 963, + "linearizedBaseContracts": [ + 963 + ], + "name": "GnosisSafe", + "nodeType": "ContractDefinition", + "nodes": [ + { + "anonymous": false, + "id": 25, + "name": "ContractCreation", + "nodeType": "EventDefinition", + "parameters": { + "id": 24, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 23, + "indexed": false, + "name": "newContract", + "nodeType": "VariableDeclaration", + "scope": 25, + "src": "268:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 22, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "268:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "267:21:1" + }, + "src": "245:44:1" + }, + { + "constant": true, + "id": 28, + "name": "NAME", + "nodeType": "VariableDeclaration", + "scope": 963, + "src": "295:43:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory", + "typeString": "string memory" + }, + "typeName": { + "id": 26, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "295:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string storage pointer" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "476e6f7369732053616665", + "id": 27, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "325:13:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_72ec6775392f699e8ffd72b7c600556d49bdc746bf22bce93d3ae6019cdaff63", + "typeString": "literal_string \"Gnosis Safe\"" + }, + "value": "Gnosis Safe" + }, + "visibility": "public" + }, + { + "constant": true, + "id": 31, + "name": "VERSION", + "nodeType": "VariableDeclaration", + "scope": 963, + "src": "344:40:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory", + "typeString": "string memory" + }, + "typeName": { + "id": 29, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "344:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string storage pointer" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "302e302e31", + "id": 30, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "377:7:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", + "typeString": "literal_string \"0.0.1\"" + }, + "value": "0.0.1" + }, + "visibility": "public" + }, + { + "constant": false, + "id": 33, + "name": "masterCopy", + "nodeType": "VariableDeclaration", + "scope": 963, + "src": "391:21:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + }, + "typeName": { + "contractScope": null, + "id": 32, + "name": "GnosisSafe", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 963, + "src": "391:10:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 35, + "name": "threshold", + "nodeType": "VariableDeclaration", + "scope": 963, + "src": "418:22:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 34, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "418:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 37, + "name": "nonce", + "nodeType": "VariableDeclaration", + "scope": 963, + "src": "446:20:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 36, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "446:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 40, + "name": "owners", + "nodeType": "VariableDeclaration", + "scope": 963, + "src": "472:23:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + }, + "typeName": { + "baseType": { + "id": 38, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "472:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 39, + "length": null, + "nodeType": "ArrayTypeName", + "src": "472:9:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[] storage pointer" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 43, + "name": "extensions", + "nodeType": "VariableDeclaration", + "scope": 963, + "src": "501:29:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage", + "typeString": "contract Extension[] storage ref" + }, + "typeName": { + "baseType": { + "contractScope": null, + "id": 41, + "name": "Extension", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 18, + "src": "501:9:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + }, + "id": 42, + "length": null, + "nodeType": "ArrayTypeName", + "src": "501:11:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage_ptr", + "typeString": "contract Extension[] storage pointer" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 47, + "name": "isOwner", + "nodeType": "VariableDeclaration", + "scope": 963, + "src": "607:40:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "typeName": { + "id": 46, + "keyType": { + "id": 44, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "616:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "607:25:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "valueType": { + "id": 45, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "627:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 51, + "name": "isExtension", + "nodeType": "VariableDeclaration", + "scope": 963, + "src": "729:44:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "typeName": { + "id": 50, + "keyType": { + "id": 48, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "738:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "729:25:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "valueType": { + "id": 49, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "749:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 57, + "name": "isConfirmed", + "nodeType": "VariableDeclaration", + "scope": 963, + "src": "892:65:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$", + "typeString": "mapping(address => mapping(bytes32 => bool))" + }, + "typeName": { + "id": 56, + "keyType": { + "id": 52, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "901:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "892:46:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$", + "typeString": "mapping(address => mapping(bytes32 => bool))" + }, + "valueType": { + "id": 55, + "keyType": { + "id": 53, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "921:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Mapping", + "src": "912:25:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + }, + "valueType": { + "id": 54, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "932:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + } + }, + "value": null, + "visibility": "public" + }, + { + "canonicalName": "GnosisSafe.Operation", + "id": 61, + "members": [ + { + "id": 58, + "name": "Call", + "nodeType": "EnumValue", + "src": "989:4:1" + }, + { + "id": 59, + "name": "DelegateCall", + "nodeType": "EnumValue", + "src": "1003:12:1" + }, + { + "id": 60, + "name": "Create", + "nodeType": "EnumValue", + "src": "1025:6:1" + } + ], + "name": "Operation", + "nodeType": "EnumDefinition", + "src": "964:73:1" + }, + { + "body": { + "id": 73, + "nodeType": "Block", + "src": "1065:64:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 69, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 64, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2089, + "src": "1083:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 65, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1083:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 67, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2100, + "src": "1105:4:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + ], + "id": 66, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1097:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 68, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1097:13:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1083:27:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 63, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "1075:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 70, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1075:36:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 71, + "nodeType": "ExpressionStatement", + "src": "1075:36:1" + }, + { + "id": 72, + "nodeType": "PlaceholderStatement", + "src": "1121:1:1" + } + ] + }, + "id": 74, + "name": "onlyWallet", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 62, + "nodeType": "ParameterList", + "parameters": [], + "src": "1062:2:1" + }, + "src": "1043:86:1", + "visibility": "internal" + }, + { + "body": { + "id": 77, + "nodeType": "Block", + "src": "1243:8:1", + "statements": [] + }, + "id": 78, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 75, + "nodeType": "ParameterList", + "parameters": [], + "src": "1203:2:1" + }, + "payable": true, + "returnParameters": { + "id": 76, + "nodeType": "ParameterList", + "parameters": [], + "src": "1243:0:1" + }, + "scope": 963, + "src": "1194:57:1", + "stateMutability": "payable", + "superFunction": null, + "visibility": "external" + }, + { + "body": { + "id": 97, + "nodeType": "Block", + "src": "1667:53:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 91, + "name": "_owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 81, + "src": "1683:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + { + "argumentTypes": null, + "id": 92, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 83, + "src": "1692:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "argumentTypes": null, + "id": 93, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 85, + "src": "1704:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 94, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 87, + "src": "1708:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 90, + "name": "setup", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 187, + "src": "1677:5:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_uint8_$_t_address_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address[] memory,uint8,address,bytes memory)" + } + }, + "id": 95, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1677:36:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 96, + "nodeType": "ExpressionStatement", + "src": "1677:36:1" + } + ] + }, + "id": 98, + "implemented": true, + "isConstructor": true, + "isDeclaredConst": false, + "modifiers": [], + "name": "GnosisSafe", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 88, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 81, + "name": "_owners", + "nodeType": "VariableDeclaration", + "scope": 98, + "src": "1587:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + }, + "typeName": { + "baseType": { + "id": 79, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1587:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 80, + "length": null, + "nodeType": "ArrayTypeName", + "src": "1587:9:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[] storage pointer" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 83, + "name": "_threshold", + "nodeType": "VariableDeclaration", + "scope": 98, + "src": "1606:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 82, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1606:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 85, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 98, + "src": "1624:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 84, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1624:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 87, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 98, + "src": "1636:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + "typeName": { + "id": 86, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1636:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1586:61:1" + }, + "payable": false, + "returnParameters": { + "id": 89, + "nodeType": "ParameterList", + "parameters": [], + "src": "1667:0:1" + }, + "scope": 963, + "src": "1567:153:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 186, + "nodeType": "Block", + "src": "2134:1046:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 113, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 111, + "name": "threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 35, + "src": "2276:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 112, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2289:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2276:14:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 110, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "2268:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 114, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2268:23:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 115, + "nodeType": "ExpressionStatement", + "src": "2268:23:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 120, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 117, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 103, + "src": "2383:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 118, + "name": "_owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 101, + "src": "2397:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 119, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2397:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2383:28:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 116, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "2375:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 121, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2375:37:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 122, + "nodeType": "ExpressionStatement", + "src": "2375:37:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 126, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 124, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 103, + "src": "2482:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 125, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2496:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "2482:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 123, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "2474:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 127, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2474:24:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 128, + "nodeType": "ExpressionStatement", + "src": "2474:24:1" + }, + { + "body": { + "id": 165, + "nodeType": "Block", + "src": "2590:221:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 145, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 141, + "name": "_owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 101, + "src": "2657:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 143, + "indexExpression": { + "argumentTypes": null, + "id": 142, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 130, + "src": "2665:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2657:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 144, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2671:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2657:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 140, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "2649:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 146, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2649:24:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 147, + "nodeType": "ExpressionStatement", + "src": "2649:24:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 154, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "2739:20:1", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 149, + "name": "isOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47, + "src": "2740:7:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 153, + "indexExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 150, + "name": "_owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 101, + "src": "2748:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 152, + "indexExpression": { + "argumentTypes": null, + "id": 151, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 130, + "src": "2756:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2748:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2740:19:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 148, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "2731:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 155, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2731:29:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 156, + "nodeType": "ExpressionStatement", + "src": "2731:29:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 163, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 157, + "name": "isOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47, + "src": "2774:7:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 161, + "indexExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 158, + "name": "_owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 101, + "src": "2782:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 160, + "indexExpression": { + "argumentTypes": null, + "id": 159, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 130, + "src": "2790:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2782:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2774:19:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 162, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2796:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "2774:26:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 164, + "nodeType": "ExpressionStatement", + "src": "2774:26:1" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 136, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 133, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 130, + "src": "2565:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 134, + "name": "_owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 101, + "src": "2569:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 135, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2569:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2565:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 166, + "initializationExpression": { + "assignments": [ + 130 + ], + "declarations": [ + { + "constant": false, + "id": 130, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 187, + "src": "2550:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 129, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2550:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 132, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 131, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2562:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "2550:13:1" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 138, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "2585:3:1", + "subExpression": { + "argumentTypes": null, + "id": 137, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 130, + "src": "2585:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 139, + "nodeType": "ExpressionStatement", + "src": "2585:3:1" + }, + "nodeType": "ForStatement", + "src": "2545:266:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 169, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 167, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "2820:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 168, + "name": "_owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 101, + "src": "2829:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "src": "2820:16:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 170, + "nodeType": "ExpressionStatement", + "src": "2820:16:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 173, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 171, + "name": "threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 35, + "src": "2846:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 172, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 103, + "src": "2858:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "2846:22:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 174, + "nodeType": "ExpressionStatement", + "src": "2846:22:1" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 177, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 175, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 105, + "src": "3042:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 176, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3048:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3042:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 185, + "nodeType": "IfStatement", + "src": "3038:135:1", + "trueBody": { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 180, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 105, + "src": "3163:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 181, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 107, + "src": "3167:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 179, + "name": "executeDelegateCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 815, + "src": "3143:19:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bool_$", + "typeString": "function (address,bytes memory) returns (bool)" + } + }, + "id": 182, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3143:29:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 178, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "3135:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 183, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3135:38:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 184, + "nodeType": "ExpressionStatement", + "src": "3135:38:1" + } + } + ] + }, + "id": 187, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "setup", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 108, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 101, + "name": "_owners", + "nodeType": "VariableDeclaration", + "scope": 187, + "src": "2054:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + }, + "typeName": { + "baseType": { + "id": 99, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2054:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 100, + "length": null, + "nodeType": "ArrayTypeName", + "src": "2054:9:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[] storage pointer" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 103, + "name": "_threshold", + "nodeType": "VariableDeclaration", + "scope": 187, + "src": "2073:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 102, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "2073:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 105, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 187, + "src": "2091:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 104, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2091:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 107, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 187, + "src": "2103:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + "typeName": { + "id": 106, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2103:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2053:61:1" + }, + "payable": false, + "returnParameters": { + "id": 109, + "nodeType": "ParameterList", + "parameters": [], + "src": "2134:0:1" + }, + "scope": 963, + "src": "2039:1141:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 206, + "nodeType": "Block", + "src": "3414:132:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 199, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 196, + "name": "_masterCopy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 189, + "src": "3487:11:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + ], + "id": 195, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3479:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 197, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3479:20:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 198, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3503:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3479:25:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 194, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "3471:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 200, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3471:34:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 201, + "nodeType": "ExpressionStatement", + "src": "3471:34:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 204, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 202, + "name": "masterCopy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33, + "src": "3515:10:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 203, + "name": "_masterCopy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 189, + "src": "3528:11:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + }, + "src": "3515:24:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + }, + "id": 205, + "nodeType": "ExpressionStatement", + "src": "3515:24:1" + } + ] + }, + "id": 207, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": [], + "id": 192, + "modifierName": { + "argumentTypes": null, + "id": 191, + "name": "onlyWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 74, + "src": "3399:10:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "3399:10:1" + } + ], + "name": "changeMasterCopy", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 190, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 189, + "name": "_masterCopy", + "nodeType": "VariableDeclaration", + "scope": 207, + "src": "3352:22:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + }, + "typeName": { + "contractScope": null, + "id": 188, + "name": "GnosisSafe", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 963, + "src": "3352:10:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3351:24:1" + }, + "payable": false, + "returnParameters": { + "id": 193, + "nodeType": "ParameterList", + "parameters": [], + "src": "3414:0:1" + }, + "scope": 963, + "src": "3326:220:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 249, + "nodeType": "Block", + "src": "3875:342:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 219, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 217, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 209, + "src": "3934:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 218, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3943:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3934:10:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 216, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "3926:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 220, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3926:19:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 221, + "nodeType": "ExpressionStatement", + "src": "3926:19:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 226, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "4003:15:1", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 223, + "name": "isOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47, + "src": "4004:7:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 225, + "indexExpression": { + "argumentTypes": null, + "id": 224, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 209, + "src": "4012:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4004:14:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 222, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "3995:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 227, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3995:24:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 228, + "nodeType": "ExpressionStatement", + "src": "3995:24:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 232, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 209, + "src": "4041:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 229, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "4029:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 231, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "push", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4029:11:1", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypush_nonpayable$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) returns (uint256)" + } + }, + "id": 233, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4029:18:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 234, + "nodeType": "ExpressionStatement", + "src": "4029:18:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 239, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 235, + "name": "isOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47, + "src": "4057:7:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 237, + "indexExpression": { + "argumentTypes": null, + "id": 236, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 209, + "src": "4065:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4057:14:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 238, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4074:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "4057:21:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 240, + "nodeType": "ExpressionStatement", + "src": "4057:21:1" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 243, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 241, + "name": "threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 35, + "src": "4146:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "id": 242, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 211, + "src": "4159:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "4146:23:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 248, + "nodeType": "IfStatement", + "src": "4142:68:1", + "trueBody": { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 245, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 211, + "src": "4199:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "id": 244, + "name": "changeThreshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 385, + "src": "4183:15:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$returns$__$", + "typeString": "function (uint8)" + } + }, + "id": 246, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4183:27:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 247, + "nodeType": "ExpressionStatement", + "src": "4183:27:1" + } + } + ] + }, + "id": 250, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": [], + "id": 214, + "modifierName": { + "argumentTypes": null, + "id": 213, + "name": "onlyWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 74, + "src": "3860:10:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "3860:10:1" + } + ], + "name": "addOwner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 212, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 209, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 250, + "src": "3804:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 208, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3804:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 211, + "name": "_threshold", + "nodeType": "VariableDeclaration", + "scope": 250, + "src": "3819:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 210, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "3819:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3803:33:1" + }, + "payable": false, + "returnParameters": { + "id": 215, + "nodeType": "ParameterList", + "parameters": [], + "src": "3875:0:1" + }, + "scope": 963, + "src": "3786:431:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 308, + "nodeType": "Block", + "src": "4660:487:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 267, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 265, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 262, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "4755:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 263, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4755:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 264, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4771:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "4755:17:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 266, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 256, + "src": "4776:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "4755:31:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 261, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "4747:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 268, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4747:40:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 269, + "nodeType": "ExpressionStatement", + "src": "4747:40:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 275, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 271, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "4867:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 273, + "indexExpression": { + "argumentTypes": null, + "id": 272, + "name": "ownerIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 252, + "src": "4874:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4867:18:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 274, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 254, + "src": "4889:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "4867:27:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 270, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "4859:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 276, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4859:36:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 277, + "nodeType": "ExpressionStatement", + "src": "4859:36:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 282, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 278, + "name": "isOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47, + "src": "4905:7:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 280, + "indexExpression": { + "argumentTypes": null, + "id": 279, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 254, + "src": "4913:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4905:14:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 281, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4922:5:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "4905:22:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 283, + "nodeType": "ExpressionStatement", + "src": "4905:22:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 293, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 284, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "4937:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 286, + "indexExpression": { + "argumentTypes": null, + "id": 285, + "name": "ownerIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 252, + "src": "4944:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4937:18:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 287, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "4958:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 292, + "indexExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 291, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 288, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "4965:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 289, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4965:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 290, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4981:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "4965:17:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4958:25:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "4937:46:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 294, + "nodeType": "ExpressionStatement", + "src": "4937:46:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 298, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "--", + "prefix": false, + "src": "4993:15:1", + "subExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 295, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "4993:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 297, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4993:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 299, + "nodeType": "ExpressionStatement", + "src": "4993:15:1" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 302, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 300, + "name": "threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 35, + "src": "5076:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "id": 301, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 256, + "src": "5089:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "5076:23:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 307, + "nodeType": "IfStatement", + "src": "5072:68:1", + "trueBody": { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 304, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 256, + "src": "5129:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "id": 303, + "name": "changeThreshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 385, + "src": "5113:15:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$returns$__$", + "typeString": "function (uint8)" + } + }, + "id": 305, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5113:27:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 306, + "nodeType": "ExpressionStatement", + "src": "5113:27:1" + } + } + ] + }, + "id": 309, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": [], + "id": 259, + "modifierName": { + "argumentTypes": null, + "id": 258, + "name": "onlyWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 74, + "src": "4645:10:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "4645:10:1" + } + ], + "name": "removeOwner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 257, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 252, + "name": "ownerIndex", + "nodeType": "VariableDeclaration", + "scope": 309, + "src": "4569:18:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 251, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4569:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 254, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 309, + "src": "4589:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 253, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4589:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 256, + "name": "_threshold", + "nodeType": "VariableDeclaration", + "scope": 309, + "src": "4604:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 255, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "4604:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4568:53:1" + }, + "payable": false, + "returnParameters": { + "id": 260, + "nodeType": "ParameterList", + "parameters": [], + "src": "4660:0:1" + }, + "scope": 963, + "src": "4548:599:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 359, + "nodeType": "Block", + "src": "5587:383:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 323, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 321, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 315, + "src": "5646:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 322, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5658:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "5646:13:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 320, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "5638:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 324, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5638:22:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 325, + "nodeType": "ExpressionStatement", + "src": "5638:22:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 330, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "5718:18:1", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 327, + "name": "isOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47, + "src": "5719:7:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 329, + "indexExpression": { + "argumentTypes": null, + "id": 328, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 315, + "src": "5727:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5719:17:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 326, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "5710:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 331, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5710:27:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 332, + "nodeType": "ExpressionStatement", + "src": "5710:27:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 338, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 334, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "5817:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 336, + "indexExpression": { + "argumentTypes": null, + "id": 335, + "name": "oldOwnerIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 311, + "src": "5824:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5817:21:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 337, + "name": "oldOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 313, + "src": "5842:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "5817:33:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 333, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "5809:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 339, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5809:42:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 340, + "nodeType": "ExpressionStatement", + "src": "5809:42:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 345, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 341, + "name": "isOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47, + "src": "5861:7:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 343, + "indexExpression": { + "argumentTypes": null, + "id": 342, + "name": "oldOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 313, + "src": "5869:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "5861:17:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 344, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5881:5:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "5861:25:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 346, + "nodeType": "ExpressionStatement", + "src": "5861:25:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 351, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 347, + "name": "isOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47, + "src": "5896:7:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 349, + "indexExpression": { + "argumentTypes": null, + "id": 348, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 315, + "src": "5904:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "5896:17:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 350, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5917:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "5896:25:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 352, + "nodeType": "ExpressionStatement", + "src": "5896:25:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 357, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 353, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "5931:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 355, + "indexExpression": { + "argumentTypes": null, + "id": 354, + "name": "oldOwnerIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 311, + "src": "5938:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "5931:21:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 356, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 315, + "src": "5955:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "5931:32:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 358, + "nodeType": "ExpressionStatement", + "src": "5931:32:1" + } + ] + }, + "id": 360, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": [], + "id": 318, + "modifierName": { + "argumentTypes": null, + "id": 317, + "name": "onlyWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 74, + "src": "5572:10:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "5572:10:1" + } + ], + "name": "replaceOwner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 316, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 311, + "name": "oldOwnerIndex", + "nodeType": "VariableDeclaration", + "scope": 360, + "src": "5490:21:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 310, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5490:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 313, + "name": "oldOwner", + "nodeType": "VariableDeclaration", + "scope": 360, + "src": "5513:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 312, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5513:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 315, + "name": "newOwner", + "nodeType": "VariableDeclaration", + "scope": 360, + "src": "5531:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 314, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5531:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5489:59:1" + }, + "payable": false, + "returnParameters": { + "id": 319, + "nodeType": "ParameterList", + "parameters": [], + "src": "5587:0:1" + }, + "scope": 963, + "src": "5468:502:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 384, + "nodeType": "Block", + "src": "6240:239:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 371, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 368, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 362, + "src": "6326:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 369, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "6340:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 370, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "6340:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6326:27:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 367, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "6318:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 372, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6318:36:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 373, + "nodeType": "ExpressionStatement", + "src": "6318:36:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 377, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 375, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 362, + "src": "6424:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 376, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6438:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "6424:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 374, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "6416:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 378, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6416:24:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 379, + "nodeType": "ExpressionStatement", + "src": "6416:24:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 382, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 380, + "name": "threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 35, + "src": "6450:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 381, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 362, + "src": "6462:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "6450:22:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 383, + "nodeType": "ExpressionStatement", + "src": "6450:22:1" + } + ] + }, + "id": 385, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": [], + "id": 365, + "modifierName": { + "argumentTypes": null, + "id": 364, + "name": "onlyWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 74, + "src": "6225:10:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "6225:10:1" + } + ], + "name": "changeThreshold", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 363, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 362, + "name": "_threshold", + "nodeType": "VariableDeclaration", + "scope": 385, + "src": "6184:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 361, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "6184:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6183:18:1" + }, + "payable": false, + "returnParameters": { + "id": 366, + "nodeType": "ParameterList", + "parameters": [], + "src": "6240:0:1" + }, + "scope": 963, + "src": "6159:320:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 419, + "nodeType": "Block", + "src": "6737:255:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 397, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 394, + "name": "extension", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 387, + "src": "6808:9:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + ], + "id": 393, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6800:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 395, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6800:18:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 396, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6822:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "6800:23:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 392, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "6792:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 398, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6792:32:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 399, + "nodeType": "ExpressionStatement", + "src": "6792:32:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 404, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "6886:23:1", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 401, + "name": "isExtension", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 51, + "src": "6887:11:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 403, + "indexExpression": { + "argumentTypes": null, + "id": 402, + "name": "extension", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 387, + "src": "6899:9:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6887:22:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 400, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "6878:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 405, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6878:32:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 406, + "nodeType": "ExpressionStatement", + "src": "6878:32:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 410, + "name": "extension", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 387, + "src": "6936:9:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + ], + "expression": { + "argumentTypes": null, + "id": 407, + "name": "extensions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43, + "src": "6920:10:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage", + "typeString": "contract Extension[] storage ref" + } + }, + "id": 409, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "push", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "6920:15:1", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypush_nonpayable$_t_contract$_Extension_$18_$returns$_t_uint256_$", + "typeString": "function (contract Extension) returns (uint256)" + } + }, + "id": 411, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6920:26:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 412, + "nodeType": "ExpressionStatement", + "src": "6920:26:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 417, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 413, + "name": "isExtension", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 51, + "src": "6956:11:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 415, + "indexExpression": { + "argumentTypes": null, + "id": 414, + "name": "extension", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 387, + "src": "6968:9:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "6956:22:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 416, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6981:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "6956:29:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 418, + "nodeType": "ExpressionStatement", + "src": "6956:29:1" + } + ] + }, + "id": 420, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": [], + "id": 390, + "modifierName": { + "argumentTypes": null, + "id": 389, + "name": "onlyWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 74, + "src": "6722:10:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "6722:10:1" + } + ], + "name": "addExtension", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 388, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 387, + "name": "extension", + "nodeType": "VariableDeclaration", + "scope": 420, + "src": "6678:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + }, + "typeName": { + "contractScope": null, + "id": 386, + "name": "Extension", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 18, + "src": "6678:9:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6677:21:1" + }, + "payable": false, + "returnParameters": { + "id": 391, + "nodeType": "ParameterList", + "parameters": [], + "src": "6737:0:1" + }, + "scope": 963, + "src": "6656:336:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 459, + "nodeType": "Block", + "src": "7372:276:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + }, + "id": 434, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 430, + "name": "extensions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43, + "src": "7460:10:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage", + "typeString": "contract Extension[] storage ref" + } + }, + "id": 432, + "indexExpression": { + "argumentTypes": null, + "id": 431, + "name": "extensionIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 422, + "src": "7471:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7460:26:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 433, + "name": "extension", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 424, + "src": "7490:9:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + }, + "src": "7460:39:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 429, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "7452:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 435, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7452:48:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 436, + "nodeType": "ExpressionStatement", + "src": "7452:48:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 441, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 437, + "name": "isExtension", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 51, + "src": "7510:11:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 439, + "indexExpression": { + "argumentTypes": null, + "id": 438, + "name": "extension", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 424, + "src": "7522:9:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "7510:22:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 440, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7535:5:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "7510:30:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 442, + "nodeType": "ExpressionStatement", + "src": "7510:30:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 452, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 443, + "name": "extensions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43, + "src": "7550:10:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage", + "typeString": "contract Extension[] storage ref" + } + }, + "id": 445, + "indexExpression": { + "argumentTypes": null, + "id": 444, + "name": "extensionIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 422, + "src": "7561:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "7550:26:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 446, + "name": "extensions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43, + "src": "7579:10:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage", + "typeString": "contract Extension[] storage ref" + } + }, + "id": 451, + "indexExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 450, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 447, + "name": "extensions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43, + "src": "7590:10:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage", + "typeString": "contract Extension[] storage ref" + } + }, + "id": 448, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "7590:17:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 449, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7610:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "7590:21:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7579:33:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + }, + "src": "7550:62:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + }, + "id": 453, + "nodeType": "ExpressionStatement", + "src": "7550:62:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 457, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "--", + "prefix": false, + "src": "7622:19:1", + "subExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 454, + "name": "extensions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43, + "src": "7622:10:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage", + "typeString": "contract Extension[] storage ref" + } + }, + "id": 456, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "7622:17:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 458, + "nodeType": "ExpressionStatement", + "src": "7622:19:1" + } + ] + }, + "id": 460, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": [], + "id": 427, + "modifierName": { + "argumentTypes": null, + "id": 426, + "name": "onlyWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 74, + "src": "7357:10:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "7357:10:1" + } + ], + "name": "removeExtension", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 425, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 422, + "name": "extensionIndex", + "nodeType": "VariableDeclaration", + "scope": 460, + "src": "7289:22:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 421, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7289:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 424, + "name": "extension", + "nodeType": "VariableDeclaration", + "scope": 460, + "src": "7313:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + }, + "typeName": { + "contractScope": null, + "id": 423, + "name": "Extension", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 18, + "src": "7313:9:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7288:45:1" + }, + "payable": false, + "returnParameters": { + "id": 428, + "nodeType": "ParameterList", + "parameters": [], + "src": "7372:0:1" + }, + "scope": 963, + "src": "7264:384:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 509, + "nodeType": "Block", + "src": "8102:383:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 474, + "name": "isOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47, + "src": "8190:7:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 477, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 475, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2089, + "src": "8198:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 476, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "8198:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "8190:19:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 473, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "8182:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 478, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8182:28:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 479, + "nodeType": "ExpressionStatement", + "src": "8182:28:1" + }, + { + "assignments": [ + 481 + ], + "declarations": [ + { + "constant": false, + "id": 481, + "name": "transactionHash", + "nodeType": "VariableDeclaration", + "scope": 510, + "src": "8220:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 480, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8220:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 489, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 483, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 462, + "src": "8265:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 484, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 464, + "src": "8269:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 485, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 466, + "src": "8276:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 486, + "name": "operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 468, + "src": "8282:9:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + }, + { + "argumentTypes": null, + "id": 487, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37, + "src": "8293:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 482, + "name": "getTransactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 852, + "src": "8246:18:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$61_$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (address,uint256,bytes memory,enum GnosisSafe.Operation,uint256) view returns (bytes32)" + } + }, + "id": 488, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8246:53:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8220:79:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 497, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "8379:41:1", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 491, + "name": "isConfirmed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57, + "src": "8380:11:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$", + "typeString": "mapping(address => mapping(bytes32 => bool))" + } + }, + "id": 494, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 492, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2089, + "src": "8392:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 493, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "8392:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "8380:23:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + } + }, + "id": 496, + "indexExpression": { + "argumentTypes": null, + "id": 495, + "name": "transactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 481, + "src": "8404:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "8380:40:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 490, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "8371:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 498, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8371:50:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 499, + "nodeType": "ExpressionStatement", + "src": "8371:50:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 507, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 500, + "name": "isConfirmed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57, + "src": "8431:11:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$", + "typeString": "mapping(address => mapping(bytes32 => bool))" + } + }, + "id": 504, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 501, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2089, + "src": "8443:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 502, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "8443:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "8431:23:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + } + }, + "id": 505, + "indexExpression": { + "argumentTypes": null, + "id": 503, + "name": "transactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 481, + "src": "8455:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "8431:40:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 506, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8474:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "8431:47:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 508, + "nodeType": "ExpressionStatement", + "src": "8431:47:1" + } + ] + }, + "id": 510, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "confirmTransaction", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 471, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 462, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 510, + "src": "8007:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 461, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8007:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 464, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 510, + "src": "8019:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 463, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8019:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 466, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 510, + "src": "8034:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + "typeName": { + "id": 465, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "8034:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 468, + "name": "operation", + "nodeType": "VariableDeclaration", + "scope": 510, + "src": "8046:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + }, + "typeName": { + "contractScope": null, + "id": 467, + "name": "Operation", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 61, + "src": "8046:9:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 470, + "name": "_nonce", + "nodeType": "VariableDeclaration", + "scope": 510, + "src": "8067:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 469, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8067:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8006:76:1" + }, + "payable": false, + "returnParameters": { + "id": 472, + "nodeType": "ParameterList", + "parameters": [], + "src": "8102:0:1" + }, + "scope": 963, + "src": "7979:506:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 697, + "nodeType": "Block", + "src": "9404:1349:1", + "statements": [ + { + "assignments": [ + 537 + ], + "declarations": [ + { + "constant": false, + "id": 537, + "name": "transactionHash", + "nodeType": "VariableDeclaration", + "scope": 698, + "src": "9414:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 536, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "9414:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 545, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 539, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 512, + "src": "9459:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 540, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 514, + "src": "9463:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 541, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 516, + "src": "9470:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 542, + "name": "operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 518, + "src": "9476:9:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + }, + { + "argumentTypes": null, + "id": 543, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37, + "src": "9487:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 538, + "name": "getTransactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 852, + "src": "9440:18:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$61_$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (address,uint256,bytes memory,enum GnosisSafe.Operation,uint256) view returns (bytes32)" + } + }, + "id": 544, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9440:53:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9414:79:1" + }, + { + "assignments": [ + 547 + ], + "declarations": [ + { + "constant": false, + "id": 547, + "name": "lastOwner", + "nodeType": "VariableDeclaration", + "scope": 698, + "src": "9555:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 546, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9555:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 551, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 549, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9583:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 548, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9575:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 550, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9575:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9555:30:1" + }, + { + "assignments": [], + "declarations": [ + { + "constant": false, + "id": 553, + "name": "currentOwner", + "nodeType": "VariableDeclaration", + "scope": 698, + "src": "9595:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 552, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9595:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 554, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "9595:20:1" + }, + { + "assignments": [], + "declarations": [ + { + "constant": false, + "id": 556, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 698, + "src": "9625:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 555, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9625:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 557, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "9625:9:1" + }, + { + "assignments": [ + 559 + ], + "declarations": [ + { + "constant": false, + "id": 559, + "name": "j", + "nodeType": "VariableDeclaration", + "scope": 698, + "src": "9644:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 558, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9644:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 561, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 560, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9656:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "9644:13:1" + }, + { + "body": { + "id": 648, + "nodeType": "Block", + "src": "9741:619:1", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 581, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 575, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 572, + "name": "indices", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 533, + "src": "9843:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 573, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "9843:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "id": 574, + "name": "j", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 559, + "src": "9860:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9843:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 580, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 576, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 556, + "src": "9865:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 577, + "name": "indices", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 533, + "src": "9870:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 579, + "indexExpression": { + "argumentTypes": null, + "id": 578, + "name": "j", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 559, + "src": "9878:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9870:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9865:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "9843:37:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "expression": { + "argumentTypes": null, + "id": 629, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 610, + "name": "currentOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 553, + "src": "10155:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 612, + "name": "transactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 537, + "src": "10180:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 613, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 521, + "src": "10197:1:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", + "typeString": "uint8[] memory" + } + }, + "id": 617, + "indexExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 616, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 614, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 556, + "src": "10199:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "id": 615, + "name": "j", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 559, + "src": "10201:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10199:3:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10197:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 618, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 524, + "src": "10205:1:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 622, + "indexExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 621, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 619, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 556, + "src": "10207:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "id": 620, + "name": "j", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 559, + "src": "10209:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10207:3:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10205:6:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 623, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 527, + "src": "10213:1:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 627, + "indexExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 626, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 624, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 556, + "src": "10215:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "id": 625, + "name": "j", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 559, + "src": "10217:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10215:3:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10213:6:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 611, + "name": "ecrecover", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2082, + "src": "10170:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)" + } + }, + "id": 628, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10170:50:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "10155:65:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 630, + "nodeType": "ExpressionStatement", + "src": "10155:65:1" + }, + "id": 631, + "nodeType": "IfStatement", + "src": "9839:381:1", + "trueBody": { + "id": 609, + "nodeType": "Block", + "src": "9882:177:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 596, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 588, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 583, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2089, + "src": "9908:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 584, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "9908:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 585, + "name": "_owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 530, + "src": "9922:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 587, + "indexExpression": { + "argumentTypes": null, + "id": 586, + "name": "j", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 559, + "src": "9930:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9922:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "9908:24:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 589, + "name": "isConfirmed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57, + "src": "9936:11:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$", + "typeString": "mapping(address => mapping(bytes32 => bool))" + } + }, + "id": 593, + "indexExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 590, + "name": "_owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 530, + "src": "9948:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 592, + "indexExpression": { + "argumentTypes": null, + "id": 591, + "name": "j", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 559, + "src": "9956:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9948:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9936:23:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + } + }, + "id": 595, + "indexExpression": { + "argumentTypes": null, + "id": 594, + "name": "transactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 537, + "src": "9960:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9936:40:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "9908:68:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 582, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "9900:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 597, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9900:77:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 598, + "nodeType": "ExpressionStatement", + "src": "9900:77:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 603, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 599, + "name": "currentOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 553, + "src": "9995:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 600, + "name": "_owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 530, + "src": "10010:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 602, + "indexExpression": { + "argumentTypes": null, + "id": 601, + "name": "j", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 559, + "src": "10018:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10010:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "9995:25:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 604, + "nodeType": "ExpressionStatement", + "src": "9995:25:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 607, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 605, + "name": "j", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 559, + "src": "10038:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "31", + "id": 606, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10043:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "10038:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 608, + "nodeType": "ExpressionStatement", + "src": "10038:6:1" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 633, + "name": "isOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47, + "src": "10242:7:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 635, + "indexExpression": { + "argumentTypes": null, + "id": 634, + "name": "currentOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 553, + "src": "10250:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10242:21:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 632, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "10234:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 636, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10234:30:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 637, + "nodeType": "ExpressionStatement", + "src": "10234:30:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 641, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 639, + "name": "currentOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 553, + "src": "10286:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "id": 640, + "name": "lastOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 547, + "src": "10301:9:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "10286:24:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 638, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "10278:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 642, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10278:33:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 643, + "nodeType": "ExpressionStatement", + "src": "10278:33:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 646, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 644, + "name": "lastOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 547, + "src": "10325:9:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 645, + "name": "currentOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 553, + "src": "10337:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "10325:24:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 647, + "nodeType": "ExpressionStatement", + "src": "10325:24:1" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 568, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 566, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 556, + "src": "9721:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "id": 567, + "name": "threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 35, + "src": "9725:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "9721:13:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 649, + "initializationExpression": { + "expression": { + "argumentTypes": null, + "id": 564, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 562, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 556, + "src": "9714:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 563, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9718:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "9714:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 565, + "nodeType": "ExpressionStatement", + "src": "9714:5:1" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 570, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "9736:3:1", + "subExpression": { + "argumentTypes": null, + "id": 569, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 556, + "src": "9736:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 571, + "nodeType": "ExpressionStatement", + "src": "9736:3:1" + }, + "nodeType": "ForStatement", + "src": "9709:651:1" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 653, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 650, + "name": "_owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 530, + "src": "10419:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 651, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "10419:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 652, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10436:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "10419:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 685, + "nodeType": "IfStatement", + "src": "10415:216:1", + "trueBody": { + "id": 684, + "nodeType": "Block", + "src": "10439:192:1", + "statements": [ + { + "body": { + "id": 682, + "nodeType": "Block", + "src": "10490:131:1", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 670, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 665, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2089, + "src": "10512:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 666, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "10512:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 667, + "name": "_owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 530, + "src": "10526:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 669, + "indexExpression": { + "argumentTypes": null, + "id": 668, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 556, + "src": "10534:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10526:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "10512:24:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 681, + "nodeType": "IfStatement", + "src": "10508:98:1", + "trueBody": { + "expression": { + "argumentTypes": null, + "id": 679, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 671, + "name": "isConfirmed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57, + "src": "10558:11:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$", + "typeString": "mapping(address => mapping(bytes32 => bool))" + } + }, + "id": 676, + "indexExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 672, + "name": "_owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 530, + "src": "10570:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 674, + "indexExpression": { + "argumentTypes": null, + "id": 673, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 556, + "src": "10578:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10570:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10558:23:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + } + }, + "id": 677, + "indexExpression": { + "argumentTypes": null, + "id": 675, + "name": "transactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 537, + "src": "10582:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "10558:40:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 678, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10601:5:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "10558:48:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 680, + "nodeType": "ExpressionStatement", + "src": "10558:48:1" + } + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 661, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 658, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 556, + "src": "10465:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 659, + "name": "_owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 530, + "src": "10469:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 660, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "10469:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10465:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 683, + "initializationExpression": { + "expression": { + "argumentTypes": null, + "id": 656, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 654, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 556, + "src": "10458:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 655, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10462:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "10458:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 657, + "nodeType": "ExpressionStatement", + "src": "10458:5:1" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 663, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "10485:3:1", + "subExpression": { + "argumentTypes": null, + "id": 662, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 556, + "src": "10485:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 664, + "nodeType": "ExpressionStatement", + "src": "10485:3:1" + }, + "nodeType": "ForStatement", + "src": "10453:168:1" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "id": 688, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 686, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37, + "src": "10691:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "31", + "id": 687, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10700:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "10691:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 689, + "nodeType": "ExpressionStatement", + "src": "10691:10:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 691, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 512, + "src": "10719:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 692, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 514, + "src": "10723:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 693, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 516, + "src": "10730:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 694, + "name": "operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 518, + "src": "10736:9:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + ], + "id": 690, + "name": "execute", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 791, + "src": "10711:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$61_$returns$__$", + "typeString": "function (address,uint256,bytes memory,enum GnosisSafe.Operation)" + } + }, + "id": 695, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10711:35:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 696, + "nodeType": "ExpressionStatement", + "src": "10711:35:1" + } + ] + }, + "id": 698, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "executeTransaction", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 534, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 512, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 698, + "src": "9250:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 511, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9250:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 514, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 698, + "src": "9262:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 513, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9262:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 516, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 698, + "src": "9277:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + "typeName": { + "id": 515, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "9277:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 518, + "name": "operation", + "nodeType": "VariableDeclaration", + "scope": 698, + "src": "9289:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + }, + "typeName": { + "contractScope": null, + "id": 517, + "name": "Operation", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 61, + "src": "9289:9:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 521, + "name": "v", + "nodeType": "VariableDeclaration", + "scope": 698, + "src": "9310:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", + "typeString": "uint8[] memory" + }, + "typeName": { + "baseType": { + "id": 519, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "9310:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 520, + "length": null, + "nodeType": "ArrayTypeName", + "src": "9310:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr", + "typeString": "uint8[] storage pointer" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 524, + "name": "r", + "nodeType": "VariableDeclaration", + "scope": 698, + "src": "9321:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + }, + "typeName": { + "baseType": { + "id": 522, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "9321:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 523, + "length": null, + "nodeType": "ArrayTypeName", + "src": "9321:9:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[] storage pointer" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 527, + "name": "s", + "nodeType": "VariableDeclaration", + "scope": 698, + "src": "9334:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + }, + "typeName": { + "baseType": { + "id": 525, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "9334:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 526, + "length": null, + "nodeType": "ArrayTypeName", + "src": "9334:9:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[] storage pointer" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 530, + "name": "_owners", + "nodeType": "VariableDeclaration", + "scope": 698, + "src": "9347:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + }, + "typeName": { + "baseType": { + "id": 528, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9347:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 529, + "length": null, + "nodeType": "ArrayTypeName", + "src": "9347:9:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[] storage pointer" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 533, + "name": "indices", + "nodeType": "VariableDeclaration", + "scope": 698, + "src": "9366:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + }, + "typeName": { + "baseType": { + "id": 531, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9366:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 532, + "length": null, + "nodeType": "ArrayTypeName", + "src": "9366:9:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[] storage pointer" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "9249:135:1" + }, + "payable": false, + "returnParameters": { + "id": 535, + "nodeType": "ParameterList", + "parameters": [], + "src": "9404:0:1" + }, + "scope": 963, + "src": "9222:1531:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 736, + "nodeType": "Block", + "src": "11304:338:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 712, + "name": "isExtension", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 51, + "src": "11374:11:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 714, + "indexExpression": { + "argumentTypes": null, + "id": 713, + "name": "extension", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 708, + "src": "11386:9:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11374:22:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 711, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "11366:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 715, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11366:31:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 716, + "nodeType": "ExpressionStatement", + "src": "11366:31:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 720, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2089, + "src": "11487:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 721, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "11487:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 722, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 700, + "src": "11499:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 723, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 702, + "src": "11503:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 724, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 704, + "src": "11510:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 725, + "name": "operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 706, + "src": "11516:9:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + ], + "expression": { + "argumentTypes": null, + "id": 718, + "name": "extension", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 708, + "src": "11464:9:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + }, + "id": 719, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "isExecutable", + "nodeType": "MemberAccess", + "referencedDeclaration": 17, + "src": "11464:22:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$61_$returns$_t_bool_$", + "typeString": "function (address,address,uint256,bytes memory,enum GnosisSafe.Operation) external returns (bool)" + } + }, + "id": 726, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11464:62:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 717, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "11456:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 727, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11456:71:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 728, + "nodeType": "ExpressionStatement", + "src": "11456:71:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 730, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 700, + "src": "11608:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 731, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 702, + "src": "11612:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 732, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 704, + "src": "11619:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 733, + "name": "operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 706, + "src": "11625:9:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + ], + "id": 729, + "name": "execute", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 791, + "src": "11600:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$61_$returns$__$", + "typeString": "function (address,uint256,bytes memory,enum GnosisSafe.Operation)" + } + }, + "id": 734, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11600:35:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 735, + "nodeType": "ExpressionStatement", + "src": "11600:35:1" + } + ] + }, + "id": 737, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "executeExtension", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 709, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 700, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 737, + "src": "11204:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 699, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11204:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 702, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 737, + "src": "11216:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 701, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11216:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 704, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 737, + "src": "11231:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + "typeName": { + "id": 703, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "11231:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 706, + "name": "operation", + "nodeType": "VariableDeclaration", + "scope": 737, + "src": "11243:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + }, + "typeName": { + "contractScope": null, + "id": 705, + "name": "Operation", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 61, + "src": "11243:9:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 708, + "name": "extension", + "nodeType": "VariableDeclaration", + "scope": 737, + "src": "11264:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + }, + "typeName": { + "contractScope": null, + "id": 707, + "name": "Extension", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 18, + "src": "11264:9:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "11203:81:1" + }, + "payable": false, + "returnParameters": { + "id": 710, + "nodeType": "ParameterList", + "parameters": [], + "src": "11304:0:1" + }, + "scope": 963, + "src": "11178:464:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 790, + "nodeType": "Block", + "src": "11746:367:1", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + }, + "id": 751, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 748, + "name": "operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 745, + "src": "11760:9:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 749, + "name": "Operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 61, + "src": "11773:9:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_Operation_$61_$", + "typeString": "type(enum GnosisSafe.Operation)" + } + }, + "id": 750, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Call", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "11773:14:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + }, + "src": "11760:27:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + }, + "id": 763, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 760, + "name": "operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 745, + "src": "11857:9:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 761, + "name": "Operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 61, + "src": "11870:9:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_Operation_$61_$", + "typeString": "type(enum GnosisSafe.Operation)" + } + }, + "id": 762, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "DelegateCall", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "11870:22:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + }, + "src": "11857:35:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 787, + "nodeType": "Block", + "src": "11959:148:1", + "statements": [ + { + "assignments": [ + 772 + ], + "declarations": [ + { + "constant": false, + "id": 772, + "name": "newContract", + "nodeType": "VariableDeclaration", + "scope": 791, + "src": "11973:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 771, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11973:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 776, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 774, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 743, + "src": "12009:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 773, + "name": "executeCreate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 824, + "src": "11995:13:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$_t_address_$", + "typeString": "function (bytes memory) returns (address)" + } + }, + "id": 775, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11995:19:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "11973:41:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 780, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 778, + "name": "newContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 772, + "src": "12036:11:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 779, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12051:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "12036:16:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 777, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "12028:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 781, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12028:25:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 782, + "nodeType": "ExpressionStatement", + "src": "12028:25:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 784, + "name": "newContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 772, + "src": "12084:11:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 783, + "name": "ContractCreation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 25, + "src": "12067:16:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 785, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12067:29:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 786, + "nodeType": "ExpressionStatement", + "src": "12067:29:1" + } + ] + }, + "id": 788, + "nodeType": "IfStatement", + "src": "11853:254:1", + "trueBody": { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 766, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 739, + "src": "11934:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 767, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 743, + "src": "11938:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 765, + "name": "executeDelegateCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 815, + "src": "11914:19:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bool_$", + "typeString": "function (address,bytes memory) returns (bool)" + } + }, + "id": 768, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11914:29:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 764, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "11906:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 769, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11906:38:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 770, + "nodeType": "ExpressionStatement", + "src": "11906:38:1" + } + }, + "id": 789, + "nodeType": "IfStatement", + "src": "11756:351:1", + "trueBody": { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 754, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 739, + "src": "11821:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 755, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 741, + "src": "11825:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 756, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 743, + "src": "11832:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 753, + "name": "executeCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 804, + "src": "11809:11:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$", + "typeString": "function (address,uint256,bytes memory) returns (bool)" + } + }, + "id": 757, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11809:28:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 752, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "11801:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 758, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11801:37:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 759, + "nodeType": "ExpressionStatement", + "src": "11801:37:1" + } + } + ] + }, + "id": 791, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "execute", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 746, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 739, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 791, + "src": "11665:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 738, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11665:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 741, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 791, + "src": "11677:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 740, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11677:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 743, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 791, + "src": "11692:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + "typeName": { + "id": 742, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "11692:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 745, + "name": "operation", + "nodeType": "VariableDeclaration", + "scope": 791, + "src": "11704:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + }, + "typeName": { + "contractScope": null, + "id": 744, + "name": "Operation", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 61, + "src": "11704:9:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "11664:60:1" + }, + "payable": false, + "returnParameters": { + "id": 747, + "nodeType": "ParameterList", + "parameters": [], + "src": "11746:0:1" + }, + "scope": 963, + "src": "11648:465:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 803, + "nodeType": "Block", + "src": "12231:119:1", + "statements": [ + { + "externalReferences": [ + { + "data": { + "declaration": 797, + "isOffset": false, + "isSlot": false, + "src": "12303:4:1", + "valueSize": 1 + } + }, + { + "data": { + "declaration": 797, + "isOffset": false, + "isSlot": false, + "src": "12322:4:1", + "valueSize": 1 + } + }, + { + "success": { + "declaration": 800, + "isOffset": false, + "isSlot": false, + "src": "12264:7:1", + "valueSize": 1 + } + }, + { + "to": { + "declaration": 793, + "isOffset": false, + "isSlot": false, + "src": "12288:2:1", + "valueSize": 1 + } + }, + { + "value": { + "declaration": 795, + "isOffset": false, + "isSlot": false, + "src": "12292:5:1", + "valueSize": 1 + } + } + ], + "id": 802, + "nodeType": "InlineAssembly", + "operations": "{\n success := call(not(0), to, value, add(data, 0x20), mload(data), 0, 0)\n}", + "src": "12241:109:1" + } + ] + }, + "id": 804, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "executeCall", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 798, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 793, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 804, + "src": "12140:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 792, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12140:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 795, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 804, + "src": "12152:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 794, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12152:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 797, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 804, + "src": "12167:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + "typeName": { + "id": 796, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "12167:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12139:39:1" + }, + "payable": false, + "returnParameters": { + "id": 801, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 800, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 804, + "src": "12213:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 799, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "12213:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12212:14:1" + }, + "scope": 963, + "src": "12119:231:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 814, + "nodeType": "Block", + "src": "12461:120:1", + "statements": [ + { + "externalReferences": [ + { + "data": { + "declaration": 808, + "isOffset": false, + "isSlot": false, + "src": "12534:4:1", + "valueSize": 1 + } + }, + { + "data": { + "declaration": 808, + "isOffset": false, + "isSlot": false, + "src": "12553:4:1", + "valueSize": 1 + } + }, + { + "success": { + "declaration": 811, + "isOffset": false, + "isSlot": false, + "src": "12494:7:1", + "valueSize": 1 + } + }, + { + "to": { + "declaration": 806, + "isOffset": false, + "isSlot": false, + "src": "12526:2:1", + "valueSize": 1 + } + } + ], + "id": 813, + "nodeType": "InlineAssembly", + "operations": "{\n success := delegatecall(not(0), to, add(data, 0x20), mload(data), 0, 0)\n}", + "src": "12471:110:1" + } + ] + }, + "id": 815, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "executeDelegateCall", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 809, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 806, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 815, + "src": "12385:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 805, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12385:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 808, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 815, + "src": "12397:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + "typeName": { + "id": 807, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "12397:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12384:24:1" + }, + "payable": false, + "returnParameters": { + "id": 812, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 811, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 815, + "src": "12443:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 810, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "12443:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12442:14:1" + }, + "scope": 963, + "src": "12356:225:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 823, + "nodeType": "Block", + "src": "12681:103:1", + "statements": [ + { + "externalReferences": [ + { + "data": { + "declaration": 817, + "isOffset": false, + "isSlot": false, + "src": "12762:4:1", + "valueSize": 1 + } + }, + { + "newContract": { + "declaration": 820, + "isOffset": false, + "isSlot": false, + "src": "12714:11:1", + "valueSize": 1 + } + }, + { + "data": { + "declaration": 817, + "isOffset": false, + "isSlot": false, + "src": "12743:4:1", + "valueSize": 1 + } + } + ], + "id": 822, + "nodeType": "InlineAssembly", + "operations": "{\n newContract := create(0, add(data, 0x20), mload(data))\n}", + "src": "12691:93:1" + } + ] + }, + "id": 824, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "executeCreate", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 818, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 817, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 824, + "src": "12610:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + "typeName": { + "id": 816, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "12610:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12609:12:1" + }, + "payable": false, + "returnParameters": { + "id": 821, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 820, + "name": "newContract", + "nodeType": "VariableDeclaration", + "scope": 824, + "src": "12656:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 819, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12656:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12655:21:1" + }, + "scope": 963, + "src": "12587:197:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 851, + "nodeType": "Block", + "src": "13238:87:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30783139", + "id": 841, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13270:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_25_by_1", + "typeString": "int_const 25" + }, + "value": "0x19" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_25_by_1", + "typeString": "int_const 25" + } + ], + "id": 840, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "13265:4:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes1_$", + "typeString": "type(bytes1)" + }, + "typeName": "byte" + }, + "id": 842, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13265:10:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + { + "argumentTypes": null, + "id": 843, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2100, + "src": "13277:4:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + }, + { + "argumentTypes": null, + "id": 844, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 826, + "src": "13283:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 845, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 828, + "src": "13287:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 846, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 830, + "src": "13294:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 847, + "name": "operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 832, + "src": "13300:9:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + }, + { + "argumentTypes": null, + "id": 848, + "name": "_nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 834, + "src": "13311:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 839, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2083, + "src": "13255:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", + "typeString": "function () pure returns (bytes32)" + } + }, + "id": 849, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13255:63:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 838, + "id": 850, + "nodeType": "Return", + "src": "13248:70:1" + } + ] + }, + "id": 852, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "getTransactionHash", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 835, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 826, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 852, + "src": "13104:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 825, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13104:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 828, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 852, + "src": "13116:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 827, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13116:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 830, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 852, + "src": "13131:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + "typeName": { + "id": 829, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "13131:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 832, + "name": "operation", + "nodeType": "VariableDeclaration", + "scope": 852, + "src": "13143:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + }, + "typeName": { + "contractScope": null, + "id": 831, + "name": "Operation", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 61, + "src": "13143:9:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 834, + "name": "_nonce", + "nodeType": "VariableDeclaration", + "scope": 852, + "src": "13164:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 833, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13164:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "13103:76:1" + }, + "payable": false, + "returnParameters": { + "id": 838, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 837, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 852, + "src": "13225:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 836, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "13225:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "13224:9:1" + }, + "scope": 963, + "src": "13076:249:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 860, + "nodeType": "Block", + "src": "13488:30:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 858, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "13505:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "functionReturnParameters": 857, + "id": 859, + "nodeType": "Return", + "src": "13498:13:1" + } + ] + }, + "id": 861, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "getOwners", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 853, + "nodeType": "ParameterList", + "parameters": [], + "src": "13425:2:1" + }, + "payable": false, + "returnParameters": { + "id": 857, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 856, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 861, + "src": "13473:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + }, + "typeName": { + "baseType": { + "id": 854, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13473:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 855, + "length": null, + "nodeType": "ArrayTypeName", + "src": "13473:9:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[] storage pointer" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "13472:11:1" + }, + "scope": 963, + "src": "13407:111:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 869, + "nodeType": "Block", + "src": "13690:34:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 867, + "name": "extensions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43, + "src": "13707:10:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage", + "typeString": "contract Extension[] storage ref" + } + }, + "functionReturnParameters": 866, + "id": 868, + "nodeType": "Return", + "src": "13700:17:1" + } + ] + }, + "id": 870, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "getExtensions", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 862, + "nodeType": "ParameterList", + "parameters": [], + "src": "13625:2:1" + }, + "payable": false, + "returnParameters": { + "id": 866, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 865, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 870, + "src": "13673:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_memory_ptr", + "typeString": "contract Extension[] memory" + }, + "typeName": { + "baseType": { + "contractScope": null, + "id": 863, + "name": "Extension", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 18, + "src": "13673:9:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + }, + "id": 864, + "length": null, + "nodeType": "ArrayTypeName", + "src": "13673:11:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage_ptr", + "typeString": "contract Extension[] storage pointer" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "13672:13:1" + }, + "scope": 963, + "src": "13603:121:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 901, + "nodeType": "Block", + "src": "13998:162:1", + "statements": [ + { + "body": { + "id": 899, + "nodeType": "Block", + "src": "14049:105:1", + "statements": [ + { + "condition": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 888, + "name": "isConfirmed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57, + "src": "14067:11:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$", + "typeString": "mapping(address => mapping(bytes32 => bool))" + } + }, + "id": 892, + "indexExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 889, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "14079:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 891, + "indexExpression": { + "argumentTypes": null, + "id": 890, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 878, + "src": "14086:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14079:9:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14067:22:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + } + }, + "id": 894, + "indexExpression": { + "argumentTypes": null, + "id": 893, + "name": "transactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 872, + "src": "14090:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14067:39:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 898, + "nodeType": "IfStatement", + "src": "14063:80:1", + "trueBody": { + "expression": { + "argumentTypes": null, + "id": 896, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "14124:19:1", + "subExpression": { + "argumentTypes": null, + "id": 895, + "name": "confirmationCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 875, + "src": "14124:17:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 897, + "nodeType": "ExpressionStatement", + "src": "14124:19:1" + } + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 884, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 881, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 878, + "src": "14025:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 882, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "14029:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 883, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "14029:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "14025:17:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 900, + "initializationExpression": { + "assignments": [ + 878 + ], + "declarations": [ + { + "constant": false, + "id": 878, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 902, + "src": "14013:6:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 877, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "14013:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 880, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 879, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14022:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "14013:10:1" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 886, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "14044:3:1", + "subExpression": { + "argumentTypes": null, + "id": 885, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 878, + "src": "14044:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 887, + "nodeType": "ExpressionStatement", + "src": "14044:3:1" + }, + "nodeType": "ForStatement", + "src": "14008:146:1" + } + ] + }, + "id": 902, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "getConfirmationCount", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 873, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 872, + "name": "transactionHash", + "nodeType": "VariableDeclaration", + "scope": 902, + "src": "13900:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 871, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "13900:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "13899:25:1" + }, + "payable": false, + "returnParameters": { + "id": 876, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 875, + "name": "confirmationCount", + "nodeType": "VariableDeclaration", + "scope": 902, + "src": "13970:22:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 874, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "13970:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "13969:24:1" + }, + "scope": 963, + "src": "13870:290:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 961, + "nodeType": "Block", + "src": "14432:407:1", + "statements": [ + { + "assignments": [ + 911 + ], + "declarations": [ + { + "constant": false, + "id": 911, + "name": "confirmationCount", + "nodeType": "VariableDeclaration", + "scope": 962, + "src": "14442:22:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 910, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "14442:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 915, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 913, + "name": "transactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 904, + "src": "14488:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 912, + "name": "getConfirmationCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 902, + "src": "14467:20:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$", + "typeString": "function (bytes32) view returns (uint256)" + } + }, + "id": 914, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14467:37:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "14442:62:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 922, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 916, + "name": "confirmingOwners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 908, + "src": "14514:16:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 920, + "name": "confirmationCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 911, + "src": "14547:17:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 919, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "14533:13:1", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_$", + "typeString": "function (uint256) pure returns (address[] memory)" + }, + "typeName": { + "baseType": { + "id": 917, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14537:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 918, + "length": null, + "nodeType": "ArrayTypeName", + "src": "14537:9:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[] storage pointer" + } + } + }, + "id": 921, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14533:32:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory", + "typeString": "address[] memory" + } + }, + "src": "14514:51:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 923, + "nodeType": "ExpressionStatement", + "src": "14514:51:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 926, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 924, + "name": "confirmationCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 911, + "src": "14575:17:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 925, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14595:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "14575:21:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 927, + "nodeType": "ExpressionStatement", + "src": "14575:21:1" + }, + { + "body": { + "id": 959, + "nodeType": "Block", + "src": "14647:186:1", + "statements": [ + { + "condition": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 939, + "name": "isConfirmed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57, + "src": "14665:11:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$", + "typeString": "mapping(address => mapping(bytes32 => bool))" + } + }, + "id": 943, + "indexExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 940, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "14677:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 942, + "indexExpression": { + "argumentTypes": null, + "id": 941, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 929, + "src": "14684:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14677:9:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14665:22:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + } + }, + "id": 945, + "indexExpression": { + "argumentTypes": null, + "id": 944, + "name": "transactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 904, + "src": "14688:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14665:39:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 958, + "nodeType": "IfStatement", + "src": "14661:162:1", + "trueBody": { + "id": 957, + "nodeType": "Block", + "src": "14706:117:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 952, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 946, + "name": "confirmingOwners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 908, + "src": "14724:16:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 948, + "indexExpression": { + "argumentTypes": null, + "id": 947, + "name": "confirmationCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 911, + "src": "14741:17:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "14724:35:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 949, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "14762:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 951, + "indexExpression": { + "argumentTypes": null, + "id": 950, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 929, + "src": "14769:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14762:9:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "14724:47:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 953, + "nodeType": "ExpressionStatement", + "src": "14724:47:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 955, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "14789:19:1", + "subExpression": { + "argumentTypes": null, + "id": 954, + "name": "confirmationCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 911, + "src": "14789:17:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 956, + "nodeType": "ExpressionStatement", + "src": "14789:19:1" + } + ] + } + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 935, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 932, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 929, + "src": "14623:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 933, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "14627:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 934, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "14627:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "14623:17:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 960, + "initializationExpression": { + "assignments": [ + 929 + ], + "declarations": [ + { + "constant": false, + "id": 929, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 962, + "src": "14611:6:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 928, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "14611:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 931, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 930, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14620:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "14611:10:1" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 937, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "14642:3:1", + "subExpression": { + "argumentTypes": null, + "id": 936, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 929, + "src": "14642:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 938, + "nodeType": "ExpressionStatement", + "src": "14642:3:1" + }, + "nodeType": "ForStatement", + "src": "14606:227:1" + } + ] + }, + "id": 962, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "getConfirmingOwners", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 905, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 904, + "name": "transactionHash", + "nodeType": "VariableDeclaration", + "scope": 962, + "src": "14330:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 903, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "14330:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "14329:25:1" + }, + "payable": false, + "returnParameters": { + "id": 909, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 908, + "name": "confirmingOwners", + "nodeType": "VariableDeclaration", + "scope": 962, + "src": "14400:26:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + }, + "typeName": { + "baseType": { + "id": 906, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14400:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 907, + "length": null, + "nodeType": "ArrayTypeName", + "src": "14400:9:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[] storage pointer" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "14399:28:1" + }, + "scope": 963, + "src": "14301:538:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 964, + "src": "218:14623:1" + } + ], + "src": "0:14842:1" + }, + "compiler": { + "name": "solc", + "version": "0.4.19+commit.c4cbbb05.Emscripten.clang" + }, + "networks": { + "4": { + "events": {}, + "links": {}, + "address": "0x90bbec32c6d045b37b2ee32a2bbbef640b3972d1", + "transactionHash": "0x2f6d1570cc556eef41a2d5e6d0410188979b61cbd580084cc7451a5776009204" + }, + "42": { + "events": {}, + "links": {}, + "address": "0xaefa715af8a64d96f8619daa663fd72d78a0bf28", + "transactionHash": "0x13a8bc9539b1b6652ad74f4b3cbe2ec19d48cbbe578b7496e95379e12aca1862" + }, + "1525342778744": { + "events": {}, + "links": {}, + "address": "0x84c8db395337da2e3d4fb3e26af6bf35739d49b8", + "transactionHash": "0x5b64197eda9ffa97845a6a77ff7bfb134b37c81fa74b3eef652bffbcd6879f6a" + } + }, + "schemaVersion": "2.0.0", + "updatedAt": "2018-05-04T13:47:03.981Z" +} \ No newline at end of file diff --git a/safe-contracts/build/contracts/Migrations.json b/safe-contracts/build/contracts/Migrations.json new file mode 100644 index 0000000000..a2be8031fd --- /dev/null +++ b/safe-contracts/build/contracts/Migrations.json @@ -0,0 +1,1391 @@ +{ + "contractName": "Migrations", + "abi": [ + { + "constant": true, + "inputs": [], + "name": "last_completed_migration", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "owner", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "constant": false, + "inputs": [ + { + "name": "completed", + "type": "uint256" + } + ], + "name": "setCompleted", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "new_address", + "type": "address" + } + ], + "name": "upgrade", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x6060604052341561000f57600080fd5b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506102db8061005e6000396000f300606060405260043610610062576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630900f01014610067578063445df0ac146100a05780638da5cb5b146100c9578063fdacd5761461011e575b600080fd5b341561007257600080fd5b61009e600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610141565b005b34156100ab57600080fd5b6100b3610224565b6040518082815260200191505060405180910390f35b34156100d457600080fd5b6100dc61022a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561012957600080fd5b61013f600480803590602001909190505061024f565b005b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610220578190508073ffffffffffffffffffffffffffffffffffffffff1663fdacd5766001546040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b151561020b57600080fd5b6102c65a03f1151561021c57600080fd5b5050505b5050565b60015481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156102ac57806001819055505b505600a165627a7a723058201cc1585f9df7ab81426097daac394849e8580cf9e44d78be5b645de915c388300029", + "deployedBytecode": "0x606060405260043610610062576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630900f01014610067578063445df0ac146100a05780638da5cb5b146100c9578063fdacd5761461011e575b600080fd5b341561007257600080fd5b61009e600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610141565b005b34156100ab57600080fd5b6100b3610224565b6040518082815260200191505060405180910390f35b34156100d457600080fd5b6100dc61022a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561012957600080fd5b61013f600480803590602001909190505061024f565b005b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610220578190508073ffffffffffffffffffffffffffffffffffffffff1663fdacd5766001546040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b151561020b57600080fd5b6102c65a03f1151561021c57600080fd5b5050505b5050565b60015481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156102ac57806001819055505b505600a165627a7a723058201cc1585f9df7ab81426097daac394849e8580cf9e44d78be5b645de915c388300029", + "sourceMap": "25:580:2:-;;;191:76;;;;;;;;250:10;242:5;;:18;;;;;;;;;;;;;;;;;;25:580;;;;;;", + "deployedSourceMap": "25:580:2:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;408:195;;;;;;;;;;;;;;;;;;;;;;;;;;;;77:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;51:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;273:129;;;;;;;;;;;;;;;;;;;;;;;;;;408:195;494:19;170:5;;;;;;;;;;;156:19;;:10;:19;;;152:26;;;527:11;494:45;;549:8;:21;;;571:24;;549:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;152:26;408:195;;:::o;77:36::-;;;;:::o;51:20::-;;;;;;;;;;;;;:::o;273:129::-;170:5;;;;;;;;;;;156:19;;:10;:19;;;152:26;;;386:9;359:24;:36;;;;152:26;273:129;:::o", + "source": "pragma solidity ^0.4.4;\n\ncontract Migrations {\n address public owner;\n uint public last_completed_migration;\n\n modifier restricted() {\n if (msg.sender == owner) _;\n }\n\n function Migrations()\n public\n {\n owner = msg.sender;\n }\n\n function setCompleted(uint completed)\n public\n restricted\n {\n last_completed_migration = completed;\n }\n\n function upgrade(address new_address)\n public\n restricted\n {\n Migrations upgraded = Migrations(new_address);\n upgraded.setCompleted(last_completed_migration);\n }\n}\n", + "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Migrations.sol", + "ast": { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Migrations.sol", + "exportedSymbols": { + "Migrations": [ + 1020 + ] + }, + "id": 1021, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 965, + "literals": [ + "solidity", + "^", + "0.4", + ".4" + ], + "nodeType": "PragmaDirective", + "src": "0:23:2" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 1020, + "linearizedBaseContracts": [ + 1020 + ], + "name": "Migrations", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 967, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 1020, + "src": "51:20:2", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 966, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "51:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 969, + "name": "last_completed_migration", + "nodeType": "VariableDeclaration", + "scope": 1020, + "src": "77:36:2", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 968, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "77:4:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "public" + }, + { + "body": { + "id": 977, + "nodeType": "Block", + "src": "142:43:2", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 974, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 971, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2089, + "src": "156:3:2", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 972, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "156:10:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 973, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 967, + "src": "170:5:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "156:19:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 976, + "nodeType": "IfStatement", + "src": "152:26:2", + "trueBody": { + "id": 975, + "nodeType": "PlaceholderStatement", + "src": "177:1:2" + } + } + ] + }, + "id": 978, + "name": "restricted", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 970, + "nodeType": "ParameterList", + "parameters": [], + "src": "139:2:2" + }, + "src": "120:65:2", + "visibility": "internal" + }, + { + "body": { + "id": 986, + "nodeType": "Block", + "src": "232:35:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 984, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 981, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 967, + "src": "242:5:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 982, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2089, + "src": "250:3:2", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 983, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "250:10:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "242:18:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 985, + "nodeType": "ExpressionStatement", + "src": "242:18:2" + } + ] + }, + "id": 987, + "implemented": true, + "isConstructor": true, + "isDeclaredConst": false, + "modifiers": [], + "name": "Migrations", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 979, + "nodeType": "ParameterList", + "parameters": [], + "src": "210:2:2" + }, + "payable": false, + "returnParameters": { + "id": 980, + "nodeType": "ParameterList", + "parameters": [], + "src": "232:0:2" + }, + "scope": 1020, + "src": "191:76:2", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 998, + "nodeType": "Block", + "src": "349:53:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 996, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 994, + "name": "last_completed_migration", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 969, + "src": "359:24:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 995, + "name": "completed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 989, + "src": "386:9:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "359:36:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 997, + "nodeType": "ExpressionStatement", + "src": "359:36:2" + } + ] + }, + "id": 999, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": [], + "id": 992, + "modifierName": { + "argumentTypes": null, + "id": 991, + "name": "restricted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 978, + "src": "334:10:2", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "334:10:2" + } + ], + "name": "setCompleted", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 990, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 989, + "name": "completed", + "nodeType": "VariableDeclaration", + "scope": 999, + "src": "295:14:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 988, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "295:4:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "294:16:2" + }, + "payable": false, + "returnParameters": { + "id": 993, + "nodeType": "ParameterList", + "parameters": [], + "src": "349:0:2" + }, + "scope": 1020, + "src": "273:129:2", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1018, + "nodeType": "Block", + "src": "484:119:2", + "statements": [ + { + "assignments": [ + 1007 + ], + "declarations": [ + { + "constant": false, + "id": 1007, + "name": "upgraded", + "nodeType": "VariableDeclaration", + "scope": 1019, + "src": "494:19:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Migrations_$1020", + "typeString": "contract Migrations" + }, + "typeName": { + "contractScope": null, + "id": 1006, + "name": "Migrations", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1020, + "src": "494:10:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Migrations_$1020", + "typeString": "contract Migrations" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1011, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1009, + "name": "new_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1001, + "src": "527:11:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1008, + "name": "Migrations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1020, + "src": "516:10:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Migrations_$1020_$", + "typeString": "type(contract Migrations)" + } + }, + "id": 1010, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "516:23:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Migrations_$1020", + "typeString": "contract Migrations" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "494:45:2" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1015, + "name": "last_completed_migration", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 969, + "src": "571:24:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1012, + "name": "upgraded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1007, + "src": "549:8:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Migrations_$1020", + "typeString": "contract Migrations" + } + }, + "id": 1014, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "setCompleted", + "nodeType": "MemberAccess", + "referencedDeclaration": 999, + "src": "549:21:2", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256) external" + } + }, + "id": 1016, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "549:47:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1017, + "nodeType": "ExpressionStatement", + "src": "549:47:2" + } + ] + }, + "id": 1019, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": [], + "id": 1004, + "modifierName": { + "argumentTypes": null, + "id": 1003, + "name": "restricted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 978, + "src": "469:10:2", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "469:10:2" + } + ], + "name": "upgrade", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1002, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1001, + "name": "new_address", + "nodeType": "VariableDeclaration", + "scope": 1019, + "src": "425:19:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1000, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "425:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "424:21:2" + }, + "payable": false, + "returnParameters": { + "id": 1005, + "nodeType": "ParameterList", + "parameters": [], + "src": "484:0:2" + }, + "scope": 1020, + "src": "408:195:2", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 1021, + "src": "25:580:2" + } + ], + "src": "0:606:2" + }, + "legacyAST": { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Migrations.sol", + "exportedSymbols": { + "Migrations": [ + 1020 + ] + }, + "id": 1021, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 965, + "literals": [ + "solidity", + "^", + "0.4", + ".4" + ], + "nodeType": "PragmaDirective", + "src": "0:23:2" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 1020, + "linearizedBaseContracts": [ + 1020 + ], + "name": "Migrations", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 967, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 1020, + "src": "51:20:2", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 966, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "51:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 969, + "name": "last_completed_migration", + "nodeType": "VariableDeclaration", + "scope": 1020, + "src": "77:36:2", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 968, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "77:4:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "public" + }, + { + "body": { + "id": 977, + "nodeType": "Block", + "src": "142:43:2", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 974, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 971, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2089, + "src": "156:3:2", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 972, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "156:10:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 973, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 967, + "src": "170:5:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "156:19:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 976, + "nodeType": "IfStatement", + "src": "152:26:2", + "trueBody": { + "id": 975, + "nodeType": "PlaceholderStatement", + "src": "177:1:2" + } + } + ] + }, + "id": 978, + "name": "restricted", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 970, + "nodeType": "ParameterList", + "parameters": [], + "src": "139:2:2" + }, + "src": "120:65:2", + "visibility": "internal" + }, + { + "body": { + "id": 986, + "nodeType": "Block", + "src": "232:35:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 984, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 981, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 967, + "src": "242:5:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 982, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2089, + "src": "250:3:2", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 983, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "250:10:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "242:18:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 985, + "nodeType": "ExpressionStatement", + "src": "242:18:2" + } + ] + }, + "id": 987, + "implemented": true, + "isConstructor": true, + "isDeclaredConst": false, + "modifiers": [], + "name": "Migrations", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 979, + "nodeType": "ParameterList", + "parameters": [], + "src": "210:2:2" + }, + "payable": false, + "returnParameters": { + "id": 980, + "nodeType": "ParameterList", + "parameters": [], + "src": "232:0:2" + }, + "scope": 1020, + "src": "191:76:2", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 998, + "nodeType": "Block", + "src": "349:53:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 996, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 994, + "name": "last_completed_migration", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 969, + "src": "359:24:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 995, + "name": "completed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 989, + "src": "386:9:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "359:36:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 997, + "nodeType": "ExpressionStatement", + "src": "359:36:2" + } + ] + }, + "id": 999, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": [], + "id": 992, + "modifierName": { + "argumentTypes": null, + "id": 991, + "name": "restricted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 978, + "src": "334:10:2", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "334:10:2" + } + ], + "name": "setCompleted", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 990, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 989, + "name": "completed", + "nodeType": "VariableDeclaration", + "scope": 999, + "src": "295:14:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 988, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "295:4:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "294:16:2" + }, + "payable": false, + "returnParameters": { + "id": 993, + "nodeType": "ParameterList", + "parameters": [], + "src": "349:0:2" + }, + "scope": 1020, + "src": "273:129:2", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1018, + "nodeType": "Block", + "src": "484:119:2", + "statements": [ + { + "assignments": [ + 1007 + ], + "declarations": [ + { + "constant": false, + "id": 1007, + "name": "upgraded", + "nodeType": "VariableDeclaration", + "scope": 1019, + "src": "494:19:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Migrations_$1020", + "typeString": "contract Migrations" + }, + "typeName": { + "contractScope": null, + "id": 1006, + "name": "Migrations", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1020, + "src": "494:10:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Migrations_$1020", + "typeString": "contract Migrations" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1011, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1009, + "name": "new_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1001, + "src": "527:11:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1008, + "name": "Migrations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1020, + "src": "516:10:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Migrations_$1020_$", + "typeString": "type(contract Migrations)" + } + }, + "id": 1010, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "516:23:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Migrations_$1020", + "typeString": "contract Migrations" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "494:45:2" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1015, + "name": "last_completed_migration", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 969, + "src": "571:24:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1012, + "name": "upgraded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1007, + "src": "549:8:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Migrations_$1020", + "typeString": "contract Migrations" + } + }, + "id": 1014, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "setCompleted", + "nodeType": "MemberAccess", + "referencedDeclaration": 999, + "src": "549:21:2", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256) external" + } + }, + "id": 1016, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "549:47:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1017, + "nodeType": "ExpressionStatement", + "src": "549:47:2" + } + ] + }, + "id": 1019, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": [], + "id": 1004, + "modifierName": { + "argumentTypes": null, + "id": 1003, + "name": "restricted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 978, + "src": "469:10:2", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "469:10:2" + } + ], + "name": "upgrade", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1002, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1001, + "name": "new_address", + "nodeType": "VariableDeclaration", + "scope": 1019, + "src": "425:19:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1000, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "425:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "424:21:2" + }, + "payable": false, + "returnParameters": { + "id": 1005, + "nodeType": "ParameterList", + "parameters": [], + "src": "484:0:2" + }, + "scope": 1020, + "src": "408:195:2", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 1021, + "src": "25:580:2" + } + ], + "src": "0:606:2" + }, + "compiler": { + "name": "solc", + "version": "0.4.19+commit.c4cbbb05.Emscripten.clang" + }, + "networks": { + "4": { + "events": {}, + "links": {}, + "address": "0x8130ece7b262aa6e6a63a6d05b115247ba35a9ec", + "transactionHash": "0xdac98c9134a0828ac6bcf5a69d4d4154e890f197bdad53924cfdeaef1d29d363" + }, + "42": { + "events": {}, + "links": {}, + "address": "0xa31ae2d8f41b3b5a5a748c88a3dcec0640582182", + "transactionHash": "0x9f7a4b1f8709150b7efd2c2a4b31708410f3f3ad0f938d67bcef3c52d1033672" + }, + "1525342778744": { + "events": {}, + "links": {}, + "address": "0xced15a6a3e7f4f182667bf7dd3e0403b8229a97b", + "transactionHash": "0x8efec3bf60df6831ec5c77ceec27654c94b84005dfee1cb7dfae8d51c847ca93" + } + }, + "schemaVersion": "2.0.0", + "updatedAt": "2018-05-04T13:47:03.970Z" +} \ No newline at end of file diff --git a/safe-contracts/build/contracts/MultiSend.json b/safe-contracts/build/contracts/MultiSend.json new file mode 100644 index 0000000000..20b59bf6e0 --- /dev/null +++ b/safe-contracts/build/contracts/MultiSend.json @@ -0,0 +1,359 @@ +{ + "contractName": "MultiSend", + "abi": [ + { + "constant": false, + "inputs": [ + { + "name": "transactions", + "type": "bytes" + } + ], + "name": "multiSend", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x6060604052341561000f57600080fd5b6101278061001e6000396000f300606060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680638d80ff0a146044575b600080fd5b3415604e57600080fd5b609c600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050609e565b005b805160205b8181101560f65780830151602082018401516060830185015160808401860160008083838688600019f16000811460d85760dd565b600080fd5b50602080602084010402608001850194505050505060a3565b5050505600a165627a7a723058207fe7130b5215c2b7fb5987a9e0c21a2085684d930840ac75e4e7c62730c93cfc0029", + "deployedBytecode": "0x606060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680638d80ff0a146044575b600080fd5b3415604e57600080fd5b609c600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050609e565b005b805160205b8181101560f65780830151602082018401516060830185015160808401860160008083838688600019f16000811460d85760dd565b600080fd5b50602080602084010402608001850194505050505060a3565b5050505600a165627a7a723058207fe7130b5215c2b7fb5987a9e0c21a2085684d930840ac75e4e7c62730c93cfc0029", + "sourceMap": "253:1012:9:-;;;;;;;;;;;;;;;;;", + "deployedSourceMap": "253:1012:9:-;;;;;;;;;;;;;;;;;;;;;;;;593:670;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;704:12;698:5;739:4;756:491;770:6;767:1;764:2;756:491;;;834:1;820:12;816:3;810:5;898:4;895:1;891:3;877:12;873:3;867:5;971:4;968:1;964:3;950:12;946:3;940:5;1032:4;1029:1;1025:3;1011:12;1007:3;1107:1;1104;1092:10;1086:4;1079:5;1075:2;1071:1;1067:3;1062:4;1131:1;1126:23;;;;1055:94;;1126:23;1145:1;1142;1135:6;1055:94;;1226:4;1219;1212;1200:10;1196:3;1192;1188;1182:4;1178:3;1175:1;1171:3;1166:67;;782:465;;;;756:491;;;670:587;;;:::o", + "source": "pragma solidity 0.4.19;\n\n\n/// @title Multi Send - Allows to batch multiple transactions into one.\n/// @author Nick Dodson - \n/// @author Gonçalo Sá - \n/// @author Stefan George - \ncontract MultiSend {\n\n /// @dev Sends multiple transactions and reverts all if one fails.\n /// @param transactions Encoded transactions. Each transaction is encoded as\n /// a tuple(address,uint256,bytes). The bytes of all\n /// encoded transactions are concatenated to form the input.\n function multiSend(bytes transactions)\n public\n {\n assembly {\n let length := mload(transactions)\n let i := 0x20\n for { } lt(i, length) { } {\n let to := mload(add(transactions, i))\n let value := mload(add(transactions, add(i, 0x20)))\n let dataLength := mload(add(transactions, add(i, 0x60)))\n let data := add(transactions, add(i, 0x80))\n switch call(not(0), to, value, data, dataLength, 0, 0)\n case 0 { revert(0, 0) }\n i := add(i, add(0x80, mul(div(add(dataLength, 0x20), 0x20), 0x20)))\n }\n }\n }\n}\n", + "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/libraries/MultiSend.sol", + "ast": { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/libraries/MultiSend.sol", + "exportedSymbols": { + "MultiSend": [ + 2016 + ] + }, + "id": 2017, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2008, + "literals": [ + "solidity", + "0.4", + ".19" + ], + "nodeType": "PragmaDirective", + "src": "0:23:9" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": "@title Multi Send - Allows to batch multiple transactions into one.\n @author Nick Dodson - \n @author Gonçalo Sá - \n @author Stefan George - ", + "fullyImplemented": true, + "id": 2016, + "linearizedBaseContracts": [ + 2016 + ], + "name": "MultiSend", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 2014, + "nodeType": "Block", + "src": "651:612:9", + "statements": [ + { + "externalReferences": [ + { + "transactions": { + "declaration": 2010, + "isOffset": false, + "isSlot": false, + "src": "704:12:9", + "valueSize": 1 + } + }, + { + "transactions": { + "declaration": 2010, + "isOffset": false, + "isSlot": false, + "src": "820:12:9", + "valueSize": 1 + } + }, + { + "transactions": { + "declaration": 2010, + "isOffset": false, + "isSlot": false, + "src": "877:12:9", + "valueSize": 1 + } + }, + { + "transactions": { + "declaration": 2010, + "isOffset": false, + "isSlot": false, + "src": "950:12:9", + "valueSize": 1 + } + }, + { + "transactions": { + "declaration": 2010, + "isOffset": false, + "isSlot": false, + "src": "1011:12:9", + "valueSize": 1 + } + } + ], + "id": 2013, + "nodeType": "InlineAssembly", + "operations": "{\n let length := mload(transactions)\n let i := 0x20\n for {\n }\n lt(i, length)\n {\n }\n {\n let to := mload(add(transactions, i))\n let value := mload(add(transactions, add(i, 0x20)))\n let dataLength := mload(add(transactions, add(i, 0x60)))\n let data := add(transactions, add(i, 0x80))\n switch call(not(0), to, value, data, dataLength, 0, 0)\n case 0 {\n revert(0, 0)\n }\n i := add(i, add(0x80, mul(div(add(dataLength, 0x20), 0x20), 0x20)))\n }\n}", + "src": "661:602:9" + } + ] + }, + "id": 2015, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "multiSend", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2011, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2010, + "name": "transactions", + "nodeType": "VariableDeclaration", + "scope": 2015, + "src": "612:18:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + "typeName": { + "id": 2009, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "612:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "611:20:9" + }, + "payable": false, + "returnParameters": { + "id": 2012, + "nodeType": "ParameterList", + "parameters": [], + "src": "651:0:9" + }, + "scope": 2016, + "src": "593:670:9", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 2017, + "src": "253:1012:9" + } + ], + "src": "0:1266:9" + }, + "legacyAST": { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/libraries/MultiSend.sol", + "exportedSymbols": { + "MultiSend": [ + 2016 + ] + }, + "id": 2017, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2008, + "literals": [ + "solidity", + "0.4", + ".19" + ], + "nodeType": "PragmaDirective", + "src": "0:23:9" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": "@title Multi Send - Allows to batch multiple transactions into one.\n @author Nick Dodson - \n @author Gonçalo Sá - \n @author Stefan George - ", + "fullyImplemented": true, + "id": 2016, + "linearizedBaseContracts": [ + 2016 + ], + "name": "MultiSend", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 2014, + "nodeType": "Block", + "src": "651:612:9", + "statements": [ + { + "externalReferences": [ + { + "transactions": { + "declaration": 2010, + "isOffset": false, + "isSlot": false, + "src": "704:12:9", + "valueSize": 1 + } + }, + { + "transactions": { + "declaration": 2010, + "isOffset": false, + "isSlot": false, + "src": "820:12:9", + "valueSize": 1 + } + }, + { + "transactions": { + "declaration": 2010, + "isOffset": false, + "isSlot": false, + "src": "877:12:9", + "valueSize": 1 + } + }, + { + "transactions": { + "declaration": 2010, + "isOffset": false, + "isSlot": false, + "src": "950:12:9", + "valueSize": 1 + } + }, + { + "transactions": { + "declaration": 2010, + "isOffset": false, + "isSlot": false, + "src": "1011:12:9", + "valueSize": 1 + } + } + ], + "id": 2013, + "nodeType": "InlineAssembly", + "operations": "{\n let length := mload(transactions)\n let i := 0x20\n for {\n }\n lt(i, length)\n {\n }\n {\n let to := mload(add(transactions, i))\n let value := mload(add(transactions, add(i, 0x20)))\n let dataLength := mload(add(transactions, add(i, 0x60)))\n let data := add(transactions, add(i, 0x80))\n switch call(not(0), to, value, data, dataLength, 0, 0)\n case 0 {\n revert(0, 0)\n }\n i := add(i, add(0x80, mul(div(add(dataLength, 0x20), 0x20), 0x20)))\n }\n}", + "src": "661:602:9" + } + ] + }, + "id": 2015, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "multiSend", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2011, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2010, + "name": "transactions", + "nodeType": "VariableDeclaration", + "scope": 2015, + "src": "612:18:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + "typeName": { + "id": 2009, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "612:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "611:20:9" + }, + "payable": false, + "returnParameters": { + "id": 2012, + "nodeType": "ParameterList", + "parameters": [], + "src": "651:0:9" + }, + "scope": 2016, + "src": "593:670:9", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 2017, + "src": "253:1012:9" + } + ], + "src": "0:1266:9" + }, + "compiler": { + "name": "solc", + "version": "0.4.19+commit.c4cbbb05.Emscripten.clang" + }, + "networks": { + "4": { + "events": {}, + "links": {}, + "address": "0xb42ea77ed35188c3d9f478ede1883c7fc3889bf4", + "transactionHash": "0x49884b2c77b96bd8fab92acb25cb6c1d31322f8d8a5285168b629d02ff0942df" + }, + "42": { + "events": {}, + "links": {}, + "address": "0xa64866921fa040d96080a66327b57d3659aa3cb2", + "transactionHash": "0x0976055636f5f47833e456b68bbd3bd73497c17c1b51072795ee7ca472c7a1ee" + }, + "1525342778744": { + "events": {}, + "links": {}, + "address": "0x1751f194e16ab8cc857b37bbbca9b796b182691b", + "transactionHash": "0xf406441274f4472d909145b4145733064edd26a8ef0c5cd1b00d19a481cec4fd" + } + }, + "schemaVersion": "2.0.0", + "updatedAt": "2018-05-04T13:47:03.969Z" +} \ No newline at end of file diff --git a/safe-contracts/build/contracts/MultiSendStruct.json b/safe-contracts/build/contracts/MultiSendStruct.json new file mode 100644 index 0000000000..58264cc55e --- /dev/null +++ b/safe-contracts/build/contracts/MultiSendStruct.json @@ -0,0 +1,1678 @@ +{ + "contractName": "MultiSendStruct", + "abi": [ + { + "constant": false, + "inputs": [ + { + "components": [ + { + "name": "to", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + }, + { + "name": "data", + "type": "bytes" + } + ], + "name": "transactions", + "type": "tuple[]" + } + ], + "name": "multiSend", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x6060604052341561000f57600080fd5b6104338061001e6000396000f300606060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632f6fda4a14610046575b600080fd5b341561005157600080fd5b61006660046100619036906102d1565b610068565b005b60006100726100e8565b600091505b82518210156100c957828281518110151561008e57fe5b9060200190602002015190506100b18160000151826020015183604001516100ce565b15156100bc57600080fd5b8180600101925050610077565b505050565b60008060008351602085018688600019f190509392505050565b606060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001610120610126565b81525090565b602060405190810160405280600081525090565b600061014682356103c0565b905092915050565b600082601f8301126000811461016357610168565b600080fd5b50813561017c6101778261035a565b610324565b9150818183526020840193506020810190508360005b838110156101c257813586016101a88882610233565b845260208401935060208301925050600181019050610192565b5050505092915050565b600082601f830112600081146101e1576101e6565b600080fd5b5081356101fa6101f58261038b565b610324565b915080825260208301602083018583830111600181146102195761021e565b600080fd5b5061022a8382846103ea565b50505092915050565b6000606082840312600181146102485761024d565b600080fd5b506102586060610324565b905060006102688482850161013a565b600083015250602061027c848285016102bd565b602083015250604082013567ffffffffffffffff81116001811461029f576102a4565b600080fd5b506102b1848285016101cc565b60408301525092915050565b60006102c982356103e0565b905092915050565b6000602082840312600181146102e6576102eb565b600080fd5b50600082013567ffffffffffffffff8111600181146103095761030e565b600080fd5b5061031b8482850161014e565b91505092915050565b6000604051905081810181811067ffffffffffffffff8211176001811461034a5761034f565b600080fd5b508060405250919050565b600067ffffffffffffffff82116001811461037457610379565b600080fd5b50602082029050602081019050919050565b600067ffffffffffffffff8211600181146103a5576103aa565b600080fd5b50601f19601f8301169050602081019050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b828183376000838301525050505600a265627a7a72305820484c17df168e13c63e6cab3910c3609158f4993315f595b990932cc0a3f27c726c6578706572696d656e74616cf50037", + "deployedBytecode": "0x606060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632f6fda4a14610046575b600080fd5b341561005157600080fd5b61006660046100619036906102d1565b610068565b005b60006100726100e8565b600091505b82518210156100c957828281518110151561008e57fe5b9060200190602002015190506100b18160000151826020015183604001516100ce565b15156100bc57600080fd5b8180600101925050610077565b505050565b60008060008351602085018688600019f190509392505050565b606060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001610120610126565b81525090565b602060405190810160405280600081525090565b600061014682356103c0565b905092915050565b600082601f8301126000811461016357610168565b600080fd5b50813561017c6101778261035a565b610324565b9150818183526020840193506020810190508360005b838110156101c257813586016101a88882610233565b845260208401935060208301925050600181019050610192565b5050505092915050565b600082601f830112600081146101e1576101e6565b600080fd5b5081356101fa6101f58261038b565b610324565b915080825260208301602083018583830111600181146102195761021e565b600080fd5b5061022a8382846103ea565b50505092915050565b6000606082840312600181146102485761024d565b600080fd5b506102586060610324565b905060006102688482850161013a565b600083015250602061027c848285016102bd565b602083015250604082013567ffffffffffffffff81116001811461029f576102a4565b600080fd5b506102b1848285016101cc565b60408301525092915050565b60006102c982356103e0565b905092915050565b6000602082840312600181146102e6576102eb565b600080fd5b50600082013567ffffffffffffffff8111600181146103095761030e565b600080fd5b5061031b8482850161014e565b91505092915050565b6000604051905081810181811067ffffffffffffffff8211176001811461034a5761034f565b600080fd5b508060405250919050565b600067ffffffffffffffff82116001811461037457610379565b600080fd5b50602082029050602081019050919050565b600067ffffffffffffffff8211600181146103a5576103aa565b600080fd5b50601f19601f8301169050602081019050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b828183376000838301525050505600a265627a7a72305820484c17df168e13c63e6cab3910c3609158f4993315f595b990932cc0a3f27c726c6578706572696d656e74616cf50037", + "sourceMap": "339:772:10:-;;;;;;;;;;;;;;;;;", + "deployedSourceMap": "339:772:10:-;;;;;;;;;;;;;;;;;;;;;;;;581:291;;;;;;;;;;;;;;;;;;;;;;;661:9;720:30;;:::i;:::-;673:1;661:13;;657:209;680:12;:19;676:1;:23;657:209;;;753:12;766:1;753:15;;;;;;;;;;;;;;;;;;720:48;;790:64;802:11;:14;;;818:11;:17;;;837:11;:16;;;790:11;:64::i;:::-;782:73;;;;;;;;701:3;;;;;;;657:209;;;581:291;;;:::o;878:231::-;972:12;1091:1;1088;1081:4;1075:5;1068:4;1062;1058:3;1051:5;1047:2;1043:1;1039:3;1034:4;1023:70;;1009:94;;;;;:::o;339:772::-;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;5:118:-1:-;;72:46;110:6;97:12;72:46;;;63:55;;57:66;;;;;175:756;;314:3;307:4;299:6;295:3;291;324:1;319:23;;;;284:58;;319:23;338:1;335;328:6;284:58;;375:6;362:12;397:105;412:89;494:6;412:89;;;397:105;;;388:114;;519:5;544:6;537:5;530:6;574:4;566:6;562:3;552:27;;596:4;591:3;587;580:21;;649:6;682:1;667:258;692:6;689:1;686:2;667:258;;;775:3;762:12;754:6;750:3;799:62;857:3;845:10;799:62;;;794:3;787:6;885:4;880:3;876;869:21;;913:4;908:3;904;897:21;;724:201;714:1;711;707:3;702:14;;667:258;;;671:14;277:654;;;;;;;;940:446;;1034:3;1027:4;1019:6;1015:3;1011;1044:1;1039:23;;;;1004:58;;1039:23;1058:1;1055;1048:6;1004:58;;1095:6;1082:12;1117:60;1132:44;1169:6;1132:44;;;1117:60;;;1108:69;;1197:6;1190:5;1183:6;1233:4;1225:6;1221:3;1266:4;1259:5;1255:3;1305;1296:6;1291:3;1287;1284:2;1315:1;1310:23;;;;1277:56;;1310:23;1329:1;1326;1319:6;1277:56;;1339:41;1373:6;1368:3;1363;1339:41;;;997:389;;;;;;;;1435:722;;1553:4;1541:9;1536:3;1532;1528;1564:1;1559:23;;;;1521:61;;1559:23;1578:1;1575;1568:6;1521:61;;1596:20;1611:4;1596:20;;;1587:29;;1664:1;1695:49;1740:3;1731:6;1720:9;1716:3;1695:49;;;1689:3;1682:5;1678:3;1671:6;1626:130;1807:2;1840:49;1885:3;1876:6;1865:9;1861:3;1840:49;;;1833:4;1826:5;1822:3;1815:6;1766:135;1979:2;1968:9;1964:3;1951:12;2007:18;1999:6;1996:2;2032:1;2027:23;;;;1989:61;;2027:23;2046:1;2043;2036:6;1989:61;;2081:54;2131:3;2122:6;2111:9;2107:3;2081:54;;;2074:4;2067:5;2063:3;2056:6;1911:236;1515:642;;;;;2164:118;;2231:46;2269:6;2256:12;2231:46;;;2222:55;;2216:66;;;;;2289:449;;2447:2;2435:9;2426:7;2422:3;2418;2456:1;2451:23;;;;2411:63;;2451:23;2470:1;2467;2460:6;2411:63;;2533:1;2522:9;2518:3;2505:12;2560:18;2552:6;2549:2;2585:1;2580:23;;;;2542:61;;2580:23;2599:1;2596;2589:6;2542:61;;2619:103;2714:7;2705:6;2694:9;2690:3;2619:103;;;2609:113;;2484:244;2405:333;;;;;2745:267;;2807:2;2801:5;2791:19;;2845:4;2837:6;2833:3;2948:6;2936:10;2933:2;2912:18;2900:10;2897:2;2894;2962:1;2957:23;;;;2887:93;;2957:23;2976:1;2973;2966:6;2887:93;;2996:10;2992:2;2985:6;2785:227;;;;;3019:294;;3207:18;3199:6;3196:2;3232:1;3227:23;;;;3189:61;;3227:23;3246:1;3243;3236:6;3189:61;;3275:4;3267:6;3263:3;3255:25;;3303:4;3297;3293:3;3285:23;;3126:187;;;;3320:265;;3463:18;3455:6;3452:2;3488:1;3483:23;;;;3445:61;;3483:23;3502:1;3499;3492:6;3445:61;;3546:4;3542:3;3535:4;3527:6;3523:3;3519;3511:41;;3575:4;3569;3565:3;3557:23;;3382:203;;;;3592:128;;3672:42;3665:5;3661:3;3650:65;;3644:76;;;;3727:79;;3796:5;3785:16;;3779:27;;;;3814:145;3895:6;3890:3;3885;3872:12;3951:1;3942:6;3937:3;3933;3926:6;3865:94;;;", + "source": "pragma solidity ^0.4.19;\npragma experimental ABIEncoderV2;\n\n\n/// @title Multi Send - Allows to batch multiple transactions into one.\n/// @author Nick Dodson - \n/// @author Gonçalo Sá - \n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract MultiSendStruct {\n\n struct Transaction {\n address to;\n uint256 value;\n bytes data;\n }\n\n /// @dev Sends multiple transactions and reverts all if one fails.\n /// @param transactions Encoded transactions.\n function multiSend(Transaction[] transactions)\n public\n {\n for(uint256 i = 0; i < transactions.length; i++) {\n Transaction memory transaction = transactions[i];\n require(executeCall(transaction.to, transaction.value, transaction.data));\n }\n }\n\n function executeCall(address to, uint256 value, bytes data)\n internal\n returns (bool success)\n {\n assembly {\n success := call(not(0), to, value, add(data, 0x20), mload(data), 0, 0)\n }\n }\n}\n", + "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/libraries/MultiSendStruct.sol", + "ast": { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/libraries/MultiSendStruct.sol", + "exportedSymbols": { + "MultiSendStruct": [ + 2077 + ] + }, + "id": 2078, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2018, + "literals": [ + "solidity", + "^", + "0.4", + ".19" + ], + "nodeType": "PragmaDirective", + "src": "0:24:10" + }, + { + "id": 2019, + "literals": [ + "experimental", + "ABIEncoderV2" + ], + "nodeType": "PragmaDirective", + "src": "25:33:10" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": "@title Multi Send - Allows to batch multiple transactions into one.\n @author Nick Dodson - \n @author Gonçalo Sá - \n @author Stefan George - \n @author Richard Meissner - ", + "fullyImplemented": true, + "id": 2077, + "linearizedBaseContracts": [ + 2077 + ], + "name": "MultiSendStruct", + "nodeType": "ContractDefinition", + "nodes": [ + { + "canonicalName": "MultiSendStruct.Transaction", + "id": 2026, + "members": [ + { + "constant": false, + "id": 2021, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 2026, + "src": "398:10:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2020, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "398:7:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2023, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 2026, + "src": "416:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2022, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "416:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2025, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 2026, + "src": "437:10:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + }, + "typeName": { + "id": 2024, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "437:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "Transaction", + "nodeType": "StructDefinition", + "scope": 2077, + "src": "371:83:10", + "visibility": "public" + }, + { + "body": { + "id": 2062, + "nodeType": "Block", + "src": "647:225:10", + "statements": [ + { + "body": { + "id": 2060, + "nodeType": "Block", + "src": "706:160:10", + "statements": [ + { + "assignments": [ + 2044 + ], + "declarations": [ + { + "constant": false, + "id": 2044, + "name": "transaction", + "nodeType": "VariableDeclaration", + "scope": 2063, + "src": "720:30:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Transaction_$2026_memory_ptr", + "typeString": "struct MultiSendStruct.Transaction memory" + }, + "typeName": { + "contractScope": null, + "id": 2043, + "name": "Transaction", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2026, + "src": "720:11:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Transaction_$2026_storage_ptr", + "typeString": "struct MultiSendStruct.Transaction storage pointer" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2048, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2045, + "name": "transactions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2029, + "src": "753:12:10", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Transaction_$2026_memory_$dyn_memory_ptr", + "typeString": "struct MultiSendStruct.Transaction memory[] memory" + } + }, + "id": 2047, + "indexExpression": { + "argumentTypes": null, + "id": 2046, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2033, + "src": "766:1:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "753:15:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Transaction_$2026_memory", + "typeString": "struct MultiSendStruct.Transaction memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "720:48:10" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2051, + "name": "transaction", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2044, + "src": "802:11:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Transaction_$2026_memory_ptr", + "typeString": "struct MultiSendStruct.Transaction memory" + } + }, + "id": 2052, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "to", + "nodeType": "MemberAccess", + "referencedDeclaration": 2021, + "src": "802:14:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2053, + "name": "transaction", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2044, + "src": "818:11:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Transaction_$2026_memory_ptr", + "typeString": "struct MultiSendStruct.Transaction memory" + } + }, + "id": 2054, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": 2023, + "src": "818:17:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2055, + "name": "transaction", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2044, + "src": "837:11:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Transaction_$2026_memory_ptr", + "typeString": "struct MultiSendStruct.Transaction memory" + } + }, + "id": 2056, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "data", + "nodeType": "MemberAccess", + "referencedDeclaration": 2025, + "src": "837:16:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory", + "typeString": "bytes memory" + } + ], + "id": 2050, + "name": "executeCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2076, + "src": "790:11:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$", + "typeString": "function (address,uint256,bytes memory) returns (bool)" + } + }, + "id": 2057, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "790:64:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2049, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "782:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2058, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "782:73:10", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2059, + "nodeType": "ExpressionStatement", + "src": "782:73:10" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2039, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2036, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2033, + "src": "676:1:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2037, + "name": "transactions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2029, + "src": "680:12:10", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Transaction_$2026_memory_$dyn_memory_ptr", + "typeString": "struct MultiSendStruct.Transaction memory[] memory" + } + }, + "id": 2038, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "680:19:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "676:23:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2061, + "initializationExpression": { + "assignments": [ + 2033 + ], + "declarations": [ + { + "constant": false, + "id": 2033, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 2063, + "src": "661:9:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2032, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "661:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2035, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 2034, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "673:1:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "661:13:10" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 2041, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "701:3:10", + "subExpression": { + "argumentTypes": null, + "id": 2040, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2033, + "src": "701:1:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2042, + "nodeType": "ExpressionStatement", + "src": "701:3:10" + }, + "nodeType": "ForStatement", + "src": "657:209:10" + } + ] + }, + "id": 2063, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "multiSend", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2030, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2029, + "name": "transactions", + "nodeType": "VariableDeclaration", + "scope": 2063, + "src": "600:26:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Transaction_$2026_memory_$dyn_memory_ptr", + "typeString": "struct MultiSendStruct.Transaction memory[] memory" + }, + "typeName": { + "baseType": { + "contractScope": null, + "id": 2027, + "name": "Transaction", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2026, + "src": "600:11:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Transaction_$2026_storage_ptr", + "typeString": "struct MultiSendStruct.Transaction storage pointer" + } + }, + "id": 2028, + "length": null, + "nodeType": "ArrayTypeName", + "src": "600:13:10", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Transaction_$2026_storage_$dyn_storage_ptr", + "typeString": "struct MultiSendStruct.Transaction storage ref[] storage pointer" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "599:28:10" + }, + "payable": false, + "returnParameters": { + "id": 2031, + "nodeType": "ParameterList", + "parameters": [], + "src": "647:0:10" + }, + "scope": 2077, + "src": "581:291:10", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2075, + "nodeType": "Block", + "src": "990:119:10", + "statements": [ + { + "externalReferences": [ + { + "data": { + "declaration": 2069, + "isOffset": false, + "isSlot": false, + "src": "1062:4:10", + "valueSize": 1 + } + }, + { + "data": { + "declaration": 2069, + "isOffset": false, + "isSlot": false, + "src": "1081:4:10", + "valueSize": 1 + } + }, + { + "success": { + "declaration": 2072, + "isOffset": false, + "isSlot": false, + "src": "1023:7:10", + "valueSize": 1 + } + }, + { + "to": { + "declaration": 2065, + "isOffset": false, + "isSlot": false, + "src": "1047:2:10", + "valueSize": 1 + } + }, + { + "value": { + "declaration": 2067, + "isOffset": false, + "isSlot": false, + "src": "1051:5:10", + "valueSize": 1 + } + } + ], + "id": 2074, + "nodeType": "InlineAssembly", + "operations": "{\n success := call(not(0), to, value, add(data, 0x20), mload(data), 0, 0)\n}", + "src": "1000:109:10" + } + ] + }, + "id": 2076, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "executeCall", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2070, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2065, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 2076, + "src": "899:10:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2064, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "899:7:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2067, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 2076, + "src": "911:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2066, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "911:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2069, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 2076, + "src": "926:10:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + "typeName": { + "id": 2068, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "926:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "898:39:10" + }, + "payable": false, + "returnParameters": { + "id": 2073, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2072, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 2076, + "src": "972:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2071, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "972:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "971:14:10" + }, + "scope": 2077, + "src": "878:231:10", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 2078, + "src": "339:772:10" + } + ], + "src": "0:1112:10" + }, + "legacyAST": { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/libraries/MultiSendStruct.sol", + "exportedSymbols": { + "MultiSendStruct": [ + 2077 + ] + }, + "id": 2078, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2018, + "literals": [ + "solidity", + "^", + "0.4", + ".19" + ], + "nodeType": "PragmaDirective", + "src": "0:24:10" + }, + { + "id": 2019, + "literals": [ + "experimental", + "ABIEncoderV2" + ], + "nodeType": "PragmaDirective", + "src": "25:33:10" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": "@title Multi Send - Allows to batch multiple transactions into one.\n @author Nick Dodson - \n @author Gonçalo Sá - \n @author Stefan George - \n @author Richard Meissner - ", + "fullyImplemented": true, + "id": 2077, + "linearizedBaseContracts": [ + 2077 + ], + "name": "MultiSendStruct", + "nodeType": "ContractDefinition", + "nodes": [ + { + "canonicalName": "MultiSendStruct.Transaction", + "id": 2026, + "members": [ + { + "constant": false, + "id": 2021, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 2026, + "src": "398:10:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2020, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "398:7:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2023, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 2026, + "src": "416:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2022, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "416:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2025, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 2026, + "src": "437:10:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + }, + "typeName": { + "id": 2024, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "437:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "Transaction", + "nodeType": "StructDefinition", + "scope": 2077, + "src": "371:83:10", + "visibility": "public" + }, + { + "body": { + "id": 2062, + "nodeType": "Block", + "src": "647:225:10", + "statements": [ + { + "body": { + "id": 2060, + "nodeType": "Block", + "src": "706:160:10", + "statements": [ + { + "assignments": [ + 2044 + ], + "declarations": [ + { + "constant": false, + "id": 2044, + "name": "transaction", + "nodeType": "VariableDeclaration", + "scope": 2063, + "src": "720:30:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Transaction_$2026_memory_ptr", + "typeString": "struct MultiSendStruct.Transaction memory" + }, + "typeName": { + "contractScope": null, + "id": 2043, + "name": "Transaction", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2026, + "src": "720:11:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Transaction_$2026_storage_ptr", + "typeString": "struct MultiSendStruct.Transaction storage pointer" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2048, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2045, + "name": "transactions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2029, + "src": "753:12:10", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Transaction_$2026_memory_$dyn_memory_ptr", + "typeString": "struct MultiSendStruct.Transaction memory[] memory" + } + }, + "id": 2047, + "indexExpression": { + "argumentTypes": null, + "id": 2046, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2033, + "src": "766:1:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "753:15:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Transaction_$2026_memory", + "typeString": "struct MultiSendStruct.Transaction memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "720:48:10" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2051, + "name": "transaction", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2044, + "src": "802:11:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Transaction_$2026_memory_ptr", + "typeString": "struct MultiSendStruct.Transaction memory" + } + }, + "id": 2052, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "to", + "nodeType": "MemberAccess", + "referencedDeclaration": 2021, + "src": "802:14:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2053, + "name": "transaction", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2044, + "src": "818:11:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Transaction_$2026_memory_ptr", + "typeString": "struct MultiSendStruct.Transaction memory" + } + }, + "id": 2054, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": 2023, + "src": "818:17:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2055, + "name": "transaction", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2044, + "src": "837:11:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Transaction_$2026_memory_ptr", + "typeString": "struct MultiSendStruct.Transaction memory" + } + }, + "id": 2056, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "data", + "nodeType": "MemberAccess", + "referencedDeclaration": 2025, + "src": "837:16:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory", + "typeString": "bytes memory" + } + ], + "id": 2050, + "name": "executeCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2076, + "src": "790:11:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$", + "typeString": "function (address,uint256,bytes memory) returns (bool)" + } + }, + "id": 2057, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "790:64:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2049, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "782:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2058, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "782:73:10", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2059, + "nodeType": "ExpressionStatement", + "src": "782:73:10" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2039, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2036, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2033, + "src": "676:1:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2037, + "name": "transactions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2029, + "src": "680:12:10", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Transaction_$2026_memory_$dyn_memory_ptr", + "typeString": "struct MultiSendStruct.Transaction memory[] memory" + } + }, + "id": 2038, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "680:19:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "676:23:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2061, + "initializationExpression": { + "assignments": [ + 2033 + ], + "declarations": [ + { + "constant": false, + "id": 2033, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 2063, + "src": "661:9:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2032, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "661:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2035, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 2034, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "673:1:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "661:13:10" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 2041, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "701:3:10", + "subExpression": { + "argumentTypes": null, + "id": 2040, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2033, + "src": "701:1:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2042, + "nodeType": "ExpressionStatement", + "src": "701:3:10" + }, + "nodeType": "ForStatement", + "src": "657:209:10" + } + ] + }, + "id": 2063, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "multiSend", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2030, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2029, + "name": "transactions", + "nodeType": "VariableDeclaration", + "scope": 2063, + "src": "600:26:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Transaction_$2026_memory_$dyn_memory_ptr", + "typeString": "struct MultiSendStruct.Transaction memory[] memory" + }, + "typeName": { + "baseType": { + "contractScope": null, + "id": 2027, + "name": "Transaction", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2026, + "src": "600:11:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Transaction_$2026_storage_ptr", + "typeString": "struct MultiSendStruct.Transaction storage pointer" + } + }, + "id": 2028, + "length": null, + "nodeType": "ArrayTypeName", + "src": "600:13:10", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Transaction_$2026_storage_$dyn_storage_ptr", + "typeString": "struct MultiSendStruct.Transaction storage ref[] storage pointer" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "599:28:10" + }, + "payable": false, + "returnParameters": { + "id": 2031, + "nodeType": "ParameterList", + "parameters": [], + "src": "647:0:10" + }, + "scope": 2077, + "src": "581:291:10", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2075, + "nodeType": "Block", + "src": "990:119:10", + "statements": [ + { + "externalReferences": [ + { + "data": { + "declaration": 2069, + "isOffset": false, + "isSlot": false, + "src": "1062:4:10", + "valueSize": 1 + } + }, + { + "data": { + "declaration": 2069, + "isOffset": false, + "isSlot": false, + "src": "1081:4:10", + "valueSize": 1 + } + }, + { + "success": { + "declaration": 2072, + "isOffset": false, + "isSlot": false, + "src": "1023:7:10", + "valueSize": 1 + } + }, + { + "to": { + "declaration": 2065, + "isOffset": false, + "isSlot": false, + "src": "1047:2:10", + "valueSize": 1 + } + }, + { + "value": { + "declaration": 2067, + "isOffset": false, + "isSlot": false, + "src": "1051:5:10", + "valueSize": 1 + } + } + ], + "id": 2074, + "nodeType": "InlineAssembly", + "operations": "{\n success := call(not(0), to, value, add(data, 0x20), mload(data), 0, 0)\n}", + "src": "1000:109:10" + } + ] + }, + "id": 2076, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "executeCall", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2070, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2065, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 2076, + "src": "899:10:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2064, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "899:7:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2067, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 2076, + "src": "911:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2066, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "911:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2069, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 2076, + "src": "926:10:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + "typeName": { + "id": 2068, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "926:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "898:39:10" + }, + "payable": false, + "returnParameters": { + "id": 2073, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2072, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 2076, + "src": "972:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2071, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "972:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "971:14:10" + }, + "scope": 2077, + "src": "878:231:10", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 2078, + "src": "339:772:10" + } + ], + "src": "0:1112:10" + }, + "compiler": { + "name": "solc", + "version": "0.4.19+commit.c4cbbb05.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "2.0.0", + "updatedAt": "2018-05-04T10:42:18.395Z" +} \ No newline at end of file diff --git a/safe-contracts/build/contracts/Proxy.json b/safe-contracts/build/contracts/Proxy.json new file mode 100644 index 0000000000..ddba9fa348 --- /dev/null +++ b/safe-contracts/build/contracts/Proxy.json @@ -0,0 +1,644 @@ +{ + "contractName": "Proxy", + "abi": [ + { + "inputs": [ + { + "name": "_masterCopy", + "type": "address" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "payable": true, + "stateMutability": "payable", + "type": "fallback" + } + ], + "bytecode": "0x6060604052341561000f57600080fd5b6040516020806101108339810160405280805190602001909190505060008173ffffffffffffffffffffffffffffffffffffffff161415151561005157600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506070806100a06000396000f300606060405273ffffffffffffffffffffffffffffffffffffffff60005416366000803760008036600084600019f43d6000803e8060008114603f573d6000f35b3d6000fd00a165627a7a72305820daad8330a1c74b6650ef400638bc3fcb59dcd0b0341bff33bbe640bd2ffdaff60029", + "deployedBytecode": "0x606060405273ffffffffffffffffffffffffffffffffffffffff60005416366000803760008036600084600019f43d6000803e8060008114603f573d6000f35b3d6000fd00a165627a7a72305820daad8330a1c74b6650ef400638bc3fcb59dcd0b0341bff33bbe640bd2ffdaff60029", + "sourceMap": "190:887:3:-;;;357:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;445:1;430:11;:16;;;;422:25;;;;;;;;470:11;457:10;;:24;;;;;;;;;;;;;;;;;;357:131;190:887;;;;;;", + "deployedSourceMap": "190:887:3:-;;;703:42;699:1;693:5;689:3;778:12;775:1;772;759:12;876:1;873;857:12;854:1;842:10;838:1;834:3;821:12;912:14;909:1;906;891:14;949:7;974:1;969:38;;;;1040:14;1037:1;1030:6;969:38;988:14;985:1;978:6", + "source": "pragma solidity 0.4.19;\n\n\n/// @title Proxy - Generic proxy contract allows to execute all transactions applying the code of a master contract.\n/// @author Stefan George - \ncontract Proxy {\n\n address masterCopy;\n\n /// @dev Constructor function sets address of master copy contract.\n /// @param _masterCopy Master copy address.\n function Proxy(address _masterCopy)\n public\n {\n require(_masterCopy != 0);\n masterCopy = _masterCopy;\n }\n\n /// @dev Fallback function forwards all transactions and returns all received return data.\n function ()\n external\n payable\n {\n assembly {\n let masterCopy := and(sload(0), 0xffffffffffffffffffffffffffffffffffffffff)\n calldatacopy(0, 0, calldatasize())\n let success := delegatecall(not(0), masterCopy, 0, calldatasize(), 0, 0)\n returndatacopy(0, 0, returndatasize())\n switch success\n case 0 { revert(0, returndatasize()) }\n default { return(0, returndatasize()) }\n }\n }\n}\n", + "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Proxy.sol", + "ast": { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Proxy.sol", + "exportedSymbols": { + "Proxy": [ + 1046 + ] + }, + "id": 1047, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1022, + "literals": [ + "solidity", + "0.4", + ".19" + ], + "nodeType": "PragmaDirective", + "src": "0:23:3" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": "@title Proxy - Generic proxy contract allows to execute all transactions applying the code of a master contract.\n @author Stefan George - ", + "fullyImplemented": true, + "id": 1046, + "linearizedBaseContracts": [ + 1046 + ], + "name": "Proxy", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 1024, + "name": "masterCopy", + "nodeType": "VariableDeclaration", + "scope": 1046, + "src": "212:18:3", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1023, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "212:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "body": { + "id": 1039, + "nodeType": "Block", + "src": "412:76:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1032, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1030, + "name": "_masterCopy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1026, + "src": "430:11:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1031, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "445:1:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "430:16:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1029, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "422:7:3", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1033, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "422:25:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1034, + "nodeType": "ExpressionStatement", + "src": "422:25:3" + }, + { + "expression": { + "argumentTypes": null, + "id": 1037, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1035, + "name": "masterCopy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1024, + "src": "457:10:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1036, + "name": "_masterCopy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1026, + "src": "470:11:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "457:24:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1038, + "nodeType": "ExpressionStatement", + "src": "457:24:3" + } + ] + }, + "id": 1040, + "implemented": true, + "isConstructor": true, + "isDeclaredConst": false, + "modifiers": [], + "name": "Proxy", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1027, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1026, + "name": "_masterCopy", + "nodeType": "VariableDeclaration", + "scope": 1040, + "src": "372:19:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1025, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "372:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "371:21:3" + }, + "payable": false, + "returnParameters": { + "id": 1028, + "nodeType": "ParameterList", + "parameters": [], + "src": "412:0:3" + }, + "scope": 1046, + "src": "357:131:3", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1044, + "nodeType": "Block", + "src": "638:437:3", + "statements": [ + { + "externalReferences": [], + "id": 1043, + "nodeType": "InlineAssembly", + "operations": "{\n let masterCopy := and(sload(0), 0xffffffffffffffffffffffffffffffffffffffff)\n calldatacopy(0, 0, calldatasize())\n let success := delegatecall(not(0), masterCopy, 0, calldatasize(), 0, 0)\n returndatacopy(0, 0, returndatasize())\n switch success\n case 0 {\n revert(0, returndatasize())\n }\n default {\n return(0, returndatasize())\n }\n}", + "src": "648:427:3" + } + ] + }, + "id": 1045, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1041, + "nodeType": "ParameterList", + "parameters": [], + "src": "598:2:3" + }, + "payable": true, + "returnParameters": { + "id": 1042, + "nodeType": "ParameterList", + "parameters": [], + "src": "638:0:3" + }, + "scope": 1046, + "src": "589:486:3", + "stateMutability": "payable", + "superFunction": null, + "visibility": "external" + } + ], + "scope": 1047, + "src": "190:887:3" + } + ], + "src": "0:1078:3" + }, + "legacyAST": { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Proxy.sol", + "exportedSymbols": { + "Proxy": [ + 1046 + ] + }, + "id": 1047, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1022, + "literals": [ + "solidity", + "0.4", + ".19" + ], + "nodeType": "PragmaDirective", + "src": "0:23:3" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": "@title Proxy - Generic proxy contract allows to execute all transactions applying the code of a master contract.\n @author Stefan George - ", + "fullyImplemented": true, + "id": 1046, + "linearizedBaseContracts": [ + 1046 + ], + "name": "Proxy", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 1024, + "name": "masterCopy", + "nodeType": "VariableDeclaration", + "scope": 1046, + "src": "212:18:3", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1023, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "212:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "body": { + "id": 1039, + "nodeType": "Block", + "src": "412:76:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1032, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1030, + "name": "_masterCopy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1026, + "src": "430:11:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1031, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "445:1:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "430:16:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1029, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "422:7:3", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1033, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "422:25:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1034, + "nodeType": "ExpressionStatement", + "src": "422:25:3" + }, + { + "expression": { + "argumentTypes": null, + "id": 1037, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1035, + "name": "masterCopy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1024, + "src": "457:10:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1036, + "name": "_masterCopy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1026, + "src": "470:11:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "457:24:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1038, + "nodeType": "ExpressionStatement", + "src": "457:24:3" + } + ] + }, + "id": 1040, + "implemented": true, + "isConstructor": true, + "isDeclaredConst": false, + "modifiers": [], + "name": "Proxy", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1027, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1026, + "name": "_masterCopy", + "nodeType": "VariableDeclaration", + "scope": 1040, + "src": "372:19:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1025, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "372:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "371:21:3" + }, + "payable": false, + "returnParameters": { + "id": 1028, + "nodeType": "ParameterList", + "parameters": [], + "src": "412:0:3" + }, + "scope": 1046, + "src": "357:131:3", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1044, + "nodeType": "Block", + "src": "638:437:3", + "statements": [ + { + "externalReferences": [], + "id": 1043, + "nodeType": "InlineAssembly", + "operations": "{\n let masterCopy := and(sload(0), 0xffffffffffffffffffffffffffffffffffffffff)\n calldatacopy(0, 0, calldatasize())\n let success := delegatecall(not(0), masterCopy, 0, calldatasize(), 0, 0)\n returndatacopy(0, 0, returndatasize())\n switch success\n case 0 {\n revert(0, returndatasize())\n }\n default {\n return(0, returndatasize())\n }\n}", + "src": "648:427:3" + } + ] + }, + "id": 1045, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1041, + "nodeType": "ParameterList", + "parameters": [], + "src": "598:2:3" + }, + "payable": true, + "returnParameters": { + "id": 1042, + "nodeType": "ParameterList", + "parameters": [], + "src": "638:0:3" + }, + "scope": 1046, + "src": "589:486:3", + "stateMutability": "payable", + "superFunction": null, + "visibility": "external" + } + ], + "scope": 1047, + "src": "190:887:3" + } + ], + "src": "0:1078:3" + }, + "compiler": { + "name": "solc", + "version": "0.4.19+commit.c4cbbb05.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "2.0.0", + "updatedAt": "2018-05-04T10:42:18.368Z" +} \ No newline at end of file diff --git a/safe-contracts/build/contracts/ProxyFactory.json b/safe-contracts/build/contracts/ProxyFactory.json new file mode 100644 index 0000000000..73f6e596b6 --- /dev/null +++ b/safe-contracts/build/contracts/ProxyFactory.json @@ -0,0 +1,1008 @@ +{ + "contractName": "ProxyFactory", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "proxy", + "type": "address" + } + ], + "name": "ProxyCreation", + "type": "event" + }, + { + "constant": false, + "inputs": [ + { + "name": "masterCopy", + "type": "address" + }, + { + "name": "data", + "type": "bytes" + } + ], + "name": "createProxy", + "outputs": [ + { + "name": "proxy", + "type": "address" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x6060604052341561000f57600080fd5b61033e8061001e6000396000f300606060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806361b69abd14610046575b600080fd5b341561005157600080fd5b6100c0600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050610102565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008261010d6101f2565b808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f080151561015957600080fd5b905060008251111561018957600080835160208501600085600019f16000811461018257610187565b600080fd5b505b7fa38789425dbeee0239e16ff2d2567e31720127fbc6430758c1a4efc6aef29f8081604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a192915050565b604051610110806102038339019056006060604052341561000f57600080fd5b6040516020806101108339810160405280805190602001909190505060008173ffffffffffffffffffffffffffffffffffffffff161415151561005157600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506070806100a06000396000f300606060405273ffffffffffffffffffffffffffffffffffffffff60005416366000803760008036600084600019f43d6000803e8060008114603f573d6000f35b3d6000fd00a165627a7a72305820daad8330a1c74b6650ef400638bc3fcb59dcd0b0341bff33bbe640bd2ffdaff60029a165627a7a7230582016c17d280f9b2d074d821cd6f6e791d8a9100e0da9af1a0cc86af635d90935070029", + "deployedBytecode": "0x606060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806361b69abd14610046575b600080fd5b341561005157600080fd5b6100c0600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050610102565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008261010d6101f2565b808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f080151561015957600080fd5b905060008251111561018957600080835160208501600085600019f16000811461018257610187565b600080fd5b505b7fa38789425dbeee0239e16ff2d2567e31720127fbc6430758c1a4efc6aef29f8081604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a192915050565b604051610110806102038339019056006060604052341561000f57600080fd5b6040516020806101108339810160405280805190602001909190505060008173ffffffffffffffffffffffffffffffffffffffff161415151561005157600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506070806100a06000396000f300606060405273ffffffffffffffffffffffffffffffffffffffff60005416366000803760008036600084600019f43d6000803e8060008114603f573d6000f35b3d6000fd00a165627a7a72305820daad8330a1c74b6650ef400638bc3fcb59dcd0b0341bff33bbe640bd2ffdaff60029a165627a7a7230582016c17d280f9b2d074d821cd6f6e791d8a9100e0da9af1a0cc86af635d90935070029", + "sourceMap": "225:675:4:-;;;;;;;;;;;;;;;;;", + "deployedSourceMap": "225:675:4:-;;;;;;;;;;;;;;;;;;;;;;;;532:366;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;617:11;662:10;652:21;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;644:29;;701:1;687:4;:11;:15;683:201;;;806:1;803;796:4;790:5;783:4;777;773:3;770:1;763:5;759:1;755:3;750:4;830:1;825:23;;;;743:105;;825:23;844:1;841;834:6;743:105;;725:137;871:20;885:5;871:20;;;;;;;;;;;;;;;;;;;;;;532:366;;;;:::o;225:675::-;;;;;;;;;;:::o", + "source": "pragma solidity 0.4.19;\nimport \"./Proxy.sol\";\n\n\n/// @title Proxy Factory - Allows to create new proxy contact and execute a message call to the new proxy within one transaction.\n/// @author Stefan George - \ncontract ProxyFactory {\n\n event ProxyCreation(Proxy proxy);\n\n /// @dev Allows to create new proxy contact and execute a message call to the new proxy within one transaction.\n /// @param masterCopy Address of master copy.\n /// @param data Payload for message call sent to new proxy contract.\n function createProxy(address masterCopy, bytes data)\n public\n returns (Proxy proxy)\n {\n proxy = new Proxy(masterCopy);\n if (data.length > 0)\n assembly {\n switch call(not(0), proxy, 0, add(data, 0x20), mload(data), 0, 0)\n case 0 { revert(0, 0) }\n }\n ProxyCreation(proxy);\n }\n}\n", + "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ProxyFactory.sol", + "ast": { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ProxyFactory.sol", + "exportedSymbols": { + "ProxyFactory": [ + 1081 + ] + }, + "id": 1082, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1048, + "literals": [ + "solidity", + "0.4", + ".19" + ], + "nodeType": "PragmaDirective", + "src": "0:23:4" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Proxy.sol", + "file": "./Proxy.sol", + "id": 1049, + "nodeType": "ImportDirective", + "scope": 1082, + "sourceUnit": 1047, + "src": "24:21:4", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [], + "contractDependencies": [ + 1046 + ], + "contractKind": "contract", + "documentation": "@title Proxy Factory - Allows to create new proxy contact and execute a message call to the new proxy within one transaction.\n @author Stefan George - ", + "fullyImplemented": true, + "id": 1081, + "linearizedBaseContracts": [ + 1081 + ], + "name": "ProxyFactory", + "nodeType": "ContractDefinition", + "nodes": [ + { + "anonymous": false, + "id": 1053, + "name": "ProxyCreation", + "nodeType": "EventDefinition", + "parameters": { + "id": 1052, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1051, + "indexed": false, + "name": "proxy", + "nodeType": "VariableDeclaration", + "scope": 1053, + "src": "274:11:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Proxy_$1046", + "typeString": "contract Proxy" + }, + "typeName": { + "contractScope": null, + "id": 1050, + "name": "Proxy", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1046, + "src": "274:5:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Proxy_$1046", + "typeString": "contract Proxy" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "273:13:4" + }, + "src": "254:33:4" + }, + { + "body": { + "id": 1079, + "nodeType": "Block", + "src": "634:264:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1067, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1062, + "name": "proxy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1060, + "src": "644:5:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Proxy_$1046", + "typeString": "contract Proxy" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1065, + "name": "masterCopy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1055, + "src": "662:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1064, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "652:9:4", + "typeDescriptions": { + "typeIdentifier": "t_function_creation_nonpayable$_t_address_$returns$_t_contract$_Proxy_$1046_$", + "typeString": "function (address) returns (contract Proxy)" + }, + "typeName": { + "contractScope": null, + "id": 1063, + "name": "Proxy", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1046, + "src": "656:5:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Proxy_$1046", + "typeString": "contract Proxy" + } + } + }, + "id": 1066, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "652:21:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Proxy_$1046", + "typeString": "contract Proxy" + } + }, + "src": "644:29:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Proxy_$1046", + "typeString": "contract Proxy" + } + }, + "id": 1068, + "nodeType": "ExpressionStatement", + "src": "644:29:4" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1072, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1069, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1057, + "src": "687:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 1070, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "687:11:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1071, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "701:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "687:15:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1074, + "nodeType": "IfStatement", + "src": "683:201:4", + "trueBody": { + "externalReferences": [ + { + "data": { + "declaration": 1057, + "isOffset": false, + "isSlot": false, + "src": "777:4:4", + "valueSize": 1 + } + }, + { + "data": { + "declaration": 1057, + "isOffset": false, + "isSlot": false, + "src": "796:4:4", + "valueSize": 1 + } + }, + { + "proxy": { + "declaration": 1060, + "isOffset": false, + "isSlot": false, + "src": "763:5:4", + "valueSize": 1 + } + } + ], + "id": 1073, + "nodeType": "InlineAssembly", + "operations": "{\n switch call(not(0), proxy, 0, add(data, 0x20), mload(data), 0, 0)\n case 0 {\n revert(0, 0)\n }\n}", + "src": "716:168:4" + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1076, + "name": "proxy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1060, + "src": "885:5:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Proxy_$1046", + "typeString": "contract Proxy" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Proxy_$1046", + "typeString": "contract Proxy" + } + ], + "id": 1075, + "name": "ProxyCreation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1053, + "src": "871:13:4", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_contract$_Proxy_$1046_$returns$__$", + "typeString": "function (contract Proxy)" + } + }, + "id": 1077, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "871:20:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1078, + "nodeType": "ExpressionStatement", + "src": "871:20:4" + } + ] + }, + "id": 1080, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "createProxy", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1058, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1055, + "name": "masterCopy", + "nodeType": "VariableDeclaration", + "scope": 1080, + "src": "553:18:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1054, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "553:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1057, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 1080, + "src": "573:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + "typeName": { + "id": 1056, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "573:5:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "552:32:4" + }, + "payable": false, + "returnParameters": { + "id": 1061, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1060, + "name": "proxy", + "nodeType": "VariableDeclaration", + "scope": 1080, + "src": "617:11:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Proxy_$1046", + "typeString": "contract Proxy" + }, + "typeName": { + "contractScope": null, + "id": 1059, + "name": "Proxy", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1046, + "src": "617:5:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Proxy_$1046", + "typeString": "contract Proxy" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "616:13:4" + }, + "scope": 1081, + "src": "532:366:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 1082, + "src": "225:675:4" + } + ], + "src": "0:901:4" + }, + "legacyAST": { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ProxyFactory.sol", + "exportedSymbols": { + "ProxyFactory": [ + 1081 + ] + }, + "id": 1082, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1048, + "literals": [ + "solidity", + "0.4", + ".19" + ], + "nodeType": "PragmaDirective", + "src": "0:23:4" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Proxy.sol", + "file": "./Proxy.sol", + "id": 1049, + "nodeType": "ImportDirective", + "scope": 1082, + "sourceUnit": 1047, + "src": "24:21:4", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [], + "contractDependencies": [ + 1046 + ], + "contractKind": "contract", + "documentation": "@title Proxy Factory - Allows to create new proxy contact and execute a message call to the new proxy within one transaction.\n @author Stefan George - ", + "fullyImplemented": true, + "id": 1081, + "linearizedBaseContracts": [ + 1081 + ], + "name": "ProxyFactory", + "nodeType": "ContractDefinition", + "nodes": [ + { + "anonymous": false, + "id": 1053, + "name": "ProxyCreation", + "nodeType": "EventDefinition", + "parameters": { + "id": 1052, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1051, + "indexed": false, + "name": "proxy", + "nodeType": "VariableDeclaration", + "scope": 1053, + "src": "274:11:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Proxy_$1046", + "typeString": "contract Proxy" + }, + "typeName": { + "contractScope": null, + "id": 1050, + "name": "Proxy", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1046, + "src": "274:5:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Proxy_$1046", + "typeString": "contract Proxy" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "273:13:4" + }, + "src": "254:33:4" + }, + { + "body": { + "id": 1079, + "nodeType": "Block", + "src": "634:264:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1067, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1062, + "name": "proxy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1060, + "src": "644:5:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Proxy_$1046", + "typeString": "contract Proxy" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1065, + "name": "masterCopy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1055, + "src": "662:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1064, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "652:9:4", + "typeDescriptions": { + "typeIdentifier": "t_function_creation_nonpayable$_t_address_$returns$_t_contract$_Proxy_$1046_$", + "typeString": "function (address) returns (contract Proxy)" + }, + "typeName": { + "contractScope": null, + "id": 1063, + "name": "Proxy", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1046, + "src": "656:5:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Proxy_$1046", + "typeString": "contract Proxy" + } + } + }, + "id": 1066, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "652:21:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Proxy_$1046", + "typeString": "contract Proxy" + } + }, + "src": "644:29:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Proxy_$1046", + "typeString": "contract Proxy" + } + }, + "id": 1068, + "nodeType": "ExpressionStatement", + "src": "644:29:4" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1072, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1069, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1057, + "src": "687:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 1070, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "687:11:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1071, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "701:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "687:15:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1074, + "nodeType": "IfStatement", + "src": "683:201:4", + "trueBody": { + "externalReferences": [ + { + "data": { + "declaration": 1057, + "isOffset": false, + "isSlot": false, + "src": "777:4:4", + "valueSize": 1 + } + }, + { + "data": { + "declaration": 1057, + "isOffset": false, + "isSlot": false, + "src": "796:4:4", + "valueSize": 1 + } + }, + { + "proxy": { + "declaration": 1060, + "isOffset": false, + "isSlot": false, + "src": "763:5:4", + "valueSize": 1 + } + } + ], + "id": 1073, + "nodeType": "InlineAssembly", + "operations": "{\n switch call(not(0), proxy, 0, add(data, 0x20), mload(data), 0, 0)\n case 0 {\n revert(0, 0)\n }\n}", + "src": "716:168:4" + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1076, + "name": "proxy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1060, + "src": "885:5:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Proxy_$1046", + "typeString": "contract Proxy" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Proxy_$1046", + "typeString": "contract Proxy" + } + ], + "id": 1075, + "name": "ProxyCreation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1053, + "src": "871:13:4", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_contract$_Proxy_$1046_$returns$__$", + "typeString": "function (contract Proxy)" + } + }, + "id": 1077, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "871:20:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1078, + "nodeType": "ExpressionStatement", + "src": "871:20:4" + } + ] + }, + "id": 1080, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "createProxy", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1058, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1055, + "name": "masterCopy", + "nodeType": "VariableDeclaration", + "scope": 1080, + "src": "553:18:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1054, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "553:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1057, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 1080, + "src": "573:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + "typeName": { + "id": 1056, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "573:5:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "552:32:4" + }, + "payable": false, + "returnParameters": { + "id": 1061, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1060, + "name": "proxy", + "nodeType": "VariableDeclaration", + "scope": 1080, + "src": "617:11:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Proxy_$1046", + "typeString": "contract Proxy" + }, + "typeName": { + "contractScope": null, + "id": 1059, + "name": "Proxy", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1046, + "src": "617:5:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Proxy_$1046", + "typeString": "contract Proxy" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "616:13:4" + }, + "scope": 1081, + "src": "532:366:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 1082, + "src": "225:675:4" + } + ], + "src": "0:901:4" + }, + "compiler": { + "name": "solc", + "version": "0.4.19+commit.c4cbbb05.Emscripten.clang" + }, + "networks": { + "4": { + "events": {}, + "links": {}, + "address": "0x28442b8a4c6ffbe02fa75a1d1524b7c38ef79194", + "transactionHash": "0xc0e9f6268bb1b4e75e1683d0d93175523c18a23ef01bf660f6332d54ca03ad92" + }, + "42": { + "events": {}, + "links": {}, + "address": "0x53294c9c8def7e613c5bc68ac232125c0a60bef7", + "transactionHash": "0x641afc57ac89b6f66587df51dda6b602bf35fc0feef170b48e8a047729eb8784" + }, + "1525342778744": { + "events": {}, + "links": {}, + "address": "0xba6fb7147e7586b483610639adf7ad72ca52bb0f", + "transactionHash": "0x9eef5bbd728a1a1add6215268dd534fda491d32af43574c029fefa98eb798e03" + } + }, + "schemaVersion": "2.0.0", + "updatedAt": "2018-05-04T13:47:03.959Z" +} \ No newline at end of file diff --git a/safe-contracts/build/contracts/SocialRecoveryExtension.json b/safe-contracts/build/contracts/SocialRecoveryExtension.json new file mode 100644 index 0000000000..a24005b1d3 --- /dev/null +++ b/safe-contracts/build/contracts/SocialRecoveryExtension.json @@ -0,0 +1,9115 @@ +{ + "contractName": "SocialRecoveryExtension", + "abi": [ + { + "constant": true, + "inputs": [], + "name": "REPLACE_OWNER_FUNCTION_IDENTIFIER", + "outputs": [ + { + "name": "", + "type": "bytes4" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "threshold", + "outputs": [ + { + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "address" + } + ], + "name": "isFriend", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "NAME", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "gnosisSafe", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "bytes32" + }, + { + "name": "", + "type": "address" + } + ], + "name": "isConfirmed", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "uint256" + } + ], + "name": "friends", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "bytes32" + } + ], + "name": "isExecuted", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "VERSION", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "name": "_friends", + "type": "address[]" + }, + { + "name": "_threshold", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "constant": false, + "inputs": [ + { + "name": "_friends", + "type": "address[]" + }, + { + "name": "_threshold", + "type": "uint8" + } + ], + "name": "setup", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_masterCopy", + "type": "address" + } + ], + "name": "changeMasterCopy", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "dataHash", + "type": "bytes32" + } + ], + "name": "confirmTransaction", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "sender", + "type": "address" + }, + { + "name": "to", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + }, + { + "name": "data", + "type": "bytes" + }, + { + "name": "operation", + "type": "uint8" + } + ], + "name": "isExecutable", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "dataHash", + "type": "bytes32" + } + ], + "name": "isConfirmedByRequiredFriends", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "data", + "type": "bytes" + } + ], + "name": "getDataHash", + "outputs": [ + { + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x606060405234156200001057600080fd5b6040516200140738038062001407833981016040528080518201919060200180519060200190919050506200005a82826200006264010000000002620006a2176401000000009004565b505062000360565b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515620000ab57600080fd5b82518260ff1611151515620000bf57600080fd5b60028260ff1610151515620000d357600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600090505b82518110156200025257600083828151811015156200013457fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff16141515156200016257600080fd5b6003600084838151811015156200017557fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515620001d457600080fd5b6001600360008584815181101515620001e957fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808060010191505062000119565b82600290805190602001906200026a9291906200028b565b5081600160146101000a81548160ff021916908360ff160217905550505050565b82805482825590600052602060002090810192821562000307579160200282015b82811115620003065782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190620002ac565b5b5090506200031691906200031a565b5090565b6200035d91905b808211156200035957600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555060010162000321565b5090565b90565b61109780620003706000396000f3006060604052600436106100db576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806336749c1a146100e05780633cf5b3091461014757806342cde4e8146101ad57806368125a1b146101dc57806379716e431461022d5780637de7edef146102545780639ca89d0d1461028d578063a3f4df7e146102cc578063a84173ae1461035a578063ae68b056146103af578063b79ffaff14610428578063cde09ca914610486578063ce1468281461054e578063e52cb36a146105b1578063ffa1ad74146105f0575b600080fd5b34156100eb57600080fd5b6100f361067e565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b341561015257600080fd5b6101ab60048080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190803560ff169060200190919050506106a2565b005b34156101b857600080fd5b6101c06108bf565b604051808260ff1660ff16815260200191505060405180910390f35b34156101e757600080fd5b610213600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506108d2565b604051808215151515815260200191505060405180910390f35b341561023857600080fd5b6102526004808035600019169060200190919050506108f2565b005b341561025f57600080fd5b61028b600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506109f3565b005b341561029857600080fd5b6102b2600480803560001916906020019091905050610ab8565b604051808215151515815260200191505060405180910390f35b34156102d757600080fd5b6102df610bb8565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561031f578082015181840152602081019050610304565b50505050905090810190601f16801561034c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561036557600080fd5b61036d610bf1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156103ba57600080fd5b61040a600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050610c17565b60405180826000191660001916815260200191505060405180910390f35b341561043357600080fd5b61046c60048080356000191690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c83565b604051808215151515815260200191505060405180910390f35b341561049157600080fd5b610534600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803560ff16906020019091905050610cb2565b604051808215151515815260200191505060405180910390f35b341561055957600080fd5b61056f6004808035906020019091905050610f06565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156105bc57600080fd5b6105d6600480803560001916906020019091905050610f45565b604051808215151515815260200191505060405180910390f35b34156105fb57600080fd5b610603610f65565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610643578082015181840152602081019050610628565b50505050905090810190601f1680156106705780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b7f54e99c6e0000000000000000000000000000000000000000000000000000000081565b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156106ea57600080fd5b82518260ff16111515156106fd57600080fd5b60028260ff161015151561071057600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600090505b8251811015610888576000838281518110151561076f57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff161415151561079c57600080fd5b6003600084838151811015156107ae57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561080c57600080fd5b600160036000858481518110151561082057fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080600101915050610756565b826002908051906020019061089e929190610f9e565b5081600160146101000a81548160ff021916908360ff160217905550505050565b600160149054906101000a900460ff1681565b60036020528060005260406000206000915054906101000a900460ff1681565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561094a57600080fd5b60046000826000191660001916815260200190815260200160002060009054906101000a900460ff1615151561097f57600080fd5b600160056000836000191660001916815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610a4f57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610a7557600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060008090505b600280549050811015610bac576005600085600019166000191681526020019081526020016000206000600283815481101515610afa57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610b7c5781806001019250505b600160149054906101000a900460ff1660ff16821415610b9f5760019250610bb1565b8080600101915050610ac1565b600092505b5050919050565b6040805190810160405280601981526020017f536f6369616c205265636f7665727920457874656e73696f6e0000000000000081525081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000816040518082805190602001908083835b602083101515610c4f5780518252602082019150602081019050602083039250610c2a565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209050919050565b60056020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b6000806000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610d1357600080fd5b600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610d6b57600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16141515610dc757600080fd5b600086141515610dd657600080fd5b60006002811115610de357fe5b846002811115610def57fe5b141515610dfb57600080fd5b602085015191507f54e99c6e000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141515610e6e57600080fd5b610e7785610c17565b905060046000826000191660001916815260200190815260200160002060009054906101000a900460ff16158015610eb45750610eb381610ab8565b5b15610ef657600160046000836000191660001916815260200190815260200160002060006101000a81548160ff02191690831515021790555060019250610efb565b600092505b505095945050505050565b600281815481101515610f1557fe5b90600052602060002090016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60046020528060005260406000206000915054906101000a900460ff1681565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b828054828255906000526020600020908101928215611017579160200282015b828111156110165782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190610fbe565b5b5090506110249190611028565b5090565b61106891905b8082111561106457600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555060010161102e565b5090565b905600a165627a7a72305820f9a7137ea400c3cdaa59bb893ba2ca5055de1db780c2f3b4099da379d1b4ee460029", + "deployedBytecode": "0x6060604052600436106100db576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806336749c1a146100e05780633cf5b3091461014757806342cde4e8146101ad57806368125a1b146101dc57806379716e431461022d5780637de7edef146102545780639ca89d0d1461028d578063a3f4df7e146102cc578063a84173ae1461035a578063ae68b056146103af578063b79ffaff14610428578063cde09ca914610486578063ce1468281461054e578063e52cb36a146105b1578063ffa1ad74146105f0575b600080fd5b34156100eb57600080fd5b6100f361067e565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b341561015257600080fd5b6101ab60048080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190803560ff169060200190919050506106a2565b005b34156101b857600080fd5b6101c06108bf565b604051808260ff1660ff16815260200191505060405180910390f35b34156101e757600080fd5b610213600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506108d2565b604051808215151515815260200191505060405180910390f35b341561023857600080fd5b6102526004808035600019169060200190919050506108f2565b005b341561025f57600080fd5b61028b600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506109f3565b005b341561029857600080fd5b6102b2600480803560001916906020019091905050610ab8565b604051808215151515815260200191505060405180910390f35b34156102d757600080fd5b6102df610bb8565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561031f578082015181840152602081019050610304565b50505050905090810190601f16801561034c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561036557600080fd5b61036d610bf1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156103ba57600080fd5b61040a600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050610c17565b60405180826000191660001916815260200191505060405180910390f35b341561043357600080fd5b61046c60048080356000191690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c83565b604051808215151515815260200191505060405180910390f35b341561049157600080fd5b610534600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803560ff16906020019091905050610cb2565b604051808215151515815260200191505060405180910390f35b341561055957600080fd5b61056f6004808035906020019091905050610f06565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156105bc57600080fd5b6105d6600480803560001916906020019091905050610f45565b604051808215151515815260200191505060405180910390f35b34156105fb57600080fd5b610603610f65565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610643578082015181840152602081019050610628565b50505050905090810190601f1680156106705780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b7f54e99c6e0000000000000000000000000000000000000000000000000000000081565b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156106ea57600080fd5b82518260ff16111515156106fd57600080fd5b60028260ff161015151561071057600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600090505b8251811015610888576000838281518110151561076f57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff161415151561079c57600080fd5b6003600084838151811015156107ae57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561080c57600080fd5b600160036000858481518110151561082057fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080600101915050610756565b826002908051906020019061089e929190610f9e565b5081600160146101000a81548160ff021916908360ff160217905550505050565b600160149054906101000a900460ff1681565b60036020528060005260406000206000915054906101000a900460ff1681565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561094a57600080fd5b60046000826000191660001916815260200190815260200160002060009054906101000a900460ff1615151561097f57600080fd5b600160056000836000191660001916815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610a4f57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610a7557600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060008090505b600280549050811015610bac576005600085600019166000191681526020019081526020016000206000600283815481101515610afa57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610b7c5781806001019250505b600160149054906101000a900460ff1660ff16821415610b9f5760019250610bb1565b8080600101915050610ac1565b600092505b5050919050565b6040805190810160405280601981526020017f536f6369616c205265636f7665727920457874656e73696f6e0000000000000081525081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000816040518082805190602001908083835b602083101515610c4f5780518252602082019150602081019050602083039250610c2a565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209050919050565b60056020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b6000806000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610d1357600080fd5b600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610d6b57600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16141515610dc757600080fd5b600086141515610dd657600080fd5b60006002811115610de357fe5b846002811115610def57fe5b141515610dfb57600080fd5b602085015191507f54e99c6e000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141515610e6e57600080fd5b610e7785610c17565b905060046000826000191660001916815260200190815260200160002060009054906101000a900460ff16158015610eb45750610eb381610ab8565b5b15610ef657600160046000836000191660001916815260200190815260200160002060006101000a81548160ff02191690831515021790555060019250610efb565b600092505b505095945050505050565b600281815481101515610f1557fe5b90600052602060002090016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60046020528060005260406000206000915054906101000a900460ff1681565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b828054828255906000526020600020908101928215611017579160200282015b828111156110165782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190610fbe565b5b5090506110249190611028565b5090565b61106891905b8082111561106457600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555060010161102e565b5090565b905600a165627a7a72305820f9a7137ea400c3cdaa59bb893ba2ca5055de1db780c2f3b4099da379d1b4ee460029", + "sourceMap": "257:4890:6:-;;;1386:134;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1486:27;1492:8;1502:10;1486:5;;;;;:27;;;:::i;:::-;1386:134;;257:4890;;1717:669;2142:9;1966:1;1951:10;;;;;;;;;;;1943:24;;;1935:33;;;;;;;;2000:8;:15;1986:10;:29;;;;1978:38;;;;;;;;2048:1;2034:10;:15;;;;2026:24;;;;;;;;2084:10;2060;;:35;;;;;;;;;;;;;;;;;;2154:1;2142:13;;2137:183;2161:8;:15;2157:1;:19;2137:183;;;2220:1;2205:8;2214:1;2205:11;;;;;;;;;;;;;;;;;;:16;;;;2197:25;;;;;;;;2245:8;:21;2254:8;2263:1;2254:11;;;;;;;;;;;;;;;;;;2245:21;;;;;;;;;;;;;;;;;;;;;;;;;2244:22;2236:31;;;;;;;;2305:4;2281:8;:21;2290:8;2299:1;2290:11;;;;;;;;;;;;;;;;;;2281:21;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;2178:3;;;;;;;2137:183;;;2339:8;2329:7;:18;;;;;;;;;;;;:::i;:::-;;2369:10;2357:9;;:22;;;;;;;;;;;;;;;;;;1717:669;;;:::o;257:4890::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;", + "deployedSourceMap": "257:4890:6:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;419:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1717:669;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;572:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;695:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2835:181;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2532:190;;;;;;;;;;;;;;;;;;;;;;;;;;;;4481:405;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;310:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;538:28:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5015:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;939:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3404:916;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;600:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;804:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;373:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;419:72:6;;;:::o;1717:669::-;2142:9;1966:1;1951:10;;;;;;;;;;;1943:24;;;1935:33;;;;;;;;2000:8;:15;1986:10;:29;;;;1978:38;;;;;;;;2048:1;2034:10;:15;;;;2026:24;;;;;;;;2084:10;2060;;:35;;;;;;;;;;;;;;;;;;2154:1;2142:13;;2137:183;2161:8;:15;2157:1;:19;2137:183;;;2220:1;2205:8;2214:1;2205:11;;;;;;;;;;;;;;;;;;:16;;;;2197:25;;;;;;;;2245:8;:21;2254:8;2263:1;2254:11;;;;;;;;;;;;;;;;;;2245:21;;;;;;;;;;;;;;;;;;;;;;;;;2244:22;2236:31;;;;;;;;2305:4;2281:8;:21;2290:8;2299:1;2290:11;;;;;;;;;;;;;;;;;;2281:21;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;2178:3;;;;;;;2137:183;;;2339:8;2329:7;:18;;;;;;;;;;;;:::i;:::-;;2369:10;2357:9;;:22;;;;;;;;;;;;;;;;;;1717:669;;;:::o;572:22::-;;;;;;;;;;;;;:::o;695:41::-;;;;;;;;;;;;;;;;;;;;;;:::o;2835:181::-;1153:8;:20;1162:10;1153:20;;;;;;;;;;;;;;;;;;;;;;;;;1145:29;;;;;;;;2938:10;:20;2949:8;2938:20;;;;;;;;;;;;;;;;;;;;;;;;;;;2937:21;2929:30;;;;;;;;3005:4;2969:11;:21;2981:8;2969:21;;;;;;;;;;;;;;;;;:33;2991:10;2969:33;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;2835:181;:::o;2532:190::-;1077:10;;;;;;;;;;;1055:33;;:10;:33;;;1047:42;;;;;;;;2679:1;2663:11;2655:25;;;;2647:34;;;;;;;;2704:11;2691:10;;:24;;;;;;;;;;;;;;;;;;2532:190;:::o;4481:405::-;4582:4;4602:25;4642:9;4654:1;4642:13;;4637:221;4661:7;:14;;;;4657:1;:18;4637:221;;;4700:11;:21;4712:8;4700:21;;;;;;;;;;;;;;;;;:33;4722:7;4730:1;4722:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;4700:33;;;;;;;;;;;;;;;;;;;;;;;;;4696:74;;;4751:19;;;;;;;4696:74;4809:9;;;;;;;;;;;4788:30;;:17;:30;4784:63;;;4843:4;4836:11;;;;4784:63;4677:3;;;;;;;4637:221;;;4874:5;4867:12;;4481:405;;;;;;:::o;310:57::-;;;;;;;;;;;;;;;;;;;;:::o;538:28::-;;;;;;;;;;;;;:::o;5015:130::-;5093:7;5133:4;5123:15;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;5116:22:6;;5015:130;;;:::o;939:65::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3404:916::-;3568:4;3890:25;4085:16;1077:10;;;;;;;;;;;1055:33;;:10;:33;;;1047:42;;;;;;;;3660:8;:16;3669:6;3660:16;;;;;;;;;;;;;;;;;;;;;;;;;3652:25;;;;;;;;3709:10;;;;;;;;;;;3695:25;;:2;:25;;;3687:34;;;;;;;;3748:1;3739:5;:10;3731:19;;;;;;;;3781:25;3768:38;;;;;;;;:9;:38;;;;;;;;;3760:47;;;;;;;;3986:4;3980;3976:3;3970:5;3948:44;;4041:33;4019:55;;;:18;:55;;;;4011:64;;;;;;;;4104:17;4116:4;4104:11;:17::i;:::-;4085:36;;4139:10;:20;4150:8;4139:20;;;;;;;;;;;;;;;;;;;;;;;;;;;4138:21;:75;;;;;4175:38;4204:8;4175:28;:38::i;:::-;4138:75;4131:161;;;4252:4;4229:10;:20;4240:8;4229:20;;;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;4277:4;4270:11;;;;4131:161;4308:5;4301:12;;1099:1;3404:916;;;;;;;;;:::o;600:24::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;804:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;373:40::-;;;;;;;;;;;;;;;;;;;;:::o;257:4890::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", + "source": "pragma solidity 0.4.19;\nimport \"../Extension.sol\";\nimport \"../GnosisSafe.sol\";\n\n\n/// @title Social Recovery Extension - Allows to replace an owner without Safe confirmations if friends approve the replacement.\n/// @author Stefan George - \ncontract SocialRecoveryExtension is Extension {\n\n string public constant NAME = \"Social Recovery Extension\";\n string public constant VERSION = \"0.0.1\";\n bytes4 public constant REPLACE_OWNER_FUNCTION_IDENTIFIER = hex\"54e99c6e\";\n\n SocialRecoveryExtension masterCopy;\n GnosisSafe public gnosisSafe;\n uint8 public threshold;\n address[] public friends;\n\n // isFriend mapping maps friend's address to friend status.\n mapping (address => bool) public isFriend;\n // isExecuted mapping maps data hash to execution status.\n mapping (bytes32 => bool) public isExecuted;\n // isConfirmed mapping maps data hash to friend's address to confirmation status.\n mapping (bytes32 => mapping (address => bool)) public isConfirmed;\n\n modifier onlyGnosisSafe() {\n require(msg.sender == address(gnosisSafe));\n _;\n }\n\n modifier onlyFriend() {\n require(isFriend[msg.sender]);\n _;\n }\n\n /// @dev Constructor function triggers setup function.\n /// @param _friends List of friends' addresses.\n /// @param _threshold Required number of friends to confirm replacement.\n function SocialRecoveryExtension(address[] _friends, uint8 _threshold)\n public\n {\n setup(_friends, _threshold);\n }\n\n /// @dev Setup function sets initial storage of contract.\n /// @param _friends List of friends' addresses.\n /// @param _threshold Required number of friends to confirm replacement.\n function setup(address[] _friends, uint8 _threshold)\n public\n {\n // gnosisSafe can only be 0 at initalization of contract.\n // Check ensures that setup function can only be called once.\n require(address(gnosisSafe) == 0);\n require(_threshold <= _friends.length);\n require(_threshold >= 2);\n gnosisSafe = GnosisSafe(msg.sender);\n // Set allowed friends.\n for (uint256 i = 0; i < _friends.length; i++) {\n require(_friends[i] != 0);\n require(!isFriend[_friends[i]]);\n isFriend[_friends[i]] = true;\n }\n friends = _friends;\n threshold = _threshold;\n }\n\n /// @dev Allows to upgrade the contract. This can only be done via a Safe transaction.\n /// @param _masterCopy New contract address.\n function changeMasterCopy(SocialRecoveryExtension _masterCopy)\n public\n onlyGnosisSafe\n {\n require(address(_masterCopy) != 0);\n masterCopy = _masterCopy;\n }\n\n /// @dev Allows a friend to confirm a Safe transaction.\n /// @param dataHash Safe transaction hash.\n function confirmTransaction(bytes32 dataHash)\n public\n onlyFriend\n {\n require(!isExecuted[dataHash]);\n isConfirmed[dataHash][msg.sender] = true;\n }\n\n /// @dev Returns if Safe transaction is a valid owner replacement transaction.\n /// @param sender Friend's address.\n /// @param to Gnosis Safe address.\n /// @param value No Ether should be send.\n /// @param data Encoded owner replacement transaction.\n /// @param operation Only Call operations are allowed.\n /// @return Returns if transaction can be executed.\n function isExecutable(address sender, address to, uint256 value, bytes data, GnosisSafe.Operation operation)\n public\n onlyGnosisSafe\n returns (bool)\n {\n // Only friends are allowed to execute the replacement.\n require(isFriend[sender]);\n require(to == address(gnosisSafe));\n require(value == 0);\n require(operation == GnosisSafe.Operation.Call);\n // Validate that transaction is a owner replacement transaction.\n bytes4 functionIdentifier;\n assembly {\n functionIdentifier := mload(add(data, 0x20))\n }\n require(functionIdentifier == REPLACE_OWNER_FUNCTION_IDENTIFIER);\n bytes32 dataHash = getDataHash(data);\n if ( !isExecuted[dataHash]\n && isConfirmedByRequiredFriends(dataHash)) {\n isExecuted[dataHash] = true;\n return true;\n }\n return false;\n }\n\n /// @dev Returns if Safe transaction is a valid owner replacement transaction.\n /// @param dataHash Data hash.\n /// @return Confirmation status.\n function isConfirmedByRequiredFriends(bytes32 dataHash)\n public\n view\n returns (bool)\n {\n uint256 confirmationCount;\n for (uint256 i = 0; i < friends.length; i++) {\n if (isConfirmed[dataHash][friends[i]])\n confirmationCount++;\n if (confirmationCount == threshold)\n return true;\n }\n return false;\n }\n\n /// @dev Returns hash of data encoding owner replacement.\n /// @param data Data payload.\n /// @return Data hash.\n function getDataHash(bytes data)\n public\n view\n returns (bytes32)\n {\n return keccak256(data);\n }\n}\n", + "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/extensions/SocialRecoveryExtension.sol", + "ast": { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/extensions/SocialRecoveryExtension.sol", + "exportedSymbols": { + "SocialRecoveryExtension": [ + 1759 + ] + }, + "id": 1760, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1420, + "literals": [ + "solidity", + "0.4", + ".19" + ], + "nodeType": "PragmaDirective", + "src": "0:23:6" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Extension.sol", + "file": "../Extension.sol", + "id": 1421, + "nodeType": "ImportDirective", + "scope": 1760, + "sourceUnit": 19, + "src": "24:26:6", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", + "file": "../GnosisSafe.sol", + "id": 1422, + "nodeType": "ImportDirective", + "scope": 1760, + "sourceUnit": 964, + "src": "51:27:6", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": [], + "baseName": { + "contractScope": null, + "id": 1423, + "name": "Extension", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 18, + "src": "293:9:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + }, + "id": 1424, + "nodeType": "InheritanceSpecifier", + "src": "293:9:6" + } + ], + "contractDependencies": [ + 18 + ], + "contractKind": "contract", + "documentation": "@title Social Recovery Extension - Allows to replace an owner without Safe confirmations if friends approve the replacement.\n @author Stefan George - ", + "fullyImplemented": true, + "id": 1759, + "linearizedBaseContracts": [ + 1759, + 18 + ], + "name": "SocialRecoveryExtension", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "id": 1427, + "name": "NAME", + "nodeType": "VariableDeclaration", + "scope": 1759, + "src": "310:57:6", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory", + "typeString": "string memory" + }, + "typeName": { + "id": 1425, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "310:6:6", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string storage pointer" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "536f6369616c205265636f7665727920457874656e73696f6e", + "id": 1426, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "340:27:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_995be5b755f102e2c36520d5037cfd901f504498d7c57ded40542623e7cc2eda", + "typeString": "literal_string \"Social Recovery Extension\"" + }, + "value": "Social Recovery Extension" + }, + "visibility": "public" + }, + { + "constant": true, + "id": 1430, + "name": "VERSION", + "nodeType": "VariableDeclaration", + "scope": 1759, + "src": "373:40:6", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory", + "typeString": "string memory" + }, + "typeName": { + "id": 1428, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "373:6:6", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string storage pointer" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "302e302e31", + "id": 1429, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "406:7:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", + "typeString": "literal_string \"0.0.1\"" + }, + "value": "0.0.1" + }, + "visibility": "public" + }, + { + "constant": true, + "id": 1433, + "name": "REPLACE_OWNER_FUNCTION_IDENTIFIER", + "nodeType": "VariableDeclaration", + "scope": 1759, + "src": "419:72:6", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 1431, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "419:6:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "54e99c6e", + "id": 1432, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "478:13:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c9d777df93ed5e148240dbbfbc0215def5044b10739d563ea8310789d1317911", + "typeString": "literal_string (contains invalid UTF-8 sequence at position 4)" + }, + "value": null + }, + "visibility": "public" + }, + { + "constant": false, + "id": 1435, + "name": "masterCopy", + "nodeType": "VariableDeclaration", + "scope": 1759, + "src": "498:34:6", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759", + "typeString": "contract SocialRecoveryExtension" + }, + "typeName": { + "contractScope": null, + "id": 1434, + "name": "SocialRecoveryExtension", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1759, + "src": "498:23:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759", + "typeString": "contract SocialRecoveryExtension" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1437, + "name": "gnosisSafe", + "nodeType": "VariableDeclaration", + "scope": 1759, + "src": "538:28:6", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + }, + "typeName": { + "contractScope": null, + "id": 1436, + "name": "GnosisSafe", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 963, + "src": "538:10:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 1439, + "name": "threshold", + "nodeType": "VariableDeclaration", + "scope": 1759, + "src": "572:22:6", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 1438, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "572:5:6", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 1442, + "name": "friends", + "nodeType": "VariableDeclaration", + "scope": 1759, + "src": "600:24:6", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + }, + "typeName": { + "baseType": { + "id": 1440, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "600:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1441, + "length": null, + "nodeType": "ArrayTypeName", + "src": "600:9:6", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[] storage pointer" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 1446, + "name": "isFriend", + "nodeType": "VariableDeclaration", + "scope": 1759, + "src": "695:41:6", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "typeName": { + "id": 1445, + "keyType": { + "id": 1443, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "704:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "695:25:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "valueType": { + "id": 1444, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "715:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 1450, + "name": "isExecuted", + "nodeType": "VariableDeclaration", + "scope": 1759, + "src": "804:43:6", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + }, + "typeName": { + "id": 1449, + "keyType": { + "id": 1447, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "813:7:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Mapping", + "src": "804:25:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + }, + "valueType": { + "id": 1448, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "824:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 1456, + "name": "isConfirmed", + "nodeType": "VariableDeclaration", + "scope": 1759, + "src": "939:65:6", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(bytes32 => mapping(address => bool))" + }, + "typeName": { + "id": 1455, + "keyType": { + "id": 1451, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "948:7:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Mapping", + "src": "939:46:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(bytes32 => mapping(address => bool))" + }, + "valueType": { + "id": 1454, + "keyType": { + "id": 1452, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "968:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "959:25:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "valueType": { + "id": 1453, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "979:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + } + }, + "value": null, + "visibility": "public" + }, + { + "body": { + "id": 1468, + "nodeType": "Block", + "src": "1037:70:6", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1464, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1459, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2089, + "src": "1055:3:6", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1460, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1055:10:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1462, + "name": "gnosisSafe", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1437, + "src": "1077:10:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + ], + "id": 1461, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1069:7:6", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1463, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1069:19:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1055:33:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1458, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "1047:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1465, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1047:42:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1466, + "nodeType": "ExpressionStatement", + "src": "1047:42:6" + }, + { + "id": 1467, + "nodeType": "PlaceholderStatement", + "src": "1099:1:6" + } + ] + }, + "id": 1469, + "name": "onlyGnosisSafe", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 1457, + "nodeType": "ParameterList", + "parameters": [], + "src": "1034:2:6" + }, + "src": "1011:96:6", + "visibility": "internal" + }, + { + "body": { + "id": 1479, + "nodeType": "Block", + "src": "1135:57:6", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1472, + "name": "isFriend", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1446, + "src": "1153:8:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1475, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1473, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2089, + "src": "1162:3:6", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1474, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1162:10:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1153:20:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1471, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "1145:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1476, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1145:29:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1477, + "nodeType": "ExpressionStatement", + "src": "1145:29:6" + }, + { + "id": 1478, + "nodeType": "PlaceholderStatement", + "src": "1184:1:6" + } + ] + }, + "id": 1480, + "name": "onlyFriend", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 1470, + "nodeType": "ParameterList", + "parameters": [], + "src": "1132:2:6" + }, + "src": "1113:79:6", + "visibility": "internal" + }, + { + "body": { + "id": 1493, + "nodeType": "Block", + "src": "1476:44:6", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1489, + "name": "_friends", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1483, + "src": "1492:8:6", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + { + "argumentTypes": null, + "id": 1490, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1485, + "src": "1502:10:6", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "id": 1488, + "name": "setup", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1577, + "src": "1486:5:6", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_uint8_$returns$__$", + "typeString": "function (address[] memory,uint8)" + } + }, + "id": 1491, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1486:27:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1492, + "nodeType": "ExpressionStatement", + "src": "1486:27:6" + } + ] + }, + "id": 1494, + "implemented": true, + "isConstructor": true, + "isDeclaredConst": false, + "modifiers": [], + "name": "SocialRecoveryExtension", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1486, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1483, + "name": "_friends", + "nodeType": "VariableDeclaration", + "scope": 1494, + "src": "1419:18:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + }, + "typeName": { + "baseType": { + "id": 1481, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1419:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1482, + "length": null, + "nodeType": "ArrayTypeName", + "src": "1419:9:6", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[] storage pointer" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1485, + "name": "_threshold", + "nodeType": "VariableDeclaration", + "scope": 1494, + "src": "1439:16:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 1484, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1439:5:6", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1418:38:6" + }, + "payable": false, + "returnParameters": { + "id": 1487, + "nodeType": "ParameterList", + "parameters": [], + "src": "1476:0:6" + }, + "scope": 1759, + "src": "1386:134:6", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1576, + "nodeType": "Block", + "src": "1789:597:6", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1507, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1504, + "name": "gnosisSafe", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1437, + "src": "1951:10:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + ], + "id": 1503, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1943:7:6", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1505, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1943:19:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1506, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1966:1:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1943:24:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1502, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "1935:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1508, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1935:33:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1509, + "nodeType": "ExpressionStatement", + "src": "1935:33:6" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1514, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1511, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1499, + "src": "1986:10:6", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1512, + "name": "_friends", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1497, + "src": "2000:8:6", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 1513, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2000:15:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1986:29:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1510, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "1978:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1515, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1978:38:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1516, + "nodeType": "ExpressionStatement", + "src": "1978:38:6" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 1520, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1518, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1499, + "src": "2034:10:6", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 1519, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2048:1:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "2034:15:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1517, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "2026:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1521, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2026:24:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1522, + "nodeType": "ExpressionStatement", + "src": "2026:24:6" + }, + { + "expression": { + "argumentTypes": null, + "id": 1528, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1523, + "name": "gnosisSafe", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1437, + "src": "2060:10:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1525, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2089, + "src": "2084:3:6", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1526, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2084:10:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1524, + "name": "GnosisSafe", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 963, + "src": "2073:10:6", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_GnosisSafe_$963_$", + "typeString": "type(contract GnosisSafe)" + } + }, + "id": 1527, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2073:22:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + }, + "src": "2060:35:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + }, + "id": 1529, + "nodeType": "ExpressionStatement", + "src": "2060:35:6" + }, + { + "body": { + "id": 1566, + "nodeType": "Block", + "src": "2183:137:6", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1546, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1542, + "name": "_friends", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1497, + "src": "2205:8:6", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 1544, + "indexExpression": { + "argumentTypes": null, + "id": 1543, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1531, + "src": "2214:1:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2205:11:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1545, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2220:1:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2205:16:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1541, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "2197:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1547, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2197:25:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1548, + "nodeType": "ExpressionStatement", + "src": "2197:25:6" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1555, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "2244:22:6", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1550, + "name": "isFriend", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1446, + "src": "2245:8:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1554, + "indexExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1551, + "name": "_friends", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1497, + "src": "2254:8:6", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 1553, + "indexExpression": { + "argumentTypes": null, + "id": 1552, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1531, + "src": "2263:1:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2254:11:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2245:21:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1549, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "2236:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1556, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2236:31:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1557, + "nodeType": "ExpressionStatement", + "src": "2236:31:6" + }, + { + "expression": { + "argumentTypes": null, + "id": 1564, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1558, + "name": "isFriend", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1446, + "src": "2281:8:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1562, + "indexExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1559, + "name": "_friends", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1497, + "src": "2290:8:6", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 1561, + "indexExpression": { + "argumentTypes": null, + "id": 1560, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1531, + "src": "2299:1:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2290:11:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2281:21:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1563, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2305:4:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "2281:28:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1565, + "nodeType": "ExpressionStatement", + "src": "2281:28:6" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1537, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1534, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1531, + "src": "2157:1:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1535, + "name": "_friends", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1497, + "src": "2161:8:6", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 1536, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2161:15:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2157:19:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1567, + "initializationExpression": { + "assignments": [ + 1531 + ], + "declarations": [ + { + "constant": false, + "id": 1531, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 1577, + "src": "2142:9:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1530, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2142:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1533, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 1532, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2154:1:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "2142:13:6" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 1539, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "2178:3:6", + "subExpression": { + "argumentTypes": null, + "id": 1538, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1531, + "src": "2178:1:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1540, + "nodeType": "ExpressionStatement", + "src": "2178:3:6" + }, + "nodeType": "ForStatement", + "src": "2137:183:6" + }, + { + "expression": { + "argumentTypes": null, + "id": 1570, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1568, + "name": "friends", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1442, + "src": "2329:7:6", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1569, + "name": "_friends", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1497, + "src": "2339:8:6", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "src": "2329:18:6", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 1571, + "nodeType": "ExpressionStatement", + "src": "2329:18:6" + }, + { + "expression": { + "argumentTypes": null, + "id": 1574, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1572, + "name": "threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1439, + "src": "2357:9:6", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1573, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1499, + "src": "2369:10:6", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "2357:22:6", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 1575, + "nodeType": "ExpressionStatement", + "src": "2357:22:6" + } + ] + }, + "id": 1577, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "setup", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1500, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1497, + "name": "_friends", + "nodeType": "VariableDeclaration", + "scope": 1577, + "src": "1732:18:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + }, + "typeName": { + "baseType": { + "id": 1495, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1732:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1496, + "length": null, + "nodeType": "ArrayTypeName", + "src": "1732:9:6", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[] storage pointer" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1499, + "name": "_threshold", + "nodeType": "VariableDeclaration", + "scope": 1577, + "src": "1752:16:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 1498, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1752:5:6", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1731:38:6" + }, + "payable": false, + "returnParameters": { + "id": 1501, + "nodeType": "ParameterList", + "parameters": [], + "src": "1789:0:6" + }, + "scope": 1759, + "src": "1717:669:6", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1596, + "nodeType": "Block", + "src": "2637:85:6", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1589, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1586, + "name": "_masterCopy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1579, + "src": "2663:11:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759", + "typeString": "contract SocialRecoveryExtension" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759", + "typeString": "contract SocialRecoveryExtension" + } + ], + "id": 1585, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2655:7:6", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1587, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2655:20:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1588, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2679:1:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2655:25:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1584, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "2647:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1590, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2647:34:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1591, + "nodeType": "ExpressionStatement", + "src": "2647:34:6" + }, + { + "expression": { + "argumentTypes": null, + "id": 1594, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1592, + "name": "masterCopy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1435, + "src": "2691:10:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759", + "typeString": "contract SocialRecoveryExtension" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1593, + "name": "_masterCopy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1579, + "src": "2704:11:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759", + "typeString": "contract SocialRecoveryExtension" + } + }, + "src": "2691:24:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759", + "typeString": "contract SocialRecoveryExtension" + } + }, + "id": 1595, + "nodeType": "ExpressionStatement", + "src": "2691:24:6" + } + ] + }, + "id": 1597, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": [], + "id": 1582, + "modifierName": { + "argumentTypes": null, + "id": 1581, + "name": "onlyGnosisSafe", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1469, + "src": "2618:14:6", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "2618:14:6" + } + ], + "name": "changeMasterCopy", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1580, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1579, + "name": "_masterCopy", + "nodeType": "VariableDeclaration", + "scope": 1597, + "src": "2558:35:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759", + "typeString": "contract SocialRecoveryExtension" + }, + "typeName": { + "contractScope": null, + "id": 1578, + "name": "SocialRecoveryExtension", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1759, + "src": "2558:23:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759", + "typeString": "contract SocialRecoveryExtension" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2557:37:6" + }, + "payable": false, + "returnParameters": { + "id": 1583, + "nodeType": "ParameterList", + "parameters": [], + "src": "2637:0:6" + }, + "scope": 1759, + "src": "2532:190:6", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1620, + "nodeType": "Block", + "src": "2919:97:6", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1608, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "2937:21:6", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1605, + "name": "isExecuted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1450, + "src": "2938:10:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + } + }, + "id": 1607, + "indexExpression": { + "argumentTypes": null, + "id": 1606, + "name": "dataHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1599, + "src": "2949:8:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2938:20:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1604, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "2929:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1609, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2929:30:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1610, + "nodeType": "ExpressionStatement", + "src": "2929:30:6" + }, + { + "expression": { + "argumentTypes": null, + "id": 1618, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1611, + "name": "isConfirmed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1456, + "src": "2969:11:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(bytes32 => mapping(address => bool))" + } + }, + "id": 1615, + "indexExpression": { + "argumentTypes": null, + "id": 1612, + "name": "dataHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1599, + "src": "2981:8:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2969:21:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1616, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1613, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2089, + "src": "2991:3:6", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1614, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2991:10:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2969:33:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1617, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3005:4:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "2969:40:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1619, + "nodeType": "ExpressionStatement", + "src": "2969:40:6" + } + ] + }, + "id": 1621, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": [], + "id": 1602, + "modifierName": { + "argumentTypes": null, + "id": 1601, + "name": "onlyFriend", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1480, + "src": "2904:10:6", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "2904:10:6" + } + ], + "name": "confirmTransaction", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1600, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1599, + "name": "dataHash", + "nodeType": "VariableDeclaration", + "scope": 1621, + "src": "2863:16:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1598, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2863:7:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2862:18:6" + }, + "payable": false, + "returnParameters": { + "id": 1603, + "nodeType": "ParameterList", + "parameters": [], + "src": "2919:0:6" + }, + "scope": 1759, + "src": "2835:181:6", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1702, + "nodeType": "Block", + "src": "3578:742:6", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1639, + "name": "isFriend", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1446, + "src": "3660:8:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1641, + "indexExpression": { + "argumentTypes": null, + "id": 1640, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1623, + "src": "3669:6:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3660:16:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1638, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "3652:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1642, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3652:25:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1643, + "nodeType": "ExpressionStatement", + "src": "3652:25:6" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1649, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1645, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1625, + "src": "3695:2:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1647, + "name": "gnosisSafe", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1437, + "src": "3709:10:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + ], + "id": 1646, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3701:7:6", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1648, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3701:19:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3695:25:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1644, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "3687:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1650, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3687:34:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1651, + "nodeType": "ExpressionStatement", + "src": "3687:34:6" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1655, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1653, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1627, + "src": "3739:5:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1654, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3748:1:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3739:10:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1652, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "3731:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1656, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3731:19:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1657, + "nodeType": "ExpressionStatement", + "src": "3731:19:6" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + }, + "id": 1663, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1659, + "name": "operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1631, + "src": "3768:9:6", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1660, + "name": "GnosisSafe", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 963, + "src": "3781:10:6", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_GnosisSafe_$963_$", + "typeString": "type(contract GnosisSafe)" + } + }, + "id": 1661, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "Operation", + "nodeType": "MemberAccess", + "referencedDeclaration": 61, + "src": "3781:20:6", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_Operation_$61_$", + "typeString": "type(enum GnosisSafe.Operation)" + } + }, + "id": 1662, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Call", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3781:25:6", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + }, + "src": "3768:38:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1658, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "3760:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1664, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3760:47:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1665, + "nodeType": "ExpressionStatement", + "src": "3760:47:6" + }, + { + "assignments": [], + "declarations": [ + { + "constant": false, + "id": 1667, + "name": "functionIdentifier", + "nodeType": "VariableDeclaration", + "scope": 1703, + "src": "3890:25:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 1666, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "3890:6:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1668, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "3890:25:6" + }, + { + "externalReferences": [ + { + "functionIdentifier": { + "declaration": 1667, + "isOffset": false, + "isSlot": false, + "src": "3948:18:6", + "valueSize": 1 + } + }, + { + "data": { + "declaration": 1629, + "isOffset": false, + "isSlot": false, + "src": "3980:4:6", + "valueSize": 1 + } + } + ], + "id": 1669, + "nodeType": "InlineAssembly", + "operations": "{\n functionIdentifier := mload(add(data, 0x20))\n}", + "src": "3925:93:6" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 1673, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1671, + "name": "functionIdentifier", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1667, + "src": "4019:18:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 1672, + "name": "REPLACE_OWNER_FUNCTION_IDENTIFIER", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1433, + "src": "4041:33:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "src": "4019:55:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1670, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "4011:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1674, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4011:64:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1675, + "nodeType": "ExpressionStatement", + "src": "4011:64:6" + }, + { + "assignments": [ + 1677 + ], + "declarations": [ + { + "constant": false, + "id": 1677, + "name": "dataHash", + "nodeType": "VariableDeclaration", + "scope": 1703, + "src": "4085:16:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1676, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4085:7:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1681, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1679, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1629, + "src": "4116:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 1678, + "name": "getDataHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1758, + "src": "4104:11:6", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) view returns (bytes32)" + } + }, + "id": 1680, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4104:17:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4085:36:6" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1689, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1685, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "4138:21:6", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1682, + "name": "isExecuted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1450, + "src": "4139:10:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + } + }, + "id": 1684, + "indexExpression": { + "argumentTypes": null, + "id": 1683, + "name": "dataHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1677, + "src": "4150:8:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4139:20:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1687, + "name": "dataHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1677, + "src": "4204:8:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1686, + "name": "isConfirmedByRequiredFriends", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1746, + "src": "4175:28:6", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (bytes32) view returns (bool)" + } + }, + "id": 1688, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4175:38:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "4138:75:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1699, + "nodeType": "IfStatement", + "src": "4131:161:6", + "trueBody": { + "id": 1698, + "nodeType": "Block", + "src": "4215:77:6", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1694, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1690, + "name": "isExecuted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1450, + "src": "4229:10:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + } + }, + "id": 1692, + "indexExpression": { + "argumentTypes": null, + "id": 1691, + "name": "dataHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1677, + "src": "4240:8:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4229:20:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1693, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4252:4:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "4229:27:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1695, + "nodeType": "ExpressionStatement", + "src": "4229:27:6" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1696, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4277:4:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 1637, + "id": 1697, + "nodeType": "Return", + "src": "4270:11:6" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 1700, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4308:5:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 1637, + "id": 1701, + "nodeType": "Return", + "src": "4301:12:6" + } + ] + }, + "id": 1703, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": [], + "id": 1634, + "modifierName": { + "argumentTypes": null, + "id": 1633, + "name": "onlyGnosisSafe", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1469, + "src": "3536:14:6", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "3536:14:6" + } + ], + "name": "isExecutable", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1632, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1623, + "name": "sender", + "nodeType": "VariableDeclaration", + "scope": 1703, + "src": "3426:14:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1622, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3426:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1625, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 1703, + "src": "3442:10:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1624, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3442:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1627, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 1703, + "src": "3454:13:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1626, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3454:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1629, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 1703, + "src": "3469:10:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + "typeName": { + "id": 1628, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3469:5:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1631, + "name": "operation", + "nodeType": "VariableDeclaration", + "scope": 1703, + "src": "3481:30:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + }, + "typeName": { + "contractScope": null, + "id": 1630, + "name": "GnosisSafe.Operation", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 61, + "src": "3481:20:6", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3425:87:6" + }, + "payable": false, + "returnParameters": { + "id": 1637, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1636, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1703, + "src": "3568:4:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1635, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3568:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3567:6:6" + }, + "scope": 1759, + "src": "3404:916:6", + "stateMutability": "nonpayable", + "superFunction": 17, + "visibility": "public" + }, + { + "body": { + "id": 1745, + "nodeType": "Block", + "src": "4592:294:6", + "statements": [ + { + "assignments": [], + "declarations": [ + { + "constant": false, + "id": 1711, + "name": "confirmationCount", + "nodeType": "VariableDeclaration", + "scope": 1746, + "src": "4602:25:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1710, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4602:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1712, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "4602:25:6" + }, + { + "body": { + "id": 1741, + "nodeType": "Block", + "src": "4682:176:6", + "statements": [ + { + "condition": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1724, + "name": "isConfirmed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1456, + "src": "4700:11:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(bytes32 => mapping(address => bool))" + } + }, + "id": 1726, + "indexExpression": { + "argumentTypes": null, + "id": 1725, + "name": "dataHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1705, + "src": "4712:8:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4700:21:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1730, + "indexExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1727, + "name": "friends", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1442, + "src": "4722:7:6", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 1729, + "indexExpression": { + "argumentTypes": null, + "id": 1728, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1714, + "src": "4730:1:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4722:10:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4700:33:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1734, + "nodeType": "IfStatement", + "src": "4696:74:6", + "trueBody": { + "expression": { + "argumentTypes": null, + "id": 1732, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "4751:19:6", + "subExpression": { + "argumentTypes": null, + "id": 1731, + "name": "confirmationCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1711, + "src": "4751:17:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1733, + "nodeType": "ExpressionStatement", + "src": "4751:19:6" + } + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1737, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1735, + "name": "confirmationCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1711, + "src": "4788:17:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 1736, + "name": "threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1439, + "src": "4809:9:6", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "4788:30:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1740, + "nodeType": "IfStatement", + "src": "4784:63:6", + "trueBody": { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1738, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4843:4:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 1709, + "id": 1739, + "nodeType": "Return", + "src": "4836:11:6" + } + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1720, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1717, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1714, + "src": "4657:1:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1718, + "name": "friends", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1442, + "src": "4661:7:6", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 1719, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4661:14:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4657:18:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1742, + "initializationExpression": { + "assignments": [ + 1714 + ], + "declarations": [ + { + "constant": false, + "id": 1714, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 1746, + "src": "4642:9:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1713, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4642:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1716, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 1715, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4654:1:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "4642:13:6" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 1722, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "4677:3:6", + "subExpression": { + "argumentTypes": null, + "id": 1721, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1714, + "src": "4677:1:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1723, + "nodeType": "ExpressionStatement", + "src": "4677:3:6" + }, + "nodeType": "ForStatement", + "src": "4637:221:6" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 1743, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4874:5:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 1709, + "id": 1744, + "nodeType": "Return", + "src": "4867:12:6" + } + ] + }, + "id": 1746, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "isConfirmedByRequiredFriends", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1706, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1705, + "name": "dataHash", + "nodeType": "VariableDeclaration", + "scope": 1746, + "src": "4519:16:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1704, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4519:7:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4518:18:6" + }, + "payable": false, + "returnParameters": { + "id": 1709, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1708, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1746, + "src": "4582:4:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1707, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4582:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4581:6:6" + }, + "scope": 1759, + "src": "4481:405:6", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1757, + "nodeType": "Block", + "src": "5106:39:6", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1754, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1748, + "src": "5133:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 1753, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2083, + "src": "5123:9:6", + "typeDescriptions": { + "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", + "typeString": "function () pure returns (bytes32)" + } + }, + "id": 1755, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5123:15:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 1752, + "id": 1756, + "nodeType": "Return", + "src": "5116:22:6" + } + ] + }, + "id": 1758, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "getDataHash", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1749, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1748, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 1758, + "src": "5036:10:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + "typeName": { + "id": 1747, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5036:5:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5035:12:6" + }, + "payable": false, + "returnParameters": { + "id": 1752, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1751, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1758, + "src": "5093:7:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1750, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5093:7:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5092:9:6" + }, + "scope": 1759, + "src": "5015:130:6", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 1760, + "src": "257:4890:6" + } + ], + "src": "0:5148:6" + }, + "legacyAST": { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/extensions/SocialRecoveryExtension.sol", + "exportedSymbols": { + "SocialRecoveryExtension": [ + 1759 + ] + }, + "id": 1760, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1420, + "literals": [ + "solidity", + "0.4", + ".19" + ], + "nodeType": "PragmaDirective", + "src": "0:23:6" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Extension.sol", + "file": "../Extension.sol", + "id": 1421, + "nodeType": "ImportDirective", + "scope": 1760, + "sourceUnit": 19, + "src": "24:26:6", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", + "file": "../GnosisSafe.sol", + "id": 1422, + "nodeType": "ImportDirective", + "scope": 1760, + "sourceUnit": 964, + "src": "51:27:6", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": [], + "baseName": { + "contractScope": null, + "id": 1423, + "name": "Extension", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 18, + "src": "293:9:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + }, + "id": 1424, + "nodeType": "InheritanceSpecifier", + "src": "293:9:6" + } + ], + "contractDependencies": [ + 18 + ], + "contractKind": "contract", + "documentation": "@title Social Recovery Extension - Allows to replace an owner without Safe confirmations if friends approve the replacement.\n @author Stefan George - ", + "fullyImplemented": true, + "id": 1759, + "linearizedBaseContracts": [ + 1759, + 18 + ], + "name": "SocialRecoveryExtension", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "id": 1427, + "name": "NAME", + "nodeType": "VariableDeclaration", + "scope": 1759, + "src": "310:57:6", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory", + "typeString": "string memory" + }, + "typeName": { + "id": 1425, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "310:6:6", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string storage pointer" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "536f6369616c205265636f7665727920457874656e73696f6e", + "id": 1426, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "340:27:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_995be5b755f102e2c36520d5037cfd901f504498d7c57ded40542623e7cc2eda", + "typeString": "literal_string \"Social Recovery Extension\"" + }, + "value": "Social Recovery Extension" + }, + "visibility": "public" + }, + { + "constant": true, + "id": 1430, + "name": "VERSION", + "nodeType": "VariableDeclaration", + "scope": 1759, + "src": "373:40:6", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory", + "typeString": "string memory" + }, + "typeName": { + "id": 1428, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "373:6:6", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string storage pointer" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "302e302e31", + "id": 1429, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "406:7:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", + "typeString": "literal_string \"0.0.1\"" + }, + "value": "0.0.1" + }, + "visibility": "public" + }, + { + "constant": true, + "id": 1433, + "name": "REPLACE_OWNER_FUNCTION_IDENTIFIER", + "nodeType": "VariableDeclaration", + "scope": 1759, + "src": "419:72:6", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 1431, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "419:6:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "54e99c6e", + "id": 1432, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "478:13:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c9d777df93ed5e148240dbbfbc0215def5044b10739d563ea8310789d1317911", + "typeString": "literal_string (contains invalid UTF-8 sequence at position 4)" + }, + "value": null + }, + "visibility": "public" + }, + { + "constant": false, + "id": 1435, + "name": "masterCopy", + "nodeType": "VariableDeclaration", + "scope": 1759, + "src": "498:34:6", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759", + "typeString": "contract SocialRecoveryExtension" + }, + "typeName": { + "contractScope": null, + "id": 1434, + "name": "SocialRecoveryExtension", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1759, + "src": "498:23:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759", + "typeString": "contract SocialRecoveryExtension" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1437, + "name": "gnosisSafe", + "nodeType": "VariableDeclaration", + "scope": 1759, + "src": "538:28:6", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + }, + "typeName": { + "contractScope": null, + "id": 1436, + "name": "GnosisSafe", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 963, + "src": "538:10:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 1439, + "name": "threshold", + "nodeType": "VariableDeclaration", + "scope": 1759, + "src": "572:22:6", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 1438, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "572:5:6", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 1442, + "name": "friends", + "nodeType": "VariableDeclaration", + "scope": 1759, + "src": "600:24:6", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + }, + "typeName": { + "baseType": { + "id": 1440, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "600:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1441, + "length": null, + "nodeType": "ArrayTypeName", + "src": "600:9:6", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[] storage pointer" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 1446, + "name": "isFriend", + "nodeType": "VariableDeclaration", + "scope": 1759, + "src": "695:41:6", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "typeName": { + "id": 1445, + "keyType": { + "id": 1443, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "704:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "695:25:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "valueType": { + "id": 1444, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "715:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 1450, + "name": "isExecuted", + "nodeType": "VariableDeclaration", + "scope": 1759, + "src": "804:43:6", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + }, + "typeName": { + "id": 1449, + "keyType": { + "id": 1447, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "813:7:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Mapping", + "src": "804:25:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + }, + "valueType": { + "id": 1448, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "824:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 1456, + "name": "isConfirmed", + "nodeType": "VariableDeclaration", + "scope": 1759, + "src": "939:65:6", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(bytes32 => mapping(address => bool))" + }, + "typeName": { + "id": 1455, + "keyType": { + "id": 1451, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "948:7:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Mapping", + "src": "939:46:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(bytes32 => mapping(address => bool))" + }, + "valueType": { + "id": 1454, + "keyType": { + "id": 1452, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "968:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "959:25:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "valueType": { + "id": 1453, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "979:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + } + }, + "value": null, + "visibility": "public" + }, + { + "body": { + "id": 1468, + "nodeType": "Block", + "src": "1037:70:6", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1464, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1459, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2089, + "src": "1055:3:6", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1460, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1055:10:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1462, + "name": "gnosisSafe", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1437, + "src": "1077:10:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + ], + "id": 1461, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1069:7:6", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1463, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1069:19:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1055:33:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1458, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "1047:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1465, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1047:42:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1466, + "nodeType": "ExpressionStatement", + "src": "1047:42:6" + }, + { + "id": 1467, + "nodeType": "PlaceholderStatement", + "src": "1099:1:6" + } + ] + }, + "id": 1469, + "name": "onlyGnosisSafe", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 1457, + "nodeType": "ParameterList", + "parameters": [], + "src": "1034:2:6" + }, + "src": "1011:96:6", + "visibility": "internal" + }, + { + "body": { + "id": 1479, + "nodeType": "Block", + "src": "1135:57:6", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1472, + "name": "isFriend", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1446, + "src": "1153:8:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1475, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1473, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2089, + "src": "1162:3:6", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1474, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1162:10:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1153:20:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1471, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "1145:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1476, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1145:29:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1477, + "nodeType": "ExpressionStatement", + "src": "1145:29:6" + }, + { + "id": 1478, + "nodeType": "PlaceholderStatement", + "src": "1184:1:6" + } + ] + }, + "id": 1480, + "name": "onlyFriend", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 1470, + "nodeType": "ParameterList", + "parameters": [], + "src": "1132:2:6" + }, + "src": "1113:79:6", + "visibility": "internal" + }, + { + "body": { + "id": 1493, + "nodeType": "Block", + "src": "1476:44:6", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1489, + "name": "_friends", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1483, + "src": "1492:8:6", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + { + "argumentTypes": null, + "id": 1490, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1485, + "src": "1502:10:6", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "id": 1488, + "name": "setup", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1577, + "src": "1486:5:6", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_uint8_$returns$__$", + "typeString": "function (address[] memory,uint8)" + } + }, + "id": 1491, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1486:27:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1492, + "nodeType": "ExpressionStatement", + "src": "1486:27:6" + } + ] + }, + "id": 1494, + "implemented": true, + "isConstructor": true, + "isDeclaredConst": false, + "modifiers": [], + "name": "SocialRecoveryExtension", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1486, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1483, + "name": "_friends", + "nodeType": "VariableDeclaration", + "scope": 1494, + "src": "1419:18:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + }, + "typeName": { + "baseType": { + "id": 1481, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1419:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1482, + "length": null, + "nodeType": "ArrayTypeName", + "src": "1419:9:6", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[] storage pointer" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1485, + "name": "_threshold", + "nodeType": "VariableDeclaration", + "scope": 1494, + "src": "1439:16:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 1484, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1439:5:6", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1418:38:6" + }, + "payable": false, + "returnParameters": { + "id": 1487, + "nodeType": "ParameterList", + "parameters": [], + "src": "1476:0:6" + }, + "scope": 1759, + "src": "1386:134:6", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1576, + "nodeType": "Block", + "src": "1789:597:6", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1507, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1504, + "name": "gnosisSafe", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1437, + "src": "1951:10:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + ], + "id": 1503, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1943:7:6", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1505, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1943:19:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1506, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1966:1:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1943:24:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1502, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "1935:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1508, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1935:33:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1509, + "nodeType": "ExpressionStatement", + "src": "1935:33:6" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1514, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1511, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1499, + "src": "1986:10:6", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1512, + "name": "_friends", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1497, + "src": "2000:8:6", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 1513, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2000:15:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1986:29:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1510, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "1978:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1515, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1978:38:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1516, + "nodeType": "ExpressionStatement", + "src": "1978:38:6" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 1520, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1518, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1499, + "src": "2034:10:6", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 1519, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2048:1:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "2034:15:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1517, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "2026:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1521, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2026:24:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1522, + "nodeType": "ExpressionStatement", + "src": "2026:24:6" + }, + { + "expression": { + "argumentTypes": null, + "id": 1528, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1523, + "name": "gnosisSafe", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1437, + "src": "2060:10:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1525, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2089, + "src": "2084:3:6", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1526, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2084:10:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1524, + "name": "GnosisSafe", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 963, + "src": "2073:10:6", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_GnosisSafe_$963_$", + "typeString": "type(contract GnosisSafe)" + } + }, + "id": 1527, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2073:22:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + }, + "src": "2060:35:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + }, + "id": 1529, + "nodeType": "ExpressionStatement", + "src": "2060:35:6" + }, + { + "body": { + "id": 1566, + "nodeType": "Block", + "src": "2183:137:6", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1546, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1542, + "name": "_friends", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1497, + "src": "2205:8:6", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 1544, + "indexExpression": { + "argumentTypes": null, + "id": 1543, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1531, + "src": "2214:1:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2205:11:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1545, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2220:1:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2205:16:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1541, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "2197:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1547, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2197:25:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1548, + "nodeType": "ExpressionStatement", + "src": "2197:25:6" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1555, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "2244:22:6", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1550, + "name": "isFriend", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1446, + "src": "2245:8:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1554, + "indexExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1551, + "name": "_friends", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1497, + "src": "2254:8:6", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 1553, + "indexExpression": { + "argumentTypes": null, + "id": 1552, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1531, + "src": "2263:1:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2254:11:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2245:21:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1549, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "2236:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1556, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2236:31:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1557, + "nodeType": "ExpressionStatement", + "src": "2236:31:6" + }, + { + "expression": { + "argumentTypes": null, + "id": 1564, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1558, + "name": "isFriend", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1446, + "src": "2281:8:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1562, + "indexExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1559, + "name": "_friends", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1497, + "src": "2290:8:6", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 1561, + "indexExpression": { + "argumentTypes": null, + "id": 1560, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1531, + "src": "2299:1:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2290:11:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2281:21:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1563, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2305:4:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "2281:28:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1565, + "nodeType": "ExpressionStatement", + "src": "2281:28:6" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1537, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1534, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1531, + "src": "2157:1:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1535, + "name": "_friends", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1497, + "src": "2161:8:6", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 1536, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2161:15:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2157:19:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1567, + "initializationExpression": { + "assignments": [ + 1531 + ], + "declarations": [ + { + "constant": false, + "id": 1531, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 1577, + "src": "2142:9:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1530, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2142:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1533, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 1532, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2154:1:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "2142:13:6" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 1539, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "2178:3:6", + "subExpression": { + "argumentTypes": null, + "id": 1538, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1531, + "src": "2178:1:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1540, + "nodeType": "ExpressionStatement", + "src": "2178:3:6" + }, + "nodeType": "ForStatement", + "src": "2137:183:6" + }, + { + "expression": { + "argumentTypes": null, + "id": 1570, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1568, + "name": "friends", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1442, + "src": "2329:7:6", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1569, + "name": "_friends", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1497, + "src": "2339:8:6", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "src": "2329:18:6", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 1571, + "nodeType": "ExpressionStatement", + "src": "2329:18:6" + }, + { + "expression": { + "argumentTypes": null, + "id": 1574, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1572, + "name": "threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1439, + "src": "2357:9:6", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1573, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1499, + "src": "2369:10:6", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "2357:22:6", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 1575, + "nodeType": "ExpressionStatement", + "src": "2357:22:6" + } + ] + }, + "id": 1577, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "setup", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1500, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1497, + "name": "_friends", + "nodeType": "VariableDeclaration", + "scope": 1577, + "src": "1732:18:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + }, + "typeName": { + "baseType": { + "id": 1495, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1732:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1496, + "length": null, + "nodeType": "ArrayTypeName", + "src": "1732:9:6", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[] storage pointer" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1499, + "name": "_threshold", + "nodeType": "VariableDeclaration", + "scope": 1577, + "src": "1752:16:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 1498, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1752:5:6", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1731:38:6" + }, + "payable": false, + "returnParameters": { + "id": 1501, + "nodeType": "ParameterList", + "parameters": [], + "src": "1789:0:6" + }, + "scope": 1759, + "src": "1717:669:6", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1596, + "nodeType": "Block", + "src": "2637:85:6", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1589, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1586, + "name": "_masterCopy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1579, + "src": "2663:11:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759", + "typeString": "contract SocialRecoveryExtension" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759", + "typeString": "contract SocialRecoveryExtension" + } + ], + "id": 1585, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2655:7:6", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1587, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2655:20:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1588, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2679:1:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2655:25:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1584, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "2647:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1590, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2647:34:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1591, + "nodeType": "ExpressionStatement", + "src": "2647:34:6" + }, + { + "expression": { + "argumentTypes": null, + "id": 1594, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1592, + "name": "masterCopy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1435, + "src": "2691:10:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759", + "typeString": "contract SocialRecoveryExtension" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1593, + "name": "_masterCopy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1579, + "src": "2704:11:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759", + "typeString": "contract SocialRecoveryExtension" + } + }, + "src": "2691:24:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759", + "typeString": "contract SocialRecoveryExtension" + } + }, + "id": 1595, + "nodeType": "ExpressionStatement", + "src": "2691:24:6" + } + ] + }, + "id": 1597, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": [], + "id": 1582, + "modifierName": { + "argumentTypes": null, + "id": 1581, + "name": "onlyGnosisSafe", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1469, + "src": "2618:14:6", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "2618:14:6" + } + ], + "name": "changeMasterCopy", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1580, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1579, + "name": "_masterCopy", + "nodeType": "VariableDeclaration", + "scope": 1597, + "src": "2558:35:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759", + "typeString": "contract SocialRecoveryExtension" + }, + "typeName": { + "contractScope": null, + "id": 1578, + "name": "SocialRecoveryExtension", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1759, + "src": "2558:23:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759", + "typeString": "contract SocialRecoveryExtension" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2557:37:6" + }, + "payable": false, + "returnParameters": { + "id": 1583, + "nodeType": "ParameterList", + "parameters": [], + "src": "2637:0:6" + }, + "scope": 1759, + "src": "2532:190:6", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1620, + "nodeType": "Block", + "src": "2919:97:6", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1608, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "2937:21:6", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1605, + "name": "isExecuted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1450, + "src": "2938:10:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + } + }, + "id": 1607, + "indexExpression": { + "argumentTypes": null, + "id": 1606, + "name": "dataHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1599, + "src": "2949:8:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2938:20:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1604, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "2929:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1609, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2929:30:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1610, + "nodeType": "ExpressionStatement", + "src": "2929:30:6" + }, + { + "expression": { + "argumentTypes": null, + "id": 1618, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1611, + "name": "isConfirmed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1456, + "src": "2969:11:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(bytes32 => mapping(address => bool))" + } + }, + "id": 1615, + "indexExpression": { + "argumentTypes": null, + "id": 1612, + "name": "dataHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1599, + "src": "2981:8:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2969:21:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1616, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1613, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2089, + "src": "2991:3:6", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1614, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2991:10:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2969:33:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1617, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3005:4:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "2969:40:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1619, + "nodeType": "ExpressionStatement", + "src": "2969:40:6" + } + ] + }, + "id": 1621, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": [], + "id": 1602, + "modifierName": { + "argumentTypes": null, + "id": 1601, + "name": "onlyFriend", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1480, + "src": "2904:10:6", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "2904:10:6" + } + ], + "name": "confirmTransaction", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1600, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1599, + "name": "dataHash", + "nodeType": "VariableDeclaration", + "scope": 1621, + "src": "2863:16:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1598, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2863:7:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2862:18:6" + }, + "payable": false, + "returnParameters": { + "id": 1603, + "nodeType": "ParameterList", + "parameters": [], + "src": "2919:0:6" + }, + "scope": 1759, + "src": "2835:181:6", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1702, + "nodeType": "Block", + "src": "3578:742:6", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1639, + "name": "isFriend", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1446, + "src": "3660:8:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1641, + "indexExpression": { + "argumentTypes": null, + "id": 1640, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1623, + "src": "3669:6:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3660:16:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1638, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "3652:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1642, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3652:25:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1643, + "nodeType": "ExpressionStatement", + "src": "3652:25:6" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1649, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1645, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1625, + "src": "3695:2:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1647, + "name": "gnosisSafe", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1437, + "src": "3709:10:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + ], + "id": 1646, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3701:7:6", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1648, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3701:19:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3695:25:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1644, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "3687:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1650, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3687:34:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1651, + "nodeType": "ExpressionStatement", + "src": "3687:34:6" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1655, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1653, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1627, + "src": "3739:5:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1654, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3748:1:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3739:10:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1652, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "3731:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1656, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3731:19:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1657, + "nodeType": "ExpressionStatement", + "src": "3731:19:6" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + }, + "id": 1663, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1659, + "name": "operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1631, + "src": "3768:9:6", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1660, + "name": "GnosisSafe", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 963, + "src": "3781:10:6", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_GnosisSafe_$963_$", + "typeString": "type(contract GnosisSafe)" + } + }, + "id": 1661, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "Operation", + "nodeType": "MemberAccess", + "referencedDeclaration": 61, + "src": "3781:20:6", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_Operation_$61_$", + "typeString": "type(enum GnosisSafe.Operation)" + } + }, + "id": 1662, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Call", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3781:25:6", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + }, + "src": "3768:38:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1658, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "3760:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1664, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3760:47:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1665, + "nodeType": "ExpressionStatement", + "src": "3760:47:6" + }, + { + "assignments": [], + "declarations": [ + { + "constant": false, + "id": 1667, + "name": "functionIdentifier", + "nodeType": "VariableDeclaration", + "scope": 1703, + "src": "3890:25:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 1666, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "3890:6:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1668, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "3890:25:6" + }, + { + "externalReferences": [ + { + "functionIdentifier": { + "declaration": 1667, + "isOffset": false, + "isSlot": false, + "src": "3948:18:6", + "valueSize": 1 + } + }, + { + "data": { + "declaration": 1629, + "isOffset": false, + "isSlot": false, + "src": "3980:4:6", + "valueSize": 1 + } + } + ], + "id": 1669, + "nodeType": "InlineAssembly", + "operations": "{\n functionIdentifier := mload(add(data, 0x20))\n}", + "src": "3925:93:6" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 1673, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1671, + "name": "functionIdentifier", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1667, + "src": "4019:18:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 1672, + "name": "REPLACE_OWNER_FUNCTION_IDENTIFIER", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1433, + "src": "4041:33:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "src": "4019:55:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1670, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "4011:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1674, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4011:64:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1675, + "nodeType": "ExpressionStatement", + "src": "4011:64:6" + }, + { + "assignments": [ + 1677 + ], + "declarations": [ + { + "constant": false, + "id": 1677, + "name": "dataHash", + "nodeType": "VariableDeclaration", + "scope": 1703, + "src": "4085:16:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1676, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4085:7:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1681, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1679, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1629, + "src": "4116:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 1678, + "name": "getDataHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1758, + "src": "4104:11:6", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) view returns (bytes32)" + } + }, + "id": 1680, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4104:17:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4085:36:6" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1689, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1685, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "4138:21:6", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1682, + "name": "isExecuted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1450, + "src": "4139:10:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + } + }, + "id": 1684, + "indexExpression": { + "argumentTypes": null, + "id": 1683, + "name": "dataHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1677, + "src": "4150:8:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4139:20:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1687, + "name": "dataHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1677, + "src": "4204:8:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1686, + "name": "isConfirmedByRequiredFriends", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1746, + "src": "4175:28:6", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (bytes32) view returns (bool)" + } + }, + "id": 1688, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4175:38:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "4138:75:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1699, + "nodeType": "IfStatement", + "src": "4131:161:6", + "trueBody": { + "id": 1698, + "nodeType": "Block", + "src": "4215:77:6", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1694, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1690, + "name": "isExecuted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1450, + "src": "4229:10:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + } + }, + "id": 1692, + "indexExpression": { + "argumentTypes": null, + "id": 1691, + "name": "dataHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1677, + "src": "4240:8:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4229:20:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1693, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4252:4:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "4229:27:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1695, + "nodeType": "ExpressionStatement", + "src": "4229:27:6" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1696, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4277:4:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 1637, + "id": 1697, + "nodeType": "Return", + "src": "4270:11:6" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 1700, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4308:5:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 1637, + "id": 1701, + "nodeType": "Return", + "src": "4301:12:6" + } + ] + }, + "id": 1703, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": [], + "id": 1634, + "modifierName": { + "argumentTypes": null, + "id": 1633, + "name": "onlyGnosisSafe", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1469, + "src": "3536:14:6", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "3536:14:6" + } + ], + "name": "isExecutable", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1632, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1623, + "name": "sender", + "nodeType": "VariableDeclaration", + "scope": 1703, + "src": "3426:14:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1622, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3426:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1625, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 1703, + "src": "3442:10:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1624, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3442:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1627, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 1703, + "src": "3454:13:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1626, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3454:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1629, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 1703, + "src": "3469:10:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + "typeName": { + "id": 1628, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3469:5:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1631, + "name": "operation", + "nodeType": "VariableDeclaration", + "scope": 1703, + "src": "3481:30:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + }, + "typeName": { + "contractScope": null, + "id": 1630, + "name": "GnosisSafe.Operation", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 61, + "src": "3481:20:6", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3425:87:6" + }, + "payable": false, + "returnParameters": { + "id": 1637, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1636, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1703, + "src": "3568:4:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1635, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3568:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3567:6:6" + }, + "scope": 1759, + "src": "3404:916:6", + "stateMutability": "nonpayable", + "superFunction": 17, + "visibility": "public" + }, + { + "body": { + "id": 1745, + "nodeType": "Block", + "src": "4592:294:6", + "statements": [ + { + "assignments": [], + "declarations": [ + { + "constant": false, + "id": 1711, + "name": "confirmationCount", + "nodeType": "VariableDeclaration", + "scope": 1746, + "src": "4602:25:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1710, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4602:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1712, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "4602:25:6" + }, + { + "body": { + "id": 1741, + "nodeType": "Block", + "src": "4682:176:6", + "statements": [ + { + "condition": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1724, + "name": "isConfirmed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1456, + "src": "4700:11:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(bytes32 => mapping(address => bool))" + } + }, + "id": 1726, + "indexExpression": { + "argumentTypes": null, + "id": 1725, + "name": "dataHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1705, + "src": "4712:8:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4700:21:6", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1730, + "indexExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1727, + "name": "friends", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1442, + "src": "4722:7:6", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 1729, + "indexExpression": { + "argumentTypes": null, + "id": 1728, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1714, + "src": "4730:1:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4722:10:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4700:33:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1734, + "nodeType": "IfStatement", + "src": "4696:74:6", + "trueBody": { + "expression": { + "argumentTypes": null, + "id": 1732, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "4751:19:6", + "subExpression": { + "argumentTypes": null, + "id": 1731, + "name": "confirmationCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1711, + "src": "4751:17:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1733, + "nodeType": "ExpressionStatement", + "src": "4751:19:6" + } + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1737, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1735, + "name": "confirmationCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1711, + "src": "4788:17:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 1736, + "name": "threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1439, + "src": "4809:9:6", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "4788:30:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1740, + "nodeType": "IfStatement", + "src": "4784:63:6", + "trueBody": { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1738, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4843:4:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 1709, + "id": 1739, + "nodeType": "Return", + "src": "4836:11:6" + } + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1720, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1717, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1714, + "src": "4657:1:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1718, + "name": "friends", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1442, + "src": "4661:7:6", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 1719, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4661:14:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4657:18:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1742, + "initializationExpression": { + "assignments": [ + 1714 + ], + "declarations": [ + { + "constant": false, + "id": 1714, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 1746, + "src": "4642:9:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1713, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4642:7:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1716, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 1715, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4654:1:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "4642:13:6" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 1722, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "4677:3:6", + "subExpression": { + "argumentTypes": null, + "id": 1721, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1714, + "src": "4677:1:6", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1723, + "nodeType": "ExpressionStatement", + "src": "4677:3:6" + }, + "nodeType": "ForStatement", + "src": "4637:221:6" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 1743, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4874:5:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 1709, + "id": 1744, + "nodeType": "Return", + "src": "4867:12:6" + } + ] + }, + "id": 1746, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "isConfirmedByRequiredFriends", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1706, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1705, + "name": "dataHash", + "nodeType": "VariableDeclaration", + "scope": 1746, + "src": "4519:16:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1704, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4519:7:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4518:18:6" + }, + "payable": false, + "returnParameters": { + "id": 1709, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1708, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1746, + "src": "4582:4:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1707, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4582:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4581:6:6" + }, + "scope": 1759, + "src": "4481:405:6", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1757, + "nodeType": "Block", + "src": "5106:39:6", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1754, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1748, + "src": "5133:4:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 1753, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2083, + "src": "5123:9:6", + "typeDescriptions": { + "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", + "typeString": "function () pure returns (bytes32)" + } + }, + "id": 1755, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5123:15:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 1752, + "id": 1756, + "nodeType": "Return", + "src": "5116:22:6" + } + ] + }, + "id": 1758, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "getDataHash", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1749, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1748, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 1758, + "src": "5036:10:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + "typeName": { + "id": 1747, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5036:5:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5035:12:6" + }, + "payable": false, + "returnParameters": { + "id": 1752, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1751, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1758, + "src": "5093:7:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1750, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5093:7:6", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5092:9:6" + }, + "scope": 1759, + "src": "5015:130:6", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 1760, + "src": "257:4890:6" + } + ], + "src": "0:5148:6" + }, + "compiler": { + "name": "solc", + "version": "0.4.19+commit.c4cbbb05.Emscripten.clang" + }, + "networks": { + "4": { + "events": {}, + "links": {}, + "address": "0x0297aeb84568d3ab9d7b382240250dd0db22e05d", + "transactionHash": "0x85a0a0d054ba5a10091dabe072894eb0bc5f45b84927e8313094a600cabff0c6" + }, + "42": { + "events": {}, + "links": {}, + "address": "0x1f3c28359e6018304b28fa46f5ef87f4b295939c", + "transactionHash": "0x9c32de35cd9321dbb7c9bb2aa35fd3a4199b08db6aae909ace4a5bf93392fd87" + }, + "1525342778744": { + "events": {}, + "links": {}, + "address": "0x38ba6d49ff8d62e729429947e2381f8e1b01933b", + "transactionHash": "0x6ade3e6ed704785b52fedb81d093263eeaccdcb3dd3883a7c040679c6c8096fc" + } + }, + "schemaVersion": "2.0.0", + "updatedAt": "2018-05-04T13:47:03.966Z" +} \ No newline at end of file diff --git a/safe-contracts/build/contracts/WhitelistExtension.json b/safe-contracts/build/contracts/WhitelistExtension.json new file mode 100644 index 0000000000..cf5117ea8c --- /dev/null +++ b/safe-contracts/build/contracts/WhitelistExtension.json @@ -0,0 +1,5400 @@ +{ + "contractName": "WhitelistExtension", + "abi": [ + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "address" + } + ], + "name": "isWhitelisted", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "NAME", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "gnosisSafe", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "VERSION", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "name": "accounts", + "type": "address[]" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "constant": false, + "inputs": [ + { + "name": "accounts", + "type": "address[]" + } + ], + "name": "setup", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_masterCopy", + "type": "address" + } + ], + "name": "changeMasterCopy", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "addToWhitelist", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "removeFromWhitelist", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "sender", + "type": "address" + }, + { + "name": "to", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + }, + { + "name": "data", + "type": "bytes" + }, + { + "name": "operation", + "type": "uint8" + } + ], + "name": "isExecutable", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x6060604052341561000f57600080fd5b604051610c9a380380610c9a833981016040528080518201919050506100478161004d64010000000002610680176401000000009004565b506101a1565b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561009557600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600090505b815181101561019d57600082828151811015156100f457fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff161415151561012157600080fd5b600160026000848481518110151561013557fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806001019150506100db565b5050565b610aea806101b06000396000f300606060405260043610610099576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680633af32abf1461009e5780637de7edef146100ef5780638ab1d68114610128578063a3f4df7e14610161578063a84173ae146101ef578063bd5b853b14610244578063cde09ca91461029e578063e43252d714610366578063ffa1ad741461039f575b600080fd5b34156100a957600080fd5b6100d5600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061042d565b604051808215151515815260200191505060405180910390f35b34156100fa57600080fd5b610126600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061044d565b005b341561013357600080fd5b61015f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610512565b005b341561016c57600080fd5b610174610621565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101b4578082015181840152602081019050610199565b50505050905090810190601f1680156101e15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156101fa57600080fd5b61020261065a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561024f57600080fd5b61029c600480803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091905050610680565b005b34156102a957600080fd5b61034c600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803560ff169060200190919050506107d4565b604051808215151515815260200191505060405180910390f35b341561037157600080fd5b61039d600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061094f565b005b34156103aa57600080fd5b6103b2610a85565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103f25780820151818401526020810190506103d7565b50505050905090810190601f16801561041f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60026020528060005260406000206000915054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156104a957600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156104cf57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561056e57600080fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156105c657600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6040805190810160405280601381526020017f57686974656c69737420457874656e73696f6e0000000000000000000000000081525081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156106c857600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600090505b81518110156107d0576000828281518110151561072757fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff161415151561075457600080fd5b600160026000848481518110151561076857fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808060010191505061070e565b5050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e876000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b151561089b57600080fd5b6102c65a03f115156108ac57600080fd5b5050506040518051905015156108c157600080fd5b600060028111156108ce57fe5b8260028111156108da57fe5b1415156108e657600080fd5b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156109415760019050610946565b600090505b95945050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156109ab57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156109d157600080fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610a2a57600080fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6040805190810160405280600581526020017f302e302e31000000000000000000000000000000000000000000000000000000815250815600a165627a7a723058201b57b6ee7b9d50f85b4f4aef604b3f927644cd770495870aa4014654c521c72a0029", + "deployedBytecode": "0x606060405260043610610099576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680633af32abf1461009e5780637de7edef146100ef5780638ab1d68114610128578063a3f4df7e14610161578063a84173ae146101ef578063bd5b853b14610244578063cde09ca91461029e578063e43252d714610366578063ffa1ad741461039f575b600080fd5b34156100a957600080fd5b6100d5600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061042d565b604051808215151515815260200191505060405180910390f35b34156100fa57600080fd5b610126600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061044d565b005b341561013357600080fd5b61015f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610512565b005b341561016c57600080fd5b610174610621565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101b4578082015181840152602081019050610199565b50505050905090810190601f1680156101e15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156101fa57600080fd5b61020261065a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561024f57600080fd5b61029c600480803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091905050610680565b005b34156102a957600080fd5b61034c600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803560ff169060200190919050506107d4565b604051808215151515815260200191505060405180910390f35b341561037157600080fd5b61039d600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061094f565b005b34156103aa57600080fd5b6103b2610a85565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103f25780820151818401526020810190506103d7565b50505050905090810190601f16801561041f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60026020528060005260406000206000915054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156104a957600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156104cf57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561056e57600080fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156105c657600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6040805190810160405280601381526020017f57686974656c69737420457874656e73696f6e0000000000000000000000000081525081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156106c857600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600090505b81518110156107d0576000828281518110151561072757fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff161415151561075457600080fd5b600160026000848481518110151561076857fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808060010191505061070e565b5050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e876000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b151561089b57600080fd5b6102c65a03f115156108ac57600080fd5b5050506040518051905015156108c157600080fd5b600060028111156108ce57fe5b8260028111156108da57fe5b1415156108e657600080fd5b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156109415760019050610946565b600090505b95945050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156109ab57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156109d157600080fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610a2a57600080fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6040805190810160405280600581526020017f302e302e31000000000000000000000000000000000000000000000000000000815250815600a165627a7a723058201b57b6ee7b9d50f85b4f4aef604b3f927644cd770495870aa4014654c521c72a0029", + "sourceMap": "240:3067:7:-;;;796:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;873:15;879:8;873:5;;;;;:15;;;:::i;:::-;796:99;240:3067;;1017:477;1351:9;1248:1;1233:10;;;;;;;;;;;1225:24;;;1217:33;;;;;;;;1325:10;1301;;:35;;;;;;;;;;;;;;;;;;1363:1;1351:13;;1346:142;1370:8;:15;1366:1;:19;1346:142;;;1429:1;1414:8;1423:1;1414:11;;;;;;;;;;;;;;;;;;:16;;;;1406:25;;;;;;;;1473:4;1445:13;:26;1459:8;1468:1;1459:11;;;;;;;;;;;;;;;;;;1445:26;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;1387:3;;;;;;;1346:142;;;1017:477;;:::o;240:3067::-;;;;;;;", + "deployedSourceMap": "240:3067:7:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;528:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1640:185;;;;;;;;;;;;;;;;;;;;;;;;;;;;2330:176;;;;;;;;;;;;;;;;;;;;;;;;;;;;288:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;427:28:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1017:477;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2878:427;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1974:202;;;;;;;;;;;;;;;;;;;;;;;;;;;;345:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;528:46:7;;;;;;;;;;;;;;;;;;;;;;:::o;1640:185::-;647:10;;;;;;;;;;;625:33;;:10;:33;;;617:42;;;;;;;;1782:1;1766:11;1758:25;;;;1750:34;;;;;;;;1807:11;1794:10;;:24;;;;;;;;;;;;;;;;;;1640:185;:::o;2330:176::-;647:10;;;;;;;;;;;625:33;;:10;:33;;;617:42;;;;;;;;2436:13;:22;2450:7;2436:22;;;;;;;;;;;;;;;;;;;;;;;;;2428:31;;;;;;;;2494:5;2469:13;:22;2483:7;2469:22;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;2330:176;:::o;288:51::-;;;;;;;;;;;;;;;;;;;;:::o;427:28::-;;;;;;;;;;;;;:::o;1017:477::-;1351:9;1248:1;1233:10;;;;;;;;;;;1225:24;;;1217:33;;;;;;;;1325:10;1301;;:35;;;;;;;;;;;;;;;;;;1363:1;1351:13;;1346:142;1370:8;:15;1366:1;:19;1346:142;;;1429:1;1414:8;1423:1;1414:11;;;;;;;;;;;;;;;;;;:16;;;;1406:25;;;;;;;;1473:4;1445:13;:26;1459:8;1468:1;1459:11;;;;;;;;;;;;;;;;;;1445:26;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;1387:3;;;;;;;1346:142;;;1017:477;;:::o;2878:427::-;3019:4;3136:10;;;;;;;;;;;:18;;;3155:6;3136:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3128:35;;;;;;;;3194:25;3181:38;;;;;;;;:9;:38;;;;;;;;;3173:47;;;;;;;;3234:13;:17;3248:2;3234:17;;;;;;;;;;;;;;;;;;;;;;;;;3230:46;;;3272:4;3265:11;;;;3230:46;3293:5;3286:12;;2878:427;;;;;;;;:::o;1974:202::-;647:10;;;;;;;;;;;625:33;;:10;:33;;;617:42;;;;;;;;2086:1;2075:7;:12;;;;2067:21;;;;;;;;2107:13;:22;2121:7;2107:22;;;;;;;;;;;;;;;;;;;;;;;;;2106:23;2098:32;;;;;;;;2165:4;2140:13;:22;2154:7;2140:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;1974:202;:::o;345:40::-;;;;;;;;;;;;;;;;;;;;:::o", + "source": "pragma solidity 0.4.19;\nimport \"../Extension.sol\";\nimport \"../GnosisSafe.sol\";\n\n\n/// @title Whitelist Extension - Allows to execute transactions to whitelisted addresses without confirmations.\n/// @author Stefan George - \ncontract WhitelistExtension is Extension {\n\n string public constant NAME = \"Whitelist Extension\";\n string public constant VERSION = \"0.0.1\";\n\n WhitelistExtension masterCopy;\n GnosisSafe public gnosisSafe;\n\n // isWhitelisted mapping maps destination address to boolean.\n mapping (address => bool) public isWhitelisted;\n\n modifier onlyGnosisSafe() {\n require(msg.sender == address(gnosisSafe));\n _;\n }\n\n /// @dev Constructor function triggers setup function.\n /// @param accounts List of whitelisted accounts.\n function WhitelistExtension(address[] accounts)\n public\n {\n setup(accounts);\n }\n\n /// @dev Setup function sets initial storage of contract.\n /// @param accounts List of whitelisted accounts.\n function setup(address[] accounts)\n public\n {\n // gnosisSafe can only be 0 at initalization of contract.\n // Check ensures that setup function can only be called once.\n require(address(gnosisSafe) == 0);\n // Set whitelisted destinations.\n gnosisSafe = GnosisSafe(msg.sender);\n for (uint256 i = 0; i < accounts.length; i++) {\n require(accounts[i] != 0);\n isWhitelisted[accounts[i]]= true;\n }\n }\n\n /// @dev Allows to upgrade the contract. This can only be done via a Safe transaction.\n /// @param _masterCopy New contract address.\n function changeMasterCopy(WhitelistExtension _masterCopy)\n public\n onlyGnosisSafe\n {\n require(address(_masterCopy) != 0);\n masterCopy = _masterCopy;\n }\n\n /// @dev Allows to add destination to whitelist. This can only be done via a Safe transaction.\n /// @param account Destination address.\n function addToWhitelist(address account)\n public\n onlyGnosisSafe\n {\n require(account != 0);\n require(!isWhitelisted[account]);\n isWhitelisted[account] = true;\n }\n\n /// @dev Allows to remove destination from whitelist. This can only be done via a Safe transaction.\n /// @param account Destination address.\n function removeFromWhitelist(address account)\n public\n onlyGnosisSafe\n {\n require(isWhitelisted[account]);\n isWhitelisted[account] = false;\n }\n\n /// @dev Returns if Safe transaction is to a whitelisted destination.\n /// @param sender Safe owner sending Safe transaction.\n /// @param to Whitelisted destination address.\n /// @param value Not checked.\n /// @param data Not checked.\n /// @param operation Only Call operations are allowed.\n /// @return Returns if transaction can be executed.\n function isExecutable(address sender, address to, uint256 value, bytes data, GnosisSafe.Operation operation)\n public\n returns (bool)\n {\n // Only Safe owners are allowed to execute transactions to whitelisted accounts.\n require(gnosisSafe.isOwner(sender));\n require(operation == GnosisSafe.Operation.Call);\n if (isWhitelisted[to])\n return true;\n return false;\n }\n}\n", + "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/extensions/WhitelistExtension.sol", + "ast": { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/extensions/WhitelistExtension.sol", + "exportedSymbols": { + "WhitelistExtension": [ + 1961 + ] + }, + "id": 1962, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1761, + "literals": [ + "solidity", + "0.4", + ".19" + ], + "nodeType": "PragmaDirective", + "src": "0:23:7" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Extension.sol", + "file": "../Extension.sol", + "id": 1762, + "nodeType": "ImportDirective", + "scope": 1962, + "sourceUnit": 19, + "src": "24:26:7", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", + "file": "../GnosisSafe.sol", + "id": 1763, + "nodeType": "ImportDirective", + "scope": 1962, + "sourceUnit": 964, + "src": "51:27:7", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": [], + "baseName": { + "contractScope": null, + "id": 1764, + "name": "Extension", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 18, + "src": "271:9:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + }, + "id": 1765, + "nodeType": "InheritanceSpecifier", + "src": "271:9:7" + } + ], + "contractDependencies": [ + 18 + ], + "contractKind": "contract", + "documentation": "@title Whitelist Extension - Allows to execute transactions to whitelisted addresses without confirmations.\n @author Stefan George - ", + "fullyImplemented": true, + "id": 1961, + "linearizedBaseContracts": [ + 1961, + 18 + ], + "name": "WhitelistExtension", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "id": 1768, + "name": "NAME", + "nodeType": "VariableDeclaration", + "scope": 1961, + "src": "288:51:7", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory", + "typeString": "string memory" + }, + "typeName": { + "id": 1766, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "288:6:7", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string storage pointer" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "57686974656c69737420457874656e73696f6e", + "id": 1767, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "318:21:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_f55422feda264e00354b067f8535751fe0d08b1f1fa6347321df2abf99a49e10", + "typeString": "literal_string \"Whitelist Extension\"" + }, + "value": "Whitelist Extension" + }, + "visibility": "public" + }, + { + "constant": true, + "id": 1771, + "name": "VERSION", + "nodeType": "VariableDeclaration", + "scope": 1961, + "src": "345:40:7", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory", + "typeString": "string memory" + }, + "typeName": { + "id": 1769, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "345:6:7", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string storage pointer" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "302e302e31", + "id": 1770, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "378:7:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", + "typeString": "literal_string \"0.0.1\"" + }, + "value": "0.0.1" + }, + "visibility": "public" + }, + { + "constant": false, + "id": 1773, + "name": "masterCopy", + "nodeType": "VariableDeclaration", + "scope": 1961, + "src": "392:29:7", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_WhitelistExtension_$1961", + "typeString": "contract WhitelistExtension" + }, + "typeName": { + "contractScope": null, + "id": 1772, + "name": "WhitelistExtension", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1961, + "src": "392:18:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_WhitelistExtension_$1961", + "typeString": "contract WhitelistExtension" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1775, + "name": "gnosisSafe", + "nodeType": "VariableDeclaration", + "scope": 1961, + "src": "427:28:7", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + }, + "typeName": { + "contractScope": null, + "id": 1774, + "name": "GnosisSafe", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 963, + "src": "427:10:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 1779, + "name": "isWhitelisted", + "nodeType": "VariableDeclaration", + "scope": 1961, + "src": "528:46:7", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "typeName": { + "id": 1778, + "keyType": { + "id": 1776, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "537:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "528:25:7", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "valueType": { + "id": 1777, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "548:4:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "value": null, + "visibility": "public" + }, + { + "body": { + "id": 1791, + "nodeType": "Block", + "src": "607:70:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1787, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1782, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2089, + "src": "625:3:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1783, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "625:10:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1785, + "name": "gnosisSafe", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1775, + "src": "647:10:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + ], + "id": 1784, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "639:7:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1786, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "639:19:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "625:33:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1781, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "617:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1788, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "617:42:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1789, + "nodeType": "ExpressionStatement", + "src": "617:42:7" + }, + { + "id": 1790, + "nodeType": "PlaceholderStatement", + "src": "669:1:7" + } + ] + }, + "id": 1792, + "name": "onlyGnosisSafe", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 1780, + "nodeType": "ParameterList", + "parameters": [], + "src": "604:2:7" + }, + "src": "581:96:7", + "visibility": "internal" + }, + { + "body": { + "id": 1802, + "nodeType": "Block", + "src": "863:32:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1799, + "name": "accounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1795, + "src": "879:8:7", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + ], + "id": 1798, + "name": "setup", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1854, + "src": "873:5:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$returns$__$", + "typeString": "function (address[] memory)" + } + }, + "id": 1800, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "873:15:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1801, + "nodeType": "ExpressionStatement", + "src": "873:15:7" + } + ] + }, + "id": 1803, + "implemented": true, + "isConstructor": true, + "isDeclaredConst": false, + "modifiers": [], + "name": "WhitelistExtension", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1796, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1795, + "name": "accounts", + "nodeType": "VariableDeclaration", + "scope": 1803, + "src": "824:18:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + }, + "typeName": { + "baseType": { + "id": 1793, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "824:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1794, + "length": null, + "nodeType": "ArrayTypeName", + "src": "824:9:7", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[] storage pointer" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "823:20:7" + }, + "payable": false, + "returnParameters": { + "id": 1797, + "nodeType": "ParameterList", + "parameters": [], + "src": "863:0:7" + }, + "scope": 1961, + "src": "796:99:7", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1853, + "nodeType": "Block", + "src": "1071:423:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1814, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1811, + "name": "gnosisSafe", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1775, + "src": "1233:10:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + ], + "id": 1810, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1225:7:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1812, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1225:19:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1813, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1248:1:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1225:24:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1809, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "1217:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1815, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1217:33:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1816, + "nodeType": "ExpressionStatement", + "src": "1217:33:7" + }, + { + "expression": { + "argumentTypes": null, + "id": 1822, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1817, + "name": "gnosisSafe", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1775, + "src": "1301:10:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1819, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2089, + "src": "1325:3:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1820, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1325:10:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1818, + "name": "GnosisSafe", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 963, + "src": "1314:10:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_GnosisSafe_$963_$", + "typeString": "type(contract GnosisSafe)" + } + }, + "id": 1821, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1314:22:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + }, + "src": "1301:35:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + }, + "id": 1823, + "nodeType": "ExpressionStatement", + "src": "1301:35:7" + }, + { + "body": { + "id": 1851, + "nodeType": "Block", + "src": "1392:96:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1840, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1836, + "name": "accounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1806, + "src": "1414:8:7", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 1838, + "indexExpression": { + "argumentTypes": null, + "id": 1837, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1825, + "src": "1423:1:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1414:11:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1839, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1429:1:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1414:16:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1835, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "1406:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1841, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1406:25:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1842, + "nodeType": "ExpressionStatement", + "src": "1406:25:7" + }, + { + "expression": { + "argumentTypes": null, + "id": 1849, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1843, + "name": "isWhitelisted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1779, + "src": "1445:13:7", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1847, + "indexExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1844, + "name": "accounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1806, + "src": "1459:8:7", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 1846, + "indexExpression": { + "argumentTypes": null, + "id": 1845, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1825, + "src": "1468:1:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1459:11:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1445:26:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1848, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1473:4:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "1445:32:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1850, + "nodeType": "ExpressionStatement", + "src": "1445:32:7" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1831, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1828, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1825, + "src": "1366:1:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1829, + "name": "accounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1806, + "src": "1370:8:7", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 1830, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1370:15:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1366:19:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1852, + "initializationExpression": { + "assignments": [ + 1825 + ], + "declarations": [ + { + "constant": false, + "id": 1825, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 1854, + "src": "1351:9:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1824, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1351:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1827, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 1826, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1363:1:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "1351:13:7" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 1833, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "1387:3:7", + "subExpression": { + "argumentTypes": null, + "id": 1832, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1825, + "src": "1387:1:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1834, + "nodeType": "ExpressionStatement", + "src": "1387:3:7" + }, + "nodeType": "ForStatement", + "src": "1346:142:7" + } + ] + }, + "id": 1854, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "setup", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1807, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1806, + "name": "accounts", + "nodeType": "VariableDeclaration", + "scope": 1854, + "src": "1032:18:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + }, + "typeName": { + "baseType": { + "id": 1804, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1032:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1805, + "length": null, + "nodeType": "ArrayTypeName", + "src": "1032:9:7", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[] storage pointer" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1031:20:7" + }, + "payable": false, + "returnParameters": { + "id": 1808, + "nodeType": "ParameterList", + "parameters": [], + "src": "1071:0:7" + }, + "scope": 1961, + "src": "1017:477:7", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1873, + "nodeType": "Block", + "src": "1740:85:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1866, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1863, + "name": "_masterCopy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1856, + "src": "1766:11:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_WhitelistExtension_$1961", + "typeString": "contract WhitelistExtension" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_WhitelistExtension_$1961", + "typeString": "contract WhitelistExtension" + } + ], + "id": 1862, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1758:7:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1864, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1758:20:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1865, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1782:1:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1758:25:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1861, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "1750:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1867, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1750:34:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1868, + "nodeType": "ExpressionStatement", + "src": "1750:34:7" + }, + { + "expression": { + "argumentTypes": null, + "id": 1871, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1869, + "name": "masterCopy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1773, + "src": "1794:10:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_WhitelistExtension_$1961", + "typeString": "contract WhitelistExtension" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1870, + "name": "_masterCopy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1856, + "src": "1807:11:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_WhitelistExtension_$1961", + "typeString": "contract WhitelistExtension" + } + }, + "src": "1794:24:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_WhitelistExtension_$1961", + "typeString": "contract WhitelistExtension" + } + }, + "id": 1872, + "nodeType": "ExpressionStatement", + "src": "1794:24:7" + } + ] + }, + "id": 1874, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": [], + "id": 1859, + "modifierName": { + "argumentTypes": null, + "id": 1858, + "name": "onlyGnosisSafe", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1792, + "src": "1721:14:7", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "1721:14:7" + } + ], + "name": "changeMasterCopy", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1857, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1856, + "name": "_masterCopy", + "nodeType": "VariableDeclaration", + "scope": 1874, + "src": "1666:30:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_WhitelistExtension_$1961", + "typeString": "contract WhitelistExtension" + }, + "typeName": { + "contractScope": null, + "id": 1855, + "name": "WhitelistExtension", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1961, + "src": "1666:18:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_WhitelistExtension_$1961", + "typeString": "contract WhitelistExtension" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1665:32:7" + }, + "payable": false, + "returnParameters": { + "id": 1860, + "nodeType": "ParameterList", + "parameters": [], + "src": "1740:0:7" + }, + "scope": 1961, + "src": "1640:185:7", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1900, + "nodeType": "Block", + "src": "2057:119:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1884, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1882, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1876, + "src": "2075:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1883, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2086:1:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2075:12:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1881, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "2067:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1885, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2067:21:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1886, + "nodeType": "ExpressionStatement", + "src": "2067:21:7" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1891, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "2106:23:7", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1888, + "name": "isWhitelisted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1779, + "src": "2107:13:7", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1890, + "indexExpression": { + "argumentTypes": null, + "id": 1889, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1876, + "src": "2121:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2107:22:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1887, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "2098:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1892, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2098:32:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1893, + "nodeType": "ExpressionStatement", + "src": "2098:32:7" + }, + { + "expression": { + "argumentTypes": null, + "id": 1898, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1894, + "name": "isWhitelisted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1779, + "src": "2140:13:7", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1896, + "indexExpression": { + "argumentTypes": null, + "id": 1895, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1876, + "src": "2154:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2140:22:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1897, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2165:4:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "2140:29:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1899, + "nodeType": "ExpressionStatement", + "src": "2140:29:7" + } + ] + }, + "id": 1901, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": [], + "id": 1879, + "modifierName": { + "argumentTypes": null, + "id": 1878, + "name": "onlyGnosisSafe", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1792, + "src": "2038:14:7", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "2038:14:7" + } + ], + "name": "addToWhitelist", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1877, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1876, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 1901, + "src": "1998:15:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1875, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1998:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1997:17:7" + }, + "payable": false, + "returnParameters": { + "id": 1880, + "nodeType": "ParameterList", + "parameters": [], + "src": "2057:0:7" + }, + "scope": 1961, + "src": "1974:202:7", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1920, + "nodeType": "Block", + "src": "2418:88:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1909, + "name": "isWhitelisted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1779, + "src": "2436:13:7", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1911, + "indexExpression": { + "argumentTypes": null, + "id": 1910, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1903, + "src": "2450:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2436:22:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1908, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "2428:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1912, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2428:31:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1913, + "nodeType": "ExpressionStatement", + "src": "2428:31:7" + }, + { + "expression": { + "argumentTypes": null, + "id": 1918, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1914, + "name": "isWhitelisted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1779, + "src": "2469:13:7", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1916, + "indexExpression": { + "argumentTypes": null, + "id": 1915, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1903, + "src": "2483:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2469:22:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 1917, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2494:5:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "2469:30:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1919, + "nodeType": "ExpressionStatement", + "src": "2469:30:7" + } + ] + }, + "id": 1921, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": [], + "id": 1906, + "modifierName": { + "argumentTypes": null, + "id": 1905, + "name": "onlyGnosisSafe", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1792, + "src": "2399:14:7", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "2399:14:7" + } + ], + "name": "removeFromWhitelist", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1904, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1903, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 1921, + "src": "2359:15:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1902, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2359:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2358:17:7" + }, + "payable": false, + "returnParameters": { + "id": 1907, + "nodeType": "ParameterList", + "parameters": [], + "src": "2418:0:7" + }, + "scope": 1961, + "src": "2330:176:7", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1959, + "nodeType": "Block", + "src": "3029:276:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1939, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1923, + "src": "3155:6:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 1937, + "name": "gnosisSafe", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1775, + "src": "3136:10:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + }, + "id": 1938, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "isOwner", + "nodeType": "MemberAccess", + "referencedDeclaration": 47, + "src": "3136:18:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view external returns (bool)" + } + }, + "id": 1940, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3136:26:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1936, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "3128:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1941, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3128:35:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1942, + "nodeType": "ExpressionStatement", + "src": "3128:35:7" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + }, + "id": 1948, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1944, + "name": "operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1931, + "src": "3181:9:7", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1945, + "name": "GnosisSafe", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 963, + "src": "3194:10:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_GnosisSafe_$963_$", + "typeString": "type(contract GnosisSafe)" + } + }, + "id": 1946, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "Operation", + "nodeType": "MemberAccess", + "referencedDeclaration": 61, + "src": "3194:20:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_Operation_$61_$", + "typeString": "type(enum GnosisSafe.Operation)" + } + }, + "id": 1947, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Call", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3194:25:7", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + }, + "src": "3181:38:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1943, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "3173:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1949, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3173:47:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1950, + "nodeType": "ExpressionStatement", + "src": "3173:47:7" + }, + { + "condition": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1951, + "name": "isWhitelisted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1779, + "src": "3234:13:7", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1953, + "indexExpression": { + "argumentTypes": null, + "id": 1952, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1925, + "src": "3248:2:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3234:17:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1956, + "nodeType": "IfStatement", + "src": "3230:46:7", + "trueBody": { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1954, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3272:4:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 1935, + "id": 1955, + "nodeType": "Return", + "src": "3265:11:7" + } + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 1957, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3293:5:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 1935, + "id": 1958, + "nodeType": "Return", + "src": "3286:12:7" + } + ] + }, + "id": 1960, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "isExecutable", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1932, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1923, + "name": "sender", + "nodeType": "VariableDeclaration", + "scope": 1960, + "src": "2900:14:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1922, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2900:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1925, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 1960, + "src": "2916:10:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1924, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2916:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1927, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 1960, + "src": "2928:13:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1926, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2928:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1929, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 1960, + "src": "2943:10:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + "typeName": { + "id": 1928, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2943:5:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1931, + "name": "operation", + "nodeType": "VariableDeclaration", + "scope": 1960, + "src": "2955:30:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + }, + "typeName": { + "contractScope": null, + "id": 1930, + "name": "GnosisSafe.Operation", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 61, + "src": "2955:20:7", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2899:87:7" + }, + "payable": false, + "returnParameters": { + "id": 1935, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1934, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1960, + "src": "3019:4:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1933, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3019:4:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3018:6:7" + }, + "scope": 1961, + "src": "2878:427:7", + "stateMutability": "nonpayable", + "superFunction": 17, + "visibility": "public" + } + ], + "scope": 1962, + "src": "240:3067:7" + } + ], + "src": "0:3308:7" + }, + "legacyAST": { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/extensions/WhitelistExtension.sol", + "exportedSymbols": { + "WhitelistExtension": [ + 1961 + ] + }, + "id": 1962, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1761, + "literals": [ + "solidity", + "0.4", + ".19" + ], + "nodeType": "PragmaDirective", + "src": "0:23:7" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Extension.sol", + "file": "../Extension.sol", + "id": 1762, + "nodeType": "ImportDirective", + "scope": 1962, + "sourceUnit": 19, + "src": "24:26:7", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", + "file": "../GnosisSafe.sol", + "id": 1763, + "nodeType": "ImportDirective", + "scope": 1962, + "sourceUnit": 964, + "src": "51:27:7", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": [], + "baseName": { + "contractScope": null, + "id": 1764, + "name": "Extension", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 18, + "src": "271:9:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + }, + "id": 1765, + "nodeType": "InheritanceSpecifier", + "src": "271:9:7" + } + ], + "contractDependencies": [ + 18 + ], + "contractKind": "contract", + "documentation": "@title Whitelist Extension - Allows to execute transactions to whitelisted addresses without confirmations.\n @author Stefan George - ", + "fullyImplemented": true, + "id": 1961, + "linearizedBaseContracts": [ + 1961, + 18 + ], + "name": "WhitelistExtension", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "id": 1768, + "name": "NAME", + "nodeType": "VariableDeclaration", + "scope": 1961, + "src": "288:51:7", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory", + "typeString": "string memory" + }, + "typeName": { + "id": 1766, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "288:6:7", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string storage pointer" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "57686974656c69737420457874656e73696f6e", + "id": 1767, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "318:21:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_f55422feda264e00354b067f8535751fe0d08b1f1fa6347321df2abf99a49e10", + "typeString": "literal_string \"Whitelist Extension\"" + }, + "value": "Whitelist Extension" + }, + "visibility": "public" + }, + { + "constant": true, + "id": 1771, + "name": "VERSION", + "nodeType": "VariableDeclaration", + "scope": 1961, + "src": "345:40:7", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory", + "typeString": "string memory" + }, + "typeName": { + "id": 1769, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "345:6:7", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string storage pointer" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "302e302e31", + "id": 1770, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "378:7:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", + "typeString": "literal_string \"0.0.1\"" + }, + "value": "0.0.1" + }, + "visibility": "public" + }, + { + "constant": false, + "id": 1773, + "name": "masterCopy", + "nodeType": "VariableDeclaration", + "scope": 1961, + "src": "392:29:7", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_WhitelistExtension_$1961", + "typeString": "contract WhitelistExtension" + }, + "typeName": { + "contractScope": null, + "id": 1772, + "name": "WhitelistExtension", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1961, + "src": "392:18:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_WhitelistExtension_$1961", + "typeString": "contract WhitelistExtension" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1775, + "name": "gnosisSafe", + "nodeType": "VariableDeclaration", + "scope": 1961, + "src": "427:28:7", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + }, + "typeName": { + "contractScope": null, + "id": 1774, + "name": "GnosisSafe", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 963, + "src": "427:10:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 1779, + "name": "isWhitelisted", + "nodeType": "VariableDeclaration", + "scope": 1961, + "src": "528:46:7", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "typeName": { + "id": 1778, + "keyType": { + "id": 1776, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "537:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "528:25:7", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "valueType": { + "id": 1777, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "548:4:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "value": null, + "visibility": "public" + }, + { + "body": { + "id": 1791, + "nodeType": "Block", + "src": "607:70:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1787, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1782, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2089, + "src": "625:3:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1783, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "625:10:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1785, + "name": "gnosisSafe", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1775, + "src": "647:10:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + ], + "id": 1784, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "639:7:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1786, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "639:19:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "625:33:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1781, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "617:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1788, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "617:42:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1789, + "nodeType": "ExpressionStatement", + "src": "617:42:7" + }, + { + "id": 1790, + "nodeType": "PlaceholderStatement", + "src": "669:1:7" + } + ] + }, + "id": 1792, + "name": "onlyGnosisSafe", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 1780, + "nodeType": "ParameterList", + "parameters": [], + "src": "604:2:7" + }, + "src": "581:96:7", + "visibility": "internal" + }, + { + "body": { + "id": 1802, + "nodeType": "Block", + "src": "863:32:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1799, + "name": "accounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1795, + "src": "879:8:7", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + ], + "id": 1798, + "name": "setup", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1854, + "src": "873:5:7", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$returns$__$", + "typeString": "function (address[] memory)" + } + }, + "id": 1800, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "873:15:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1801, + "nodeType": "ExpressionStatement", + "src": "873:15:7" + } + ] + }, + "id": 1803, + "implemented": true, + "isConstructor": true, + "isDeclaredConst": false, + "modifiers": [], + "name": "WhitelistExtension", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1796, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1795, + "name": "accounts", + "nodeType": "VariableDeclaration", + "scope": 1803, + "src": "824:18:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + }, + "typeName": { + "baseType": { + "id": 1793, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "824:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1794, + "length": null, + "nodeType": "ArrayTypeName", + "src": "824:9:7", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[] storage pointer" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "823:20:7" + }, + "payable": false, + "returnParameters": { + "id": 1797, + "nodeType": "ParameterList", + "parameters": [], + "src": "863:0:7" + }, + "scope": 1961, + "src": "796:99:7", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1853, + "nodeType": "Block", + "src": "1071:423:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1814, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1811, + "name": "gnosisSafe", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1775, + "src": "1233:10:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + ], + "id": 1810, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1225:7:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1812, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1225:19:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1813, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1248:1:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1225:24:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1809, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "1217:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1815, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1217:33:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1816, + "nodeType": "ExpressionStatement", + "src": "1217:33:7" + }, + { + "expression": { + "argumentTypes": null, + "id": 1822, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1817, + "name": "gnosisSafe", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1775, + "src": "1301:10:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1819, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2089, + "src": "1325:3:7", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1820, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1325:10:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1818, + "name": "GnosisSafe", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 963, + "src": "1314:10:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_GnosisSafe_$963_$", + "typeString": "type(contract GnosisSafe)" + } + }, + "id": 1821, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1314:22:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + }, + "src": "1301:35:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + }, + "id": 1823, + "nodeType": "ExpressionStatement", + "src": "1301:35:7" + }, + { + "body": { + "id": 1851, + "nodeType": "Block", + "src": "1392:96:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1840, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1836, + "name": "accounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1806, + "src": "1414:8:7", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 1838, + "indexExpression": { + "argumentTypes": null, + "id": 1837, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1825, + "src": "1423:1:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1414:11:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1839, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1429:1:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1414:16:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1835, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "1406:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1841, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1406:25:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1842, + "nodeType": "ExpressionStatement", + "src": "1406:25:7" + }, + { + "expression": { + "argumentTypes": null, + "id": 1849, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1843, + "name": "isWhitelisted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1779, + "src": "1445:13:7", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1847, + "indexExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1844, + "name": "accounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1806, + "src": "1459:8:7", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 1846, + "indexExpression": { + "argumentTypes": null, + "id": 1845, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1825, + "src": "1468:1:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1459:11:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1445:26:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1848, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1473:4:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "1445:32:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1850, + "nodeType": "ExpressionStatement", + "src": "1445:32:7" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1831, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1828, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1825, + "src": "1366:1:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1829, + "name": "accounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1806, + "src": "1370:8:7", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 1830, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1370:15:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1366:19:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1852, + "initializationExpression": { + "assignments": [ + 1825 + ], + "declarations": [ + { + "constant": false, + "id": 1825, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 1854, + "src": "1351:9:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1824, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1351:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1827, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 1826, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1363:1:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "1351:13:7" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 1833, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "1387:3:7", + "subExpression": { + "argumentTypes": null, + "id": 1832, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1825, + "src": "1387:1:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1834, + "nodeType": "ExpressionStatement", + "src": "1387:3:7" + }, + "nodeType": "ForStatement", + "src": "1346:142:7" + } + ] + }, + "id": 1854, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "setup", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1807, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1806, + "name": "accounts", + "nodeType": "VariableDeclaration", + "scope": 1854, + "src": "1032:18:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + }, + "typeName": { + "baseType": { + "id": 1804, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1032:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1805, + "length": null, + "nodeType": "ArrayTypeName", + "src": "1032:9:7", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[] storage pointer" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1031:20:7" + }, + "payable": false, + "returnParameters": { + "id": 1808, + "nodeType": "ParameterList", + "parameters": [], + "src": "1071:0:7" + }, + "scope": 1961, + "src": "1017:477:7", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1873, + "nodeType": "Block", + "src": "1740:85:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1866, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1863, + "name": "_masterCopy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1856, + "src": "1766:11:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_WhitelistExtension_$1961", + "typeString": "contract WhitelistExtension" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_WhitelistExtension_$1961", + "typeString": "contract WhitelistExtension" + } + ], + "id": 1862, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1758:7:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1864, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1758:20:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1865, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1782:1:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1758:25:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1861, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "1750:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1867, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1750:34:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1868, + "nodeType": "ExpressionStatement", + "src": "1750:34:7" + }, + { + "expression": { + "argumentTypes": null, + "id": 1871, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1869, + "name": "masterCopy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1773, + "src": "1794:10:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_WhitelistExtension_$1961", + "typeString": "contract WhitelistExtension" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1870, + "name": "_masterCopy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1856, + "src": "1807:11:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_WhitelistExtension_$1961", + "typeString": "contract WhitelistExtension" + } + }, + "src": "1794:24:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_WhitelistExtension_$1961", + "typeString": "contract WhitelistExtension" + } + }, + "id": 1872, + "nodeType": "ExpressionStatement", + "src": "1794:24:7" + } + ] + }, + "id": 1874, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": [], + "id": 1859, + "modifierName": { + "argumentTypes": null, + "id": 1858, + "name": "onlyGnosisSafe", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1792, + "src": "1721:14:7", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "1721:14:7" + } + ], + "name": "changeMasterCopy", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1857, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1856, + "name": "_masterCopy", + "nodeType": "VariableDeclaration", + "scope": 1874, + "src": "1666:30:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_WhitelistExtension_$1961", + "typeString": "contract WhitelistExtension" + }, + "typeName": { + "contractScope": null, + "id": 1855, + "name": "WhitelistExtension", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1961, + "src": "1666:18:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_WhitelistExtension_$1961", + "typeString": "contract WhitelistExtension" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1665:32:7" + }, + "payable": false, + "returnParameters": { + "id": 1860, + "nodeType": "ParameterList", + "parameters": [], + "src": "1740:0:7" + }, + "scope": 1961, + "src": "1640:185:7", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1900, + "nodeType": "Block", + "src": "2057:119:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1884, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1882, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1876, + "src": "2075:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1883, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2086:1:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2075:12:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1881, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "2067:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1885, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2067:21:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1886, + "nodeType": "ExpressionStatement", + "src": "2067:21:7" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1891, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "2106:23:7", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1888, + "name": "isWhitelisted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1779, + "src": "2107:13:7", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1890, + "indexExpression": { + "argumentTypes": null, + "id": 1889, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1876, + "src": "2121:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2107:22:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1887, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "2098:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1892, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2098:32:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1893, + "nodeType": "ExpressionStatement", + "src": "2098:32:7" + }, + { + "expression": { + "argumentTypes": null, + "id": 1898, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1894, + "name": "isWhitelisted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1779, + "src": "2140:13:7", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1896, + "indexExpression": { + "argumentTypes": null, + "id": 1895, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1876, + "src": "2154:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2140:22:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1897, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2165:4:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "2140:29:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1899, + "nodeType": "ExpressionStatement", + "src": "2140:29:7" + } + ] + }, + "id": 1901, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": [], + "id": 1879, + "modifierName": { + "argumentTypes": null, + "id": 1878, + "name": "onlyGnosisSafe", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1792, + "src": "2038:14:7", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "2038:14:7" + } + ], + "name": "addToWhitelist", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1877, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1876, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 1901, + "src": "1998:15:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1875, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1998:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1997:17:7" + }, + "payable": false, + "returnParameters": { + "id": 1880, + "nodeType": "ParameterList", + "parameters": [], + "src": "2057:0:7" + }, + "scope": 1961, + "src": "1974:202:7", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1920, + "nodeType": "Block", + "src": "2418:88:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1909, + "name": "isWhitelisted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1779, + "src": "2436:13:7", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1911, + "indexExpression": { + "argumentTypes": null, + "id": 1910, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1903, + "src": "2450:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2436:22:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1908, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "2428:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1912, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2428:31:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1913, + "nodeType": "ExpressionStatement", + "src": "2428:31:7" + }, + { + "expression": { + "argumentTypes": null, + "id": 1918, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1914, + "name": "isWhitelisted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1779, + "src": "2469:13:7", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1916, + "indexExpression": { + "argumentTypes": null, + "id": 1915, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1903, + "src": "2483:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2469:22:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 1917, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2494:5:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "2469:30:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1919, + "nodeType": "ExpressionStatement", + "src": "2469:30:7" + } + ] + }, + "id": 1921, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": [], + "id": 1906, + "modifierName": { + "argumentTypes": null, + "id": 1905, + "name": "onlyGnosisSafe", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1792, + "src": "2399:14:7", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "2399:14:7" + } + ], + "name": "removeFromWhitelist", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1904, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1903, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 1921, + "src": "2359:15:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1902, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2359:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2358:17:7" + }, + "payable": false, + "returnParameters": { + "id": 1907, + "nodeType": "ParameterList", + "parameters": [], + "src": "2418:0:7" + }, + "scope": 1961, + "src": "2330:176:7", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1959, + "nodeType": "Block", + "src": "3029:276:7", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1939, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1923, + "src": "3155:6:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 1937, + "name": "gnosisSafe", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1775, + "src": "3136:10:7", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + }, + "id": 1938, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "isOwner", + "nodeType": "MemberAccess", + "referencedDeclaration": 47, + "src": "3136:18:7", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view external returns (bool)" + } + }, + "id": 1940, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3136:26:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1936, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "3128:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1941, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3128:35:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1942, + "nodeType": "ExpressionStatement", + "src": "3128:35:7" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + }, + "id": 1948, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1944, + "name": "operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1931, + "src": "3181:9:7", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1945, + "name": "GnosisSafe", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 963, + "src": "3194:10:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_GnosisSafe_$963_$", + "typeString": "type(contract GnosisSafe)" + } + }, + "id": 1946, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "Operation", + "nodeType": "MemberAccess", + "referencedDeclaration": 61, + "src": "3194:20:7", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_Operation_$61_$", + "typeString": "type(enum GnosisSafe.Operation)" + } + }, + "id": 1947, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Call", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3194:25:7", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + }, + "src": "3181:38:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1943, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "3173:7:7", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1949, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3173:47:7", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1950, + "nodeType": "ExpressionStatement", + "src": "3173:47:7" + }, + { + "condition": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1951, + "name": "isWhitelisted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1779, + "src": "3234:13:7", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1953, + "indexExpression": { + "argumentTypes": null, + "id": 1952, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1925, + "src": "3248:2:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3234:17:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1956, + "nodeType": "IfStatement", + "src": "3230:46:7", + "trueBody": { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1954, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3272:4:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 1935, + "id": 1955, + "nodeType": "Return", + "src": "3265:11:7" + } + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 1957, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3293:5:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 1935, + "id": 1958, + "nodeType": "Return", + "src": "3286:12:7" + } + ] + }, + "id": 1960, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "isExecutable", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1932, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1923, + "name": "sender", + "nodeType": "VariableDeclaration", + "scope": 1960, + "src": "2900:14:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1922, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2900:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1925, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 1960, + "src": "2916:10:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1924, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2916:7:7", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1927, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 1960, + "src": "2928:13:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1926, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2928:7:7", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1929, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 1960, + "src": "2943:10:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + "typeName": { + "id": 1928, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2943:5:7", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1931, + "name": "operation", + "nodeType": "VariableDeclaration", + "scope": 1960, + "src": "2955:30:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + }, + "typeName": { + "contractScope": null, + "id": 1930, + "name": "GnosisSafe.Operation", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 61, + "src": "2955:20:7", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2899:87:7" + }, + "payable": false, + "returnParameters": { + "id": 1935, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1934, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1960, + "src": "3019:4:7", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1933, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3019:4:7", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3018:6:7" + }, + "scope": 1961, + "src": "2878:427:7", + "stateMutability": "nonpayable", + "superFunction": 17, + "visibility": "public" + } + ], + "scope": 1962, + "src": "240:3067:7" + } + ], + "src": "0:3308:7" + }, + "compiler": { + "name": "solc", + "version": "0.4.19+commit.c4cbbb05.Emscripten.clang" + }, + "networks": { + "4": { + "events": {}, + "links": {}, + "address": "0xd46e430c8949ebff0abe12ba43657a706e7312fa", + "transactionHash": "0xb509689ff0e5d576d0d387957af06ac47680f15fb6792c1e699ffbaf056cd1a5" + }, + "42": { + "events": {}, + "links": {}, + "address": "0x9e170c48fc139d12f5f21c62526180fcecc3fba5", + "transactionHash": "0x992f285c128baa71bf36c278113c4286210616d32f21aa920ad11c990fd62069" + }, + "1525342778744": { + "events": {}, + "links": {}, + "address": "0xb5d9423b5e38ccdc3d578f1f0347e7fba3641474", + "transactionHash": "0x66e2aea779f2c020e2c01741d018f5d7ea897659a32f2c7eb58add9b29ca981b" + } + }, + "schemaVersion": "2.0.0", + "updatedAt": "2018-05-04T13:47:03.971Z" +} \ No newline at end of file From 9f2ea3d4e65cac2ca736d5619ae85a5cbea826c8 Mon Sep 17 00:00:00 2001 From: apanizo Date: Mon, 7 May 2018 15:21:27 +0200 Subject: [PATCH 027/138] WA-238 Adding gnosis-safe logo on safe details view --- src/components/layout/Col/index.jsx | 6 ++++-- src/components/layout/Col/index.scss | 9 +++++++++ .../safe/component/Safe/assets/gnosis_safe.svg | 17 +++++++++++++++++ src/routes/safe/component/Safe/index.jsx | 16 +++++++++------- 4 files changed, 39 insertions(+), 9 deletions(-) create mode 100644 src/routes/safe/component/Safe/assets/gnosis_safe.svg diff --git a/src/components/layout/Col/index.jsx b/src/components/layout/Col/index.jsx index 1e8137c5e0..f9ae8d870b 100644 --- a/src/components/layout/Col/index.jsx +++ b/src/components/layout/Col/index.jsx @@ -16,7 +16,8 @@ type Props = { around?: 'xs' | 'sm' | 'md' | 'lg', between?: 'xs' | 'sm' | 'md' | 'lg', margin?: 'sm' | 'md' | 'lg' | 'xl', - layout?: 'inherit' | 'block', + layout?: 'inherit' | 'block' | 'column', + overflow?: boolean, xs?: number | boolean, sm?: number | boolean, md?: number | boolean, @@ -30,7 +31,7 @@ type Props = { } const Col = ({ - children, margin, layout = 'inherit', + children, margin, layout = 'inherit', overflow, xs, sm, md, lg, start, center, end, top, middle, bottom, around, between, xsOffset, smOffset, mdOffset, lgOffset, @@ -55,6 +56,7 @@ const Col = ({ smOffset ? capitalize(smOffset, 'smOffset') : undefined, mdOffset ? capitalize(mdOffset, 'mdOffset') : undefined, lgOffset ? capitalize(lgOffset, 'lgOffset') : undefined, + { overflow }, layout, props.className, ) diff --git a/src/components/layout/Col/index.scss b/src/components/layout/Col/index.scss index 91fb43d600..30d06ace16 100644 --- a/src/components/layout/Col/index.scss +++ b/src/components/layout/Col/index.scss @@ -12,6 +12,15 @@ display: block; } +.column { + display: flex; + flex-direction: column; +} + +.overflow { + overflow: hidden; +} + .marginSm { margin-bottom: $sm; } diff --git a/src/routes/safe/component/Safe/assets/gnosis_safe.svg b/src/routes/safe/component/Safe/assets/gnosis_safe.svg new file mode 100644 index 0000000000..c7bf5502b7 --- /dev/null +++ b/src/routes/safe/component/Safe/assets/gnosis_safe.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/src/routes/safe/component/Safe/index.jsx b/src/routes/safe/component/Safe/index.jsx index 442373e5c8..9ec0726a40 100644 --- a/src/routes/safe/component/Safe/index.jsx +++ b/src/routes/safe/component/Safe/index.jsx @@ -3,6 +3,7 @@ import * as React from 'react' import Block from '~/components/layout/Block' import Col from '~/components/layout/Col' import Bold from '~/components/layout/Bold' +import Img from '~/components/layout/Img' import Paragraph from '~/components/layout/Paragraph' import Row from '~/components/layout/Row' import { type Safe } from '~/routes/safe/store/model/safe' @@ -14,6 +15,8 @@ import Owners from './Owners' import Confirmations from './Confirmations' import DailyLimit from './DailyLimit' +const safeIcon = require('./assets/gnosis_safe.svg') + type SafeProps = { safe: Safe, balance: string, @@ -21,7 +24,6 @@ type SafeProps = { const listStyle = { width: '100%', - minWidth: '485px', } class GnoSafe extends React.PureComponent { @@ -29,8 +31,8 @@ class GnoSafe extends React.PureComponent { const { safe, balance } = this.props return ( - - + + @@ -39,15 +41,15 @@ class GnoSafe extends React.PureComponent { - + {safe.name.toUpperCase()} - - Extra info will be placed here - + + Safe Icon + ) From 88795cf890db18bd2a49460807f2b29cbc9e9ef2 Mon Sep 17 00:00:00 2001 From: apanizo Date: Mon, 7 May 2018 15:50:52 +0200 Subject: [PATCH 028/138] WA-238 Logic for showing Withdrawn form after clicking on Safe's button --- src/routes/safe/component/Safe/DailyLimit.jsx | 11 +++++++- src/routes/safe/component/Safe/index.jsx | 27 ++++++++++++++----- src/routes/safe/component/Withdrawn/index.jsx | 10 +++++++ 3 files changed, 41 insertions(+), 7 deletions(-) create mode 100644 src/routes/safe/component/Withdrawn/index.jsx diff --git a/src/routes/safe/component/Safe/DailyLimit.jsx b/src/routes/safe/component/Safe/DailyLimit.jsx index 20bd47c719..1ea68679e8 100644 --- a/src/routes/safe/component/Safe/DailyLimit.jsx +++ b/src/routes/safe/component/Safe/DailyLimit.jsx @@ -3,18 +3,27 @@ import * as React from 'react' import { ListItem } from 'material-ui/List' import Avatar from 'material-ui/Avatar' import NotificationsPaused from 'material-ui-icons/NotificationsPaused' +import Button from '~/components/layout/Button' import ListItemText from '~/components/List/ListItemText' type Props = { limit: number, + onWithdrawn: () => void, } -const DailyLimit = ({ limit }: Props) => ( +const DailyLimit = ({ limit, onWithdrawn }: Props) => ( + ) diff --git a/src/routes/safe/component/Safe/index.jsx b/src/routes/safe/component/Safe/index.jsx index 9ec0726a40..b1f3034e88 100644 --- a/src/routes/safe/component/Safe/index.jsx +++ b/src/routes/safe/component/Safe/index.jsx @@ -9,6 +9,8 @@ import Row from '~/components/layout/Row' import { type Safe } from '~/routes/safe/store/model/safe' import List from 'material-ui/List' +import Withdrawn from '~/routes/safe/component/Withdrawn' + import Address from './Address' import Balance from './Balance' import Owners from './Owners' @@ -22,33 +24,46 @@ type SafeProps = { balance: string, } +type State = { + component: React$Node, +} + const listStyle = { width: '100%', } -class GnoSafe extends React.PureComponent { +class GnoSafe extends React.PureComponent { + state = { + component: undefined, + } + + onWithdrawn = () => { + this.setState({ component: }) + } + render() { const { safe, balance } = this.props + const { component } = this.state return ( - +
- + - + {safe.name.toUpperCase()} - - Safe Icon + + { component || Safe Icon } diff --git a/src/routes/safe/component/Withdrawn/index.jsx b/src/routes/safe/component/Withdrawn/index.jsx new file mode 100644 index 0000000000..7037e5ad69 --- /dev/null +++ b/src/routes/safe/component/Withdrawn/index.jsx @@ -0,0 +1,10 @@ +// @flow +import * as React from 'react' + +const Withdrawn = () => ( +
+ Withdrawn form +
+) + +export default Withdrawn From 32f88a873c86185b2473a9dc58f76ef418711ab2 Mon Sep 17 00:00:00 2001 From: apanizo Date: Tue, 8 May 2018 13:18:48 +0200 Subject: [PATCH 029/138] WA-238 Specifying Go address and title in Stepper via props --- src/components/Stepper/Controls/index.jsx | 18 ++++++++++++------ src/components/Stepper/index.jsx | 8 +++++++- 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/src/components/Stepper/Controls/index.jsx b/src/components/Stepper/Controls/index.jsx index 3c6e009bf6..c868fbc295 100644 --- a/src/components/Stepper/Controls/index.jsx +++ b/src/components/Stepper/Controls/index.jsx @@ -2,7 +2,6 @@ import * as React from 'react' import Button from '~/components/layout/Button' import Link from '~/components/layout/Link' -import { SAFELIST_ADDRESS } from '~/routes/routes' type NextButtonProps = { text: string, @@ -20,9 +19,14 @@ const NextButton = ({ text, disabled }: NextButtonProps) => ( ) -const GoButton = () => ( - - +type GoProps = { + title: string, + to: string, +} + +const GoButton = ({ title, to }: GoProps) => ( + + ) @@ -54,14 +58,16 @@ type Props = { firstPage: boolean, lastPage: boolean, submitting: boolean, + goTitle: string, + goPath: string, } const Controls = ({ - finishedTx, onPrevious, firstPage, lastPage, submitting, + finishedTx, onPrevious, firstPage, lastPage, submitting, goTitle, goPath, }: Props) => ( { finishedTx - ? + ? : { } render() { - const { steps, children, finishedTransaction } = this.props + const { + steps, children, finishedTransaction, goTitle, goPath, + } = this.props const { page, values } = this.state const activePage = this.getActivePageFrom(children) const isLastPage = page === steps.length - 1 @@ -105,6 +109,8 @@ class GnoStepper extends React.PureComponent { onPrevious={this.previous} firstPage={page === 0} lastPage={isLastPage} + goTitle={goTitle} + goPath={goPath} /> From 2359ba640ac44dfc39c04f1e4f8104ab65ff6eae Mon Sep 17 00:00:00 2001 From: apanizo Date: Tue, 8 May 2018 13:19:07 +0200 Subject: [PATCH 030/138] WA-238 Adding TXS address --- src/routes/routes.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/routes/routes.js b/src/routes/routes.js index ed52162771..3f167833a2 100644 --- a/src/routes/routes.js +++ b/src/routes/routes.js @@ -3,3 +3,4 @@ export const SAFE_PARAM_ADDRESS = 'address' export const SAFELIST_ADDRESS = '/safes' export const OPEN_ADDRESS = '/open' export const WELCOME_ADDRESS = '/welcome' +export const TXS_ADDRESS = '/txs' From fe7a936687adc12f4caa9dac509fb996ccb04b79 Mon Sep 17 00:00:00 2001 From: apanizo Date: Tue, 8 May 2018 13:21:50 +0200 Subject: [PATCH 031/138] WA-238 Include the go title and to properties in Open route component --- src/routes/open/components/Layout.jsx | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/routes/open/components/Layout.jsx b/src/routes/open/components/Layout.jsx index 85f1f2153e..25a6723394 100644 --- a/src/routes/open/components/Layout.jsx +++ b/src/routes/open/components/Layout.jsx @@ -5,6 +5,7 @@ import Stepper from '~/components/Stepper' import Confirmation from '~/routes/open/components/FormConfirmation' import Review from '~/routes/open/components/ReviewInformation' import SafeFields, { safeFieldsValidation } from '~/routes/open/components/SafeForm' +import { SAFELIST_ADDRESS } from '~/routes/routes' const getSteps = () => [ 'Fill Safe Form', 'Review Information', 'Deploy it', @@ -34,6 +35,8 @@ const Layout = ({ { provider ? ( Date: Tue, 8 May 2018 13:27:22 +0200 Subject: [PATCH 032/138] WA-238 Adding logic for withdrawing safe's funds --- .../safe/component/Withdrawn/withdrawn.js | 26 +++++++++++++++++++ src/wallets/safeContracts.js | 2 +- 2 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 src/routes/safe/component/Withdrawn/withdrawn.js diff --git a/src/routes/safe/component/Withdrawn/withdrawn.js b/src/routes/safe/component/Withdrawn/withdrawn.js new file mode 100644 index 0000000000..9981bc2386 --- /dev/null +++ b/src/routes/safe/component/Withdrawn/withdrawn.js @@ -0,0 +1,26 @@ +// @flow +import { getGnosisSafeContract, getCreateDailyLimitExtensionContract } from '~/wallets/safeContracts' + +export const DESTINATION_PARAM = 'destination' +export const VALUE_PARAM = 'ether' + +const withdrawn = async (values: Object, safeAddress: string, userAccount: string): Promise => { + const gnosisSafe = getGnosisSafeContract().at(safeAddress) + const dailyLimitExtension = getCreateDailyLimitExtensionContract().at(gnosisSafe.getExtensions()[0]) + + if (await dailyLimitExtension.gnosisSafe() !== gnosisSafe.address) { + throw new Error('Using an extension of different safe') + } + + const CALL = 0 + await gnosisSafe.executeExtension( + values[DESTINATION_PARAM], + values[VALUE_PARAM], + 0, + CALL, + dailyLimitExtension.address, + { from: userAccount }, + ) +} + +export default withdrawn diff --git a/src/wallets/safeContracts.js b/src/wallets/safeContracts.js index 547ab9cb93..f2879e0b60 100644 --- a/src/wallets/safeContracts.js +++ b/src/wallets/safeContracts.js @@ -44,7 +44,7 @@ const createDailyLimitExtensionContract = (web3: any) => { export const getGnosisSafeContract = ensureOnce(createGnosisSafeContract) const getCreateProxyFactoryContract = ensureOnce(createProxyFactoryContract) const getCreateAddExtensionContract = ensureOnce(createAddExtensionContract) -const getCreateDailyLimitExtensionContract = ensureOnce(createDailyLimitExtensionContract) +export const getCreateDailyLimitExtensionContract = ensureOnce(createDailyLimitExtensionContract) const createMasterCopies = async () => { const web3 = getWeb3() From b47214253641ce6343d7981130fd99beb4171bd5 Mon Sep 17 00:00:00 2001 From: apanizo Date: Tue, 8 May 2018 13:45:00 +0200 Subject: [PATCH 033/138] WA-238 Withdrawn Review component --- .../safe/component/Withdrawn/Review.jsx | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 src/routes/safe/component/Withdrawn/Review.jsx diff --git a/src/routes/safe/component/Withdrawn/Review.jsx b/src/routes/safe/component/Withdrawn/Review.jsx new file mode 100644 index 0000000000..a2fee94cc1 --- /dev/null +++ b/src/routes/safe/component/Withdrawn/Review.jsx @@ -0,0 +1,25 @@ +// @flow +import * as React from 'react' +import Block from '~/components/layout/Block' +import Bold from '~/components/layout/Bold' +import Heading from '~/components/layout/Heading' +import Paragraph from '~/components/layout/Paragraph' +import { DESTINATION_PARAM, VALUE_PARAM } from './withdrawn' + +type FormProps = { + values: Object, +} + +const Review = () => ({ values }: FormProps) => ( + + Review the Withdrawn Operation + + Destination: {values[DESTINATION_PARAM]} + + + Value in ETH: {values[VALUE_PARAM]} + + +) + +export default Review From 2d63300e54969efa0cd3116c17d38f766744684e Mon Sep 17 00:00:00 2001 From: apanizo Date: Tue, 8 May 2018 13:45:30 +0200 Subject: [PATCH 034/138] WA-238 Withdrawn Form component --- .../component/Withdrawn/WithdrawnForm.jsx | 46 +++++++++++++++++++ .../safe/component/Withdrawn/selector.js | 11 +++++ 2 files changed, 57 insertions(+) create mode 100644 src/routes/safe/component/Withdrawn/WithdrawnForm.jsx create mode 100644 src/routes/safe/component/Withdrawn/selector.js diff --git a/src/routes/safe/component/Withdrawn/WithdrawnForm.jsx b/src/routes/safe/component/Withdrawn/WithdrawnForm.jsx new file mode 100644 index 0000000000..7912c23d67 --- /dev/null +++ b/src/routes/safe/component/Withdrawn/WithdrawnForm.jsx @@ -0,0 +1,46 @@ +// @flow +import * as React from 'react' +import Field from '~/components/forms/Field' +import TextField from '~/components/forms/TextField' +import { composeValidators, mustBeNumber, required, greaterThan, mustBeEthereumAddress } from '~/components/forms/validator' +import Block from '~/components/layout/Block' +import Heading from '~/components/layout/Heading' +import { DESTINATION_PARAM, VALUE_PARAM } from './withdrawn' + +export const CONFIRMATIONS_ERROR = 'Number of confirmations can not be higher than the number of owners' + +export const safeFieldsValidation = (values: Object) => { + const errors = {} + + if (Number.parseInt(values.owners, 10) < Number.parseInt(values.confirmations, 10)) { + errors.confirmations = CONFIRMATIONS_ERROR + } + + return errors +} + +export default () => () => ( + + Withdrawn Funds + + + + + + + +) diff --git a/src/routes/safe/component/Withdrawn/selector.js b/src/routes/safe/component/Withdrawn/selector.js new file mode 100644 index 0000000000..9e7bfef11a --- /dev/null +++ b/src/routes/safe/component/Withdrawn/selector.js @@ -0,0 +1,11 @@ +// @flow +import { createStructuredSelector } from 'reselect' +import { userAccountSelector } from '~/wallets/store/selectors/index' + +export type SelectorProps = { + userAddress: userAccountSelector, +} + +export default createStructuredSelector({ + userAddress: userAccountSelector, +}) From 48dcf7c0401289c855e1f39268cbafaa6d27f3cf Mon Sep 17 00:00:00 2001 From: apanizo Date: Tue, 8 May 2018 13:47:14 +0200 Subject: [PATCH 035/138] WA-238 Withdrawn component --- src/routes/safe/component/Safe/index.jsx | 12 ++-- src/routes/safe/component/Withdrawn/index.jsx | 68 +++++++++++++++++-- 2 files changed, 67 insertions(+), 13 deletions(-) diff --git a/src/routes/safe/component/Safe/index.jsx b/src/routes/safe/component/Safe/index.jsx index b1f3034e88..795ed1b1d3 100644 --- a/src/routes/safe/component/Safe/index.jsx +++ b/src/routes/safe/component/Safe/index.jsx @@ -38,7 +38,9 @@ class GnoSafe extends React.PureComponent { } onWithdrawn = () => { - this.setState({ component: }) + const { safe } = this.props + + this.setState({ component: }) } render() { @@ -47,7 +49,7 @@ class GnoSafe extends React.PureComponent { return ( - + @@ -56,7 +58,7 @@ class GnoSafe extends React.PureComponent { - + {safe.name.toUpperCase()} @@ -71,8 +73,4 @@ class GnoSafe extends React.PureComponent { } } -/* - - {safe.name.toUpperCase()} -*/ export default GnoSafe diff --git a/src/routes/safe/component/Withdrawn/index.jsx b/src/routes/safe/component/Withdrawn/index.jsx index 7037e5ad69..8c213f8766 100644 --- a/src/routes/safe/component/Withdrawn/index.jsx +++ b/src/routes/safe/component/Withdrawn/index.jsx @@ -1,10 +1,66 @@ // @flow import * as React from 'react' +import { connect } from 'react-redux' +import Stepper from '~/components/Stepper' +import { TXS_ADDRESS } from '~/routes/routes' +import selector, { type SelectorProps } from './selector' +import withdrawn from './withdrawn' +import WithdrawnForm from './WithdrawnForm' +import Review from './Review' -const Withdrawn = () => ( -
- Withdrawn form -
-) +const getSteps = () => [ + 'Fill Withdrawn Form', 'Review Withdrawn', +] + +type Props = SelectorProps & { + safeAddress: string, +} + +type State = { + done: boolean, +} + +class Withdrawn extends React.Component { + state = { + done: false, + } + + onWithdrawn = async (values: Object) => { + try { + const { safeAddress, userAddress } = this.props + await withdrawn(values, safeAddress, userAddress) + this.setState({ done: true }) + } catch (error) { + this.setState({ done: false }) + // eslint-disable-next-line + console.log('Error while withdrawing funds ' + error) + } + } + + render() { + const { done } = this.state + const steps = getSteps() + + return ( + + + + { WithdrawnForm } + + + { Review } + + + + ) + } +} + +export default connect(selector)(Withdrawn) -export default Withdrawn From 8f95eee3374b3bba319a7636b96badbc54f582f6 Mon Sep 17 00:00:00 2001 From: apanizo Date: Tue, 8 May 2018 16:00:05 +0200 Subject: [PATCH 036/138] WA-238 Improve Withdrawn CSS look and feel --- src/components/Header/component/Layout.jsx | 2 +- src/components/Stepper/index.jsx | 14 +++- src/components/layout/Col/index.scss | 83 +++++++++++----------- src/routes/safe/component/Safe/index.jsx | 6 +- 4 files changed, 57 insertions(+), 48 deletions(-) diff --git a/src/components/Header/component/Layout.jsx b/src/components/Header/component/Layout.jsx index ff220579cc..7afbb08850 100644 --- a/src/components/Header/component/Layout.jsx +++ b/src/components/Header/component/Layout.jsx @@ -20,7 +20,7 @@ const Header = ({ provider, reloadWallet }: Props) => ( Gnosis Safe - + { provider ? : } diff --git a/src/components/Stepper/index.jsx b/src/components/Stepper/index.jsx index 373ffec8dd..67a76a6b48 100644 --- a/src/components/Stepper/index.jsx +++ b/src/components/Stepper/index.jsx @@ -1,5 +1,6 @@ // @flow import Stepper, { Step as FormStep, StepLabel } from 'material-ui/Stepper' +import { withStyles } from 'material-ui/styles'; import * as React from 'react' import type { FormApi } from 'react-final-form' import GnoForm from '~/components/forms/GnoForm' @@ -10,6 +11,7 @@ import Controls from './Controls' export { default as Step } from './Step' type Props = { + classes: Object, goTitle: string, goPath: string, steps: string[], @@ -78,7 +80,7 @@ class GnoStepper extends React.PureComponent { render() { const { - steps, children, finishedTransaction, goTitle, goPath, + steps, children, finishedTransaction, goTitle, goPath, classes, } = this.props const { page, values } = this.state const activePage = this.getActivePageFrom(children) @@ -86,7 +88,7 @@ class GnoStepper extends React.PureComponent { return ( - + {steps.map(label => ( {label} @@ -121,4 +123,10 @@ class GnoStepper extends React.PureComponent { } } -export default GnoStepper +const styles = { + root: { + flex: '1 1 auto', + }, +} + +export default withStyles(styles)(GnoStepper) diff --git a/src/components/layout/Col/index.scss b/src/components/layout/Col/index.scss index 30d06ace16..e7d5ee137f 100644 --- a/src/components/layout/Col/index.scss +++ b/src/components/layout/Col/index.scss @@ -1,6 +1,5 @@ .col { flex: 1 1 auto; - align-items: center; display: inherit; } @@ -39,107 +38,107 @@ @define-mixin col $size { .$(size)1 { - flex-basis: 8.333%; - max-width: 8.333%; + flex-basis: 8.333%; + max-width: 8.333%; } .$(size)2 { - flex-basis: 16.667%; - max-width: 16.667%; + flex-basis: 16.667%; + max-width: 16.667%; } .$(size)3 { - flex-basis: 25%; - max-width: 25%; + flex-basis: 25%; + max-width: 25%; } .$(size)4 { - flex-basis: 33.333%; - max-width: 33.333%; + flex-basis: 33.333%; + max-width: 33.333%; } .$(size)5 { - flex-basis: 41.667%; - max-width: 41.667%; + flex-basis: 41.667%; + max-width: 41.667%; } .$(size)6 { - flex-basis: 50%; - max-width: 50%; + flex-basis: 50%; + max-width: 50%; } .$(size)7 { - flex-basis: 58.333%; - max-width: 58.333%; + flex-basis: 58.333%; + max-width: 58.333%; } .$(size)8 { - flex-basis: 66.667%; - max-width: 66.667%; + flex-basis: 66.667%; + max-width: 66.667%; } .$(size)9 { - flex-basis: 75%; - max-width: 75%; + flex-basis: 75%; + max-width: 75%; } .$(size)10 { - flex-basis: 83.333%; - max-width: 83.333%; + flex-basis: 83.333%; + max-width: 83.333%; } .$(size)11 { - flex-basis: 91.667%; - max-width: 91.667%; + flex-basis: 91.667%; + max-width: 91.667%; } .$(size)12 { - flex-basis: 100%; - max-width: 100%; + flex-basis: 100%; + max-width: 100%; } .$(size)Offset1 { - margin-left: 8.333%; + margin-left: 8.333%; } .$(size)Offset2 { - margin-left: 16.667%; + margin-left: 16.667%; } .$(size)Offset3 { - margin-left: 25%; + margin-left: 25%; } .$(size)Offset4 { - margin-left: 33.333%; + margin-left: 33.333%; } .$(size)Offset5 { - margin-left: 41.667%; + margin-left: 41.667%; } .$(size)Offset6 { - margin-left: 50%; + margin-left: 50%; } .$(size)Offset7 { - margin-left: 58.333%; + margin-left: 58.333%; } .$(size)Offset8 { - margin-left: 66.667%; + margin-left: 66.667%; } .$(size)Offset9 { - margin-left: 75%; + margin-left: 75%; } .$(size)Offset10 { - margin-left: 83.333%; + margin-left: 83.333%; } .$(size)Offset11 { - margin-left: 91.667%; + margin-left: 91.667%; } } @@ -173,16 +172,16 @@ @define-mixin row $size { .start$(size) { - justify-content: flex-start; - text-align: start; + justify-content: flex-start; + text-align: start; } .center$(size) { - justify-content: center; - text-align: center; + justify-content: center; + text-align: center; } .end$(size) { - justify-content: flex-end; - text-align: end; + justify-content: flex-end; + text-align: end; } .top$(size) { align-items: flex-start; diff --git a/src/routes/safe/component/Safe/index.jsx b/src/routes/safe/component/Safe/index.jsx index 795ed1b1d3..563f069c7b 100644 --- a/src/routes/safe/component/Safe/index.jsx +++ b/src/routes/safe/component/Safe/index.jsx @@ -64,8 +64,10 @@ class GnoSafe extends React.PureComponent { {safe.name.toUpperCase()}
- - { component || Safe Icon } + + + { component || Safe Icon } + From f882c557fe5b70b53b700c65fd76326925695a30 Mon Sep 17 00:00:00 2001 From: apanizo Date: Tue, 8 May 2018 16:06:30 +0200 Subject: [PATCH 037/138] WA-238 Fix indentation Withdrawn Review component --- src/components/Stepper/index.jsx | 2 +- src/components/layout/Paragraph/index.js | 6 +++--- src/components/layout/Paragraph/index.scss | 6 +++++- src/routes/safe/component/Withdrawn/Review.jsx | 4 ++-- 4 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/components/Stepper/index.jsx b/src/components/Stepper/index.jsx index 67a76a6b48..cb5a389976 100644 --- a/src/components/Stepper/index.jsx +++ b/src/components/Stepper/index.jsx @@ -1,6 +1,6 @@ // @flow import Stepper, { Step as FormStep, StepLabel } from 'material-ui/Stepper' -import { withStyles } from 'material-ui/styles'; +import { withStyles } from 'material-ui/styles' import * as React from 'react' import type { FormApi } from 'react-final-form' import GnoForm from '~/components/forms/GnoForm' diff --git a/src/components/layout/Paragraph/index.js b/src/components/layout/Paragraph/index.js index 09aeb5e42c..46db76e4ee 100644 --- a/src/components/layout/Paragraph/index.js +++ b/src/components/layout/Paragraph/index.js @@ -6,7 +6,7 @@ import styles from './index.scss' const cx = classNames.bind(styles) type Props = { - center?: boolean, + layout?: 'center' | 'left', noMargin?: boolean, bold?: boolean, size?: 'sm' | 'md' | 'lg' | 'xl', @@ -17,11 +17,11 @@ type Props = { class Paragraph extends React.PureComponent { render() { const { - bold, children, color, center, size, noMargin, ...props + bold, children, color, layout, size, noMargin, ...props } = this.props return ( -

+

{ children }

) diff --git a/src/components/layout/Paragraph/index.scss b/src/components/layout/Paragraph/index.scss index ed0652fd06..f27c1faa76 100644 --- a/src/components/layout/Paragraph/index.scss +++ b/src/components/layout/Paragraph/index.scss @@ -24,7 +24,11 @@ } .center { - text-align: center; + text-align: center; +} + +.left { + text-align: left; } .sm { diff --git a/src/routes/safe/component/Withdrawn/Review.jsx b/src/routes/safe/component/Withdrawn/Review.jsx index a2fee94cc1..82cbc4f56c 100644 --- a/src/routes/safe/component/Withdrawn/Review.jsx +++ b/src/routes/safe/component/Withdrawn/Review.jsx @@ -13,10 +13,10 @@ type FormProps = { const Review = () => ({ values }: FormProps) => ( Review the Withdrawn Operation - + Destination: {values[DESTINATION_PARAM]} - + Value in ETH: {values[VALUE_PARAM]} From 3ce8383f98f4f64e3196a4a938d9aefc4013553c Mon Sep 17 00:00:00 2001 From: apanizo Date: Tue, 8 May 2018 16:41:03 +0200 Subject: [PATCH 038/138] WA-238 Redeployed Gnosis Safe contracts --- safe-contracts/build/contracts/CreateAndAddExtension.json | 8 +++++++- safe-contracts/build/contracts/DailyLimitExtension.json | 8 +++++++- safe-contracts/build/contracts/GnosisSafe.json | 8 +++++++- safe-contracts/build/contracts/Migrations.json | 8 +++++++- safe-contracts/build/contracts/MultiSend.json | 8 +++++++- safe-contracts/build/contracts/ProxyFactory.json | 8 +++++++- .../build/contracts/SocialRecoveryExtension.json | 8 +++++++- safe-contracts/build/contracts/WhitelistExtension.json | 8 +++++++- 8 files changed, 56 insertions(+), 8 deletions(-) diff --git a/safe-contracts/build/contracts/CreateAndAddExtension.json b/safe-contracts/build/contracts/CreateAndAddExtension.json index 72dd995c02..c2f8f757a7 100644 --- a/safe-contracts/build/contracts/CreateAndAddExtension.json +++ b/safe-contracts/build/contracts/CreateAndAddExtension.json @@ -1202,8 +1202,14 @@ "links": {}, "address": "0x69c1cca644134e10f5f82fc28b3d45e136786dfc", "transactionHash": "0x2af139a9359ac4b51195eab08a5958d134195ea3793c8851e63b2657d6b1a1be" + }, + "1525789101965": { + "events": {}, + "links": {}, + "address": "0xa8fd8a2a990b5a5b300a6dc712d1b85b5574ffd9", + "transactionHash": "0x9477126b8b58fd22addc14218038766bb1723de3027fa4db33decd381eeb1b2d" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-04T13:47:03.968Z" + "updatedAt": "2018-05-08T14:18:44.024Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/DailyLimitExtension.json b/safe-contracts/build/contracts/DailyLimitExtension.json index 75f1fd8b00..e9fcb85849 100644 --- a/safe-contracts/build/contracts/DailyLimitExtension.json +++ b/safe-contracts/build/contracts/DailyLimitExtension.json @@ -9121,8 +9121,14 @@ "links": {}, "address": "0x1b701c69619a38a7b779bef1f8a72dec2b9f402f", "transactionHash": "0xe329bfbfb0449b969df0e144a935e7f94e58f4e7188f6c6626faf1d7ee7ded84" + }, + "1525789101965": { + "events": {}, + "links": {}, + "address": "0xee471df0173d120eface5e5cf69a05cc4d1ce78a", + "transactionHash": "0xfd1473bdb9d32d9cef56f6fc22af6034ebd9f2aeb8d55ce0985f29b4086514a2" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-04T13:47:03.962Z" + "updatedAt": "2018-05-08T14:18:44.022Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/GnosisSafe.json b/safe-contracts/build/contracts/GnosisSafe.json index 210d90981a..7b01ffd6b1 100644 --- a/safe-contracts/build/contracts/GnosisSafe.json +++ b/safe-contracts/build/contracts/GnosisSafe.json @@ -25222,8 +25222,14 @@ "links": {}, "address": "0x84c8db395337da2e3d4fb3e26af6bf35739d49b8", "transactionHash": "0x5b64197eda9ffa97845a6a77ff7bfb134b37c81fa74b3eef652bffbcd6879f6a" + }, + "1525789101965": { + "events": {}, + "links": {}, + "address": "0x6ad761ab330a930f611c0a19226e39ae5da5122d", + "transactionHash": "0x2030f160032d1cea96610c0485dc0fc03426ab66de7f3582cd5fd02a60b14f52" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-04T13:47:03.981Z" + "updatedAt": "2018-05-08T14:18:44.047Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/Migrations.json b/safe-contracts/build/contracts/Migrations.json index a2be8031fd..e6b99e6ecf 100644 --- a/safe-contracts/build/contracts/Migrations.json +++ b/safe-contracts/build/contracts/Migrations.json @@ -1384,8 +1384,14 @@ "links": {}, "address": "0xced15a6a3e7f4f182667bf7dd3e0403b8229a97b", "transactionHash": "0x8efec3bf60df6831ec5c77ceec27654c94b84005dfee1cb7dfae8d51c847ca93" + }, + "1525789101965": { + "events": {}, + "links": {}, + "address": "0x9cafa36304f4ce89fadc9894820e8a7684cabe02", + "transactionHash": "0xa757776d7b9eac962d1c4e89161441d296a8153da49efa8ee43d0202d894df5d" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-04T13:47:03.970Z" + "updatedAt": "2018-05-08T14:18:44.026Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/MultiSend.json b/safe-contracts/build/contracts/MultiSend.json index 20b59bf6e0..e7c98caa04 100644 --- a/safe-contracts/build/contracts/MultiSend.json +++ b/safe-contracts/build/contracts/MultiSend.json @@ -352,8 +352,14 @@ "links": {}, "address": "0x1751f194e16ab8cc857b37bbbca9b796b182691b", "transactionHash": "0xf406441274f4472d909145b4145733064edd26a8ef0c5cd1b00d19a481cec4fd" + }, + "1525789101965": { + "events": {}, + "links": {}, + "address": "0x1e2dee6ce961ee356fd4382bf3e34e9b7f3876ce", + "transactionHash": "0x03595ae31f80fbcd00b5c0e5c51593841fe78041c8750420decf364f0f3d724c" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-04T13:47:03.969Z" + "updatedAt": "2018-05-08T14:18:44.025Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/ProxyFactory.json b/safe-contracts/build/contracts/ProxyFactory.json index 73f6e596b6..ad986eb501 100644 --- a/safe-contracts/build/contracts/ProxyFactory.json +++ b/safe-contracts/build/contracts/ProxyFactory.json @@ -1001,8 +1001,14 @@ "links": {}, "address": "0xba6fb7147e7586b483610639adf7ad72ca52bb0f", "transactionHash": "0x9eef5bbd728a1a1add6215268dd534fda491d32af43574c029fefa98eb798e03" + }, + "1525789101965": { + "events": {}, + "links": {}, + "address": "0x6fc8a87bf7e3499f14c21396b773cc92adb7d1e6", + "transactionHash": "0x70d96a3ae7424f041f6d56773e5500d9eecc075b3ec5b9fb63ee06b91354965c" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-04T13:47:03.959Z" + "updatedAt": "2018-05-08T14:18:44.019Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/SocialRecoveryExtension.json b/safe-contracts/build/contracts/SocialRecoveryExtension.json index a24005b1d3..0d19870f1f 100644 --- a/safe-contracts/build/contracts/SocialRecoveryExtension.json +++ b/safe-contracts/build/contracts/SocialRecoveryExtension.json @@ -9108,8 +9108,14 @@ "links": {}, "address": "0x38ba6d49ff8d62e729429947e2381f8e1b01933b", "transactionHash": "0x6ade3e6ed704785b52fedb81d093263eeaccdcb3dd3883a7c040679c6c8096fc" + }, + "1525789101965": { + "events": {}, + "links": {}, + "address": "0xf24ba0f83a48b995c7cac0d028e7db00bad3e42c", + "transactionHash": "0xeae217ba71df737e9f757f2a8918a4fe5f0e1c862ebe2a74f655e8f7ae25be15" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-04T13:47:03.966Z" + "updatedAt": "2018-05-08T14:18:44.029Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/WhitelistExtension.json b/safe-contracts/build/contracts/WhitelistExtension.json index cf5117ea8c..f08d455228 100644 --- a/safe-contracts/build/contracts/WhitelistExtension.json +++ b/safe-contracts/build/contracts/WhitelistExtension.json @@ -5393,8 +5393,14 @@ "links": {}, "address": "0xb5d9423b5e38ccdc3d578f1f0347e7fba3641474", "transactionHash": "0x66e2aea779f2c020e2c01741d018f5d7ea897659a32f2c7eb58add9b29ca981b" + }, + "1525789101965": { + "events": {}, + "links": {}, + "address": "0x1e23400dccfd4764b3ae1c5b8cd91a4450c4a3a9", + "transactionHash": "0x367fe2685adc2fffdbdeaa57294f376e0249544c3169f1d80387d9cadcf81a97" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-04T13:47:03.971Z" + "updatedAt": "2018-05-08T14:18:44.036Z" } \ No newline at end of file From c2fd9fb1a58f856dd9e4dcb7ff5c262c7a71404c Mon Sep 17 00:00:00 2001 From: apanizo Date: Tue, 8 May 2018 16:41:48 +0200 Subject: [PATCH 039/138] WA-238 Fix async status on getExtensions when withdrawing safe's funds --- src/components/layout/Paragraph/index.js | 6 +++--- src/components/layout/Paragraph/index.scss | 4 ++++ src/routes/open/components/FormConfirmation/index.jsx | 4 ++-- src/routes/safe/component/Withdrawn/Review.jsx | 4 ++-- src/routes/safe/component/Withdrawn/withdrawn.js | 9 +++++++-- 5 files changed, 18 insertions(+), 9 deletions(-) diff --git a/src/components/layout/Paragraph/index.js b/src/components/layout/Paragraph/index.js index 46db76e4ee..5de1372fda 100644 --- a/src/components/layout/Paragraph/index.js +++ b/src/components/layout/Paragraph/index.js @@ -6,7 +6,7 @@ import styles from './index.scss' const cx = classNames.bind(styles) type Props = { - layout?: 'center' | 'left', + align?: 'right' | 'center' | 'left', noMargin?: boolean, bold?: boolean, size?: 'sm' | 'md' | 'lg' | 'xl', @@ -17,11 +17,11 @@ type Props = { class Paragraph extends React.PureComponent { render() { const { - bold, children, color, layout, size, noMargin, ...props + bold, children, color, align, size, noMargin, ...props } = this.props return ( -

+

{ children }

) diff --git a/src/components/layout/Paragraph/index.scss b/src/components/layout/Paragraph/index.scss index f27c1faa76..3ddb596081 100644 --- a/src/components/layout/Paragraph/index.scss +++ b/src/components/layout/Paragraph/index.scss @@ -31,6 +31,10 @@ text-align: left; } +.right { + text-align: right; +} + .sm { font-size: $smallFontSize; } diff --git a/src/routes/open/components/FormConfirmation/index.jsx b/src/routes/open/components/FormConfirmation/index.jsx index 8af119cc85..647a47e0ea 100644 --- a/src/routes/open/components/FormConfirmation/index.jsx +++ b/src/routes/open/components/FormConfirmation/index.jsx @@ -35,10 +35,10 @@ export default ({ address, tx }: Props) => ({ submitting }: FormProps) => { { !txFinished && - + You are about to create a Safe for keeping your funds more secure. - + Remember to check you have enough funds in your wallet. diff --git a/src/routes/safe/component/Withdrawn/Review.jsx b/src/routes/safe/component/Withdrawn/Review.jsx index 82cbc4f56c..ce73827b66 100644 --- a/src/routes/safe/component/Withdrawn/Review.jsx +++ b/src/routes/safe/component/Withdrawn/Review.jsx @@ -13,10 +13,10 @@ type FormProps = { const Review = () => ({ values }: FormProps) => ( Review the Withdrawn Operation - + Destination: {values[DESTINATION_PARAM]} - + Value in ETH: {values[VALUE_PARAM]} diff --git a/src/routes/safe/component/Withdrawn/withdrawn.js b/src/routes/safe/component/Withdrawn/withdrawn.js index 9981bc2386..90344954ea 100644 --- a/src/routes/safe/component/Withdrawn/withdrawn.js +++ b/src/routes/safe/component/Withdrawn/withdrawn.js @@ -1,12 +1,17 @@ // @flow +import { getWeb3 } from '~/wallets/getWeb3' import { getGnosisSafeContract, getCreateDailyLimitExtensionContract } from '~/wallets/safeContracts' export const DESTINATION_PARAM = 'destination' export const VALUE_PARAM = 'ether' const withdrawn = async (values: Object, safeAddress: string, userAccount: string): Promise => { - const gnosisSafe = getGnosisSafeContract().at(safeAddress) - const dailyLimitExtension = getCreateDailyLimitExtensionContract().at(gnosisSafe.getExtensions()[0]) + const web3 = getWeb3() + const gnosisSafe = getGnosisSafeContract(web3).at(safeAddress) + + const extensions = await gnosisSafe.getExtensions() + const dailyAddress = extensions[0] + const dailyLimitExtension = getCreateDailyLimitExtensionContract(web3).at(dailyAddress) if (await dailyLimitExtension.gnosisSafe() !== gnosisSafe.address) { throw new Error('Using an extension of different safe') From 7569002ce0cf68d9e0e40bfca632d4efd06c1205 Mon Sep 17 00:00:00 2001 From: apanizo Date: Wed, 9 May 2018 09:16:01 +0200 Subject: [PATCH 040/138] WA-238 Including DailyLimit when creating the safe --- src/routes/open/container/Open.jsx | 2 +- src/routes/safe/component/Withdrawn/withdrawn.js | 6 ++++-- src/wallets/safeContracts.js | 14 ++++++++++---- 3 files changed, 15 insertions(+), 7 deletions(-) diff --git a/src/routes/open/container/Open.jsx b/src/routes/open/container/Open.jsx index dd65906bda..ea232e7d4c 100644 --- a/src/routes/open/container/Open.jsx +++ b/src/routes/open/container/Open.jsx @@ -31,7 +31,7 @@ const createSafe = async (values: Object, userAccount: string, addSafe: AddSafe) const GnosisSafe = getGnosisSafeContract(web3) await initContracts() - const safe = await deploySafeContract(accounts, numConfirmations, userAccount) + const safe = await deploySafeContract(accounts, numConfirmations, dailyLimit, userAccount) const param = safe.logs[1].args.proxy const safeContract = GnosisSafe.at(param) diff --git a/src/routes/safe/component/Withdrawn/withdrawn.js b/src/routes/safe/component/Withdrawn/withdrawn.js index 90344954ea..c19d43febd 100644 --- a/src/routes/safe/component/Withdrawn/withdrawn.js +++ b/src/routes/safe/component/Withdrawn/withdrawn.js @@ -16,11 +16,13 @@ const withdrawn = async (values: Object, safeAddress: string, userAccount: strin if (await dailyLimitExtension.gnosisSafe() !== gnosisSafe.address) { throw new Error('Using an extension of different safe') } + const destination = values[DESTINATION_PARAM] + const value = web3.toWei(values[VALUE_PARAM], 'ether') const CALL = 0 await gnosisSafe.executeExtension( - values[DESTINATION_PARAM], - values[VALUE_PARAM], + destination, + value, 0, CALL, dailyLimitExtension.address, diff --git a/src/wallets/safeContracts.js b/src/wallets/safeContracts.js index f2879e0b60..e1f64bc05f 100644 --- a/src/wallets/safeContracts.js +++ b/src/wallets/safeContracts.js @@ -86,9 +86,10 @@ const createMasterCopies = async () => { export const initContracts = ensureOnce(createMasterCopies) -const getSafeDataBasedOn = async (accounts, numConfirmations) => { +const getSafeDataBasedOn = async (accounts, numConfirmations, dailyLimitInEth) => { + const web3 = getWeb3() const extensionData = await dailyLimitMaster.contract.setup - .getData([0], [100]) + .getData([0], [web3.toWei(dailyLimitInEth, 'ether')]) const proxyFactoryData = await proxyFactoryMaster.contract.createProxy .getData(dailyLimitMaster.address, extensionData) const createAndAddExtensionData = createAndAddExtensionMaster.contract.createAndAddExtension @@ -98,7 +99,12 @@ const getSafeDataBasedOn = async (accounts, numConfirmations) => { .getData(accounts, numConfirmations, createAndAddExtensionMaster.address, createAndAddExtensionData) } -export const deploySafeContract = async (safeAccounts: string[], numConfirmations: number, userAccount: string) => { - const gnosisSafeData = await getSafeDataBasedOn(safeAccounts, numConfirmations) +export const deploySafeContract = async ( + safeAccounts: string[], + numConfirmations: number, + dailyLimit: number, + userAccount: string, +) => { + const gnosisSafeData = await getSafeDataBasedOn(safeAccounts, numConfirmations, dailyLimit) return proxyFactoryMaster.createProxy(safeMaster.address, gnosisSafeData, { from: userAccount, gas: '5000000' }) } From 91f142f51048fe92f9cee9d172ebbe5da72d7a87 Mon Sep 17 00:00:00 2001 From: apanizo Date: Wed, 9 May 2018 14:41:29 +0200 Subject: [PATCH 041/138] WA-238 Adding dailyLimit withdrawn DOM test --- src/routes/safe/component/Safe.test.js | 81 +++++++++++++++++++ src/routes/safe/component/Safe/DailyLimit.jsx | 4 +- src/routes/safe/component/Withdrawn/index.jsx | 4 +- .../safe/component/Withdrawn/withdrawn.js | 5 +- src/routes/safe/store/test/balance.reducer.js | 16 +--- .../safe/store/test/balance.selector.js | 11 +-- .../test/builder/deployedSafe.builder.js | 6 +- src/routes/safe/store/test/safe.selector.js | 10 +-- src/test/addEtherTo.js | 10 +++ src/test/buildReactRouterProps.js | 11 +++ 10 files changed, 119 insertions(+), 39 deletions(-) create mode 100644 src/routes/safe/component/Safe.test.js create mode 100644 src/test/addEtherTo.js create mode 100644 src/test/buildReactRouterProps.js diff --git a/src/routes/safe/component/Safe.test.js b/src/routes/safe/component/Safe.test.js new file mode 100644 index 0000000000..bf6689f42c --- /dev/null +++ b/src/routes/safe/component/Safe.test.js @@ -0,0 +1,81 @@ +// @flow +import * as React from 'react' +import TestUtils from 'react-dom/test-utils' +import { Provider } from 'react-redux' +import { ConnectedRouter } from 'react-router-redux' +import Button from '~/components/layout/Button' +import { aNewStore, history } from '~/store' +import { addEtherTo } from '~/test/addEtherTo' +import { aDeployedSafe } from '~/routes/safe/store/test/builder/deployedSafe.builder' +import { SAFELIST_ADDRESS } from '~/routes/routes' +import SafeView from '~/routes/safe/component/Safe' +import AppRoutes from '~/routes' +import { WITHDRAWN_BUTTON_TEXT } from '~/routes/safe/component/Safe/DailyLimit' +import WithdrawnComponent, { SEE_TXS_BUTTON_TEXT } from '~/routes/safe/component/Withdrawn' +import { getBalanceInEtherOf } from '~/wallets/getWeb3' +import { sleep } from '~/utils/timer' + +describe('React DOM TESTS > Withdrawn funds from safe', () => { + let SafeDom + let store + let address + beforeEach(async () => { + // create store + store = aNewStore() + // deploy safe updating store + address = await aDeployedSafe(store) + // add funds to safe + await addEtherTo(address, '0.1') + // navigate to SAFE route + history.push(`${SAFELIST_ADDRESS}/${address}`) + SafeDom = TestUtils.renderIntoDocument(( + + + + + + )) + }) + + it('should withdrawn funds under dailyLimit without needing confirmations', async () => { + const Safe = TestUtils.findRenderedComponentWithType(SafeDom, SafeView) + + // $FlowFixMe + const buttons = TestUtils.scryRenderedComponentsWithType(Safe, Button) + const withdrawnButton = buttons[0] + expect(withdrawnButton.props.children).toEqual(WITHDRAWN_BUTTON_TEXT) + TestUtils.Simulate.click(TestUtils.scryRenderedDOMComponentsWithTag(withdrawnButton, 'button')[0]) + + const Withdrawn = TestUtils.findRenderedComponentWithType(SafeDom, WithdrawnComponent) + + // $FlowFixMe + const inputs = TestUtils.scryRenderedDOMComponentsWithTag(Withdrawn, 'input') + const amountInEth = inputs[0] + const toAddress = inputs[1] + TestUtils.Simulate.change(amountInEth, { target: { value: '0.01' } }) + TestUtils.Simulate.change(toAddress, { target: { value: store.getState().providers.account } }) + + // $FlowFixMe + const form = TestUtils.findRenderedDOMComponentWithTag(Withdrawn, 'form') + + TestUtils.Simulate.submit(form) // fill the form + TestUtils.Simulate.submit(form) // confirming data + await sleep(1200) + + const safeBalance = await getBalanceInEtherOf(address) + expect(safeBalance).toBe('0.09') + + // $FlowFixMe + const withdrawnButtons = TestUtils.scryRenderedComponentsWithType(Withdrawn, Button) + const visitTxsButton = withdrawnButtons[0] + expect(visitTxsButton.props.children).toEqual(SEE_TXS_BUTTON_TEXT) + // Add funds to the Safe + // Add to store the match param [address] + // Render safe + // Simulate click NEXT + // Simulate click FINISH + // Give some time + // find the visit txs button + // check the funds on the destination and safe are correct + }) +}) diff --git a/src/routes/safe/component/Safe/DailyLimit.jsx b/src/routes/safe/component/Safe/DailyLimit.jsx index 1ea68679e8..a19bb462ba 100644 --- a/src/routes/safe/component/Safe/DailyLimit.jsx +++ b/src/routes/safe/component/Safe/DailyLimit.jsx @@ -11,6 +11,8 @@ type Props = { onWithdrawn: () => void, } +export const WITHDRAWN_BUTTON_TEXT = 'Withdrawn' + const DailyLimit = ({ limit, onWithdrawn }: Props) => ( @@ -22,7 +24,7 @@ const DailyLimit = ({ limit, onWithdrawn }: Props) => ( color="primary" onClick={onWithdrawn} > - Withdrawn + {WITHDRAWN_BUTTON_TEXT} ) diff --git a/src/routes/safe/component/Withdrawn/index.jsx b/src/routes/safe/component/Withdrawn/index.jsx index 8c213f8766..beac3c44e6 100644 --- a/src/routes/safe/component/Withdrawn/index.jsx +++ b/src/routes/safe/component/Withdrawn/index.jsx @@ -20,6 +20,8 @@ type State = { done: boolean, } +export const SEE_TXS_BUTTON_TEXT = 'SEE TXS' + class Withdrawn extends React.Component { state = { done: false, @@ -45,7 +47,7 @@ class Withdrawn extends React.Component { { - const web3 = getWeb3() - const accounts = await promisify(cb => web3.eth.getAccounts(cb)) - const txData = { from: accounts[0], to: address, value: web3.toWei(eth, 'ether') } - return promisify(cb => web3.eth.sendTransaction(txData, cb)) -} - const balanceReducerTests = () => { describe('Safe Actions[fetchBalance]', () => { let store @@ -22,8 +14,7 @@ const balanceReducerTests = () => { it('reducer should return 0 to just deployed safe', async () => { // GIVEN - const safeTx = await aDeployedSafe(store) - const address = safeTx.logs[1].args.proxy + const address = await aDeployedSafe(store) // WHEN await store.dispatch(fetchBalance(address)) @@ -36,8 +27,7 @@ const balanceReducerTests = () => { it('reducer should return 1.3456 ETH as funds to safe with 1 ETH', async () => { // GIVEN - const safeTx = await aDeployedSafe(store) - const address = safeTx.logs[1].args.proxy + const address = await aDeployedSafe(store) // WHEN await addEtherTo(address, '1.3456') diff --git a/src/routes/safe/store/test/balance.selector.js b/src/routes/safe/store/test/balance.selector.js index b6b850e458..78af957908 100644 --- a/src/routes/safe/store/test/balance.selector.js +++ b/src/routes/safe/store/test/balance.selector.js @@ -1,18 +1,9 @@ // @flow -import { type Match } from 'react-router-dom' import addBalance from '~/routes/safe/store/actions/addBalance' import { aNewStore } from '~/store' +import { buildMathPropsFrom } from '~/test/buildReactRouterProps' import { balanceSelector } from '../selectors' -const buildMathPropsFrom = (address): Match => ({ - params: { - address, - }, - isExact: true, - path: '', - url: '', -}) - const balanceSelectorTests = () => { describe('Safe Selector[balanceSelector]', () => { it('should return 0 when safe address is not found', () => { diff --git a/src/routes/safe/store/test/builder/deployedSafe.builder.js b/src/routes/safe/store/test/builder/deployedSafe.builder.js index 43cfd125a8..ee976ca031 100644 --- a/src/routes/safe/store/test/builder/deployedSafe.builder.js +++ b/src/routes/safe/store/test/builder/deployedSafe.builder.js @@ -42,7 +42,7 @@ const deploySafe = async (safe: React$Component<{}>) => { TestUtils.Simulate.change(fieldName, { target: { value: 'Adolfo Safe' } }) TestUtils.Simulate.change(fieldConfirmations, { target: { value: '1' } }) TestUtils.Simulate.change(ownerName, { target: { value: 'Adolfo Eth Account' } }) - TestUtils.Simulate.change(fieldDailyLimit, { target: { value: '10' } }) + TestUtils.Simulate.change(fieldDailyLimit, { target: { value: '0.5' } }) const form = TestUtils.findRenderedDOMComponentWithTag(safe, 'form') @@ -68,7 +68,7 @@ const deploySafe = async (safe: React$Component<{}>) => { export const aDeployedSafe = async (specificStore: Store) => { const safe: React$Component<{}> = await renderSafe(specificStore) - const deployedSafe = deploySafe(safe) + const deployedSafe = await deploySafe(safe) - return deployedSafe + return deployedSafe.logs[1].args.proxy } diff --git a/src/routes/safe/store/test/safe.selector.js b/src/routes/safe/store/test/safe.selector.js index c8ba8f7129..ab1762c9c2 100644 --- a/src/routes/safe/store/test/safe.selector.js +++ b/src/routes/safe/store/test/safe.selector.js @@ -4,17 +4,9 @@ import { type Match } from 'react-router-dom' import { SAFE_REDUCER_ID } from '~/routes/safe/store/reducer/safe' import { type Safe } from '~/routes/safe/store/model/safe' import { SafeFactory } from '~/routes/safe/store/test/builder/safe.builder' +import { buildMathPropsFrom } from '~/test/buildReactRouterProps' import { safeSelector } from '../selectors' -const buildMathPropsFrom = (address): Match => ({ - params: { - address, - }, - isExact: true, - path: '', - url: '', -}) - const safeSelectorTests = () => { describe('Safe Selector[safeSelector]', () => { it('should return empty list when no safes', () => { diff --git a/src/test/addEtherTo.js b/src/test/addEtherTo.js new file mode 100644 index 0000000000..1c04c223a7 --- /dev/null +++ b/src/test/addEtherTo.js @@ -0,0 +1,10 @@ +// @flow +import { getWeb3 } from '~/wallets/getWeb3' +import { promisify } from '~/utils/promisify' + +export const addEtherTo = async (address: string, eth: string) => { + const web3 = getWeb3() + const accounts = await promisify(cb => web3.eth.getAccounts(cb)) + const txData = { from: accounts[0], to: address, value: web3.toWei(eth, 'ether') } + return promisify(cb => web3.eth.sendTransaction(txData, cb)) +} diff --git a/src/test/buildReactRouterProps.js b/src/test/buildReactRouterProps.js new file mode 100644 index 0000000000..6123f8c7e6 --- /dev/null +++ b/src/test/buildReactRouterProps.js @@ -0,0 +1,11 @@ +// @flow +import { type Match } from 'react-router-dom' + +export const buildMathPropsFrom = (address: string): Match => ({ + params: { + address, + }, + isExact: true, + path: '', + url: '', +}) From 7b969675d7591d5691f555501829862e7fc53b1c Mon Sep 17 00:00:00 2001 From: apanizo Date: Thu, 10 May 2018 13:12:13 +0200 Subject: [PATCH 042/138] WA-238 Updating contracts --- .../build/contracts/CreateAndAddModule.json | 1215 + .../build/contracts/DailyLimitModule.json | 7916 +++++ .../DailyLimitModuleWithSignature.json | 2549 ++ .../contracts/DelegateConstructorProxy.json | 666 + safe-contracts/build/contracts/Enum.json | 151 + .../build/contracts/GnosisSafe.json | 25513 +--------------- .../contracts/GnosisSafePersonalEdition.json | 8192 +++++ .../GnosisSafeStateChannelEdition.json | 5463 ++++ .../contracts/GnosisSafeTeamEdition.json | 6502 ++++ .../build/contracts/MasterCopy.json | 674 + .../build/contracts/Migrations.json | 620 +- safe-contracts/build/contracts/Module.json | 1142 + .../build/contracts/ModuleManager.json | 7202 +++++ safe-contracts/build/contracts/MultiSend.json | 194 +- .../build/contracts/MultiSendStruct.json | 776 +- .../build/contracts/OwnerManager.json | 7844 +++++ .../build/contracts/PayingProxy.json | 738 + safe-contracts/build/contracts/Proxy.json | 654 +- .../build/contracts/ProxyFactory.json | 500 +- .../build/contracts/SelfAuthorized.json | 435 + .../build/contracts/SocialRecoveryModule.json | 6965 +++++ .../build/contracts/WhitelistModule.json | 3963 +++ .../{ => v0}/CreateAndAddExtension.json | 0 .../{ => v0}/DailyLimitExtension.json | 0 .../build/contracts/{ => v0}/Extension.json | 0 .../build/contracts/v0/GnosisSafe.json | 25235 +++++++++++++++ .../build/contracts/v0/Migrations.json | 1397 + .../build/contracts/v0/MultiSend.json | 365 + .../build/contracts/v0/MultiSendStruct.json | 1678 + safe-contracts/build/contracts/v0/Proxy.json | 644 + .../build/contracts/v0/ProxyFactory.json | 1014 + .../{ => v0}/SocialRecoveryExtension.json | 0 .../{ => v0}/WhitelistExtension.json | 0 33 files changed, 94226 insertions(+), 25981 deletions(-) create mode 100644 safe-contracts/build/contracts/CreateAndAddModule.json create mode 100644 safe-contracts/build/contracts/DailyLimitModule.json create mode 100644 safe-contracts/build/contracts/DailyLimitModuleWithSignature.json create mode 100644 safe-contracts/build/contracts/DelegateConstructorProxy.json create mode 100644 safe-contracts/build/contracts/Enum.json create mode 100644 safe-contracts/build/contracts/GnosisSafePersonalEdition.json create mode 100644 safe-contracts/build/contracts/GnosisSafeStateChannelEdition.json create mode 100644 safe-contracts/build/contracts/GnosisSafeTeamEdition.json create mode 100644 safe-contracts/build/contracts/MasterCopy.json create mode 100644 safe-contracts/build/contracts/Module.json create mode 100644 safe-contracts/build/contracts/ModuleManager.json create mode 100644 safe-contracts/build/contracts/OwnerManager.json create mode 100644 safe-contracts/build/contracts/PayingProxy.json create mode 100644 safe-contracts/build/contracts/SelfAuthorized.json create mode 100644 safe-contracts/build/contracts/SocialRecoveryModule.json create mode 100644 safe-contracts/build/contracts/WhitelistModule.json rename safe-contracts/build/contracts/{ => v0}/CreateAndAddExtension.json (100%) rename safe-contracts/build/contracts/{ => v0}/DailyLimitExtension.json (100%) rename safe-contracts/build/contracts/{ => v0}/Extension.json (100%) create mode 100644 safe-contracts/build/contracts/v0/GnosisSafe.json create mode 100644 safe-contracts/build/contracts/v0/Migrations.json create mode 100644 safe-contracts/build/contracts/v0/MultiSend.json create mode 100644 safe-contracts/build/contracts/v0/MultiSendStruct.json create mode 100644 safe-contracts/build/contracts/v0/Proxy.json create mode 100644 safe-contracts/build/contracts/v0/ProxyFactory.json rename safe-contracts/build/contracts/{ => v0}/SocialRecoveryExtension.json (100%) rename safe-contracts/build/contracts/{ => v0}/WhitelistExtension.json (100%) diff --git a/safe-contracts/build/contracts/CreateAndAddModule.json b/safe-contracts/build/contracts/CreateAndAddModule.json new file mode 100644 index 0000000000..a8d264059f --- /dev/null +++ b/safe-contracts/build/contracts/CreateAndAddModule.json @@ -0,0 +1,1215 @@ +{ + "contractName": "CreateAndAddModule", + "abi": [ + { + "constant": false, + "inputs": [ + { + "name": "module", + "type": "address" + } + ], + "name": "addModule", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "proxyFactory", + "type": "address" + }, + { + "name": "data", + "type": "bytes" + } + ], + "name": "createAndAddModule", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b50610253806100206000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680631ed86f1914610051578063250ad41214610094575b600080fd5b34801561005d57600080fd5b50610092600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061011d565b005b3480156100a057600080fd5b5061011b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610122565b005b600080fd5b600061012e83836101e8565b90503073ffffffffffffffffffffffffffffffffffffffff16631ed86f19826040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1580156101cb57600080fd5b505af11580156101df573d6000803e3d6000fd5b50505050505050565b60006040516000602082855160208701885af4141561020657600080fd5b73ffffffffffffffffffffffffffffffffffffffff815116915050929150505600a165627a7a72305820a69aa3f8b7eccb408d63a4c5990d1f9082b38369bf3c801ed918bfa3abd34d320029", + "deployedBytecode": "0x60806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680631ed86f1914610051578063250ad41214610094575b600080fd5b34801561005d57600080fd5b50610092600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061011d565b005b3480156100a057600080fd5b5061011b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610122565b005b600080fd5b600061012e83836101e8565b90503073ffffffffffffffffffffffffffffffffffffffff16631ed86f19826040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1580156101cb57600080fd5b505af11580156101df573d6000803e3d6000fd5b50505050505050565b60006040516000602082855160208701885af4141561020657600080fd5b73ffffffffffffffffffffffffffffffffffffffff815116915050929150505600a165627a7a72305820a69aa3f8b7eccb408d63a4c5990d1f9082b38369bf3c801ed918bfa3abd34d320029", + "sourceMap": "190:1054:15:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;190:1054:15;;;;;;;", + "deployedSourceMap": "190:1054:15:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;349:78;;8:9:-1;5:2;;;30:1;27;20:12;5:2;349:78:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;611:178;;8:9:-1;5:2;;;30:1;27;20:12;5:2;611:178:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;349:78;412:8;;;611:178;702:13;718:32;731:12;745:4;718:12;:32::i;:::-;702:48;;760:4;:14;;;775:6;760:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;760:22:15;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;760:22:15;;;;611:178;;;:::o;795:447::-;885:13;1021:4;1015:11;1122:1;1115:4;1107:6;1100:4;1094:11;1087:4;1081;1077:15;1063:12;1058:3;1045:75;1042:82;1039:2;;;1137:1;1134;1127:12;1039:2;1183:42;1174:6;1168:13;1164:62;1154:72;;987:249;;;;;:::o", + "source": "pragma solidity 0.4.23;\nimport \"../Module.sol\";\n\n\n/// @title Create and Add Module - Allows to create and add a new module in one transaction.\n/// @author Stefan George - \ncontract CreateAndAddModule {\n\n /// @dev Function required to compile contract. Gnosis Safe function is called instead.\n /// @param module Not used.\n function addModule(Module module)\n public\n {\n revert();\n }\n\n /// @dev Allows to create and add a new module in one transaction.\n /// @param proxyFactory Module proxy factory contract.\n /// @param data Module constructor payload.\n function createAndAddModule(address proxyFactory, bytes data)\n public\n {\n Module module = createModule(proxyFactory, data);\n this.addModule(module);\n }\n\n function createModule(address proxyFactory, bytes data)\n internal\n returns (Module module)\n {\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n let output := mload(0x40)\n if eq(delegatecall(gas, proxyFactory, add(data, 0x20), mload(data), output, 0x20), 0) { revert(0, 0) }\n module := and(mload(output), 0xffffffffffffffffffffffffffffffffffffffff)\n }\n }\n}\n", + "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/libraries/CreateAndAddModule.sol", + "ast": { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/libraries/CreateAndAddModule.sol", + "exportedSymbols": { + "CreateAndAddModule": [ + 1604 + ] + }, + "id": 1605, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1561, + "literals": [ + "solidity", + "0.4", + ".23" + ], + "nodeType": "PragmaDirective", + "src": "0:23:15" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", + "file": "../Module.sol", + "id": 1562, + "nodeType": "ImportDirective", + "scope": 1605, + "sourceUnit": 878, + "src": "24:23:15", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": "@title Create and Add Module - Allows to create and add a new module in one transaction.\n @author Stefan George - ", + "fullyImplemented": true, + "id": 1604, + "linearizedBaseContracts": [ + 1604 + ], + "name": "CreateAndAddModule", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 1570, + "nodeType": "Block", + "src": "402:25:15", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1567, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2470, + 2471 + ], + "referencedDeclaration": 2470, + "src": "412:6:15", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 1568, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "412:8:15", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1569, + "nodeType": "ExpressionStatement", + "src": "412:8:15" + } + ] + }, + "documentation": "@dev Function required to compile contract. Gnosis Safe function is called instead.\n @param module Not used.", + "id": 1571, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "addModule", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1565, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1564, + "name": "module", + "nodeType": "VariableDeclaration", + "scope": 1571, + "src": "368:13:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$877", + "typeString": "contract Module" + }, + "typeName": { + "contractScope": null, + "id": 1563, + "name": "Module", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 877, + "src": "368:6:15", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$877", + "typeString": "contract Module" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "367:15:15" + }, + "payable": false, + "returnParameters": { + "id": 1566, + "nodeType": "ParameterList", + "parameters": [], + "src": "402:0:15" + }, + "scope": 1604, + "src": "349:78:15", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1591, + "nodeType": "Block", + "src": "692:97:15", + "statements": [ + { + "assignments": [ + 1579 + ], + "declarations": [ + { + "constant": false, + "id": 1579, + "name": "module", + "nodeType": "VariableDeclaration", + "scope": 1592, + "src": "702:13:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$877", + "typeString": "contract Module" + }, + "typeName": { + "contractScope": null, + "id": 1578, + "name": "Module", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 877, + "src": "702:6:15", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$877", + "typeString": "contract Module" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1584, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1581, + "name": "proxyFactory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1573, + "src": "731:12:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1582, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1575, + "src": "745:4:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 1580, + "name": "createModule", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1603, + "src": "718:12:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_contract$_Module_$877_$", + "typeString": "function (address,bytes memory) returns (contract Module)" + } + }, + "id": 1583, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "718:32:15", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$877", + "typeString": "contract Module" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "702:48:15" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1588, + "name": "module", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1579, + "src": "775:6:15", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$877", + "typeString": "contract Module" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Module_$877", + "typeString": "contract Module" + } + ], + "expression": { + "argumentTypes": null, + "id": 1585, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2508, + "src": "760:4:15", + "typeDescriptions": { + "typeIdentifier": "t_contract$_CreateAndAddModule_$1604", + "typeString": "contract CreateAndAddModule" + } + }, + "id": 1587, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "addModule", + "nodeType": "MemberAccess", + "referencedDeclaration": 1571, + "src": "760:14:15", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_contract$_Module_$877_$returns$__$", + "typeString": "function (contract Module) external" + } + }, + "id": 1589, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "760:22:15", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1590, + "nodeType": "ExpressionStatement", + "src": "760:22:15" + } + ] + }, + "documentation": "@dev Allows to create and add a new module in one transaction.\n @param proxyFactory Module proxy factory contract.\n @param data Module constructor payload.", + "id": 1592, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "createAndAddModule", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1576, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1573, + "name": "proxyFactory", + "nodeType": "VariableDeclaration", + "scope": 1592, + "src": "639:20:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1572, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "639:7:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1575, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 1592, + "src": "661:10:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1574, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "661:5:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "638:34:15" + }, + "payable": false, + "returnParameters": { + "id": 1577, + "nodeType": "ParameterList", + "parameters": [], + "src": "692:0:15" + }, + "scope": 1604, + "src": "611:178:15", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1602, + "nodeType": "Block", + "src": "904:338:15", + "statements": [ + { + "externalReferences": [ + { + "module": { + "declaration": 1599, + "isOffset": false, + "isSlot": false, + "src": "1154:6:15", + "valueSize": 1 + } + }, + { + "data": { + "declaration": 1596, + "isOffset": false, + "isSlot": false, + "src": "1100:4:15", + "valueSize": 1 + } + }, + { + "proxyFactory": { + "declaration": 1594, + "isOffset": false, + "isSlot": false, + "src": "1063:12:15", + "valueSize": 1 + } + }, + { + "data": { + "declaration": 1596, + "isOffset": false, + "isSlot": false, + "src": "1081:4:15", + "valueSize": 1 + } + } + ], + "id": 1601, + "nodeType": "InlineAssembly", + "operations": "{\n let output := mload(0x40)\n if eq(delegatecall(gas(), proxyFactory, add(data, 0x20), mload(data), output, 0x20), 0)\n {\n revert(0, 0)\n }\n module := and(mload(output), 0xffffffffffffffffffffffffffffffffffffffff)\n}", + "src": "978:264:15" + } + ] + }, + "documentation": null, + "id": 1603, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "createModule", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1597, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1594, + "name": "proxyFactory", + "nodeType": "VariableDeclaration", + "scope": 1603, + "src": "817:20:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1593, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "817:7:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1596, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 1603, + "src": "839:10:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1595, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "839:5:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "816:34:15" + }, + "payable": false, + "returnParameters": { + "id": 1600, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1599, + "name": "module", + "nodeType": "VariableDeclaration", + "scope": 1603, + "src": "885:13:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$877", + "typeString": "contract Module" + }, + "typeName": { + "contractScope": null, + "id": 1598, + "name": "Module", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 877, + "src": "885:6:15", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$877", + "typeString": "contract Module" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "884:15:15" + }, + "scope": 1604, + "src": "795:447:15", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 1605, + "src": "190:1054:15" + } + ], + "src": "0:1245:15" + }, + "legacyAST": { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/libraries/CreateAndAddModule.sol", + "exportedSymbols": { + "CreateAndAddModule": [ + 1604 + ] + }, + "id": 1605, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1561, + "literals": [ + "solidity", + "0.4", + ".23" + ], + "nodeType": "PragmaDirective", + "src": "0:23:15" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", + "file": "../Module.sol", + "id": 1562, + "nodeType": "ImportDirective", + "scope": 1605, + "sourceUnit": 878, + "src": "24:23:15", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": "@title Create and Add Module - Allows to create and add a new module in one transaction.\n @author Stefan George - ", + "fullyImplemented": true, + "id": 1604, + "linearizedBaseContracts": [ + 1604 + ], + "name": "CreateAndAddModule", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 1570, + "nodeType": "Block", + "src": "402:25:15", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1567, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2470, + 2471 + ], + "referencedDeclaration": 2470, + "src": "412:6:15", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$__$returns$__$", + "typeString": "function () pure" + } + }, + "id": 1568, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "412:8:15", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1569, + "nodeType": "ExpressionStatement", + "src": "412:8:15" + } + ] + }, + "documentation": "@dev Function required to compile contract. Gnosis Safe function is called instead.\n @param module Not used.", + "id": 1571, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "addModule", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1565, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1564, + "name": "module", + "nodeType": "VariableDeclaration", + "scope": 1571, + "src": "368:13:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$877", + "typeString": "contract Module" + }, + "typeName": { + "contractScope": null, + "id": 1563, + "name": "Module", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 877, + "src": "368:6:15", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$877", + "typeString": "contract Module" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "367:15:15" + }, + "payable": false, + "returnParameters": { + "id": 1566, + "nodeType": "ParameterList", + "parameters": [], + "src": "402:0:15" + }, + "scope": 1604, + "src": "349:78:15", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1591, + "nodeType": "Block", + "src": "692:97:15", + "statements": [ + { + "assignments": [ + 1579 + ], + "declarations": [ + { + "constant": false, + "id": 1579, + "name": "module", + "nodeType": "VariableDeclaration", + "scope": 1592, + "src": "702:13:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$877", + "typeString": "contract Module" + }, + "typeName": { + "contractScope": null, + "id": 1578, + "name": "Module", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 877, + "src": "702:6:15", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$877", + "typeString": "contract Module" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1584, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1581, + "name": "proxyFactory", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1573, + "src": "731:12:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1582, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1575, + "src": "745:4:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 1580, + "name": "createModule", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1603, + "src": "718:12:15", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_contract$_Module_$877_$", + "typeString": "function (address,bytes memory) returns (contract Module)" + } + }, + "id": 1583, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "718:32:15", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$877", + "typeString": "contract Module" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "702:48:15" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1588, + "name": "module", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1579, + "src": "775:6:15", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$877", + "typeString": "contract Module" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Module_$877", + "typeString": "contract Module" + } + ], + "expression": { + "argumentTypes": null, + "id": 1585, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2508, + "src": "760:4:15", + "typeDescriptions": { + "typeIdentifier": "t_contract$_CreateAndAddModule_$1604", + "typeString": "contract CreateAndAddModule" + } + }, + "id": 1587, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "addModule", + "nodeType": "MemberAccess", + "referencedDeclaration": 1571, + "src": "760:14:15", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_contract$_Module_$877_$returns$__$", + "typeString": "function (contract Module) external" + } + }, + "id": 1589, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "760:22:15", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1590, + "nodeType": "ExpressionStatement", + "src": "760:22:15" + } + ] + }, + "documentation": "@dev Allows to create and add a new module in one transaction.\n @param proxyFactory Module proxy factory contract.\n @param data Module constructor payload.", + "id": 1592, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "createAndAddModule", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1576, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1573, + "name": "proxyFactory", + "nodeType": "VariableDeclaration", + "scope": 1592, + "src": "639:20:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1572, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "639:7:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1575, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 1592, + "src": "661:10:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1574, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "661:5:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "638:34:15" + }, + "payable": false, + "returnParameters": { + "id": 1577, + "nodeType": "ParameterList", + "parameters": [], + "src": "692:0:15" + }, + "scope": 1604, + "src": "611:178:15", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1602, + "nodeType": "Block", + "src": "904:338:15", + "statements": [ + { + "externalReferences": [ + { + "module": { + "declaration": 1599, + "isOffset": false, + "isSlot": false, + "src": "1154:6:15", + "valueSize": 1 + } + }, + { + "data": { + "declaration": 1596, + "isOffset": false, + "isSlot": false, + "src": "1100:4:15", + "valueSize": 1 + } + }, + { + "proxyFactory": { + "declaration": 1594, + "isOffset": false, + "isSlot": false, + "src": "1063:12:15", + "valueSize": 1 + } + }, + { + "data": { + "declaration": 1596, + "isOffset": false, + "isSlot": false, + "src": "1081:4:15", + "valueSize": 1 + } + } + ], + "id": 1601, + "nodeType": "InlineAssembly", + "operations": "{\n let output := mload(0x40)\n if eq(delegatecall(gas(), proxyFactory, add(data, 0x20), mload(data), output, 0x20), 0)\n {\n revert(0, 0)\n }\n module := and(mload(output), 0xffffffffffffffffffffffffffffffffffffffff)\n}", + "src": "978:264:15" + } + ] + }, + "documentation": null, + "id": 1603, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "createModule", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1597, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1594, + "name": "proxyFactory", + "nodeType": "VariableDeclaration", + "scope": 1603, + "src": "817:20:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1593, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "817:7:15", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1596, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 1603, + "src": "839:10:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1595, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "839:5:15", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "816:34:15" + }, + "payable": false, + "returnParameters": { + "id": 1600, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1599, + "name": "module", + "nodeType": "VariableDeclaration", + "scope": 1603, + "src": "885:13:15", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$877", + "typeString": "contract Module" + }, + "typeName": { + "contractScope": null, + "id": 1598, + "name": "Module", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 877, + "src": "885:6:15", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$877", + "typeString": "contract Module" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "884:15:15" + }, + "scope": 1604, + "src": "795:447:15", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 1605, + "src": "190:1054:15" + } + ], + "src": "0:1245:15" + }, + "compiler": { + "name": "solc", + "version": "0.4.23+commit.124ca40d.Emscripten.clang" + }, + "networks": { + "4": { + "events": {}, + "links": {}, + "address": "0xabb64de6d5ca20609e2f331bf3c4818a1f6f94fd", + "transactionHash": "0x61759c9f25325ca90bbd3d45b8a2c629e6ee721b995ec0ef614c3338516b530e" + }, + "1525950336085": { + "events": {}, + "links": {}, + "address": "0x544c20ddcab0459a99c93823d0c02d50f75ced36", + "transactionHash": "0x0e6adf453722b13530f4f8c8f947f6e5105156aa99a10b588447ed57e27d7b85" + } + }, + "schemaVersion": "2.0.0", + "updatedAt": "2018-05-10T11:07:04.706Z" +} \ No newline at end of file diff --git a/safe-contracts/build/contracts/DailyLimitModule.json b/safe-contracts/build/contracts/DailyLimitModule.json new file mode 100644 index 0000000000..4e51441756 --- /dev/null +++ b/safe-contracts/build/contracts/DailyLimitModule.json @@ -0,0 +1,7916 @@ +{ + "contractName": "DailyLimitModule", + "abi": [ + { + "constant": true, + "inputs": [], + "name": "TRANSFER_FUNCTION_IDENTIFIER", + "outputs": [ + { + "name": "", + "type": "bytes4" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "manager", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_masterCopy", + "type": "address" + } + ], + "name": "changeMasterCopy", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "NAME", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "address" + } + ], + "name": "dailyLimits", + "outputs": [ + { + "name": "dailyLimit", + "type": "uint256" + }, + { + "name": "spentToday", + "type": "uint256" + }, + { + "name": "lastDay", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "VERSION", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "tokens", + "type": "address[]" + }, + { + "name": "_dailyLimits", + "type": "uint256[]" + } + ], + "name": "setup", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "token", + "type": "address" + }, + { + "name": "dailyLimit", + "type": "uint256" + } + ], + "name": "changeDailyLimit", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "to", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + }, + { + "name": "data", + "type": "bytes" + } + ], + "name": "executeDailyLimit", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "today", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b50610d68806100206000396000f3006080604052600436106100a4576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806328814f03146100a9578063430e47f814610152578063481c6a75146101bb5780637de7edef1461021257806381c5e03b14610255578063a3f4df7e146102a2578063b74e452b14610332578063d7bffc921461035d578063fce7379a146103c2578063ffa1ad7414610455575b600080fd5b3480156100b557600080fd5b5061015060048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192905050506104e5565b005b34801561015e57600080fd5b50610167610584565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b3480156101c757600080fd5b506101d06105a8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561021e57600080fd5b50610253600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506105ce565b005b34801561026157600080fd5b506102a0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610693565b005b3480156102ae57600080fd5b506102b761073a565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102f75780820151818401526020810190506102dc565b50505050905090810190601f1680156103245780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561033e57600080fd5b50610347610773565b6040518082815260200191505060405180910390f35b34801561036957600080fd5b5061039e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061078b565b60405180848152602001838152602001828152602001935050505060405180910390f35b3480156103ce57600080fd5b50610453600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506107b5565b005b34801561046157600080fd5b5061046a6107c6565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104aa57808201518184015260208101905061048f565b50505050905090810190601f1680156104d75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60006104ef6107ff565b600090505b825181101561057f57818181518110151561050b57fe5b9060200190602002015160026000858481518110151561052757fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555080806001019150506104f4565b505050565b7fa9059cbb0000000000000000000000000000000000000000000000000000000081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561062a57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561065057600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156106ef57600080fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055505050565b6040805190810160405280601281526020017f4461696c79204c696d6974204d6f64756c65000000000000000000000000000081525081565b6000620151804281151561078357fe5b064203905090565b60026020528060005260406000206000915090508060000154908060010154908060020154905083565b6107c133848484610889565b505050565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561084657600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600080600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e896040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561094c57600080fd5b505af1158015610960573d6000803e3d6000fd5b505050506040513d602081101561097657600080fd5b8101908080519060200190929190505050151561099257600080fd5b600085511480156109a35750600086115b806109bb5750600085511180156109ba5750600086145b5b15156109c657600080fd5b6000855114156109df5760009350869250859150610a64565b8693506020850151905060248501519250604485015191507fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141515610a6357600080fd5b5b60008373ffffffffffffffffffffffffffffffffffffffff1614151515610a8a57600080fd5b600082111515610a9957600080fd5b610aa38483610c8d565b1515610aae57600080fd5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008282540192505081905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b021640a88888860006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001836002811115610bb857fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b83811015610bf8578082015181840152602081019050610bdd565b50505050905090810190601f168015610c255780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610c4757600080fd5b505af1158015610c5b573d6000803e3d6000fd5b505050506040513d6020811015610c7157600080fd5b8101908080519060200190929190505050505050505050505050565b600080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060020154610cde610773565b1115610cff57610cec610773565b8160020181905550600081600101819055505b80600001548382600101540111158015610d225750806001015483826001015401115b15610d305760019150610d35565b600091505b50929150505600a165627a7a72305820085a92f4808cf6f2b41a5812e1bccdce1566340ce475cdf150e85dbf780cf47d0029", + "deployedBytecode": "0x6080604052600436106100a4576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806328814f03146100a9578063430e47f814610152578063481c6a75146101bb5780637de7edef1461021257806381c5e03b14610255578063a3f4df7e146102a2578063b74e452b14610332578063d7bffc921461035d578063fce7379a146103c2578063ffa1ad7414610455575b600080fd5b3480156100b557600080fd5b5061015060048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192905050506104e5565b005b34801561015e57600080fd5b50610167610584565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b3480156101c757600080fd5b506101d06105a8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561021e57600080fd5b50610253600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506105ce565b005b34801561026157600080fd5b506102a0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610693565b005b3480156102ae57600080fd5b506102b761073a565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102f75780820151818401526020810190506102dc565b50505050905090810190601f1680156103245780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561033e57600080fd5b50610347610773565b6040518082815260200191505060405180910390f35b34801561036957600080fd5b5061039e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061078b565b60405180848152602001838152602001828152602001935050505060405180910390f35b3480156103ce57600080fd5b50610453600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506107b5565b005b34801561046157600080fd5b5061046a6107c6565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104aa57808201518184015260208101905061048f565b50505050905090810190601f1680156104d75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60006104ef6107ff565b600090505b825181101561057f57818181518110151561050b57fe5b9060200190602002015160026000858481518110151561052757fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555080806001019150506104f4565b505050565b7fa9059cbb0000000000000000000000000000000000000000000000000000000081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561062a57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561065057600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156106ef57600080fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055505050565b6040805190810160405280601281526020017f4461696c79204c696d6974204d6f64756c65000000000000000000000000000081525081565b6000620151804281151561078357fe5b064203905090565b60026020528060005260406000206000915090508060000154908060010154908060020154905083565b6107c133848484610889565b505050565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561084657600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600080600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e896040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561094c57600080fd5b505af1158015610960573d6000803e3d6000fd5b505050506040513d602081101561097657600080fd5b8101908080519060200190929190505050151561099257600080fd5b600085511480156109a35750600086115b806109bb5750600085511180156109ba5750600086145b5b15156109c657600080fd5b6000855114156109df5760009350869250859150610a64565b8693506020850151905060248501519250604485015191507fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141515610a6357600080fd5b5b60008373ffffffffffffffffffffffffffffffffffffffff1614151515610a8a57600080fd5b600082111515610a9957600080fd5b610aa38483610c8d565b1515610aae57600080fd5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008282540192505081905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b021640a88888860006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001836002811115610bb857fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b83811015610bf8578082015181840152602081019050610bdd565b50505050905090810190601f168015610c255780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610c4757600080fd5b505af1158015610c5b573d6000803e3d6000fd5b505050506040513d6020811015610c7157600080fd5b8101908080519060200190929190505050505050505050505050565b600080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060020154610cde610773565b1115610cff57610cec610773565b8160020181905550600081600101819055505b80600001548382600101540111158015610d225750806001015483826001015401115b15610d305760019150610d35565b600091505b50929150505600a165627a7a72305820085a92f4808cf6f2b41a5812e1bccdce1566340ce475cdf150e85dbf780cf47d0029", + "sourceMap": "296:3841:18:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;296:3841:18;;;;;;;", + "deployedSourceMap": "296:3841:18:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;991:222;;8:9:-1;5:2;;;30:1;27;20:12;5:2;991:222:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;441:67;;8:9:-1;5:2;;;30:1;27;20:12;5:2;441:67:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;262:28:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;262:28:8;;;;;;;;;;;;;;;;;;;;;;;;;;;626:208:6;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:208:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;1441:158:18;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1441:158:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;339:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;339:50:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;339:50:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4019:116;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4019:116:18;;;;;;;;;;;;;;;;;;;;;;;586:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;586:50:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3287:146;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3287:146:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;395:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;395:40:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;395:40:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;991:222;1104:9;1077:12;:10;:12::i;:::-;1116:1;1104:13;;1099:107;1123:6;:13;1119:1;:17;1099:107;;;1191:12;1204:1;1191:15;;;;;;;;;;;;;;;;;;1155:11;:22;1167:6;1174:1;1167:9;;;;;;;;;;;;;;;;;;1155:22;;;;;;;;;;;;;;;:33;;:51;;;;1138:3;;;;;;;1099:107;;;991:222;;;:::o;441:67::-;;;:::o;262:28:8:-;;;;;;;;;;;;;:::o;626:208:6:-;359:7:8;;;;;;;;;;;337:30;;:10;:30;;;329:39;;;;;;;;791:1:6;776:11;:16;;;;768:25;;;;;;;;816:11;803:10;;:24;;;;;;;;;;;;;;;;;;626:208;:::o;1441:158:18:-;359:7:8;;;;;;;;;;;337:30;;:10;:30;;;329:39;;;;;;;;1582:10:18;1550:11;:18;1562:5;1550:18;;;;;;;;;;;;;;;:29;;:42;;;;1441:158;;:::o;339:50::-;;;;;;;;;;;;;;;;;;;;:::o;4019:116::-;4081:4;4121:6;4115:3;:12;;;;;;;;4108:3;:20;4101:27;;4019:116;:::o;586:50::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3287:146::-;3382:44;3398:10;3410:2;3414:5;3421:4;3382:15;:44::i;:::-;3287:146;;;:::o;395:40::-;;;;;;;;;;;;;;;;;;;;:::o;392:268:8:-;606:1;594:7;;;;;;;;;;;586:21;;;578:30;;;;;;;;642:10;618:7;;:35;;;;;;;;;;;;;;;;;;392:268::o;1605:1298:18:-;1997:13;2020:16;2046:14;2233:25;1814:7;;;;;;;;;;;1801:29;;;1831:6;1801:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1801:37:18;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1801:37:18;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1801:37:18;;;;;;;;;;;;;;;;1793:46;;;;;;;;1939:1;1924:4;:11;:16;:29;;;;;1952:1;1944:5;:9;1924:29;:62;;;;1971:1;1957:4;:11;:15;:29;;;;;1985:1;1976:5;:10;1957:29;1924:62;1916:71;;;;;;;;2089:1;2074:4;:11;:16;2070:538;;;2114:1;2106:9;;2140:2;2129:13;;2165:5;2156:14;;2070:538;;;2217:2;2209:10;;2405:4;2399;2395:15;2389:22;2367:44;;2456:4;2450;2446:15;2440:22;2428:34;;2505:4;2499;2495:15;2489:22;2479:32;;2568:28;2546:50;;;:18;:50;;;;2538:59;;;;;;;;2070:538;2637:1;2625:8;:13;;;;2617:22;;;;;;;;2666:1;2657:6;:10;2649:19;;;;;;;;2750:27;2763:5;2770:6;2750:12;:27::i;:::-;2742:36;;;;;;;;2821:6;2788:11;:18;2800:5;2788:18;;;;;;;;;;;;;;;:29;;;:39;;;;;;;;;;;2837:7;;;;;;;;;;;:21;;;2859:2;2863:5;2870:4;2876:19;2837:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;2837:59:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2837:59:18;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2837:59:18;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2837:59:18;;;;;;;;;;;;;;;;;1605:1298;;;;;;;;:::o;3439:488::-;3526:4;3546:29;3578:11;:18;3590:5;3578:18;;;;;;;;;;;;;;;3546:50;;3620:10;:18;;;3610:7;:5;:7::i;:::-;:28;3606:126;;;3675:7;:5;:7::i;:::-;3654:10;:18;;:28;;;;3720:1;3696:10;:21;;:25;;;;3606:126;3782:10;:21;;;3772:6;3748:10;:21;;;:30;:55;;:125;;;;;3852:10;:21;;;3843:6;3819:10;:21;;;:30;:54;3748:125;3741:157;;;3894:4;3887:11;;;;3741:157;3915:5;3908:12;;3439:488;;;;;;:::o", + "source": "pragma solidity 0.4.23;\nimport \"../Module.sol\";\nimport \"../ModuleManager.sol\";\nimport \"../OwnerManager.sol\";\nimport \"../Enum.sol\";\n\n\n/// @title Daily Limit Module - Allows to transfer limited amounts of ERC20 tokens and Ether without confirmations.\n/// @author Stefan George - \ncontract DailyLimitModule is Module {\n\n string public constant NAME = \"Daily Limit Module\";\n string public constant VERSION = \"0.0.1\";\n bytes4 public constant TRANSFER_FUNCTION_IDENTIFIER = hex\"a9059cbb\";\n\n // dailyLimits mapping maps token address to daily limit settings.\n mapping (address => DailyLimit) public dailyLimits;\n\n struct DailyLimit {\n uint256 dailyLimit;\n uint256 spentToday;\n uint256 lastDay;\n }\n\n /// @dev Setup function sets initial storage of contract.\n /// @param tokens List of token addresses. Ether is represented with address 0x0.\n /// @param _dailyLimits List of daily limits in smalles units (e.g. Wei for Ether).\n function setup(address[] tokens, uint256[] _dailyLimits)\n public\n {\n setManager();\n for (uint256 i = 0; i < tokens.length; i++)\n dailyLimits[tokens[i]].dailyLimit = _dailyLimits[i];\n }\n\n /// @dev Allows to update the daily limit for a specified token. This can only be done via a Safe transaction.\n /// @param token Token contract address.\n /// @param dailyLimit Daily limit in smallest token unit.\n function changeDailyLimit(address token, uint256 dailyLimit)\n public\n authorized\n {\n dailyLimits[token].dailyLimit = dailyLimit;\n }\n\n function executeInternal(address sender, address to, uint256 value, bytes data)\n internal\n {\n // Only Safe owners are allowed to execute daily limit transactions.\n require(OwnerManager(manager).isOwner(sender));\n // Data has to encode a token transfer or has to be empty.\n require(data.length == 0 && value > 0 || data.length > 0 && value == 0);\n address token;\n address receiver;\n uint256 amount;\n if (data.length == 0) {\n token = 0;\n receiver = to;\n amount = value;\n }\n else {\n token = to;\n bytes4 functionIdentifier;\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n functionIdentifier := mload(add(data, 0x20))\n receiver := mload(add(data, 0x24))\n amount := mload(add(data, 0x44))\n }\n require(functionIdentifier == TRANSFER_FUNCTION_IDENTIFIER);\n }\n require(receiver != 0);\n require(amount > 0);\n // Validate that transfer is not exceeding daily limit.\n require(isUnderLimit(token, amount));\n dailyLimits[token].spentToday += amount;\n manager.executeModule(to, value, data, Enum.Operation.Call);\n }\n\n /// @dev Returns if Safe transaction is a valid daily limit transaction.\n /// @param to Receiver address in case of Ether transfer, token address in case of a token transfer.\n /// @param value Ether value in case of an Ether transfer.\n /// @param data Encoded token transfer. Empty in case of Ether transfer.\n /// @return Returns if transaction can be executed.\n function executeDailyLimit(address to, uint256 value, bytes data)\n public\n {\n executeInternal(msg.sender, to, value, data);\n }\n\n function isUnderLimit(address token, uint256 amount)\n internal\n returns (bool)\n {\n DailyLimit storage dailyLimit = dailyLimits[token];\n if (today() > dailyLimit.lastDay) {\n dailyLimit.lastDay = today();\n dailyLimit.spentToday = 0;\n }\n if ( dailyLimit.spentToday + amount <= dailyLimit.dailyLimit\n && dailyLimit.spentToday + amount > dailyLimit.spentToday)\n return true;\n return false;\n }\n\n /// @dev Returns last midnight as Unix timestamp.\n /// @return Unix timestamp.\n function today()\n public\n view\n returns (uint)\n {\n return now - (now % 1 days);\n }\n}\n", + "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/DailyLimitModule.sol", + "ast": { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/DailyLimitModule.sol", + "exportedSymbols": { + "DailyLimitModule": [ + 1964 + ] + }, + "id": 1965, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1677, + "literals": [ + "solidity", + "0.4", + ".23" + ], + "nodeType": "PragmaDirective", + "src": "0:23:18" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", + "file": "../Module.sol", + "id": 1678, + "nodeType": "ImportDirective", + "scope": 1965, + "sourceUnit": 878, + "src": "24:23:18", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ModuleManager.sol", + "file": "../ModuleManager.sol", + "id": 1679, + "nodeType": "ImportDirective", + "scope": 1965, + "sourceUnit": 1143, + "src": "48:30:18", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", + "file": "../OwnerManager.sol", + "id": 1680, + "nodeType": "ImportDirective", + "scope": 1965, + "sourceUnit": 1439, + "src": "79:29:18", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Enum.sol", + "file": "../Enum.sol", + "id": 1681, + "nodeType": "ImportDirective", + "scope": 1965, + "sourceUnit": 31, + "src": "109:21:18", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 1682, + "name": "Module", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 877, + "src": "325:6:18", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$877", + "typeString": "contract Module" + } + }, + "id": 1683, + "nodeType": "InheritanceSpecifier", + "src": "325:6:18" + } + ], + "contractDependencies": [ + 779, + 877, + 1559 + ], + "contractKind": "contract", + "documentation": "@title Daily Limit Module - Allows to transfer limited amounts of ERC20 tokens and Ether without confirmations.\n @author Stefan George - ", + "fullyImplemented": true, + "id": 1964, + "linearizedBaseContracts": [ + 1964, + 877, + 779, + 1559 + ], + "name": "DailyLimitModule", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "id": 1686, + "name": "NAME", + "nodeType": "VariableDeclaration", + "scope": 1964, + "src": "339:50:18", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory", + "typeString": "string" + }, + "typeName": { + "id": 1684, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "339:6:18", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "4461696c79204c696d6974204d6f64756c65", + "id": 1685, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "369:20:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_821ea27acfbc77b49f7a021dbe2eb92017d46b8bdda0bff9901cbc8ee143ceb3", + "typeString": "literal_string \"Daily Limit Module\"" + }, + "value": "Daily Limit Module" + }, + "visibility": "public" + }, + { + "constant": true, + "id": 1689, + "name": "VERSION", + "nodeType": "VariableDeclaration", + "scope": 1964, + "src": "395:40:18", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory", + "typeString": "string" + }, + "typeName": { + "id": 1687, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "395:6:18", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "302e302e31", + "id": 1688, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "428:7:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", + "typeString": "literal_string \"0.0.1\"" + }, + "value": "0.0.1" + }, + "visibility": "public" + }, + { + "constant": true, + "id": 1692, + "name": "TRANSFER_FUNCTION_IDENTIFIER", + "nodeType": "VariableDeclaration", + "scope": 1964, + "src": "441:67:18", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 1690, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "441:6:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "a9059cbb", + "id": 1691, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "495:13:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_abce0605a16ff5e998983a0af570b8ad942bb11e305eb20ae3ada0a3be24eb97", + "typeString": "literal_string (contains invalid UTF-8 sequence at position 0)" + }, + "value": null + }, + "visibility": "public" + }, + { + "constant": false, + "id": 1696, + "name": "dailyLimits", + "nodeType": "VariableDeclaration", + "scope": 1964, + "src": "586:50:18", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1703_storage_$", + "typeString": "mapping(address => struct DailyLimitModule.DailyLimit)" + }, + "typeName": { + "id": 1695, + "keyType": { + "id": 1693, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "595:7:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "586:31:18", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1703_storage_$", + "typeString": "mapping(address => struct DailyLimitModule.DailyLimit)" + }, + "valueType": { + "contractScope": null, + "id": 1694, + "name": "DailyLimit", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1703, + "src": "606:10:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DailyLimit_$1703_storage_ptr", + "typeString": "struct DailyLimitModule.DailyLimit" + } + } + }, + "value": null, + "visibility": "public" + }, + { + "canonicalName": "DailyLimitModule.DailyLimit", + "id": 1703, + "members": [ + { + "constant": false, + "id": 1698, + "name": "dailyLimit", + "nodeType": "VariableDeclaration", + "scope": 1703, + "src": "671:18:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1697, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "671:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1700, + "name": "spentToday", + "nodeType": "VariableDeclaration", + "scope": 1703, + "src": "699:18:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1699, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "699:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1702, + "name": "lastDay", + "nodeType": "VariableDeclaration", + "scope": 1703, + "src": "727:15:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1701, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "727:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "DailyLimit", + "nodeType": "StructDefinition", + "scope": 1964, + "src": "643:106:18", + "visibility": "public" + }, + { + "body": { + "id": 1738, + "nodeType": "Block", + "src": "1067:146:18", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1712, + "name": "setManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 876, + "src": "1077:10:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 1713, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1077:12:18", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1714, + "nodeType": "ExpressionStatement", + "src": "1077:12:18" + }, + { + "body": { + "expression": { + "argumentTypes": null, + "id": 1735, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1726, + "name": "dailyLimits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1696, + "src": "1155:11:18", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1703_storage_$", + "typeString": "mapping(address => struct DailyLimitModule.DailyLimit storage ref)" + } + }, + "id": 1730, + "indexExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1727, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1706, + "src": "1167:6:18", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 1729, + "indexExpression": { + "argumentTypes": null, + "id": 1728, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1716, + "src": "1174:1:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1167:9:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1155:22:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DailyLimit_$1703_storage", + "typeString": "struct DailyLimitModule.DailyLimit storage ref" + } + }, + "id": 1731, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "dailyLimit", + "nodeType": "MemberAccess", + "referencedDeclaration": 1698, + "src": "1155:33:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1732, + "name": "_dailyLimits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1709, + "src": "1191:12:18", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 1734, + "indexExpression": { + "argumentTypes": null, + "id": 1733, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1716, + "src": "1204:1:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1191:15:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1155:51:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1736, + "nodeType": "ExpressionStatement", + "src": "1155:51:18" + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1722, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1719, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1716, + "src": "1119:1:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1720, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1706, + "src": "1123:6:18", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 1721, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1123:13:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1119:17:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1737, + "initializationExpression": { + "assignments": [ + 1716 + ], + "declarations": [ + { + "constant": false, + "id": 1716, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 1739, + "src": "1104:9:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1715, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1104:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1718, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 1717, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1116:1:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "1104:13:18" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 1724, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "1138:3:18", + "subExpression": { + "argumentTypes": null, + "id": 1723, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1716, + "src": "1138:1:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1725, + "nodeType": "ExpressionStatement", + "src": "1138:3:18" + }, + "nodeType": "ForStatement", + "src": "1099:107:18" + } + ] + }, + "documentation": "@dev Setup function sets initial storage of contract.\n @param tokens List of token addresses. Ether is represented with address 0x0.\n @param _dailyLimits List of daily limits in smalles units (e.g. Wei for Ether).", + "id": 1739, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "setup", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1710, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1706, + "name": "tokens", + "nodeType": "VariableDeclaration", + "scope": 1739, + "src": "1006:16:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 1704, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1006:7:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1705, + "length": null, + "nodeType": "ArrayTypeName", + "src": "1006:9:18", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1709, + "name": "_dailyLimits", + "nodeType": "VariableDeclaration", + "scope": 1739, + "src": "1024:22:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 1707, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1024:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1708, + "length": null, + "nodeType": "ArrayTypeName", + "src": "1024:9:18", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1005:42:18" + }, + "payable": false, + "returnParameters": { + "id": 1711, + "nodeType": "ParameterList", + "parameters": [], + "src": "1067:0:18" + }, + "scope": 1964, + "src": "991:222:18", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1755, + "nodeType": "Block", + "src": "1540:59:18", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1753, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1748, + "name": "dailyLimits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1696, + "src": "1550:11:18", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1703_storage_$", + "typeString": "mapping(address => struct DailyLimitModule.DailyLimit storage ref)" + } + }, + "id": 1750, + "indexExpression": { + "argumentTypes": null, + "id": 1749, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1741, + "src": "1562:5:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1550:18:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DailyLimit_$1703_storage", + "typeString": "struct DailyLimitModule.DailyLimit storage ref" + } + }, + "id": 1751, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "dailyLimit", + "nodeType": "MemberAccess", + "referencedDeclaration": 1698, + "src": "1550:29:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1752, + "name": "dailyLimit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1743, + "src": "1582:10:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1550:42:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1754, + "nodeType": "ExpressionStatement", + "src": "1550:42:18" + } + ] + }, + "documentation": "@dev Allows to update the daily limit for a specified token. This can only be done via a Safe transaction.\n @param token Token contract address.\n @param dailyLimit Daily limit in smallest token unit.", + "id": 1756, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 1746, + "modifierName": { + "argumentTypes": null, + "id": 1745, + "name": "authorized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 857, + "src": "1525:10:18", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "1525:10:18" + } + ], + "name": "changeDailyLimit", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1744, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1741, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 1756, + "src": "1467:13:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1740, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1467:7:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1743, + "name": "dailyLimit", + "nodeType": "VariableDeclaration", + "scope": 1756, + "src": "1482:18:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1742, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1482:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1466:35:18" + }, + "payable": false, + "returnParameters": { + "id": 1747, + "nodeType": "ParameterList", + "parameters": [], + "src": "1540:0:18" + }, + "scope": 1964, + "src": "1441:158:18", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1875, + "nodeType": "Block", + "src": "1706:1197:18", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1772, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1758, + "src": "1831:6:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1769, + "name": "manager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 844, + "src": "1814:7:18", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ModuleManager_$1142", + "typeString": "contract ModuleManager" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ModuleManager_$1142", + "typeString": "contract ModuleManager" + } + ], + "id": 1768, + "name": "OwnerManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1438, + "src": "1801:12:18", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1438_$", + "typeString": "type(contract OwnerManager)" + } + }, + "id": 1770, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1801:21:18", + "typeDescriptions": { + "typeIdentifier": "t_contract$_OwnerManager_$1438", + "typeString": "contract OwnerManager" + } + }, + "id": 1771, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "isOwner", + "nodeType": "MemberAccess", + "referencedDeclaration": 1428, + "src": "1801:29:18", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view external returns (bool)" + } + }, + "id": 1773, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1801:37:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1767, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "1793:7:18", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1774, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1793:46:18", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1775, + "nodeType": "ExpressionStatement", + "src": "1793:46:18" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1793, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1784, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1780, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1777, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1764, + "src": "1924:4:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 1778, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1924:11:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1779, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1939:1:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1924:16:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1783, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1781, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1762, + "src": "1944:5:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1782, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1952:1:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1944:9:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1924:29:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1792, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1788, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1785, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1764, + "src": "1957:4:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 1786, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1957:11:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1787, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1971:1:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1957:15:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1791, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1789, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1762, + "src": "1976:5:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1790, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1985:1:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1976:10:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1957:29:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1924:62:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1776, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "1916:7:18", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1794, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1916:71:18", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1795, + "nodeType": "ExpressionStatement", + "src": "1916:71:18" + }, + { + "assignments": [], + "declarations": [ + { + "constant": false, + "id": 1797, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 1876, + "src": "1997:13:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1796, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1997:7:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1798, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "1997:13:18" + }, + { + "assignments": [], + "declarations": [ + { + "constant": false, + "id": 1800, + "name": "receiver", + "nodeType": "VariableDeclaration", + "scope": 1876, + "src": "2020:16:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1799, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2020:7:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1801, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "2020:16:18" + }, + { + "assignments": [], + "declarations": [ + { + "constant": false, + "id": 1803, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 1876, + "src": "2046:14:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1802, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2046:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1804, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "2046:14:18" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1808, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1805, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1764, + "src": "2074:4:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 1806, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2074:11:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1807, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2089:1:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2074:16:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 1836, + "nodeType": "Block", + "src": "2195:413:18", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1824, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1822, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1797, + "src": "2209:5:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1823, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1760, + "src": "2217:2:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2209:10:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1825, + "nodeType": "ExpressionStatement", + "src": "2209:10:18" + }, + { + "assignments": [], + "declarations": [ + { + "constant": false, + "id": 1827, + "name": "functionIdentifier", + "nodeType": "VariableDeclaration", + "scope": 1876, + "src": "2233:25:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 1826, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "2233:6:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1828, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "2233:25:18" + }, + { + "externalReferences": [ + { + "functionIdentifier": { + "declaration": 1827, + "isOffset": false, + "isSlot": false, + "src": "2367:18:18", + "valueSize": 1 + } + }, + { + "data": { + "declaration": 1764, + "isOffset": false, + "isSlot": false, + "src": "2399:4:18", + "valueSize": 1 + } + }, + { + "receiver": { + "declaration": 1800, + "isOffset": false, + "isSlot": false, + "src": "2428:8:18", + "valueSize": 1 + } + }, + { + "amount": { + "declaration": 1803, + "isOffset": false, + "isSlot": false, + "src": "2479:6:18", + "valueSize": 1 + } + }, + { + "data": { + "declaration": 1764, + "isOffset": false, + "isSlot": false, + "src": "2450:4:18", + "valueSize": 1 + } + }, + { + "data": { + "declaration": 1764, + "isOffset": false, + "isSlot": false, + "src": "2499:4:18", + "valueSize": 1 + } + } + ], + "id": 1829, + "nodeType": "InlineAssembly", + "operations": "{\n functionIdentifier := mload(add(data, 0x20))\n receiver := mload(add(data, 0x24))\n amount := mload(add(data, 0x44))\n}", + "src": "2340:205:18" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 1833, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1831, + "name": "functionIdentifier", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1827, + "src": "2546:18:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 1832, + "name": "TRANSFER_FUNCTION_IDENTIFIER", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1692, + "src": "2568:28:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "src": "2546:50:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1830, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "2538:7:18", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1834, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2538:59:18", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1835, + "nodeType": "ExpressionStatement", + "src": "2538:59:18" + } + ] + }, + "id": 1837, + "nodeType": "IfStatement", + "src": "2070:538:18", + "trueBody": { + "id": 1821, + "nodeType": "Block", + "src": "2092:89:18", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1811, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1809, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1797, + "src": "2106:5:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 1810, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2114:1:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2106:9:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1812, + "nodeType": "ExpressionStatement", + "src": "2106:9:18" + }, + { + "expression": { + "argumentTypes": null, + "id": 1815, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1813, + "name": "receiver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1800, + "src": "2129:8:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1814, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1760, + "src": "2140:2:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2129:13:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1816, + "nodeType": "ExpressionStatement", + "src": "2129:13:18" + }, + { + "expression": { + "argumentTypes": null, + "id": 1819, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1817, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1803, + "src": "2156:6:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1818, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1762, + "src": "2165:5:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2156:14:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1820, + "nodeType": "ExpressionStatement", + "src": "2156:14:18" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1841, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1839, + "name": "receiver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1800, + "src": "2625:8:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1840, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2637:1:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2625:13:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1838, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "2617:7:18", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1842, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2617:22:18", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1843, + "nodeType": "ExpressionStatement", + "src": "2617:22:18" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1847, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1845, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1803, + "src": "2657:6:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1846, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2666:1:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2657:10:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1844, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "2649:7:18", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1848, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2649:19:18", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1849, + "nodeType": "ExpressionStatement", + "src": "2649:19:18" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1852, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1797, + "src": "2763:5:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1853, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1803, + "src": "2770:6:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1851, + "name": "isUnderLimit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1950, + "src": "2750:12:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) returns (bool)" + } + }, + "id": 1854, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2750:27:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1850, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "2742:7:18", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1855, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2742:36:18", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1856, + "nodeType": "ExpressionStatement", + "src": "2742:36:18" + }, + { + "expression": { + "argumentTypes": null, + "id": 1862, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1857, + "name": "dailyLimits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1696, + "src": "2788:11:18", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1703_storage_$", + "typeString": "mapping(address => struct DailyLimitModule.DailyLimit storage ref)" + } + }, + "id": 1859, + "indexExpression": { + "argumentTypes": null, + "id": 1858, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1797, + "src": "2800:5:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2788:18:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DailyLimit_$1703_storage", + "typeString": "struct DailyLimitModule.DailyLimit storage ref" + } + }, + "id": 1860, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "spentToday", + "nodeType": "MemberAccess", + "referencedDeclaration": 1700, + "src": "2788:29:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "argumentTypes": null, + "id": 1861, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1803, + "src": "2821:6:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2788:39:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1863, + "nodeType": "ExpressionStatement", + "src": "2788:39:18" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1867, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1760, + "src": "2859:2:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1868, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1762, + "src": "2863:5:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1869, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1764, + "src": "2870:4:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1870, + "name": "Enum", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 30, + "src": "2876:4:18", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Enum_$30_$", + "typeString": "type(contract Enum)" + } + }, + "id": 1871, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "Operation", + "nodeType": "MemberAccess", + "referencedDeclaration": 29, + "src": "2876:14:18", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_Operation_$29_$", + "typeString": "type(enum Enum.Operation)" + } + }, + "id": 1872, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Call", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2876:19:18", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + ], + "expression": { + "argumentTypes": null, + "id": 1864, + "name": "manager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 844, + "src": "2837:7:18", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ModuleManager_$1142", + "typeString": "contract ModuleManager" + } + }, + "id": 1866, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "executeModule", + "nodeType": "MemberAccess", + "referencedDeclaration": 1033, + "src": "2837:21:18", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$returns$_t_bool_$", + "typeString": "function (address,uint256,bytes memory,enum Enum.Operation) external returns (bool)" + } + }, + "id": 1873, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2837:59:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1874, + "nodeType": "ExpressionStatement", + "src": "2837:59:18" + } + ] + }, + "documentation": null, + "id": 1876, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "executeInternal", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1765, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1758, + "name": "sender", + "nodeType": "VariableDeclaration", + "scope": 1876, + "src": "1630:14:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1757, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1630:7:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1760, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 1876, + "src": "1646:10:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1759, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1646:7:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1762, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 1876, + "src": "1658:13:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1761, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1658:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1764, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 1876, + "src": "1673:10:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1763, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1673:5:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1629:55:18" + }, + "payable": false, + "returnParameters": { + "id": 1766, + "nodeType": "ParameterList", + "parameters": [], + "src": "1706:0:18" + }, + "scope": 1964, + "src": "1605:1298:18", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 1893, + "nodeType": "Block", + "src": "3372:61:18", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1886, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2465, + "src": "3398:3:18", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1887, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3398:10:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1888, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1878, + "src": "3410:2:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1889, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1880, + "src": "3414:5:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1890, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1882, + "src": "3421:4:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 1885, + "name": "executeInternal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1876, + "src": "3382:15:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,address,uint256,bytes memory)" + } + }, + "id": 1891, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3382:44:18", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1892, + "nodeType": "ExpressionStatement", + "src": "3382:44:18" + } + ] + }, + "documentation": "@dev Returns if Safe transaction is a valid daily limit transaction.\n @param to Receiver address in case of Ether transfer, token address in case of a token transfer.\n @param value Ether value in case of an Ether transfer.\n @param data Encoded token transfer. Empty in case of Ether transfer.\n @return Returns if transaction can be executed.", + "id": 1894, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "executeDailyLimit", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1883, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1878, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 1894, + "src": "3314:10:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1877, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3314:7:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1880, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 1894, + "src": "3326:13:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1879, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3326:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1882, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 1894, + "src": "3341:10:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1881, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3341:5:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3313:39:18" + }, + "payable": false, + "returnParameters": { + "id": 1884, + "nodeType": "ParameterList", + "parameters": [], + "src": "3372:0:18" + }, + "scope": 1964, + "src": "3287:146:18", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1949, + "nodeType": "Block", + "src": "3536:391:18", + "statements": [ + { + "assignments": [ + 1904 + ], + "declarations": [ + { + "constant": false, + "id": 1904, + "name": "dailyLimit", + "nodeType": "VariableDeclaration", + "scope": 1950, + "src": "3546:29:18", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DailyLimit_$1703_storage_ptr", + "typeString": "struct DailyLimitModule.DailyLimit" + }, + "typeName": { + "contractScope": null, + "id": 1903, + "name": "DailyLimit", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1703, + "src": "3546:10:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DailyLimit_$1703_storage_ptr", + "typeString": "struct DailyLimitModule.DailyLimit" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1908, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1905, + "name": "dailyLimits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1696, + "src": "3578:11:18", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1703_storage_$", + "typeString": "mapping(address => struct DailyLimitModule.DailyLimit storage ref)" + } + }, + "id": 1907, + "indexExpression": { + "argumentTypes": null, + "id": 1906, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1896, + "src": "3590:5:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3578:18:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DailyLimit_$1703_storage", + "typeString": "struct DailyLimitModule.DailyLimit storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3546:50:18" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1913, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1909, + "name": "today", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1963, + "src": "3610:5:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 1910, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3610:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1911, + "name": "dailyLimit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1904, + "src": "3620:10:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DailyLimit_$1703_storage_ptr", + "typeString": "struct DailyLimitModule.DailyLimit storage pointer" + } + }, + "id": 1912, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "lastDay", + "nodeType": "MemberAccess", + "referencedDeclaration": 1702, + "src": "3620:18:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3610:28:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1928, + "nodeType": "IfStatement", + "src": "3606:126:18", + "trueBody": { + "id": 1927, + "nodeType": "Block", + "src": "3640:92:18", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1919, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1914, + "name": "dailyLimit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1904, + "src": "3654:10:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DailyLimit_$1703_storage_ptr", + "typeString": "struct DailyLimitModule.DailyLimit storage pointer" + } + }, + "id": 1916, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "lastDay", + "nodeType": "MemberAccess", + "referencedDeclaration": 1702, + "src": "3654:18:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1917, + "name": "today", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1963, + "src": "3675:5:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 1918, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3675:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3654:28:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1920, + "nodeType": "ExpressionStatement", + "src": "3654:28:18" + }, + { + "expression": { + "argumentTypes": null, + "id": 1925, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1921, + "name": "dailyLimit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1904, + "src": "3696:10:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DailyLimit_$1703_storage_ptr", + "typeString": "struct DailyLimitModule.DailyLimit storage pointer" + } + }, + "id": 1923, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "spentToday", + "nodeType": "MemberAccess", + "referencedDeclaration": 1700, + "src": "3696:21:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 1924, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3720:1:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3696:25:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1926, + "nodeType": "ExpressionStatement", + "src": "3696:25:18" + } + ] + } + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1943, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1935, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1932, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1929, + "name": "dailyLimit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1904, + "src": "3748:10:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DailyLimit_$1703_storage_ptr", + "typeString": "struct DailyLimitModule.DailyLimit storage pointer" + } + }, + "id": 1930, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "spentToday", + "nodeType": "MemberAccess", + "referencedDeclaration": 1700, + "src": "3748:21:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "id": 1931, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1898, + "src": "3772:6:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3748:30:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1933, + "name": "dailyLimit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1904, + "src": "3782:10:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DailyLimit_$1703_storage_ptr", + "typeString": "struct DailyLimitModule.DailyLimit storage pointer" + } + }, + "id": 1934, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "dailyLimit", + "nodeType": "MemberAccess", + "referencedDeclaration": 1698, + "src": "3782:21:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3748:55:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1942, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1939, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1936, + "name": "dailyLimit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1904, + "src": "3819:10:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DailyLimit_$1703_storage_ptr", + "typeString": "struct DailyLimitModule.DailyLimit storage pointer" + } + }, + "id": 1937, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "spentToday", + "nodeType": "MemberAccess", + "referencedDeclaration": 1700, + "src": "3819:21:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "id": 1938, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1898, + "src": "3843:6:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3819:30:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1940, + "name": "dailyLimit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1904, + "src": "3852:10:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DailyLimit_$1703_storage_ptr", + "typeString": "struct DailyLimitModule.DailyLimit storage pointer" + } + }, + "id": 1941, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "spentToday", + "nodeType": "MemberAccess", + "referencedDeclaration": 1700, + "src": "3852:21:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3819:54:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3748:125:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1946, + "nodeType": "IfStatement", + "src": "3741:157:18", + "trueBody": { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1944, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3894:4:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 1902, + "id": 1945, + "nodeType": "Return", + "src": "3887:11:18" + } + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 1947, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3915:5:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 1902, + "id": 1948, + "nodeType": "Return", + "src": "3908:12:18" + } + ] + }, + "documentation": null, + "id": 1950, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "isUnderLimit", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1899, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1896, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 1950, + "src": "3461:13:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1895, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3461:7:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1898, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 1950, + "src": "3476:14:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1897, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3476:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3460:31:18" + }, + "payable": false, + "returnParameters": { + "id": 1902, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1901, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1950, + "src": "3526:4:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1900, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3526:4:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3525:6:18" + }, + "scope": 1964, + "src": "3439:488:18", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 1962, + "nodeType": "Block", + "src": "4091:44:18", + "statements": [ + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1960, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1955, + "name": "now", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2467, + "src": "4108:3:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1958, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1956, + "name": "now", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2467, + "src": "4115:3:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "%", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 1957, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4121:6:18", + "subdenomination": "days", + "typeDescriptions": { + "typeIdentifier": "t_rational_86400_by_1", + "typeString": "int_const 86400" + }, + "value": "1" + }, + "src": "4115:12:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1959, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "4114:14:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4108:20:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1954, + "id": 1961, + "nodeType": "Return", + "src": "4101:27:18" + } + ] + }, + "documentation": "@dev Returns last midnight as Unix timestamp.\n @return Unix timestamp.", + "id": 1963, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "today", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1951, + "nodeType": "ParameterList", + "parameters": [], + "src": "4033:2:18" + }, + "payable": false, + "returnParameters": { + "id": 1954, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1953, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1963, + "src": "4081:4:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1952, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4081:4:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4080:6:18" + }, + "scope": 1964, + "src": "4019:116:18", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 1965, + "src": "296:3841:18" + } + ], + "src": "0:4138:18" + }, + "legacyAST": { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/DailyLimitModule.sol", + "exportedSymbols": { + "DailyLimitModule": [ + 1964 + ] + }, + "id": 1965, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1677, + "literals": [ + "solidity", + "0.4", + ".23" + ], + "nodeType": "PragmaDirective", + "src": "0:23:18" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", + "file": "../Module.sol", + "id": 1678, + "nodeType": "ImportDirective", + "scope": 1965, + "sourceUnit": 878, + "src": "24:23:18", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ModuleManager.sol", + "file": "../ModuleManager.sol", + "id": 1679, + "nodeType": "ImportDirective", + "scope": 1965, + "sourceUnit": 1143, + "src": "48:30:18", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", + "file": "../OwnerManager.sol", + "id": 1680, + "nodeType": "ImportDirective", + "scope": 1965, + "sourceUnit": 1439, + "src": "79:29:18", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Enum.sol", + "file": "../Enum.sol", + "id": 1681, + "nodeType": "ImportDirective", + "scope": 1965, + "sourceUnit": 31, + "src": "109:21:18", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 1682, + "name": "Module", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 877, + "src": "325:6:18", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$877", + "typeString": "contract Module" + } + }, + "id": 1683, + "nodeType": "InheritanceSpecifier", + "src": "325:6:18" + } + ], + "contractDependencies": [ + 779, + 877, + 1559 + ], + "contractKind": "contract", + "documentation": "@title Daily Limit Module - Allows to transfer limited amounts of ERC20 tokens and Ether without confirmations.\n @author Stefan George - ", + "fullyImplemented": true, + "id": 1964, + "linearizedBaseContracts": [ + 1964, + 877, + 779, + 1559 + ], + "name": "DailyLimitModule", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "id": 1686, + "name": "NAME", + "nodeType": "VariableDeclaration", + "scope": 1964, + "src": "339:50:18", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory", + "typeString": "string" + }, + "typeName": { + "id": 1684, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "339:6:18", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "4461696c79204c696d6974204d6f64756c65", + "id": 1685, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "369:20:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_821ea27acfbc77b49f7a021dbe2eb92017d46b8bdda0bff9901cbc8ee143ceb3", + "typeString": "literal_string \"Daily Limit Module\"" + }, + "value": "Daily Limit Module" + }, + "visibility": "public" + }, + { + "constant": true, + "id": 1689, + "name": "VERSION", + "nodeType": "VariableDeclaration", + "scope": 1964, + "src": "395:40:18", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory", + "typeString": "string" + }, + "typeName": { + "id": 1687, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "395:6:18", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "302e302e31", + "id": 1688, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "428:7:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", + "typeString": "literal_string \"0.0.1\"" + }, + "value": "0.0.1" + }, + "visibility": "public" + }, + { + "constant": true, + "id": 1692, + "name": "TRANSFER_FUNCTION_IDENTIFIER", + "nodeType": "VariableDeclaration", + "scope": 1964, + "src": "441:67:18", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 1690, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "441:6:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "a9059cbb", + "id": 1691, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "495:13:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_abce0605a16ff5e998983a0af570b8ad942bb11e305eb20ae3ada0a3be24eb97", + "typeString": "literal_string (contains invalid UTF-8 sequence at position 0)" + }, + "value": null + }, + "visibility": "public" + }, + { + "constant": false, + "id": 1696, + "name": "dailyLimits", + "nodeType": "VariableDeclaration", + "scope": 1964, + "src": "586:50:18", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1703_storage_$", + "typeString": "mapping(address => struct DailyLimitModule.DailyLimit)" + }, + "typeName": { + "id": 1695, + "keyType": { + "id": 1693, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "595:7:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "586:31:18", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1703_storage_$", + "typeString": "mapping(address => struct DailyLimitModule.DailyLimit)" + }, + "valueType": { + "contractScope": null, + "id": 1694, + "name": "DailyLimit", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1703, + "src": "606:10:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DailyLimit_$1703_storage_ptr", + "typeString": "struct DailyLimitModule.DailyLimit" + } + } + }, + "value": null, + "visibility": "public" + }, + { + "canonicalName": "DailyLimitModule.DailyLimit", + "id": 1703, + "members": [ + { + "constant": false, + "id": 1698, + "name": "dailyLimit", + "nodeType": "VariableDeclaration", + "scope": 1703, + "src": "671:18:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1697, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "671:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1700, + "name": "spentToday", + "nodeType": "VariableDeclaration", + "scope": 1703, + "src": "699:18:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1699, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "699:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1702, + "name": "lastDay", + "nodeType": "VariableDeclaration", + "scope": 1703, + "src": "727:15:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1701, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "727:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "DailyLimit", + "nodeType": "StructDefinition", + "scope": 1964, + "src": "643:106:18", + "visibility": "public" + }, + { + "body": { + "id": 1738, + "nodeType": "Block", + "src": "1067:146:18", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1712, + "name": "setManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 876, + "src": "1077:10:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 1713, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1077:12:18", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1714, + "nodeType": "ExpressionStatement", + "src": "1077:12:18" + }, + { + "body": { + "expression": { + "argumentTypes": null, + "id": 1735, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1726, + "name": "dailyLimits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1696, + "src": "1155:11:18", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1703_storage_$", + "typeString": "mapping(address => struct DailyLimitModule.DailyLimit storage ref)" + } + }, + "id": 1730, + "indexExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1727, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1706, + "src": "1167:6:18", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 1729, + "indexExpression": { + "argumentTypes": null, + "id": 1728, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1716, + "src": "1174:1:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1167:9:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1155:22:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DailyLimit_$1703_storage", + "typeString": "struct DailyLimitModule.DailyLimit storage ref" + } + }, + "id": 1731, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "dailyLimit", + "nodeType": "MemberAccess", + "referencedDeclaration": 1698, + "src": "1155:33:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1732, + "name": "_dailyLimits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1709, + "src": "1191:12:18", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 1734, + "indexExpression": { + "argumentTypes": null, + "id": 1733, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1716, + "src": "1204:1:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1191:15:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1155:51:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1736, + "nodeType": "ExpressionStatement", + "src": "1155:51:18" + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1722, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1719, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1716, + "src": "1119:1:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1720, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1706, + "src": "1123:6:18", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 1721, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1123:13:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1119:17:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1737, + "initializationExpression": { + "assignments": [ + 1716 + ], + "declarations": [ + { + "constant": false, + "id": 1716, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 1739, + "src": "1104:9:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1715, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1104:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1718, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 1717, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1116:1:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "1104:13:18" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 1724, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "1138:3:18", + "subExpression": { + "argumentTypes": null, + "id": 1723, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1716, + "src": "1138:1:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1725, + "nodeType": "ExpressionStatement", + "src": "1138:3:18" + }, + "nodeType": "ForStatement", + "src": "1099:107:18" + } + ] + }, + "documentation": "@dev Setup function sets initial storage of contract.\n @param tokens List of token addresses. Ether is represented with address 0x0.\n @param _dailyLimits List of daily limits in smalles units (e.g. Wei for Ether).", + "id": 1739, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "setup", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1710, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1706, + "name": "tokens", + "nodeType": "VariableDeclaration", + "scope": 1739, + "src": "1006:16:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 1704, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1006:7:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1705, + "length": null, + "nodeType": "ArrayTypeName", + "src": "1006:9:18", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1709, + "name": "_dailyLimits", + "nodeType": "VariableDeclaration", + "scope": 1739, + "src": "1024:22:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 1707, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1024:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1708, + "length": null, + "nodeType": "ArrayTypeName", + "src": "1024:9:18", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1005:42:18" + }, + "payable": false, + "returnParameters": { + "id": 1711, + "nodeType": "ParameterList", + "parameters": [], + "src": "1067:0:18" + }, + "scope": 1964, + "src": "991:222:18", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1755, + "nodeType": "Block", + "src": "1540:59:18", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1753, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1748, + "name": "dailyLimits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1696, + "src": "1550:11:18", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1703_storage_$", + "typeString": "mapping(address => struct DailyLimitModule.DailyLimit storage ref)" + } + }, + "id": 1750, + "indexExpression": { + "argumentTypes": null, + "id": 1749, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1741, + "src": "1562:5:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1550:18:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DailyLimit_$1703_storage", + "typeString": "struct DailyLimitModule.DailyLimit storage ref" + } + }, + "id": 1751, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "dailyLimit", + "nodeType": "MemberAccess", + "referencedDeclaration": 1698, + "src": "1550:29:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1752, + "name": "dailyLimit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1743, + "src": "1582:10:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1550:42:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1754, + "nodeType": "ExpressionStatement", + "src": "1550:42:18" + } + ] + }, + "documentation": "@dev Allows to update the daily limit for a specified token. This can only be done via a Safe transaction.\n @param token Token contract address.\n @param dailyLimit Daily limit in smallest token unit.", + "id": 1756, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 1746, + "modifierName": { + "argumentTypes": null, + "id": 1745, + "name": "authorized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 857, + "src": "1525:10:18", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "1525:10:18" + } + ], + "name": "changeDailyLimit", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1744, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1741, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 1756, + "src": "1467:13:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1740, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1467:7:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1743, + "name": "dailyLimit", + "nodeType": "VariableDeclaration", + "scope": 1756, + "src": "1482:18:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1742, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1482:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1466:35:18" + }, + "payable": false, + "returnParameters": { + "id": 1747, + "nodeType": "ParameterList", + "parameters": [], + "src": "1540:0:18" + }, + "scope": 1964, + "src": "1441:158:18", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1875, + "nodeType": "Block", + "src": "1706:1197:18", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1772, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1758, + "src": "1831:6:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1769, + "name": "manager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 844, + "src": "1814:7:18", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ModuleManager_$1142", + "typeString": "contract ModuleManager" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ModuleManager_$1142", + "typeString": "contract ModuleManager" + } + ], + "id": 1768, + "name": "OwnerManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1438, + "src": "1801:12:18", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1438_$", + "typeString": "type(contract OwnerManager)" + } + }, + "id": 1770, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1801:21:18", + "typeDescriptions": { + "typeIdentifier": "t_contract$_OwnerManager_$1438", + "typeString": "contract OwnerManager" + } + }, + "id": 1771, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "isOwner", + "nodeType": "MemberAccess", + "referencedDeclaration": 1428, + "src": "1801:29:18", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view external returns (bool)" + } + }, + "id": 1773, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1801:37:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1767, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "1793:7:18", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1774, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1793:46:18", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1775, + "nodeType": "ExpressionStatement", + "src": "1793:46:18" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1793, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1784, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1780, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1777, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1764, + "src": "1924:4:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 1778, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1924:11:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1779, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1939:1:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1924:16:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1783, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1781, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1762, + "src": "1944:5:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1782, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1952:1:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1944:9:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1924:29:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1792, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1788, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1785, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1764, + "src": "1957:4:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 1786, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1957:11:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1787, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1971:1:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1957:15:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1791, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1789, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1762, + "src": "1976:5:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1790, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1985:1:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1976:10:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1957:29:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "1924:62:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1776, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "1916:7:18", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1794, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1916:71:18", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1795, + "nodeType": "ExpressionStatement", + "src": "1916:71:18" + }, + { + "assignments": [], + "declarations": [ + { + "constant": false, + "id": 1797, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 1876, + "src": "1997:13:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1796, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1997:7:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1798, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "1997:13:18" + }, + { + "assignments": [], + "declarations": [ + { + "constant": false, + "id": 1800, + "name": "receiver", + "nodeType": "VariableDeclaration", + "scope": 1876, + "src": "2020:16:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1799, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2020:7:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1801, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "2020:16:18" + }, + { + "assignments": [], + "declarations": [ + { + "constant": false, + "id": 1803, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 1876, + "src": "2046:14:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1802, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2046:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1804, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "2046:14:18" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1808, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1805, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1764, + "src": "2074:4:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 1806, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2074:11:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1807, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2089:1:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2074:16:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 1836, + "nodeType": "Block", + "src": "2195:413:18", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1824, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1822, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1797, + "src": "2209:5:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1823, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1760, + "src": "2217:2:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2209:10:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1825, + "nodeType": "ExpressionStatement", + "src": "2209:10:18" + }, + { + "assignments": [], + "declarations": [ + { + "constant": false, + "id": 1827, + "name": "functionIdentifier", + "nodeType": "VariableDeclaration", + "scope": 1876, + "src": "2233:25:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 1826, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "2233:6:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1828, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "2233:25:18" + }, + { + "externalReferences": [ + { + "functionIdentifier": { + "declaration": 1827, + "isOffset": false, + "isSlot": false, + "src": "2367:18:18", + "valueSize": 1 + } + }, + { + "data": { + "declaration": 1764, + "isOffset": false, + "isSlot": false, + "src": "2399:4:18", + "valueSize": 1 + } + }, + { + "receiver": { + "declaration": 1800, + "isOffset": false, + "isSlot": false, + "src": "2428:8:18", + "valueSize": 1 + } + }, + { + "amount": { + "declaration": 1803, + "isOffset": false, + "isSlot": false, + "src": "2479:6:18", + "valueSize": 1 + } + }, + { + "data": { + "declaration": 1764, + "isOffset": false, + "isSlot": false, + "src": "2450:4:18", + "valueSize": 1 + } + }, + { + "data": { + "declaration": 1764, + "isOffset": false, + "isSlot": false, + "src": "2499:4:18", + "valueSize": 1 + } + } + ], + "id": 1829, + "nodeType": "InlineAssembly", + "operations": "{\n functionIdentifier := mload(add(data, 0x20))\n receiver := mload(add(data, 0x24))\n amount := mload(add(data, 0x44))\n}", + "src": "2340:205:18" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 1833, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1831, + "name": "functionIdentifier", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1827, + "src": "2546:18:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 1832, + "name": "TRANSFER_FUNCTION_IDENTIFIER", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1692, + "src": "2568:28:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "src": "2546:50:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1830, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "2538:7:18", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1834, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2538:59:18", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1835, + "nodeType": "ExpressionStatement", + "src": "2538:59:18" + } + ] + }, + "id": 1837, + "nodeType": "IfStatement", + "src": "2070:538:18", + "trueBody": { + "id": 1821, + "nodeType": "Block", + "src": "2092:89:18", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1811, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1809, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1797, + "src": "2106:5:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 1810, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2114:1:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2106:9:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1812, + "nodeType": "ExpressionStatement", + "src": "2106:9:18" + }, + { + "expression": { + "argumentTypes": null, + "id": 1815, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1813, + "name": "receiver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1800, + "src": "2129:8:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1814, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1760, + "src": "2140:2:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2129:13:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1816, + "nodeType": "ExpressionStatement", + "src": "2129:13:18" + }, + { + "expression": { + "argumentTypes": null, + "id": 1819, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1817, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1803, + "src": "2156:6:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1818, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1762, + "src": "2165:5:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2156:14:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1820, + "nodeType": "ExpressionStatement", + "src": "2156:14:18" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1841, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1839, + "name": "receiver", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1800, + "src": "2625:8:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1840, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2637:1:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2625:13:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1838, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "2617:7:18", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1842, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2617:22:18", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1843, + "nodeType": "ExpressionStatement", + "src": "2617:22:18" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1847, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1845, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1803, + "src": "2657:6:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1846, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2666:1:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2657:10:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1844, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "2649:7:18", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1848, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2649:19:18", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1849, + "nodeType": "ExpressionStatement", + "src": "2649:19:18" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1852, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1797, + "src": "2763:5:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1853, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1803, + "src": "2770:6:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1851, + "name": "isUnderLimit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1950, + "src": "2750:12:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) returns (bool)" + } + }, + "id": 1854, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2750:27:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1850, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "2742:7:18", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1855, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2742:36:18", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1856, + "nodeType": "ExpressionStatement", + "src": "2742:36:18" + }, + { + "expression": { + "argumentTypes": null, + "id": 1862, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1857, + "name": "dailyLimits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1696, + "src": "2788:11:18", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1703_storage_$", + "typeString": "mapping(address => struct DailyLimitModule.DailyLimit storage ref)" + } + }, + "id": 1859, + "indexExpression": { + "argumentTypes": null, + "id": 1858, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1797, + "src": "2800:5:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2788:18:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DailyLimit_$1703_storage", + "typeString": "struct DailyLimitModule.DailyLimit storage ref" + } + }, + "id": 1860, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "spentToday", + "nodeType": "MemberAccess", + "referencedDeclaration": 1700, + "src": "2788:29:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "argumentTypes": null, + "id": 1861, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1803, + "src": "2821:6:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2788:39:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1863, + "nodeType": "ExpressionStatement", + "src": "2788:39:18" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1867, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1760, + "src": "2859:2:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1868, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1762, + "src": "2863:5:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1869, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1764, + "src": "2870:4:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1870, + "name": "Enum", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 30, + "src": "2876:4:18", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Enum_$30_$", + "typeString": "type(contract Enum)" + } + }, + "id": 1871, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "Operation", + "nodeType": "MemberAccess", + "referencedDeclaration": 29, + "src": "2876:14:18", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_Operation_$29_$", + "typeString": "type(enum Enum.Operation)" + } + }, + "id": 1872, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Call", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2876:19:18", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + ], + "expression": { + "argumentTypes": null, + "id": 1864, + "name": "manager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 844, + "src": "2837:7:18", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ModuleManager_$1142", + "typeString": "contract ModuleManager" + } + }, + "id": 1866, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "executeModule", + "nodeType": "MemberAccess", + "referencedDeclaration": 1033, + "src": "2837:21:18", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$returns$_t_bool_$", + "typeString": "function (address,uint256,bytes memory,enum Enum.Operation) external returns (bool)" + } + }, + "id": 1873, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2837:59:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1874, + "nodeType": "ExpressionStatement", + "src": "2837:59:18" + } + ] + }, + "documentation": null, + "id": 1876, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "executeInternal", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1765, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1758, + "name": "sender", + "nodeType": "VariableDeclaration", + "scope": 1876, + "src": "1630:14:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1757, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1630:7:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1760, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 1876, + "src": "1646:10:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1759, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1646:7:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1762, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 1876, + "src": "1658:13:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1761, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1658:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1764, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 1876, + "src": "1673:10:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1763, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1673:5:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1629:55:18" + }, + "payable": false, + "returnParameters": { + "id": 1766, + "nodeType": "ParameterList", + "parameters": [], + "src": "1706:0:18" + }, + "scope": 1964, + "src": "1605:1298:18", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 1893, + "nodeType": "Block", + "src": "3372:61:18", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1886, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2465, + "src": "3398:3:18", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1887, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3398:10:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1888, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1878, + "src": "3410:2:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1889, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1880, + "src": "3414:5:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1890, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1882, + "src": "3421:4:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 1885, + "name": "executeInternal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1876, + "src": "3382:15:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,address,uint256,bytes memory)" + } + }, + "id": 1891, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3382:44:18", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1892, + "nodeType": "ExpressionStatement", + "src": "3382:44:18" + } + ] + }, + "documentation": "@dev Returns if Safe transaction is a valid daily limit transaction.\n @param to Receiver address in case of Ether transfer, token address in case of a token transfer.\n @param value Ether value in case of an Ether transfer.\n @param data Encoded token transfer. Empty in case of Ether transfer.\n @return Returns if transaction can be executed.", + "id": 1894, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "executeDailyLimit", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1883, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1878, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 1894, + "src": "3314:10:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1877, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3314:7:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1880, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 1894, + "src": "3326:13:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1879, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3326:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1882, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 1894, + "src": "3341:10:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1881, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3341:5:18", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3313:39:18" + }, + "payable": false, + "returnParameters": { + "id": 1884, + "nodeType": "ParameterList", + "parameters": [], + "src": "3372:0:18" + }, + "scope": 1964, + "src": "3287:146:18", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1949, + "nodeType": "Block", + "src": "3536:391:18", + "statements": [ + { + "assignments": [ + 1904 + ], + "declarations": [ + { + "constant": false, + "id": 1904, + "name": "dailyLimit", + "nodeType": "VariableDeclaration", + "scope": 1950, + "src": "3546:29:18", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DailyLimit_$1703_storage_ptr", + "typeString": "struct DailyLimitModule.DailyLimit" + }, + "typeName": { + "contractScope": null, + "id": 1903, + "name": "DailyLimit", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1703, + "src": "3546:10:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DailyLimit_$1703_storage_ptr", + "typeString": "struct DailyLimitModule.DailyLimit" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1908, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1905, + "name": "dailyLimits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1696, + "src": "3578:11:18", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1703_storage_$", + "typeString": "mapping(address => struct DailyLimitModule.DailyLimit storage ref)" + } + }, + "id": 1907, + "indexExpression": { + "argumentTypes": null, + "id": 1906, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1896, + "src": "3590:5:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3578:18:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DailyLimit_$1703_storage", + "typeString": "struct DailyLimitModule.DailyLimit storage ref" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3546:50:18" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1913, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1909, + "name": "today", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1963, + "src": "3610:5:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 1910, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3610:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1911, + "name": "dailyLimit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1904, + "src": "3620:10:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DailyLimit_$1703_storage_ptr", + "typeString": "struct DailyLimitModule.DailyLimit storage pointer" + } + }, + "id": 1912, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "lastDay", + "nodeType": "MemberAccess", + "referencedDeclaration": 1702, + "src": "3620:18:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3610:28:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1928, + "nodeType": "IfStatement", + "src": "3606:126:18", + "trueBody": { + "id": 1927, + "nodeType": "Block", + "src": "3640:92:18", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1919, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1914, + "name": "dailyLimit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1904, + "src": "3654:10:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DailyLimit_$1703_storage_ptr", + "typeString": "struct DailyLimitModule.DailyLimit storage pointer" + } + }, + "id": 1916, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "lastDay", + "nodeType": "MemberAccess", + "referencedDeclaration": 1702, + "src": "3654:18:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1917, + "name": "today", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1963, + "src": "3675:5:18", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 1918, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3675:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3654:28:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1920, + "nodeType": "ExpressionStatement", + "src": "3654:28:18" + }, + { + "expression": { + "argumentTypes": null, + "id": 1925, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1921, + "name": "dailyLimit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1904, + "src": "3696:10:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DailyLimit_$1703_storage_ptr", + "typeString": "struct DailyLimitModule.DailyLimit storage pointer" + } + }, + "id": 1923, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "spentToday", + "nodeType": "MemberAccess", + "referencedDeclaration": 1700, + "src": "3696:21:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 1924, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3720:1:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3696:25:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1926, + "nodeType": "ExpressionStatement", + "src": "3696:25:18" + } + ] + } + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1943, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1935, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1932, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1929, + "name": "dailyLimit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1904, + "src": "3748:10:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DailyLimit_$1703_storage_ptr", + "typeString": "struct DailyLimitModule.DailyLimit storage pointer" + } + }, + "id": 1930, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "spentToday", + "nodeType": "MemberAccess", + "referencedDeclaration": 1700, + "src": "3748:21:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "id": 1931, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1898, + "src": "3772:6:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3748:30:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1933, + "name": "dailyLimit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1904, + "src": "3782:10:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DailyLimit_$1703_storage_ptr", + "typeString": "struct DailyLimitModule.DailyLimit storage pointer" + } + }, + "id": 1934, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "dailyLimit", + "nodeType": "MemberAccess", + "referencedDeclaration": 1698, + "src": "3782:21:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3748:55:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1942, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1939, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1936, + "name": "dailyLimit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1904, + "src": "3819:10:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DailyLimit_$1703_storage_ptr", + "typeString": "struct DailyLimitModule.DailyLimit storage pointer" + } + }, + "id": 1937, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "spentToday", + "nodeType": "MemberAccess", + "referencedDeclaration": 1700, + "src": "3819:21:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "id": 1938, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1898, + "src": "3843:6:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3819:30:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1940, + "name": "dailyLimit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1904, + "src": "3852:10:18", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DailyLimit_$1703_storage_ptr", + "typeString": "struct DailyLimitModule.DailyLimit storage pointer" + } + }, + "id": 1941, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "spentToday", + "nodeType": "MemberAccess", + "referencedDeclaration": 1700, + "src": "3852:21:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3819:54:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3748:125:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1946, + "nodeType": "IfStatement", + "src": "3741:157:18", + "trueBody": { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1944, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3894:4:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 1902, + "id": 1945, + "nodeType": "Return", + "src": "3887:11:18" + } + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 1947, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3915:5:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 1902, + "id": 1948, + "nodeType": "Return", + "src": "3908:12:18" + } + ] + }, + "documentation": null, + "id": 1950, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "isUnderLimit", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1899, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1896, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 1950, + "src": "3461:13:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1895, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3461:7:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1898, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 1950, + "src": "3476:14:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1897, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3476:7:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3460:31:18" + }, + "payable": false, + "returnParameters": { + "id": 1902, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1901, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1950, + "src": "3526:4:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1900, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3526:4:18", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3525:6:18" + }, + "scope": 1964, + "src": "3439:488:18", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 1962, + "nodeType": "Block", + "src": "4091:44:18", + "statements": [ + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1960, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1955, + "name": "now", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2467, + "src": "4108:3:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "components": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1958, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1956, + "name": "now", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2467, + "src": "4115:3:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "%", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 1957, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4121:6:18", + "subdenomination": "days", + "typeDescriptions": { + "typeIdentifier": "t_rational_86400_by_1", + "typeString": "int_const 86400" + }, + "value": "1" + }, + "src": "4115:12:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "id": 1959, + "isConstant": false, + "isInlineArray": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "TupleExpression", + "src": "4114:14:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4108:20:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 1954, + "id": 1961, + "nodeType": "Return", + "src": "4101:27:18" + } + ] + }, + "documentation": "@dev Returns last midnight as Unix timestamp.\n @return Unix timestamp.", + "id": 1963, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "today", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1951, + "nodeType": "ParameterList", + "parameters": [], + "src": "4033:2:18" + }, + "payable": false, + "returnParameters": { + "id": 1954, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1953, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1963, + "src": "4081:4:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1952, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "4081:4:18", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4080:6:18" + }, + "scope": 1964, + "src": "4019:116:18", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 1965, + "src": "296:3841:18" + } + ], + "src": "0:4138:18" + }, + "compiler": { + "name": "solc", + "version": "0.4.23+commit.124ca40d.Emscripten.clang" + }, + "networks": { + "4": { + "events": {}, + "links": {}, + "address": "0x302364976f0a5623088f52008335465f6b3389f9", + "transactionHash": "0x8ad6245cc111aa9b30c96651f8729b927e595cb0b6ff86aa6368721896b60a3b" + }, + "1525950336085": { + "events": {}, + "links": {}, + "address": "0xe52c225329d3fb9f6933bd52e7067a24d20f7983", + "transactionHash": "0xaffd9cdbf1bd14f5f349af2782a1b4dbebd9ac97abedbcfb9aee5fb1707afe96" + } + }, + "schemaVersion": "2.0.0", + "updatedAt": "2018-05-10T11:07:04.692Z" +} \ No newline at end of file diff --git a/safe-contracts/build/contracts/DailyLimitModuleWithSignature.json b/safe-contracts/build/contracts/DailyLimitModuleWithSignature.json new file mode 100644 index 0000000000..0c844f47c8 --- /dev/null +++ b/safe-contracts/build/contracts/DailyLimitModuleWithSignature.json @@ -0,0 +1,2549 @@ +{ + "contractName": "DailyLimitModuleWithSignature", + "abi": [ + { + "constant": false, + "inputs": [ + { + "name": "tokens", + "type": "address[]" + }, + { + "name": "_dailyLimits", + "type": "uint256[]" + } + ], + "name": "setup", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "TRANSFER_FUNCTION_IDENTIFIER", + "outputs": [ + { + "name": "", + "type": "bytes4" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "manager", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_masterCopy", + "type": "address" + } + ], + "name": "changeMasterCopy", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "token", + "type": "address" + }, + { + "name": "dailyLimit", + "type": "uint256" + } + ], + "name": "changeDailyLimit", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "NAME", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "nonce", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "today", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "address" + } + ], + "name": "dailyLimits", + "outputs": [ + { + "name": "dailyLimit", + "type": "uint256" + }, + { + "name": "spentToday", + "type": "uint256" + }, + { + "name": "lastDay", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "to", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + }, + { + "name": "data", + "type": "bytes" + } + ], + "name": "executeDailyLimit", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "VERSION", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "to", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + }, + { + "name": "data", + "type": "bytes" + }, + { + "name": "v", + "type": "uint8" + }, + { + "name": "r", + "type": "bytes32" + }, + { + "name": "s", + "type": "bytes32" + } + ], + "name": "executeDailyLimitWithSignature", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "to", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + }, + { + "name": "data", + "type": "bytes" + }, + { + "name": "_nonce", + "type": "uint256" + } + ], + "name": "getTransactionHash", + "outputs": [ + { + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b506111cf806100206000396000f3006080604052600436106100c5576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806328814f03146100ca578063430e47f814610173578063481c6a75146101dc5780634bedd30f146102335780637de7edef146102ef57806381c5e03b14610332578063a3f4df7e1461037f578063affed0e01461040f578063b74e452b1461043a578063b98a34de14610465578063d7bffc921461051e578063fce7379a14610583578063ffa1ad7414610616575b600080fd5b3480156100d657600080fd5b5061017160048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192905050506106a6565b005b34801561017f57600080fd5b50610188610745565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b3480156101e857600080fd5b506101f1610769565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561023f57600080fd5b506102ed600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff1690602001909291908035600019169060200190929190803560001916906020019092919050505061078f565b005b3480156102fb57600080fd5b50610330600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061084c565b005b34801561033e57600080fd5b5061037d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610911565b005b34801561038b57600080fd5b506103946109b8565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103d45780820151818401526020810190506103b9565b50505050905090810190601f1680156104015780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561041b57600080fd5b506104246109f1565b6040518082815260200191505060405180910390f35b34801561044657600080fd5b5061044f6109f7565b6040518082815260200191505060405180910390f35b34801561047157600080fd5b50610500600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929080359060200190929190505050610a0f565b60405180826000191660001916815260200191505060405180910390f35b34801561052a57600080fd5b5061055f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610bf2565b60405180848152602001838152602001828152602001935050505060405180910390f35b34801561058f57600080fd5b50610614600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610c1c565b005b34801561062257600080fd5b5061062b610c2d565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561066b578082015181840152602081019050610650565b50505050905090810190601f1680156106985780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60006106b0610c66565b600090505b82518110156107405781818151811015156106cc57fe5b906020019060200201516002600085848151811015156106e857fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555080806001019150506106b5565b505050565b7fa9059cbb0000000000000000000000000000000000000000000000000000000081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806107a0888888600354610a0f565b9150600182868686604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af1158015610819573d6000803e3d6000fd5b505050602060405103519050600160036000828254019250508190555061084281898989610cf0565b5050505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156108a857600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156108ce57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561096d57600080fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055505050565b6040805190810160405280601281526020017f4461696c79204c696d6974204d6f64756c65000000000000000000000000000081525081565b60035481565b60006201518042811515610a0757fe5b064203905090565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f010000000000000000000000000000000000000000000000000000000000000002308787878760405180887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101877effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140184815260200183805190602001908083835b602083101515610baf5780518252602082019150602081019050602083039250610b8a565b6001836020036101000a03801982511681845116808217855250505050505090500182815260200197505050505050505060405180910390209050949350505050565b60026020528060005260406000206000915090508060000154908060010154908060020154905083565b610c2833848484610cf0565b505050565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610cad57600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600080600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e896040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015610db357600080fd5b505af1158015610dc7573d6000803e3d6000fd5b505050506040513d6020811015610ddd57600080fd5b81019080805190602001909291905050501515610df957600080fd5b60008551148015610e0a5750600086115b80610e22575060008551118015610e215750600086145b5b1515610e2d57600080fd5b600085511415610e465760009350869250859150610ecb565b8693506020850151905060248501519250604485015191507fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141515610eca57600080fd5b5b60008373ffffffffffffffffffffffffffffffffffffffff1614151515610ef157600080fd5b600082111515610f0057600080fd5b610f0a84836110f4565b1515610f1557600080fd5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008282540192505081905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b021640a88888860006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200183600281111561101f57fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b8381101561105f578082015181840152602081019050611044565b50505050905090810190601f16801561108c5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b1580156110ae57600080fd5b505af11580156110c2573d6000803e3d6000fd5b505050506040513d60208110156110d857600080fd5b8101908080519060200190929190505050505050505050505050565b600080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905080600201546111456109f7565b1115611166576111536109f7565b8160020181905550600081600101819055505b806000015483826001015401111580156111895750806001015483826001015401115b15611197576001915061119c565b600091505b50929150505600a165627a7a723058209acb3b25560df8e205af786b834cb0120a603a673ce06fbea511bee993d09cd90029", + "deployedBytecode": "0x6080604052600436106100c5576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806328814f03146100ca578063430e47f814610173578063481c6a75146101dc5780634bedd30f146102335780637de7edef146102ef57806381c5e03b14610332578063a3f4df7e1461037f578063affed0e01461040f578063b74e452b1461043a578063b98a34de14610465578063d7bffc921461051e578063fce7379a14610583578063ffa1ad7414610616575b600080fd5b3480156100d657600080fd5b5061017160048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192905050506106a6565b005b34801561017f57600080fd5b50610188610745565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b3480156101e857600080fd5b506101f1610769565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561023f57600080fd5b506102ed600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff1690602001909291908035600019169060200190929190803560001916906020019092919050505061078f565b005b3480156102fb57600080fd5b50610330600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061084c565b005b34801561033e57600080fd5b5061037d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610911565b005b34801561038b57600080fd5b506103946109b8565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103d45780820151818401526020810190506103b9565b50505050905090810190601f1680156104015780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561041b57600080fd5b506104246109f1565b6040518082815260200191505060405180910390f35b34801561044657600080fd5b5061044f6109f7565b6040518082815260200191505060405180910390f35b34801561047157600080fd5b50610500600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929080359060200190929190505050610a0f565b60405180826000191660001916815260200191505060405180910390f35b34801561052a57600080fd5b5061055f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610bf2565b60405180848152602001838152602001828152602001935050505060405180910390f35b34801561058f57600080fd5b50610614600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610c1c565b005b34801561062257600080fd5b5061062b610c2d565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561066b578082015181840152602081019050610650565b50505050905090810190601f1680156106985780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60006106b0610c66565b600090505b82518110156107405781818151811015156106cc57fe5b906020019060200201516002600085848151811015156106e857fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555080806001019150506106b5565b505050565b7fa9059cbb0000000000000000000000000000000000000000000000000000000081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806107a0888888600354610a0f565b9150600182868686604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af1158015610819573d6000803e3d6000fd5b505050602060405103519050600160036000828254019250508190555061084281898989610cf0565b5050505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156108a857600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156108ce57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561096d57600080fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055505050565b6040805190810160405280601281526020017f4461696c79204c696d6974204d6f64756c65000000000000000000000000000081525081565b60035481565b60006201518042811515610a0757fe5b064203905090565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f010000000000000000000000000000000000000000000000000000000000000002308787878760405180887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101877effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140184815260200183805190602001908083835b602083101515610baf5780518252602082019150602081019050602083039250610b8a565b6001836020036101000a03801982511681845116808217855250505050505090500182815260200197505050505050505060405180910390209050949350505050565b60026020528060005260406000206000915090508060000154908060010154908060020154905083565b610c2833848484610cf0565b505050565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610cad57600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600080600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e896040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015610db357600080fd5b505af1158015610dc7573d6000803e3d6000fd5b505050506040513d6020811015610ddd57600080fd5b81019080805190602001909291905050501515610df957600080fd5b60008551148015610e0a5750600086115b80610e22575060008551118015610e215750600086145b5b1515610e2d57600080fd5b600085511415610e465760009350869250859150610ecb565b8693506020850151905060248501519250604485015191507fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141515610eca57600080fd5b5b60008373ffffffffffffffffffffffffffffffffffffffff1614151515610ef157600080fd5b600082111515610f0057600080fd5b610f0a84836110f4565b1515610f1557600080fd5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008282540192505081905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b021640a88888860006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200183600281111561101f57fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b8381101561105f578082015181840152602081019050611044565b50505050905090810190601f16801561108c5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b1580156110ae57600080fd5b505af11580156110c2573d6000803e3d6000fd5b505050506040513d60208110156110d857600080fd5b8101908080519060200190929190505050505050505050505050565b600080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020905080600201546111456109f7565b1115611166576111536109f7565b8160020181905550600081600101819055505b806000015483826001015401111580156111895750806001015483826001015401115b15611197576001915061119c565b600091505b50929150505600a165627a7a723058209acb3b25560df8e205af786b834cb0120a603a673ce06fbea511bee993d09cd90029", + "sourceMap": "241:1458:19:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;241:1458:19;;;;;;;", + "deployedSourceMap": "241:1458:19:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;991:222:18;;8:9:-1;5:2;;;30:1;27;20:12;5:2;991:222:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;441:67;;8:9:-1;5:2;;;30:1;27;20:12;5:2;441:67:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;262:28:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;262:28:8;;;;;;;;;;;;;;;;;;;;;;;;;;;874:346:19;;8:9:-1;5:2;;;30:1;27;20:12;5:2;874:346:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;626:208:6;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:208:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;1441:158:18;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1441:158:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;339:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;339:50:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;339:50:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;307:20:19;;8:9:-1;5:2;;;30:1;27;20:12;5:2;307:20:19;;;;;;;;;;;;;;;;;;;;;;;4019:116:18;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4019:116:18;;;;;;;;;;;;;;;;;;;;;;;1471:226:19;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1471:226:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;586:50:18;;8:9:-1;5:2;;;30:1;27;20:12;5:2;586:50:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3287:146;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3287:146:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;395:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;395:40:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;395:40:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;991:222;1104:9;1077:12;:10;:12::i;:::-;1116:1;1104:13;;1099:107;1123:6;:13;1119:1;:17;1099:107;;;1191:12;1204:1;1191:15;;;;;;;;;;;;;;;;;;1155:11;:22;1167:6;1174:1;1167:9;;;;;;;;;;;;;;;;;;1155:22;;;;;;;;;;;;;;;:33;;:51;;;;1138:3;;;;;;;1099:107;;;991:222;;;:::o;441:67::-;;;:::o;262:28:8:-;;;;;;;;;;;;;:::o;874:346:19:-;1013:23;1091:14;1039:42;1058:2;1062:5;1069:4;1075:5;;1039:18;:42::i;:::-;1013:68;;1108:35;1118:15;1135:1;1138;1141;1108:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1108:35:19;;;;;;;;1091:52;;1162:1;1153:5;;:10;;;;;;;;;;;1173:40;1189:6;1197:2;1201:5;1208:4;1173:15;:40::i;:::-;874:346;;;;;;;;:::o;626:208:6:-;359:7:8;;;;;;;;;;;337:30;;:10;:30;;;329:39;;;;;;;;791:1:6;776:11;:16;;;;768:25;;;;;;;;816:11;803:10;;:24;;;;;;;;;;;;;;;;;;626:208;:::o;1441:158:18:-;359:7:8;;;;;;;;;;;337:30;;:10;:30;;;329:39;;;;;;;;1582:10:18;1550:11;:18;1562:5;1550:18;;;;;;;;;;;;;;;:29;;:42;;;;1441:158;;:::o;339:50::-;;;;;;;;;;;;;;;;;;;;:::o;307:20:19:-;;;;:::o;4019:116:18:-;4081:4;4121:6;4115:3;:12;;;;;;;;4108:3;:20;4101:27;;4019:116;:::o;1471:226:19:-;1599:7;1644:4;1639:10;;1656:1;1651:7;;1660:4;1666:2;1670:5;1677:4;1683:6;1629:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;1629:61:19;;;;;;;;;;;;;;;;;;;;;;;;;;;1622:68;;1471:226;;;;;;:::o;586:50:18:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3287:146::-;3382:44;3398:10;3410:2;3414:5;3421:4;3382:15;:44::i;:::-;3287:146;;;:::o;395:40::-;;;;;;;;;;;;;;;;;;;;:::o;392:268:8:-;606:1;594:7;;;;;;;;;;;586:21;;;578:30;;;;;;;;642:10;618:7;;:35;;;;;;;;;;;;;;;;;;392:268::o;1605:1298:18:-;1997:13;2020:16;2046:14;2233:25;1814:7;;;;;;;;;;;1801:29;;;1831:6;1801:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1801:37:18;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1801:37:18;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1801:37:18;;;;;;;;;;;;;;;;1793:46;;;;;;;;1939:1;1924:4;:11;:16;:29;;;;;1952:1;1944:5;:9;1924:29;:62;;;;1971:1;1957:4;:11;:15;:29;;;;;1985:1;1976:5;:10;1957:29;1924:62;1916:71;;;;;;;;2089:1;2074:4;:11;:16;2070:538;;;2114:1;2106:9;;2140:2;2129:13;;2165:5;2156:14;;2070:538;;;2217:2;2209:10;;2405:4;2399;2395:15;2389:22;2367:44;;2456:4;2450;2446:15;2440:22;2428:34;;2505:4;2499;2495:15;2489:22;2479:32;;2568:28;2546:50;;;:18;:50;;;;2538:59;;;;;;;;2070:538;2637:1;2625:8;:13;;;;2617:22;;;;;;;;2666:1;2657:6;:10;2649:19;;;;;;;;2750:27;2763:5;2770:6;2750:12;:27::i;:::-;2742:36;;;;;;;;2821:6;2788:11;:18;2800:5;2788:18;;;;;;;;;;;;;;;:29;;;:39;;;;;;;;;;;2837:7;;;;;;;;;;;:21;;;2859:2;2863:5;2870:4;2876:19;2837:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;2837:59:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2837:59:18;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2837:59:18;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2837:59:18;;;;;;;;;;;;;;;;;1605:1298;;;;;;;;:::o;3439:488::-;3526:4;3546:29;3578:11;:18;3590:5;3578:18;;;;;;;;;;;;;;;3546:50;;3620:10;:18;;;3610:7;:5;:7::i;:::-;:28;3606:126;;;3675:7;:5;:7::i;:::-;3654:10;:18;;:28;;;;3720:1;3696:10;:21;;:25;;;;3606:126;3782:10;:21;;;3772:6;3748:10;:21;;;:30;:55;;:125;;;;;3852:10;:21;;;3843:6;3819:10;:21;;;:30;:54;3748:125;3741:157;;;3894:4;3887:11;;;;3741:157;3915:5;3908:12;;3439:488;;;;;;:::o", + "source": "pragma solidity 0.4.23;\nimport \"./DailyLimitModule.sol\";\n\n\n/// @title Daily Limit Module With Signature - Allows to transfer limited amounts of ERC20 tokens and Ether without confirmations.\n/// @author Richard Meissner - \ncontract DailyLimitModuleWithSignature is DailyLimitModule {\n\n uint256 public nonce;\n\n /// @dev Returns if Safe transaction is a valid daily limit transaction.\n /// @param to Receiver address in case of Ether transfer, token address in case of a token transfer.\n /// @param value Ether value in case of an Ether transfer.\n /// @param data Encoded token transfer. Empty in case of Ether transfer.\n /// @param v Part of the signature of the sender.\n /// @param r Part of the signature of the sender.\n /// @param s Part of the signature of the sender.\n /// @return Returns if transaction can be executed.\n function executeDailyLimitWithSignature(address to, uint256 value, bytes data, uint8 v, bytes32 r, bytes32 s)\n public\n {\n bytes32 transactionHash = getTransactionHash(to, value, data, nonce);\n address sender = ecrecover(transactionHash, v, r, s);\n nonce += 1;\n executeInternal(sender, to, value, data);\n }\n\n /// @dev Returns transactions hash to be signed by owners.\n /// @param to Destination address.\n /// @param value Ether value.\n /// @param data Data payload.\n /// @param _nonce Transaction nonce.\n /// @return Transaction hash.\n function getTransactionHash(address to, uint256 value, bytes data, uint256 _nonce)\n public\n view\n returns (bytes32)\n {\n return keccak256(byte(0x19), byte(0), this, to, value, data, _nonce);\n }\n}\n", + "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/DailyLimitModuleWithSignature.sol", + "ast": { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/DailyLimitModuleWithSignature.sol", + "exportedSymbols": { + "DailyLimitModuleWithSignature": [ + 2045 + ] + }, + "id": 2046, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1966, + "literals": [ + "solidity", + "0.4", + ".23" + ], + "nodeType": "PragmaDirective", + "src": "0:23:19" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/DailyLimitModule.sol", + "file": "./DailyLimitModule.sol", + "id": 1967, + "nodeType": "ImportDirective", + "scope": 2046, + "sourceUnit": 1965, + "src": "24:32:19", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 1968, + "name": "DailyLimitModule", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1964, + "src": "283:16:19", + "typeDescriptions": { + "typeIdentifier": "t_contract$_DailyLimitModule_$1964", + "typeString": "contract DailyLimitModule" + } + }, + "id": 1969, + "nodeType": "InheritanceSpecifier", + "src": "283:16:19" + } + ], + "contractDependencies": [ + 779, + 877, + 1559, + 1964 + ], + "contractKind": "contract", + "documentation": "@title Daily Limit Module With Signature - Allows to transfer limited amounts of ERC20 tokens and Ether without confirmations.\n @author Richard Meissner - ", + "fullyImplemented": true, + "id": 2045, + "linearizedBaseContracts": [ + 2045, + 1964, + 877, + 779, + 1559 + ], + "name": "DailyLimitModuleWithSignature", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 1971, + "name": "nonce", + "nodeType": "VariableDeclaration", + "scope": 2045, + "src": "307:20:19", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1970, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "307:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "public" + }, + { + "body": { + "id": 2015, + "nodeType": "Block", + "src": "1003:217:19", + "statements": [ + { + "assignments": [ + 1987 + ], + "declarations": [ + { + "constant": false, + "id": 1987, + "name": "transactionHash", + "nodeType": "VariableDeclaration", + "scope": 2016, + "src": "1013:23:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1986, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1013:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1994, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1989, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1973, + "src": "1058:2:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1990, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1975, + "src": "1062:5:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1991, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1977, + "src": "1069:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 1992, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1971, + "src": "1075:5:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1988, + "name": "getTransactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2044, + "src": "1039:18:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (address,uint256,bytes memory,uint256) view returns (bytes32)" + } + }, + "id": 1993, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1039:42:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1013:68:19" + }, + { + "assignments": [ + 1996 + ], + "declarations": [ + { + "constant": false, + "id": 1996, + "name": "sender", + "nodeType": "VariableDeclaration", + "scope": 2016, + "src": "1091:14:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1995, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1091:7:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2003, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1998, + "name": "transactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1987, + "src": "1118:15:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 1999, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1979, + "src": "1135:1:19", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "argumentTypes": null, + "id": 2000, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1981, + "src": "1138:1:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 2001, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1983, + "src": "1141:1:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1997, + "name": "ecrecover", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2457, + "src": "1108:9:19", + "typeDescriptions": { + "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)" + } + }, + "id": 2002, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1108:35:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1091:52:19" + }, + { + "expression": { + "argumentTypes": null, + "id": 2006, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2004, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1971, + "src": "1153:5:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "31", + "id": 2005, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1162:1:19", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "1153:10:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2007, + "nodeType": "ExpressionStatement", + "src": "1153:10:19" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2009, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1996, + "src": "1189:6:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2010, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1973, + "src": "1197:2:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2011, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1975, + "src": "1201:5:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2012, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1977, + "src": "1208:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 2008, + "name": "executeInternal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1876, + "src": "1173:15:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,address,uint256,bytes memory)" + } + }, + "id": 2013, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1173:40:19", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2014, + "nodeType": "ExpressionStatement", + "src": "1173:40:19" + } + ] + }, + "documentation": "@dev Returns if Safe transaction is a valid daily limit transaction.\n @param to Receiver address in case of Ether transfer, token address in case of a token transfer.\n @param value Ether value in case of an Ether transfer.\n @param data Encoded token transfer. Empty in case of Ether transfer.\n @param v Part of the signature of the sender.\n @param r Part of the signature of the sender.\n @param s Part of the signature of the sender.\n @return Returns if transaction can be executed.", + "id": 2016, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "executeDailyLimitWithSignature", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1984, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1973, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 2016, + "src": "914:10:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1972, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "914:7:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1975, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 2016, + "src": "926:13:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1974, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "926:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1977, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 2016, + "src": "941:10:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1976, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "941:5:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1979, + "name": "v", + "nodeType": "VariableDeclaration", + "scope": 2016, + "src": "953:7:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 1978, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "953:5:19", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1981, + "name": "r", + "nodeType": "VariableDeclaration", + "scope": 2016, + "src": "962:9:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1980, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "962:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1983, + "name": "s", + "nodeType": "VariableDeclaration", + "scope": 2016, + "src": "973:9:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1982, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "973:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "913:70:19" + }, + "payable": false, + "returnParameters": { + "id": 1985, + "nodeType": "ParameterList", + "parameters": [], + "src": "1003:0:19" + }, + "scope": 2045, + "src": "874:346:19", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2043, + "nodeType": "Block", + "src": "1612:85:19", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30783139", + "id": 2031, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1644:4:19", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_25_by_1", + "typeString": "int_const 25" + }, + "value": "0x19" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_25_by_1", + "typeString": "int_const 25" + } + ], + "id": 2030, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1639:4:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes1_$", + "typeString": "type(bytes1)" + }, + "typeName": "byte" + }, + "id": 2032, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1639:10:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 2034, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1656:1:19", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 2033, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1651:4:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes1_$", + "typeString": "type(bytes1)" + }, + "typeName": "byte" + }, + "id": 2035, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1651:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + { + "argumentTypes": null, + "id": 2036, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2516, + "src": "1660:4:19", + "typeDescriptions": { + "typeIdentifier": "t_contract$_DailyLimitModuleWithSignature_$2045", + "typeString": "contract DailyLimitModuleWithSignature" + } + }, + { + "argumentTypes": null, + "id": 2037, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2018, + "src": "1666:2:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2038, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2020, + "src": "1670:5:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2039, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2022, + "src": "1677:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 2040, + "name": "_nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2024, + "src": "1683:6:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + { + "typeIdentifier": "t_contract$_DailyLimitModuleWithSignature_$2045", + "typeString": "contract DailyLimitModuleWithSignature" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2029, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2459, + "src": "1629:9:19", + "typeDescriptions": { + "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", + "typeString": "function () pure returns (bytes32)" + } + }, + "id": 2041, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1629:61:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 2028, + "id": 2042, + "nodeType": "Return", + "src": "1622:68:19" + } + ] + }, + "documentation": "@dev Returns transactions hash to be signed by owners.\n @param to Destination address.\n @param value Ether value.\n @param data Data payload.\n @param _nonce Transaction nonce.\n @return Transaction hash.", + "id": 2044, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "getTransactionHash", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2025, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2018, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 2044, + "src": "1499:10:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2017, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1499:7:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2020, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 2044, + "src": "1511:13:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2019, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1511:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2022, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 2044, + "src": "1526:10:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2021, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1526:5:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2024, + "name": "_nonce", + "nodeType": "VariableDeclaration", + "scope": 2044, + "src": "1538:14:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2023, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1538:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1498:55:19" + }, + "payable": false, + "returnParameters": { + "id": 2028, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2027, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2044, + "src": "1599:7:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2026, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1599:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1598:9:19" + }, + "scope": 2045, + "src": "1471:226:19", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 2046, + "src": "241:1458:19" + } + ], + "src": "0:1700:19" + }, + "legacyAST": { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/DailyLimitModuleWithSignature.sol", + "exportedSymbols": { + "DailyLimitModuleWithSignature": [ + 2045 + ] + }, + "id": 2046, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1966, + "literals": [ + "solidity", + "0.4", + ".23" + ], + "nodeType": "PragmaDirective", + "src": "0:23:19" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/DailyLimitModule.sol", + "file": "./DailyLimitModule.sol", + "id": 1967, + "nodeType": "ImportDirective", + "scope": 2046, + "sourceUnit": 1965, + "src": "24:32:19", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 1968, + "name": "DailyLimitModule", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1964, + "src": "283:16:19", + "typeDescriptions": { + "typeIdentifier": "t_contract$_DailyLimitModule_$1964", + "typeString": "contract DailyLimitModule" + } + }, + "id": 1969, + "nodeType": "InheritanceSpecifier", + "src": "283:16:19" + } + ], + "contractDependencies": [ + 779, + 877, + 1559, + 1964 + ], + "contractKind": "contract", + "documentation": "@title Daily Limit Module With Signature - Allows to transfer limited amounts of ERC20 tokens and Ether without confirmations.\n @author Richard Meissner - ", + "fullyImplemented": true, + "id": 2045, + "linearizedBaseContracts": [ + 2045, + 1964, + 877, + 779, + 1559 + ], + "name": "DailyLimitModuleWithSignature", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 1971, + "name": "nonce", + "nodeType": "VariableDeclaration", + "scope": 2045, + "src": "307:20:19", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1970, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "307:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "public" + }, + { + "body": { + "id": 2015, + "nodeType": "Block", + "src": "1003:217:19", + "statements": [ + { + "assignments": [ + 1987 + ], + "declarations": [ + { + "constant": false, + "id": 1987, + "name": "transactionHash", + "nodeType": "VariableDeclaration", + "scope": 2016, + "src": "1013:23:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1986, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1013:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1994, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1989, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1973, + "src": "1058:2:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1990, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1975, + "src": "1062:5:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1991, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1977, + "src": "1069:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 1992, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1971, + "src": "1075:5:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1988, + "name": "getTransactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2044, + "src": "1039:18:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (address,uint256,bytes memory,uint256) view returns (bytes32)" + } + }, + "id": 1993, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1039:42:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1013:68:19" + }, + { + "assignments": [ + 1996 + ], + "declarations": [ + { + "constant": false, + "id": 1996, + "name": "sender", + "nodeType": "VariableDeclaration", + "scope": 2016, + "src": "1091:14:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1995, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1091:7:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2003, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1998, + "name": "transactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1987, + "src": "1118:15:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 1999, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1979, + "src": "1135:1:19", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "argumentTypes": null, + "id": 2000, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1981, + "src": "1138:1:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 2001, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1983, + "src": "1141:1:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 1997, + "name": "ecrecover", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2457, + "src": "1108:9:19", + "typeDescriptions": { + "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)" + } + }, + "id": 2002, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1108:35:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1091:52:19" + }, + { + "expression": { + "argumentTypes": null, + "id": 2006, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2004, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1971, + "src": "1153:5:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "31", + "id": 2005, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1162:1:19", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "1153:10:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2007, + "nodeType": "ExpressionStatement", + "src": "1153:10:19" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2009, + "name": "sender", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1996, + "src": "1189:6:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2010, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1973, + "src": "1197:2:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2011, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1975, + "src": "1201:5:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2012, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1977, + "src": "1208:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 2008, + "name": "executeInternal", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1876, + "src": "1173:15:19", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,address,uint256,bytes memory)" + } + }, + "id": 2013, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1173:40:19", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2014, + "nodeType": "ExpressionStatement", + "src": "1173:40:19" + } + ] + }, + "documentation": "@dev Returns if Safe transaction is a valid daily limit transaction.\n @param to Receiver address in case of Ether transfer, token address in case of a token transfer.\n @param value Ether value in case of an Ether transfer.\n @param data Encoded token transfer. Empty in case of Ether transfer.\n @param v Part of the signature of the sender.\n @param r Part of the signature of the sender.\n @param s Part of the signature of the sender.\n @return Returns if transaction can be executed.", + "id": 2016, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "executeDailyLimitWithSignature", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1984, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1973, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 2016, + "src": "914:10:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1972, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "914:7:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1975, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 2016, + "src": "926:13:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1974, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "926:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1977, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 2016, + "src": "941:10:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1976, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "941:5:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1979, + "name": "v", + "nodeType": "VariableDeclaration", + "scope": 2016, + "src": "953:7:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 1978, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "953:5:19", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1981, + "name": "r", + "nodeType": "VariableDeclaration", + "scope": 2016, + "src": "962:9:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1980, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "962:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1983, + "name": "s", + "nodeType": "VariableDeclaration", + "scope": 2016, + "src": "973:9:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 1982, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "973:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "913:70:19" + }, + "payable": false, + "returnParameters": { + "id": 1985, + "nodeType": "ParameterList", + "parameters": [], + "src": "1003:0:19" + }, + "scope": 2045, + "src": "874:346:19", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2043, + "nodeType": "Block", + "src": "1612:85:19", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30783139", + "id": 2031, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1644:4:19", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_25_by_1", + "typeString": "int_const 25" + }, + "value": "0x19" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_25_by_1", + "typeString": "int_const 25" + } + ], + "id": 2030, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1639:4:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes1_$", + "typeString": "type(bytes1)" + }, + "typeName": "byte" + }, + "id": 2032, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1639:10:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 2034, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1656:1:19", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 2033, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1651:4:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes1_$", + "typeString": "type(bytes1)" + }, + "typeName": "byte" + }, + "id": 2035, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1651:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + { + "argumentTypes": null, + "id": 2036, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2516, + "src": "1660:4:19", + "typeDescriptions": { + "typeIdentifier": "t_contract$_DailyLimitModuleWithSignature_$2045", + "typeString": "contract DailyLimitModuleWithSignature" + } + }, + { + "argumentTypes": null, + "id": 2037, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2018, + "src": "1666:2:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2038, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2020, + "src": "1670:5:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2039, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2022, + "src": "1677:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 2040, + "name": "_nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2024, + "src": "1683:6:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + { + "typeIdentifier": "t_contract$_DailyLimitModuleWithSignature_$2045", + "typeString": "contract DailyLimitModuleWithSignature" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 2029, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2459, + "src": "1629:9:19", + "typeDescriptions": { + "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", + "typeString": "function () pure returns (bytes32)" + } + }, + "id": 2041, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1629:61:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 2028, + "id": 2042, + "nodeType": "Return", + "src": "1622:68:19" + } + ] + }, + "documentation": "@dev Returns transactions hash to be signed by owners.\n @param to Destination address.\n @param value Ether value.\n @param data Data payload.\n @param _nonce Transaction nonce.\n @return Transaction hash.", + "id": 2044, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "getTransactionHash", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2025, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2018, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 2044, + "src": "1499:10:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2017, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1499:7:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2020, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 2044, + "src": "1511:13:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2019, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1511:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2022, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 2044, + "src": "1526:10:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2021, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1526:5:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2024, + "name": "_nonce", + "nodeType": "VariableDeclaration", + "scope": 2044, + "src": "1538:14:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2023, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1538:7:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1498:55:19" + }, + "payable": false, + "returnParameters": { + "id": 2028, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2027, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2044, + "src": "1599:7:19", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2026, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1599:7:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1598:9:19" + }, + "scope": 2045, + "src": "1471:226:19", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 2046, + "src": "241:1458:19" + } + ], + "src": "0:1700:19" + }, + "compiler": { + "name": "solc", + "version": "0.4.23+commit.124ca40d.Emscripten.clang" + }, + "networks": { + "4": { + "events": {}, + "links": {}, + "address": "0x27ebb1e1cff8e9474d387bc760e4d6882f35c7cc", + "transactionHash": "0x74279a96ad8398a8cbdd3b4a8c6d2d1716cde44ab7d1533d0cfc39d2780fe39a" + }, + "1525950336085": { + "events": {}, + "links": {}, + "address": "0x788256524db64c2b23ff2e417a833927550a2d65", + "transactionHash": "0x13942c7ebe4c7c49493ac8d9d8ee3c329a0be8b7a78717117e0c5d43cbf8632c" + } + }, + "schemaVersion": "2.0.0", + "updatedAt": "2018-05-10T11:07:04.705Z" +} \ No newline at end of file diff --git a/safe-contracts/build/contracts/DelegateConstructorProxy.json b/safe-contracts/build/contracts/DelegateConstructorProxy.json new file mode 100644 index 0000000000..25dc2fc85a --- /dev/null +++ b/safe-contracts/build/contracts/DelegateConstructorProxy.json @@ -0,0 +1,666 @@ +{ + "contractName": "DelegateConstructorProxy", + "abi": [ + { + "constant": true, + "inputs": [], + "name": "proxyType", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "implementation", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "name": "_masterCopy", + "type": "address" + }, + { + "name": "initializer", + "type": "bytes" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "payable": true, + "stateMutability": "payable", + "type": "fallback" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b5060405161026d38038061026d83398101806040528101908080519060200190929190805182019291905050508160008173ffffffffffffffffffffffffffffffffffffffff161415151561006457600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506000815111156100f15773ffffffffffffffffffffffffffffffffffffffff60005416600080835160208501846127105a03f46040513d6000823e60008214156100ed573d81fd5b5050505b505061016b806101026000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461008b5780635c60da1b146100b6575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e6000811415610086573d6000fd5b3d6000f35b34801561009757600080fd5b506100a061010d565b6040518082815260200191505060405180910390f35b3480156100c257600080fd5b506100cb610116565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006002905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a72305820caf2b106039b60d7c8f99a3087b6cbf6014cdee3748f0823ccd8cbf983ee4a720029", + "deployedBytecode": "0x60806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461008b5780635c60da1b146100b6575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e6000811415610086573d6000fd5b3d6000f35b34801561009757600080fd5b506100a061010d565b6040518082815260200191505060405180910390f35b3480156100c257600080fd5b506100cb610116565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006002905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a72305820caf2b106039b60d7c8f99a3087b6cbf6014cdee3748f0823ccd8cbf983ee4a720029", + "sourceMap": "355:882:0:-;;;610:625;8:9:-1;5:2;;;30:1;27;20:12;5:2;610:625:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;668:11;593:1:12;578:11;:16;;;;570:25;;;;;;;;618:11;605:10;;:24;;;;;;;;;;;;;;;;;;508:128;735:1:0;714:11;:18;:22;710:519;;;879:42;875:1;869:8;865:57;1043:1;1040;1026:11;1020:18;1013:4;1000:11;996:22;984:10;976:5;971:3;967:15;954:91;1079:4;1073:11;1124:14;1121:1;1116:3;1101:38;1171:1;1162:7;1159:14;1156:2;;;1188:14;1183:3;1176:27;1156:2;829:390;;;;610:625;;355:882;;;;;;", + "deployedSourceMap": "355:882:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;915:42:12;911:1;905:8;901:57;990:14;987:1;984;971:34;1085:1;1082;1066:14;1063:1;1051:10;1046:3;1033:54;1121:16;1118:1;1115;1100:38;1166:1;1157:7;1154:14;1151:2;;;1181:16;1178:1;1171:27;1151:2;1223:16;1220:1;1213:27;1386:104;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1386:104:12;;;;;;;;;;;;;;;;;;;;;;;1262:118;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1262:118:12;;;;;;;;;;;;;;;;;;;;;;;;;;;1386:104;1452:7;1482:1;1475:8;;1386:104;:::o;1262:118::-;1333:7;1363:10;;;;;;;;;;;1356:17;;1262:118;:::o", + "source": "pragma solidity 0.4.23;\nimport \"./Proxy.sol\";\n\n\n/// @title Delegate Constructor Proxy - Generic proxy contract allows to execute all transactions applying the code of a master contract. It is possible to send along initialization data with the constructor.\n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract DelegateConstructorProxy is Proxy {\n\n /// @dev Constructor function sets address of master copy contract.\n /// @param _masterCopy Master copy address.\n /// @param initializer Data used for a delegate call to initialize the contract.\n constructor(address _masterCopy, bytes initializer) Proxy(_masterCopy)\n public\n {\n if (initializer.length > 0) {\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n let masterCopy := and(sload(0), 0xffffffffffffffffffffffffffffffffffffffff)\n let success := delegatecall(sub(gas, 10000), masterCopy, add(initializer, 0x20), mload(initializer), 0, 0)\n let ptr := mload(0x40)\n returndatacopy(ptr, 0, returndatasize)\n if eq(success, 0) { revert(ptr, returndatasize) }\n }\n }\n }\n}\n", + "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/DelegateConstructorProxy.sol", + "ast": { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/DelegateConstructorProxy.sol", + "exportedSymbols": { + "DelegateConstructorProxy": [ + 23 + ] + }, + "id": 24, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1, + "literals": [ + "solidity", + "0.4", + ".23" + ], + "nodeType": "PragmaDirective", + "src": "0:23:0" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Proxy.sol", + "file": "./Proxy.sol", + "id": 2, + "nodeType": "ImportDirective", + "scope": 24, + "sourceUnit": 1509, + "src": "24:21:0", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 3, + "name": "Proxy", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1508, + "src": "392:5:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Proxy_$1508", + "typeString": "contract Proxy" + } + }, + "id": 4, + "nodeType": "InheritanceSpecifier", + "src": "392:5:0" + } + ], + "contractDependencies": [ + 1508 + ], + "contractKind": "contract", + "documentation": "@title Delegate Constructor Proxy - Generic proxy contract allows to execute all transactions applying the code of a master contract. It is possible to send along initialization data with the constructor.\n @author Stefan George - \n @author Richard Meissner - ", + "fullyImplemented": true, + "id": 23, + "linearizedBaseContracts": [ + 23, + 1508 + ], + "name": "DelegateConstructorProxy", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 21, + "nodeType": "Block", + "src": "700:535:0", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 17, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 14, + "name": "initializer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8, + "src": "714:11:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 15, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "714:18:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 16, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "735:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "714:22:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 20, + "nodeType": "IfStatement", + "src": "710:519:0", + "trueBody": { + "id": 19, + "nodeType": "Block", + "src": "738:491:0", + "statements": [ + { + "externalReferences": [ + { + "initializer": { + "declaration": 8, + "isOffset": false, + "isSlot": false, + "src": "1000:11:0", + "valueSize": 1 + } + }, + { + "initializer": { + "declaration": 8, + "isOffset": false, + "isSlot": false, + "src": "1026:11:0", + "valueSize": 1 + } + } + ], + "id": 18, + "nodeType": "InlineAssembly", + "operations": "{\n let masterCopy := and(sload(0), 0xffffffffffffffffffffffffffffffffffffffff)\n let success := delegatecall(sub(gas(), 10000), masterCopy, add(initializer, 0x20), mload(initializer), 0, 0)\n let ptr := mload(0x40)\n returndatacopy(ptr, 0, returndatasize())\n if eq(success, 0)\n {\n revert(ptr, returndatasize())\n }\n}", + "src": "820:409:0" + } + ] + } + } + ] + }, + "documentation": "@dev Constructor function sets address of master copy contract.\n @param _masterCopy Master copy address.\n @param initializer Data used for a delegate call to initialize the contract.", + "id": 22, + "implemented": true, + "isConstructor": true, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 11, + "name": "_masterCopy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6, + "src": "668:11:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "id": 12, + "modifierName": { + "argumentTypes": null, + "id": 10, + "name": "Proxy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1508, + "src": "662:5:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Proxy_$1508_$", + "typeString": "type(contract Proxy)" + } + }, + "nodeType": "ModifierInvocation", + "src": "662:18:0" + } + ], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6, + "name": "_masterCopy", + "nodeType": "VariableDeclaration", + "scope": 22, + "src": "622:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "622:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 8, + "name": "initializer", + "nodeType": "VariableDeclaration", + "scope": 22, + "src": "643:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 7, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "643:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "621:40:0" + }, + "payable": false, + "returnParameters": { + "id": 13, + "nodeType": "ParameterList", + "parameters": [], + "src": "700:0:0" + }, + "scope": 23, + "src": "610:625:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 24, + "src": "355:882:0" + } + ], + "src": "0:1238:0" + }, + "legacyAST": { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/DelegateConstructorProxy.sol", + "exportedSymbols": { + "DelegateConstructorProxy": [ + 23 + ] + }, + "id": 24, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1, + "literals": [ + "solidity", + "0.4", + ".23" + ], + "nodeType": "PragmaDirective", + "src": "0:23:0" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Proxy.sol", + "file": "./Proxy.sol", + "id": 2, + "nodeType": "ImportDirective", + "scope": 24, + "sourceUnit": 1509, + "src": "24:21:0", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 3, + "name": "Proxy", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1508, + "src": "392:5:0", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Proxy_$1508", + "typeString": "contract Proxy" + } + }, + "id": 4, + "nodeType": "InheritanceSpecifier", + "src": "392:5:0" + } + ], + "contractDependencies": [ + 1508 + ], + "contractKind": "contract", + "documentation": "@title Delegate Constructor Proxy - Generic proxy contract allows to execute all transactions applying the code of a master contract. It is possible to send along initialization data with the constructor.\n @author Stefan George - \n @author Richard Meissner - ", + "fullyImplemented": true, + "id": 23, + "linearizedBaseContracts": [ + 23, + 1508 + ], + "name": "DelegateConstructorProxy", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 21, + "nodeType": "Block", + "src": "700:535:0", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 17, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 14, + "name": "initializer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 8, + "src": "714:11:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 15, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "714:18:0", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 16, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "735:1:0", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "714:22:0", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 20, + "nodeType": "IfStatement", + "src": "710:519:0", + "trueBody": { + "id": 19, + "nodeType": "Block", + "src": "738:491:0", + "statements": [ + { + "externalReferences": [ + { + "initializer": { + "declaration": 8, + "isOffset": false, + "isSlot": false, + "src": "1000:11:0", + "valueSize": 1 + } + }, + { + "initializer": { + "declaration": 8, + "isOffset": false, + "isSlot": false, + "src": "1026:11:0", + "valueSize": 1 + } + } + ], + "id": 18, + "nodeType": "InlineAssembly", + "operations": "{\n let masterCopy := and(sload(0), 0xffffffffffffffffffffffffffffffffffffffff)\n let success := delegatecall(sub(gas(), 10000), masterCopy, add(initializer, 0x20), mload(initializer), 0, 0)\n let ptr := mload(0x40)\n returndatacopy(ptr, 0, returndatasize())\n if eq(success, 0)\n {\n revert(ptr, returndatasize())\n }\n}", + "src": "820:409:0" + } + ] + } + } + ] + }, + "documentation": "@dev Constructor function sets address of master copy contract.\n @param _masterCopy Master copy address.\n @param initializer Data used for a delegate call to initialize the contract.", + "id": 22, + "implemented": true, + "isConstructor": true, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 11, + "name": "_masterCopy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 6, + "src": "668:11:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "id": 12, + "modifierName": { + "argumentTypes": null, + "id": 10, + "name": "Proxy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1508, + "src": "662:5:0", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Proxy_$1508_$", + "typeString": "type(contract Proxy)" + } + }, + "nodeType": "ModifierInvocation", + "src": "662:18:0" + } + ], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 9, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 6, + "name": "_masterCopy", + "nodeType": "VariableDeclaration", + "scope": 22, + "src": "622:19:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 5, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "622:7:0", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 8, + "name": "initializer", + "nodeType": "VariableDeclaration", + "scope": 22, + "src": "643:17:0", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 7, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "643:5:0", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "621:40:0" + }, + "payable": false, + "returnParameters": { + "id": 13, + "nodeType": "ParameterList", + "parameters": [], + "src": "700:0:0" + }, + "scope": 23, + "src": "610:625:0", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 24, + "src": "355:882:0" + } + ], + "src": "0:1238:0" + }, + "compiler": { + "name": "solc", + "version": "0.4.23+commit.124ca40d.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "2.0.0", + "updatedAt": "2018-05-10T10:43:07.891Z" +} \ No newline at end of file diff --git a/safe-contracts/build/contracts/Enum.json b/safe-contracts/build/contracts/Enum.json new file mode 100644 index 0000000000..91cba62770 --- /dev/null +++ b/safe-contracts/build/contracts/Enum.json @@ -0,0 +1,151 @@ +{ + "contractName": "Enum", + "abi": [], + "bytecode": "0x6080604052348015600f57600080fd5b50603580601d6000396000f3006080604052600080fd00a165627a7a72305820346c40fd38e691d9042d78bf7c33e05e8eafc3767b153318d8f2a9f5daf08bcf0029", + "deployedBytecode": "0x6080604052600080fd00a165627a7a72305820346c40fd38e691d9042d78bf7c33e05e8eafc3767b153318d8f2a9f5daf08bcf0029", + "sourceMap": "115:95:1:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;115:95:1;;;;;;;", + "deployedSourceMap": "115:95:1:-;;;;;", + "source": "pragma solidity 0.4.23;\n\n\n/// @title Enum - Collection of enums\n/// @author Richard Meissner - \ncontract Enum {\n enum Operation {\n Call,\n DelegateCall,\n Create\n }\n}\n", + "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Enum.sol", + "ast": { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Enum.sol", + "exportedSymbols": { + "Enum": [ + 30 + ] + }, + "id": 31, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 25, + "literals": [ + "solidity", + "0.4", + ".23" + ], + "nodeType": "PragmaDirective", + "src": "0:23:1" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": "@title Enum - Collection of enums\n @author Richard Meissner - ", + "fullyImplemented": true, + "id": 30, + "linearizedBaseContracts": [ + 30 + ], + "name": "Enum", + "nodeType": "ContractDefinition", + "nodes": [ + { + "canonicalName": "Enum.Operation", + "id": 29, + "members": [ + { + "id": 26, + "name": "Call", + "nodeType": "EnumValue", + "src": "160:4:1" + }, + { + "id": 27, + "name": "DelegateCall", + "nodeType": "EnumValue", + "src": "174:12:1" + }, + { + "id": 28, + "name": "Create", + "nodeType": "EnumValue", + "src": "196:6:1" + } + ], + "name": "Operation", + "nodeType": "EnumDefinition", + "src": "135:73:1" + } + ], + "scope": 31, + "src": "115:95:1" + } + ], + "src": "0:211:1" + }, + "legacyAST": { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Enum.sol", + "exportedSymbols": { + "Enum": [ + 30 + ] + }, + "id": 31, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 25, + "literals": [ + "solidity", + "0.4", + ".23" + ], + "nodeType": "PragmaDirective", + "src": "0:23:1" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": "@title Enum - Collection of enums\n @author Richard Meissner - ", + "fullyImplemented": true, + "id": 30, + "linearizedBaseContracts": [ + 30 + ], + "name": "Enum", + "nodeType": "ContractDefinition", + "nodes": [ + { + "canonicalName": "Enum.Operation", + "id": 29, + "members": [ + { + "id": 26, + "name": "Call", + "nodeType": "EnumValue", + "src": "160:4:1" + }, + { + "id": 27, + "name": "DelegateCall", + "nodeType": "EnumValue", + "src": "174:12:1" + }, + { + "id": 28, + "name": "Create", + "nodeType": "EnumValue", + "src": "196:6:1" + } + ], + "name": "Operation", + "nodeType": "EnumDefinition", + "src": "135:73:1" + } + ], + "scope": 31, + "src": "115:95:1" + } + ], + "src": "0:211:1" + }, + "compiler": { + "name": "solc", + "version": "0.4.23+commit.124ca40d.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "2.0.0", + "updatedAt": "2018-05-10T10:43:07.892Z" +} \ No newline at end of file diff --git a/safe-contracts/build/contracts/GnosisSafe.json b/safe-contracts/build/contracts/GnosisSafe.json index 7b01ffd6b1..3333ecba9d 100644 --- a/safe-contracts/build/contracts/GnosisSafe.json +++ b/safe-contracts/build/contracts/GnosisSafe.json @@ -20,11 +20,43 @@ "stateMutability": "view", "type": "function" }, + { + "constant": false, + "inputs": [ + { + "name": "owner", + "type": "address" + }, + { + "name": "_threshold", + "type": "uint8" + } + ], + "name": "addOwner", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "module", + "type": "address" + } + ], + "name": "addModule", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, { "constant": true, "inputs": [ { - "name": "", + "name": "owner", "type": "address" } ], @@ -59,13 +91,9 @@ { "name": "", "type": "address" - }, - { - "name": "", - "type": "bytes32" } ], - "name": "isConfirmed", + "name": "isModule", "outputs": [ { "name": "", @@ -77,31 +105,43 @@ "type": "function" }, { - "constant": true, - "inputs": [], - "name": "NAME", - "outputs": [ + "constant": false, + "inputs": [ { - "name": "", - "type": "string" + "name": "oldOwnerIndex", + "type": "uint256" + }, + { + "name": "oldOwner", + "type": "address" + }, + { + "name": "newOwner", + "type": "address" } ], + "name": "replaceOwner", + "outputs": [], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function" }, { - "constant": true, - "inputs": [], - "name": "nonce", - "outputs": [ + "constant": false, + "inputs": [ { - "name": "", + "name": "moduleIndex", "type": "uint256" + }, + { + "name": "module", + "type": "address" } ], + "name": "removeModule", + "outputs": [], "payable": false, - "stateMutability": "view", + "stateMutability": "nonpayable", "type": "function" }, { @@ -112,7 +152,7 @@ "type": "uint256" } ], - "name": "extensions", + "name": "modules", "outputs": [ { "name": "", @@ -124,18 +164,35 @@ "type": "function" }, { - "constant": true, + "constant": false, "inputs": [ { - "name": "", + "name": "ownerIndex", + "type": "uint256" + }, + { + "name": "owner", "type": "address" + }, + { + "name": "_threshold", + "type": "uint8" } ], - "name": "isExtension", + "name": "removeOwner", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getOwners", "outputs": [ { "name": "", - "type": "bool" + "type": "address[]" } ], "payable": false, @@ -145,7 +202,7 @@ { "constant": true, "inputs": [], - "name": "VERSION", + "name": "NAME", "outputs": [ { "name": "", @@ -157,23349 +214,243 @@ "type": "function" }, { + "constant": false, "inputs": [ - { - "name": "_owners", - "type": "address[]" - }, - { - "name": "_threshold", - "type": "uint8" - }, { "name": "to", "type": "address" }, + { + "name": "value", + "type": "uint256" + }, { "name": "data", "type": "bytes" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "payable": true, - "stateMutability": "payable", - "type": "fallback" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "newContract", - "type": "address" - } - ], - "name": "ContractCreation", - "type": "event" - }, - { - "constant": false, - "inputs": [ - { - "name": "_owners", - "type": "address[]" }, { - "name": "_threshold", + "name": "operation", "type": "uint8" - }, - { - "name": "to", - "type": "address" - }, - { - "name": "data", - "type": "bytes" } ], - "name": "setup", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ + "name": "executeModule", + "outputs": [ { - "name": "_masterCopy", - "type": "address" + "name": "success", + "type": "bool" } ], - "name": "changeMasterCopy", - "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { - "constant": false, - "inputs": [ - { - "name": "owner", - "type": "address" - }, + "constant": true, + "inputs": [], + "name": "getModules", + "outputs": [ { - "name": "_threshold", - "type": "uint8" + "name": "", + "type": "address[]" } ], - "name": "addOwner", - "outputs": [], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function" }, { "constant": false, "inputs": [ - { - "name": "ownerIndex", - "type": "uint256" - }, - { - "name": "owner", - "type": "address" - }, { "name": "_threshold", "type": "uint8" } ], - "name": "removeOwner", + "name": "changeThreshold", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" }, { - "constant": false, - "inputs": [ - { - "name": "oldOwnerIndex", - "type": "uint256" - }, - { - "name": "oldOwner", - "type": "address" - }, + "constant": true, + "inputs": [], + "name": "VERSION", + "outputs": [ { - "name": "newOwner", - "type": "address" + "name": "", + "type": "string" } ], - "name": "replaceOwner", - "outputs": [], "payable": false, - "stateMutability": "nonpayable", + "stateMutability": "view", "type": "function" }, { - "constant": false, - "inputs": [ - { - "name": "_threshold", - "type": "uint8" - } - ], - "name": "changeThreshold", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" + "payable": true, + "stateMutability": "payable", + "type": "fallback" }, { - "constant": false, + "anonymous": false, "inputs": [ { - "name": "extension", + "indexed": false, + "name": "newContract", "type": "address" } ], - "name": "addExtension", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" + "name": "ContractCreation", + "type": "event" }, { "constant": false, "inputs": [ { - "name": "extensionIndex", - "type": "uint256" + "name": "_owners", + "type": "address[]" + }, + { + "name": "_threshold", + "type": "uint8" }, { - "name": "extension", + "name": "to", "type": "address" + }, + { + "name": "data", + "type": "bytes" } ], - "name": "removeExtension", + "name": "setup", "outputs": [], "payable": false, "stateMutability": "nonpayable", "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b5061193e806100206000396000f3006080604052600436106100f1576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063025e7c27146100f35780630e5229b0146101605780631ed86f19146101b05780632f54bf6e146101f357806342cde4e81461024e57806342f6e3891461027f57806354e99c6e146102da5780637c6401d31461034757806381b2248a14610394578063842b954e14610401578063a04222e11461045b578063a0e67e2b14610534578063a3f4df7e146105a0578063b021640a14610630578063b2494df3146106e8578063b7f3358d14610754578063ffa1ad7414610784575b005b3480156100ff57600080fd5b5061011e60048036038101908080359060200190929190505050610814565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561016c57600080fd5b506101ae600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050610852565b005b3480156101bc57600080fd5b506101f1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109f5565b005b3480156101ff57600080fd5b50610234600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b6e565b604051808215151515815260200191505060405180910390f35b34801561025a57600080fd5b50610263610bc4565b604051808260ff1660ff16815260200191505060405180910390f35b34801561028b57600080fd5b506102c0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610bdb565b604051808215151515815260200191505060405180910390f35b3480156102e657600080fd5b5061034560048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610bfb565b005b34801561035357600080fd5b5061039260048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e34565b005b3480156103a057600080fd5b506103bf60048036038101908080359060200190929190505050610fec565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561040d57600080fd5b5061045960048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff16906020019092919050505061102a565b005b34801561046757600080fd5b5061053260048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611225565b005b34801561054057600080fd5b5061054961123f565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561058c578082015181840152602081019050610571565b505050509050019250505060405180910390f35b3480156105ac57600080fd5b506105b56112cd565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105f55780820151818401526020810190506105da565b50505050905090810190601f1680156106225780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561063c57600080fd5b506106ce600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050611306565b604051808215151515815260200191505060405180910390f35b3480156106f457600080fd5b506106fd611377565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610740578082015181840152602081019050610725565b505050509050019250505060405180910390f35b34801561076057600080fd5b50610782600480360381019080803560ff169060200190929190505050611405565b005b34801561079057600080fd5b50610799611487565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107d95780820151818401526020810190506107be565b50505050905090810190601f1680156108065780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60028181548110151561082357fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561088c57600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff16141515156108b257600080fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561090b57600080fd5b60028290806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508060ff16600360009054906101000a900460ff1660ff161415156109f1576109f081611405565b5b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610a2f57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610a5557600080fd5b600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610aae57600080fd5b60008190806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600360009054906101000a900460ff16905090565b60016020528060005260406000206000915054906101000a900460ff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610c3557600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610c5b57600080fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610cb457600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600284815481101515610cda57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610d2757600080fd5b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600284815481101515610de757fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610e6e57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600083815481101515610e9457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610ee157600080fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600160008054905003815481101515610f5057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600083815481101515610f8a57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000805480919060019003610fe791906117c8565b505050565b600081815481101515610ffb57fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561106457600080fd5b8060ff166001600280549050031015151561107e57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166002848154811015156110a457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156110f157600080fd5b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600260016002805490500381548110151561116057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660028481548110151561119a57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060028054809190600190036111f791906117f4565b508060ff16600360009054906101000a900460ff1660ff161415156112205761121f81611405565b5b505050565b61122f84846114c0565b611239828261164e565b50505050565b606060028054806020026020016040519081016040528092919081815260200182805480156112c357602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611279575b5050505050905090565b6040805190810160405280600e81526020017f4d6f64756c65204d616e6167657200000000000000000000000000000000000081525081565b6000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561136057600080fd5b61136d858585855a611689565b9050949350505050565b606060008054806020026020016040519081016040528092919081815260200182805480156113fb57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116113b1575b5050505050905090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561143f57600080fd5b6002805490508160ff161115151561145657600080fd5b60018160ff161015151561146957600080fd5b80600360006101000a81548160ff021916908360ff16021790555050565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000806000600360009054906101000a900460ff1660ff161415156114e457600080fd5b83518360ff16111515156114f757600080fd5b60018360ff161015151561150a57600080fd5b600091505b835182101561161657838281518110151561152657fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff161415151561155857600080fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156115b157600080fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550818060010192505061150f565b836002908051906020019061162c929190611820565b5082600360006101000a81548160ff021916908360ff16021790555050505050565b60008273ffffffffffffffffffffffffffffffffffffffff161415156116855761167982825a611786565b151561168457600080fd5b5b5050565b6000806000600281111561169957fe5b8460028111156116a557fe5b14156116be576116b78787878661179d565b915061177c565b600160028111156116cb57fe5b8460028111156116d757fe5b14156116ef576116e8878685611786565b915061177b565b6116f8856117b6565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b60008060008451602086018786f490509392505050565b6000806000845160208601878987f19050949350505050565b60008151602083016000f09050919050565b8154818355818111156117ef578183600052602060002091820191016117ee91906118aa565b5b505050565b81548183558181111561181b5781836000526020600020918201910161181a91906118aa565b5b505050565b828054828255906000526020600020908101928215611899579160200282015b828111156118985782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190611840565b5b5090506118a691906118cf565b5090565b6118cc91905b808211156118c85760008160009055506001016118b0565b5090565b90565b61190f91905b8082111561190b57600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055506001016118d5565b5090565b905600a165627a7a7230582017c4588fe302e0126f687d1c0be11e55a0b32f3c3ba0cc695da0c68dddd6d9270029", + "deployedBytecode": "0x6080604052600436106100f1576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063025e7c27146100f35780630e5229b0146101605780631ed86f19146101b05780632f54bf6e146101f357806342cde4e81461024e57806342f6e3891461027f57806354e99c6e146102da5780637c6401d31461034757806381b2248a14610394578063842b954e14610401578063a04222e11461045b578063a0e67e2b14610534578063a3f4df7e146105a0578063b021640a14610630578063b2494df3146106e8578063b7f3358d14610754578063ffa1ad7414610784575b005b3480156100ff57600080fd5b5061011e60048036038101908080359060200190929190505050610814565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561016c57600080fd5b506101ae600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050610852565b005b3480156101bc57600080fd5b506101f1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109f5565b005b3480156101ff57600080fd5b50610234600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b6e565b604051808215151515815260200191505060405180910390f35b34801561025a57600080fd5b50610263610bc4565b604051808260ff1660ff16815260200191505060405180910390f35b34801561028b57600080fd5b506102c0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610bdb565b604051808215151515815260200191505060405180910390f35b3480156102e657600080fd5b5061034560048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610bfb565b005b34801561035357600080fd5b5061039260048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e34565b005b3480156103a057600080fd5b506103bf60048036038101908080359060200190929190505050610fec565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561040d57600080fd5b5061045960048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff16906020019092919050505061102a565b005b34801561046757600080fd5b5061053260048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611225565b005b34801561054057600080fd5b5061054961123f565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561058c578082015181840152602081019050610571565b505050509050019250505060405180910390f35b3480156105ac57600080fd5b506105b56112cd565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105f55780820151818401526020810190506105da565b50505050905090810190601f1680156106225780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561063c57600080fd5b506106ce600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050611306565b604051808215151515815260200191505060405180910390f35b3480156106f457600080fd5b506106fd611377565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610740578082015181840152602081019050610725565b505050509050019250505060405180910390f35b34801561076057600080fd5b50610782600480360381019080803560ff169060200190929190505050611405565b005b34801561079057600080fd5b50610799611487565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107d95780820151818401526020810190506107be565b50505050905090810190601f1680156108065780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60028181548110151561082357fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561088c57600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff16141515156108b257600080fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561090b57600080fd5b60028290806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508060ff16600360009054906101000a900460ff1660ff161415156109f1576109f081611405565b5b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610a2f57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610a5557600080fd5b600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610aae57600080fd5b60008190806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600360009054906101000a900460ff16905090565b60016020528060005260406000206000915054906101000a900460ff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610c3557600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610c5b57600080fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610cb457600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600284815481101515610cda57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610d2757600080fd5b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080600284815481101515610de757fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610e6e57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600083815481101515610e9457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610ee157600080fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600160008054905003815481101515610f5057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600083815481101515610f8a57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000805480919060019003610fe791906117c8565b505050565b600081815481101515610ffb57fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561106457600080fd5b8060ff166001600280549050031015151561107e57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166002848154811015156110a457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156110f157600080fd5b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600260016002805490500381548110151561116057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660028481548110151561119a57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060028054809190600190036111f791906117f4565b508060ff16600360009054906101000a900460ff1660ff161415156112205761121f81611405565b5b505050565b61122f84846114c0565b611239828261164e565b50505050565b606060028054806020026020016040519081016040528092919081815260200182805480156112c357602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611279575b5050505050905090565b6040805190810160405280600e81526020017f4d6f64756c65204d616e6167657200000000000000000000000000000000000081525081565b6000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561136057600080fd5b61136d858585855a611689565b9050949350505050565b606060008054806020026020016040519081016040528092919081815260200182805480156113fb57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116113b1575b5050505050905090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561143f57600080fd5b6002805490508160ff161115151561145657600080fd5b60018160ff161015151561146957600080fd5b80600360006101000a81548160ff021916908360ff16021790555050565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000806000600360009054906101000a900460ff1660ff161415156114e457600080fd5b83518360ff16111515156114f757600080fd5b60018360ff161015151561150a57600080fd5b600091505b835182101561161657838281518110151561152657fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff161415151561155857600080fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156115b157600080fd5b6001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550818060010192505061150f565b836002908051906020019061162c929190611820565b5082600360006101000a81548160ff021916908360ff16021790555050505050565b60008273ffffffffffffffffffffffffffffffffffffffff161415156116855761167982825a611786565b151561168457600080fd5b5b5050565b6000806000600281111561169957fe5b8460028111156116a557fe5b14156116be576116b78787878661179d565b915061177c565b600160028111156116cb57fe5b8460028111156116d757fe5b14156116ef576116e8878685611786565b915061177b565b6116f8856117b6565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b60008060008451602086018786f490509392505050565b6000806000845160208601878987f19050949350505050565b60008151602083016000f09050919050565b8154818355818111156117ef578183600052602060002091820191016117ee91906118aa565b5b505050565b81548183558181111561181b5781836000526020600020918201910161181a91906118aa565b5b505050565b828054828255906000526020600020908101928215611899579160200282015b828111156118985782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190611840565b5b5090506118a691906118cf565b5090565b6118cc91905b808211156118c85760008160009055506001016118b0565b5090565b90565b61190f91905b8082111561190b57600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055506001016118d5565b5090565b905600a165627a7a7230582017c4588fe302e0126f687d1c0be11e55a0b32f3c3ba0cc695da0c68dddd6d9270029", + "sourceMap": "322:674:2:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;322:674:2;;;;;;;", + "deployedSourceMap": "322:674:2:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;287:23:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;287:23:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1737:431;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1737:431:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1166:300:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1166:300:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;4552:125:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4552:125:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4436:110;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4436:110:10;;;;;;;;;;;;;;;;;;;;;;;;;;;599:41:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;599:41:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3419:501:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3419:501:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1722:336:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1722:336:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;500:23;;8:9:-1;5:2;;;30:1;27;20:12;5:2;500:23:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2499:599:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2499:599:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;693:301:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;693:301:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4759:111:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4759:111:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;4759:111:10;;;;;;;;;;;;;;;;;401:46:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;401:46:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;401:46:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2394:361;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2394:361:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4279:112;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4279:112:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;4279:112:9;;;;;;;;;;;;;;;;;4109:321:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4109:321:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;453:40:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;453:40:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;453:40:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;287:23:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1737:431::-;244:4:14;222:27;;:10;:27;;;214:36;;;;;;;;1894:1:10;1885:5;:10;;;;1877:19;;;;;;;;1955:7;:14;1963:5;1955:14;;;;;;;;;;;;;;;;;;;;;;;;;1954:15;1946:24;;;;;;;;1980:6;1992:5;1980:18;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;1980:18:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2025:4;2008:7;:14;2016:5;2008:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;2110:10;2097:23;;:9;;;;;;;;;;;:23;;;;2093:68;;;2134:27;2150:10;2134:15;:27::i;:::-;2093:68;1737:431;;:::o;1166:300:9:-;244:4:14;222:27;;:10;:27;;;214:36;;;;;;;;1317:1:9;1306:6;1298:20;;;;1290:29;;;;;;;;1379:8;:16;1388:6;1379:16;;;;;;;;;;;;;;;;;;;;;;;;;1378:17;1370:26;;;;;;;;1406:7;1419:6;1406:20;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;1406:20:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1455:4;1436:8;:16;1445:6;1436:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;1166:300;:::o;4552:125:10:-;4629:4;4656:7;:14;4664:5;4656:14;;;;;;;;;;;;;;;;;;;;;;;;;4649:21;;4552:125;;;:::o;4436:110::-;4502:5;4530:9;;;;;;;;;;;4523:16;;4436:110;:::o;599:41:9:-;;;;;;;;;;;;;;;;;;;;;;:::o;3419:501:10:-;244:4:14;222:27;;:10;:27;;;214:36;;;;;;;;3609:1:10;3597:8;:13;;;;3589:22;;;;;;;;3670:7;:17;3678:8;3670:17;;;;;;;;;;;;;;;;;;;;;;;;;3669:18;3661:27;;;;;;;;3793:8;3768:33;;:6;3775:13;3768:21;;;;;;;;;;;;;;;;;;;;;;;;;;;:33;;;3760:42;;;;;;;;3832:5;3812:7;:17;3820:8;3812:17;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;3867:4;3847:7;:17;3855:8;3847:17;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;3905:8;3881:6;3888:13;3881:21;;;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;3419:501;;;:::o;1722:336:9:-;244:4:14;222:27;;:10;:27;;;214:36;;;;;;;;1924:6:9;1900:30;;:7;1908:11;1900:20;;;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;1892:39;;;;;;;;1960:5;1941:8;:16;1950:6;1941:16;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;1998:7;2023:1;2006:7;:14;;;;:18;1998:27;;;;;;;;;;;;;;;;;;;;;;;;;;;1975:7;1983:11;1975:20;;;;;;;;;;;;;;;;;;:50;;;;;;;;;;;;;;;;;;2035:7;:16;;;;;;;;;;;;:::i;:::-;;1722:336;;:::o;500:23::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2499:599:10:-;244:4:14;222:27;;:10;:27;;;214:36;;;;;;;;2727:10:10;2706:31;;2722:1;2706:6;:13;;;;:17;:31;;2698:40;;;;;;;;2840:5;2818:27;;:6;2825:10;2818:18;;;;;;;;;;;;;;;;;;;;;;;;;;;:27;;;2810:36;;;;;;;;2873:5;2856:7;:14;2864:5;2856:14;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;2909:6;2932:1;2916:6;:13;;;;:17;2909:25;;;;;;;;;;;;;;;;;;;;;;;;;;;2888:6;2895:10;2888:18;;;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;2944:6;:15;;;;;;;;;;;;:::i;:::-;;3040:10;3027:23;;:9;;;;;;;;;;;:23;;;;3023:68;;;3064:27;3080:10;3064:15;:27::i;:::-;3023:68;2499:599;;;:::o;693:301:2:-;798:32;810:7;819:10;798:11;:32::i;:::-;965:22;978:2;982:4;965:12;:22::i;:::-;693:301;;;;:::o;4759:111:10:-;4825:9;4857:6;4850:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4759:111;:::o;401:46:9:-;;;;;;;;;;;;;;;;;;;;:::o;2394:361::-;2514:12;2599:8;:20;2608:10;2599:20;;;;;;;;;;;;;;;;;;;;;;;;;2591:29;;;;;;;;2702:46;2710:2;2714:5;2721:4;2727:9;2738;2702:7;:46::i;:::-;2692:56;;2394:361;;;;;;:::o;4279:112::-;4346:8;4377:7;4370:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4279:112;:::o;4109:321:10:-;244:4:14;222:27;;:10;:27;;;214:36;;;;;;;;4291:6:10;:13;;;;4277:10;:27;;;;4269:36;;;;;;;;4389:1;4375:10;:15;;;;4367:24;;;;;;;;4413:10;4401:9;;:22;;;;;;;;;;;;;;;;;;4109:321;:::o;453:40:9:-;;;;;;;;;;;;;;;;;;;;:::o;651:846:10:-;1147:9;1246:13;885:1;872:9;;;;;;;;;;;:14;;;864:23;;;;;;;;994:7;:14;980:10;:28;;;;972:37;;;;;;;;1093:1;1079:10;:15;;;;1071:24;;;;;;;;1159:1;1147:13;;1142:291;1166:7;:14;1162:1;:18;1142:291;;;1262:7;1270:1;1262:10;;;;;;;;;;;;;;;;;;1246:26;;1303:1;1294:5;:10;;;;1286:19;;;;;;;;1372:7;:14;1380:5;1372:14;;;;;;;;;;;;;;;;;;;;;;;;;1371:15;1363:24;;;;;;;;1418:4;1401:7;:14;1409:5;1401:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;1182:3;;;;;;;1142:291;;;1451:7;1442:6;:16;;;;;;;;;;;;:::i;:::-;;1480:10;1468:9;;:22;;;;;;;;;;;;;;;;;;651:846;;;;:::o;769:230:9:-;856:1;850:2;:7;;;;846:146;;;951:40;971:2;975:4;981:9;951:19;:40::i;:::-;943:49;;;;;;;;846:146;769:230;;:::o;2761:548::-;2892:12;3163:19;2937;2924:32;;;;;;;;:9;:32;;;;;;;;;2920:383;;;2980:35;2992:2;2996:5;3003:4;3009:5;2980:11;:35::i;:::-;2970:45;;2920:383;;;3047:27;3034:40;;;;;;;;:9;:40;;;;;;;;;3030:273;;;3098:36;3118:2;3122:4;3128:5;3098:19;:36::i;:::-;3088:46;;3030:273;;;3185:19;3199:4;3185:13;:19::i;:::-;3163:41;;3243:1;3228:11;:16;;;;3218:26;;3263:29;3280:11;3263:29;;;;;;;;;;;;;;;;;;;;;;3030:273;2920:383;2761:548;;;;;;;;:::o;3630:303::-;3732:12;3915:1;3912;3905:4;3899:11;3892:4;3886;3882:15;3878:2;3871:5;3858:59;3847:70;;3833:94;;;;;:::o;3315:309::-;3424:12;3606:1;3603;3596:4;3590:11;3583:4;3577;3573:15;3566:5;3562:2;3555:5;3550:58;3539:69;;3525:93;;;;;;:::o;3939:261::-;4008:19;4178:4;4172:11;4165:4;4159;4155:15;4152:1;4145:39;4130:54;;4116:78;;;:::o;322:674:2:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", + "source": "pragma solidity 0.4.23;\nimport \"./Module.sol\";\nimport \"./ModuleManager.sol\";\nimport \"./OwnerManager.sol\";\n\n\n/// @title Gnosis Safe - A multisignature wallet with support for modules and owners. This contract needs to be extented to add functionality to execute transactions.\n/// @author Stefan George - \ncontract GnosisSafe is ModuleManager, OwnerManager {\n\n /// @dev Setup function sets initial storage of contract.\n /// @param _owners List of Safe owners.\n /// @param _threshold Number of required confirmations for a Safe transaction.\n /// @param to Contract address for optional delegate call.\n /// @param data Data payload for optional delegate call.\n function setup(address[] _owners, uint8 _threshold, address to, bytes data)\n public\n {\n setupOwners(_owners, _threshold);\n // As setupOwners can only be called if the contract has not been initialized we don't need a check for setupModules\n setupModules(to, data);\n }\n}\n", + "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", + "ast": { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", + "exportedSymbols": { + "GnosisSafe": [ + 63 + ] }, - { - "constant": false, - "inputs": [ - { - "name": "to", - "type": "address" - }, - { - "name": "value", - "type": "uint256" - }, - { - "name": "data", - "type": "bytes" - }, - { - "name": "operation", - "type": "uint8" - }, - { - "name": "_nonce", - "type": "uint256" - } - ], - "name": "confirmTransaction", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "to", - "type": "address" - }, - { - "name": "value", - "type": "uint256" - }, - { - "name": "data", - "type": "bytes" - }, - { - "name": "operation", - "type": "uint8" - }, - { - "name": "v", - "type": "uint8[]" - }, - { - "name": "r", - "type": "bytes32[]" - }, - { - "name": "s", - "type": "bytes32[]" - }, - { - "name": "_owners", - "type": "address[]" - }, - { - "name": "indices", - "type": "uint256[]" - } - ], - "name": "executeTransaction", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "to", - "type": "address" - }, - { - "name": "value", - "type": "uint256" - }, - { - "name": "data", - "type": "bytes" - }, - { - "name": "operation", - "type": "uint8" - }, - { - "name": "extension", - "type": "address" - } - ], - "name": "executeExtension", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "to", - "type": "address" - }, - { - "name": "value", - "type": "uint256" - }, - { - "name": "data", - "type": "bytes" - }, - { - "name": "operation", - "type": "uint8" - }, - { - "name": "_nonce", - "type": "uint256" - } - ], - "name": "getTransactionHash", - "outputs": [ - { - "name": "", - "type": "bytes32" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "getOwners", - "outputs": [ - { - "name": "", - "type": "address[]" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "getExtensions", - "outputs": [ - { - "name": "", - "type": "address[]" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "transactionHash", - "type": "bytes32" - } - ], - "name": "getConfirmationCount", - "outputs": [ - { - "name": "confirmationCount", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "transactionHash", - "type": "bytes32" - } - ], - "name": "getConfirmingOwners", - "outputs": [ - { - "name": "confirmingOwners", - "type": "address[]" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x606060405234156200001057600080fd5b60405162002d6738038062002d67833981016040528080518201919060200180519060200190919080519060200190919080518201919050506200006b84848484620000756401000000000262001b33176401000000009004565b5050505062000374565b600080600060149054906101000a900460ff1660ff161415156200009857600080fd5b84518460ff1611151515620000ac57600080fd5b60018460ff1610151515620000c057600080fd5b600090505b8451811015620001fe5760008582815181101515620000e057fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff16141515156200010e57600080fd5b6004600086838151811015156200012157fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156200018057600080fd5b60016004600087848151811015156200019557fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080600101915050620000c5565b8460029080519060200190620002169291906200029f565b5083600060146101000a81548160ff021916908360ff16021790555060008373ffffffffffffffffffffffffffffffffffffffff161415156200028057620002738383620002876401000000000262002698176401000000009004565b15156200027f57600080fd5b5b5050505050565b600080600083516020850186600019f4905092915050565b8280548282559060005260206000209081019282156200031b579160200282015b828111156200031a5782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190620002c0565b5b5090506200032a91906200032e565b5090565b6200037191905b808211156200036d57600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555060010162000335565b5090565b90565b6129e380620003846000396000f300606060405260043610610149576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063025e7c271461014b57806307fa7017146101ae5780630e5229b0146101f0578063113642e514610235578063170ff3e1146102705780632b500041146102a95780632b5b1f821461035f5780632f54bf6e146103f957806342cde4e81461044a57806354e99c6e146104795780637b0519f3146104da5780637de7edef1461053857806383b7db6314610571578063842b954e146105db578063a04222e114610629578063a0e67e2b146106f1578063a3f4df7e1461075b578063affed0e0146107e9578063b6a9002e14610812578063b7f3358d146108c2578063c676920a146108e8578063db85d59c14610964578063f6d3fd86146109c7578063f847ed4814610b98578063ffa1ad7414610be9575b005b341561015657600080fd5b61016c6004808035906020019091905050610c77565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156101b957600080fd5b6101ee600480803590602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cb6565b005b34156101fb57600080fd5b610233600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803560ff16906020019091905050610e71565b005b341561024057600080fd5b61025a600480803560001916906020019091905050611011565b6040518082815260200191505060405180910390f35b341561027b57600080fd5b6102a7600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506110e7565b005b34156102b457600080fd5b610341600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803560ff1690602001909190803590602001909190505061125e565b60405180826000191660001916815260200191505060405180910390f35b341561036a57600080fd5b6103f7600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803560ff1690602001909190803590602001909190505061140b565b005b341561040457600080fd5b610430600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611561565b604051808215151515815260200191505060405180910390f35b341561045557600080fd5b61045d611581565b604051808260ff1660ff16815260200191505060405180910390f35b341561048457600080fd5b6104d8600480803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611594565b005b34156104e557600080fd5b61051e600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035600019169060200190919050506117cf565b604051808215151515815260200191505060405180910390f35b341561054357600080fd5b61056f600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506117fe565b005b341561057c57600080fd5b6105846118a1565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156105c75780820151818401526020810190506105ac565b505050509050019250505060405180910390f35b34156105e657600080fd5b610627600480803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803560ff16906020019091905050611935565b005b341561063457600080fd5b6106ef60048080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190803560ff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611b33565b005b34156106fc57600080fd5b610704611d21565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561074757808201518184015260208101905061072c565b505050509050019250505060405180910390f35b341561076657600080fd5b61076e611db5565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107ae578082015181840152602081019050610793565b50505050905090810190601f1680156107db5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156107f457600080fd5b6107fc611dee565b6040518082815260200191505060405180910390f35b341561081d57600080fd5b6108c0600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803560ff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611df4565b005b34156108cd57600080fd5b6108e6600480803560ff16906020019091905050611fe7565b005b34156108f357600080fd5b61090d600480803560001916906020019091905050612069565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610950578082015181840152602081019050610935565b505050509050019250505060405180910390f35b341561096f57600080fd5b61098560048080359060200190919050506121fd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156109d257600080fd5b610b96600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803560ff16906020019091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190505061223c565b005b3415610ba357600080fd5b610bcf600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061263f565b604051808215151515815260200191505060405180910390f35b3415610bf457600080fd5b610bfc61265f565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610c3c578082015181840152602081019050610c21565b50505050905090810190601f168015610c695780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600281815481101515610c8657fe5b90600052602060002090016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610cf057600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600383815481101515610d1657fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610d6457600080fd5b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506003600160038054905003815481101515610dd357fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600383815481101515610e0e57fe5b906000526020600020900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003805480919060019003610e6c91906127ed565b505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610eab57600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614151515610ed157600080fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610f2a57600080fd5b60028054806001018281610f3e9190612819565b9160005260206000209001600084909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508060ff16600060149054906101000a900460ff1660ff1614151561100d5761100c81611fe7565b5b5050565b600080600090505b6002805490508110156110e1576006600060028381548110151561103957fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000846000191660001916815260200190815260200160002060009054906101000a900460ff16156110d45781806001019250505b8080600101915050611019565b50919050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561112157600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561114757600080fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156111a057600080fd5b600380548060010182816111b49190612845565b9160005260206000209001600083909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600060197f01000000000000000000000000000000000000000000000000000000000000000230878787878760405180887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083835b602083101515611391578051825260208201915060208101905060208303925061136c565b6001836020036101000a0380198251168184511680821785525050505050509050018360028111156113bf57fe5b60ff167f01000000000000000000000000000000000000000000000000000000000000000281526001018281526020019750505050505050506040518091039020905095945050505050565b6000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561146557600080fd5b6114748686868660015461125e565b9050600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000826000191660001916815260200190815260200160002060009054906101000a900460ff161515156114e857600080fd5b6001600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550505050505050565b60046020528060005260406000206000915054906101000a900460ff1681565b600060149054906101000a900460ff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156115ce57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156115f457600080fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561164d57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff1660028481548110151561167357fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156116c157600080fd5b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508060028481548110151561178157fe5b906000526020600020900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b60066020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561183857600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561185e57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6118a9612871565b600380548060200260200160405190810160405280929190818152602001828054801561192b57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116118e1575b5050505050905090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561196f57600080fd5b8060ff166001600280549050031015151561198957600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166002848154811015156119af57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156119fd57600080fd5b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506002600160028054905003815481101515611a6c57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600284815481101515611aa757fe5b906000526020600020900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506002805480919060019003611b059190612885565b508060ff16600060149054906101000a900460ff1660ff16141515611b2e57611b2d81611fe7565b5b505050565b600080600060149054906101000a900460ff1660ff16141515611b5557600080fd5b84518460ff1611151515611b6857600080fd5b60018460ff1610151515611b7b57600080fd5b600090505b8451811015611cb25760008582815181101515611b9957fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1614151515611bc657600080fd5b600460008683815181101515611bd857fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515611c3657600080fd5b6001600460008784815181101515611c4a57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080600101915050611b80565b8460029080519060200190611cc89291906128b1565b5083600060146101000a81548160ff021916908360ff16021790555060008373ffffffffffffffffffffffffffffffffffffffff16141515611d1a57611d0e8383612698565b1515611d1957600080fd5b5b5050505050565b611d2961293b565b6002805480602002602001604051908101604052809291908181526020018280548015611dab57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611d61575b5050505050905090565b6040805190810160405280600b81526020017f476e6f736973205361666500000000000000000000000000000000000000000081525081565b60015481565b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611e4c57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff1663cde09ca933878787876000604051602001526040518663ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001836002811115611f1f57fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b83811015611f5f578082015181840152602081019050611f44565b50505050905090810190601f168015611f8c5780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b1515611fae57600080fd5b6102c65a03f11515611fbf57600080fd5b505050604051805190501515611fd457600080fd5b611fe0858585856126b0565b5050505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561202157600080fd5b6002805490508160ff161115151561203857600080fd5b60018160ff161015151561204b57600080fd5b80600060146101000a81548160ff021916908360ff16021790555050565b61207161293b565b60008061207d84611011565b91508160405180591061208d5750595b9080825280602002602001820160405250925060009150600090505b6002805490508110156121f657600660006002838154811015156120c957fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000856000191660001916815260200190815260200160002060009054906101000a900460ff16156121e95760028181548110151561216a57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683838151811015156121a457fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505081806001019250505b80806001019150506120a9565b5050919050565b60038181548110151561220c57fe5b90600052602060002090016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008060006122538e8e8e8e60015461125e565b94506000935060009050600091505b600060149054906101000a900460ff1660ff16821015612518578086511180156122a25750858181518110151561229557fe5b9060200190602002015182145b156123a15786818151811015156122b557fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480612371575060066000888381518110151561230557fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000866000191660001916815260200190815260200160002060009054906101000a900460ff165b151561237c57600080fd5b868181518110151561238a57fe5b906020019060200201519250600181019050612476565b6001858b8385038151811015156123b457fe5b906020019060200201518b8486038151811015156123ce57fe5b906020019060200201518b8587038151811015156123e857fe5b90602001906020020151604051600081526020016040526000604051602001526040518085600019166000191681526020018460ff1660ff16815260200183600019166000191681526020018260001916600019168152602001945050505050602060405160208103908084039060008661646e5a03f1151561246a57600080fd5b50506020604051035192505b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156124ce57600080fd5b8373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1611151561250857600080fd5b8293508180600101925050612262565b60008751111561261357600091505b865182101561261257868281518110151561253e57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561260557600060066000898581518110151561259057fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000876000191660001916815260200190815260200160002060006101000a81548160ff0219169083151502179055505b8180600101925050612527565b5b6001806000828254019250508190555061262f8e8e8e8e6126b0565b5050505050505050505050505050565b60056020528060005260406000206000915054906101000a900460ff1681565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b600080600083516020850186600019f4905092915050565b60008060028111156126be57fe5b8260028111156126ca57fe5b14156126eb576126db8585856127c1565b15156126e657600080fd5b6127ba565b600160028111156126f857fe5b82600281111561270457fe5b1415612724576127148584612698565b151561271f57600080fd5b6127b9565b61272d836127db565b905060008173ffffffffffffffffffffffffffffffffffffffff161415151561275557600080fd5b7f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5050505050565b60008060008351602085018688600019f190509392505050565b60008151602083016000f09050919050565b81548183558181151161281457818360005260206000209182019101612813919061294f565b5b505050565b8154818355818115116128405781836000526020600020918201910161283f919061294f565b5b505050565b81548183558181151161286c5781836000526020600020918201910161286b919061294f565b5b505050565b602060405190810160405280600081525090565b8154818355818115116128ac578183600052602060002091820191016128ab919061294f565b5b505050565b82805482825590600052602060002090810192821561292a579160200282015b828111156129295782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550916020019190600101906128d1565b5b5090506129379190612974565b5090565b602060405190810160405280600081525090565b61297191905b8082111561296d576000816000905550600101612955565b5090565b90565b6129b491905b808211156129b057600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555060010161297a565b5090565b905600a165627a7a72305820b9309aeae0cb4d289bc66fdd1b641936b903e87d406ff75007e08dd9fd54ff590029", - "deployedBytecode": "0x606060405260043610610149576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063025e7c271461014b57806307fa7017146101ae5780630e5229b0146101f0578063113642e514610235578063170ff3e1146102705780632b500041146102a95780632b5b1f821461035f5780632f54bf6e146103f957806342cde4e81461044a57806354e99c6e146104795780637b0519f3146104da5780637de7edef1461053857806383b7db6314610571578063842b954e146105db578063a04222e114610629578063a0e67e2b146106f1578063a3f4df7e1461075b578063affed0e0146107e9578063b6a9002e14610812578063b7f3358d146108c2578063c676920a146108e8578063db85d59c14610964578063f6d3fd86146109c7578063f847ed4814610b98578063ffa1ad7414610be9575b005b341561015657600080fd5b61016c6004808035906020019091905050610c77565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156101b957600080fd5b6101ee600480803590602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cb6565b005b34156101fb57600080fd5b610233600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803560ff16906020019091905050610e71565b005b341561024057600080fd5b61025a600480803560001916906020019091905050611011565b6040518082815260200191505060405180910390f35b341561027b57600080fd5b6102a7600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506110e7565b005b34156102b457600080fd5b610341600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803560ff1690602001909190803590602001909190505061125e565b60405180826000191660001916815260200191505060405180910390f35b341561036a57600080fd5b6103f7600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803560ff1690602001909190803590602001909190505061140b565b005b341561040457600080fd5b610430600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611561565b604051808215151515815260200191505060405180910390f35b341561045557600080fd5b61045d611581565b604051808260ff1660ff16815260200191505060405180910390f35b341561048457600080fd5b6104d8600480803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611594565b005b34156104e557600080fd5b61051e600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035600019169060200190919050506117cf565b604051808215151515815260200191505060405180910390f35b341561054357600080fd5b61056f600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506117fe565b005b341561057c57600080fd5b6105846118a1565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156105c75780820151818401526020810190506105ac565b505050509050019250505060405180910390f35b34156105e657600080fd5b610627600480803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803560ff16906020019091905050611935565b005b341561063457600080fd5b6106ef60048080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190803560ff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611b33565b005b34156106fc57600080fd5b610704611d21565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561074757808201518184015260208101905061072c565b505050509050019250505060405180910390f35b341561076657600080fd5b61076e611db5565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107ae578082015181840152602081019050610793565b50505050905090810190601f1680156107db5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156107f457600080fd5b6107fc611dee565b6040518082815260200191505060405180910390f35b341561081d57600080fd5b6108c0600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803560ff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611df4565b005b34156108cd57600080fd5b6108e6600480803560ff16906020019091905050611fe7565b005b34156108f357600080fd5b61090d600480803560001916906020019091905050612069565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610950578082015181840152602081019050610935565b505050509050019250505060405180910390f35b341561096f57600080fd5b61098560048080359060200190919050506121fd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156109d257600080fd5b610b96600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803560ff16906020019091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190505061223c565b005b3415610ba357600080fd5b610bcf600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061263f565b604051808215151515815260200191505060405180910390f35b3415610bf457600080fd5b610bfc61265f565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610c3c578082015181840152602081019050610c21565b50505050905090810190601f168015610c695780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600281815481101515610c8657fe5b90600052602060002090016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610cf057600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600383815481101515610d1657fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610d6457600080fd5b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506003600160038054905003815481101515610dd357fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600383815481101515610e0e57fe5b906000526020600020900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003805480919060019003610e6c91906127ed565b505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610eab57600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614151515610ed157600080fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610f2a57600080fd5b60028054806001018281610f3e9190612819565b9160005260206000209001600084909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508060ff16600060149054906101000a900460ff1660ff1614151561100d5761100c81611fe7565b5b5050565b600080600090505b6002805490508110156110e1576006600060028381548110151561103957fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000846000191660001916815260200190815260200160002060009054906101000a900460ff16156110d45781806001019250505b8080600101915050611019565b50919050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561112157600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561114757600080fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156111a057600080fd5b600380548060010182816111b49190612845565b9160005260206000209001600083909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600060197f01000000000000000000000000000000000000000000000000000000000000000230878787878760405180887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083835b602083101515611391578051825260208201915060208101905060208303925061136c565b6001836020036101000a0380198251168184511680821785525050505050509050018360028111156113bf57fe5b60ff167f01000000000000000000000000000000000000000000000000000000000000000281526001018281526020019750505050505050506040518091039020905095945050505050565b6000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561146557600080fd5b6114748686868660015461125e565b9050600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000826000191660001916815260200190815260200160002060009054906101000a900460ff161515156114e857600080fd5b6001600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550505050505050565b60046020528060005260406000206000915054906101000a900460ff1681565b600060149054906101000a900460ff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156115ce57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156115f457600080fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561164d57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff1660028481548110151561167357fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156116c157600080fd5b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508060028481548110151561178157fe5b906000526020600020900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b60066020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561183857600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561185e57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6118a9612871565b600380548060200260200160405190810160405280929190818152602001828054801561192b57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116118e1575b5050505050905090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561196f57600080fd5b8060ff166001600280549050031015151561198957600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166002848154811015156119af57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156119fd57600080fd5b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506002600160028054905003815481101515611a6c57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600284815481101515611aa757fe5b906000526020600020900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506002805480919060019003611b059190612885565b508060ff16600060149054906101000a900460ff1660ff16141515611b2e57611b2d81611fe7565b5b505050565b600080600060149054906101000a900460ff1660ff16141515611b5557600080fd5b84518460ff1611151515611b6857600080fd5b60018460ff1610151515611b7b57600080fd5b600090505b8451811015611cb25760008582815181101515611b9957fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1614151515611bc657600080fd5b600460008683815181101515611bd857fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515611c3657600080fd5b6001600460008784815181101515611c4a57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080600101915050611b80565b8460029080519060200190611cc89291906128b1565b5083600060146101000a81548160ff021916908360ff16021790555060008373ffffffffffffffffffffffffffffffffffffffff16141515611d1a57611d0e8383612698565b1515611d1957600080fd5b5b5050505050565b611d2961293b565b6002805480602002602001604051908101604052809291908181526020018280548015611dab57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611d61575b5050505050905090565b6040805190810160405280600b81526020017f476e6f736973205361666500000000000000000000000000000000000000000081525081565b60015481565b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611e4c57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff1663cde09ca933878787876000604051602001526040518663ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001836002811115611f1f57fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b83811015611f5f578082015181840152602081019050611f44565b50505050905090810190601f168015611f8c5780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b1515611fae57600080fd5b6102c65a03f11515611fbf57600080fd5b505050604051805190501515611fd457600080fd5b611fe0858585856126b0565b5050505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561202157600080fd5b6002805490508160ff161115151561203857600080fd5b60018160ff161015151561204b57600080fd5b80600060146101000a81548160ff021916908360ff16021790555050565b61207161293b565b60008061207d84611011565b91508160405180591061208d5750595b9080825280602002602001820160405250925060009150600090505b6002805490508110156121f657600660006002838154811015156120c957fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000856000191660001916815260200190815260200160002060009054906101000a900460ff16156121e95760028181548110151561216a57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683838151811015156121a457fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505081806001019250505b80806001019150506120a9565b5050919050565b60038181548110151561220c57fe5b90600052602060002090016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008060006122538e8e8e8e60015461125e565b94506000935060009050600091505b600060149054906101000a900460ff1660ff16821015612518578086511180156122a25750858181518110151561229557fe5b9060200190602002015182145b156123a15786818151811015156122b557fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480612371575060066000888381518110151561230557fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000866000191660001916815260200190815260200160002060009054906101000a900460ff165b151561237c57600080fd5b868181518110151561238a57fe5b906020019060200201519250600181019050612476565b6001858b8385038151811015156123b457fe5b906020019060200201518b8486038151811015156123ce57fe5b906020019060200201518b8587038151811015156123e857fe5b90602001906020020151604051600081526020016040526000604051602001526040518085600019166000191681526020018460ff1660ff16815260200183600019166000191681526020018260001916600019168152602001945050505050602060405160208103908084039060008661646e5a03f1151561246a57600080fd5b50506020604051035192505b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156124ce57600080fd5b8373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1611151561250857600080fd5b8293508180600101925050612262565b60008751111561261357600091505b865182101561261257868281518110151561253e57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561260557600060066000898581518110151561259057fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000876000191660001916815260200190815260200160002060006101000a81548160ff0219169083151502179055505b8180600101925050612527565b5b6001806000828254019250508190555061262f8e8e8e8e6126b0565b5050505050505050505050505050565b60056020528060005260406000206000915054906101000a900460ff1681565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b600080600083516020850186600019f4905092915050565b60008060028111156126be57fe5b8260028111156126ca57fe5b14156126eb576126db8585856127c1565b15156126e657600080fd5b6127ba565b600160028111156126f857fe5b82600281111561270457fe5b1415612724576127148584612698565b151561271f57600080fd5b6127b9565b61272d836127db565b905060008173ffffffffffffffffffffffffffffffffffffffff161415151561275557600080fd5b7f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5050505050565b60008060008351602085018688600019f190509392505050565b60008151602083016000f09050919050565b81548183558181151161281457818360005260206000209182019101612813919061294f565b5b505050565b8154818355818115116128405781836000526020600020918201910161283f919061294f565b5b505050565b81548183558181151161286c5781836000526020600020918201910161286b919061294f565b5b505050565b602060405190810160405280600081525090565b8154818355818115116128ac578183600052602060002091820191016128ab919061294f565b5b505050565b82805482825590600052602060002090810192821561292a579160200282015b828111156129295782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550916020019190600101906128d1565b5b5090506129379190612974565b5090565b602060405190810160405280600081525090565b61297191905b8082111561296d576000816000905550600101612955565b5090565b90565b6129b491905b808211156129b057600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555060010161297a565b5090565b905600a165627a7a72305820b9309aeae0cb4d289bc66fdd1b641936b903e87d406ff75007e08dd9fd54ff590029", - "sourceMap": "218:14623:1:-;;;1567:153;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1677:36;1683:7;1692:10;1704:2;1708:4;1677:5;;;;;:36;;;:::i;:::-;1567:153;;;;218:14623;;2039:1141;2550:9;2289:1;2276:9;;;;;;;;;;;:14;;;2268:23;;;;;;;;2397:7;:14;2383:10;:28;;;;2375:37;;;;;;;;2496:1;2482:10;:15;;;;2474:24;;;;;;;;2562:1;2550:13;;2545:266;2569:7;:14;2565:1;:18;2545:266;;;2671:1;2657:7;2665:1;2657:10;;;;;;;;;;;;;;;;;;:15;;;;2649:24;;;;;;;;2740:7;:19;2748:7;2756:1;2748:10;;;;;;;;;;;;;;;;;;2740:19;;;;;;;;;;;;;;;;;;;;;;;;;2739:20;2731:29;;;;;;;;2796:4;2774:7;:19;2782:7;2790:1;2782:10;;;;;;;;;;;;;;;;;;2774:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;2585:3;;;;;;;2545:266;;;2829:7;2820:6;:16;;;;;;;;;;;;:::i;:::-;;2858:10;2846:9;;:22;;;;;;;;;;;;;;;;;;3048:1;3042:2;:7;;;;3038:135;;;3143:29;3163:2;3167:4;3143:19;;;;;:29;;;:::i;:::-;3135:38;;;;;;;;3038:135;2039:1141;;;;;:::o;12356:225::-;12443:12;12563:1;12560;12553:4;12547:5;12540:4;12534;12530:3;12526:2;12522:1;12518:3;12505:12;12494:71;;12480:95;;;;:::o;218:14623::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;", - "deployedSourceMap": "218:14623:1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;472:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7264:384;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3786:431;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13870:290;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6656:336;;;;;;;;;;;;;;;;;;;;;;;;;;;;13076:249;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7979:506;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;607:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;418:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5468:502;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;892:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3326:220;;;;;;;;;;;;;;;;;;;;;;;;;;;;13603:121;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;4548:599:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2039:1141;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13407:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;295:43:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;446:20:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11178:464;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6159:320;;;;;;;;;;;;;;;;;;;;;;;;;;;;14301:538;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;501:29:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9222:1531;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;729:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;344:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;472:23:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7264:384::-;1105:4;1083:27;;:10;:27;;;1075:36;;;;;;;;7490:9;7460:39;;:10;7471:14;7460:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;:39;;;7452:48;;;;;;;;7535:5;7510:11;:22;7522:9;7510:22;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;7579:10;7610:1;7590:10;:17;;;;:21;7579:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;7550:10;7561:14;7550:26;;;;;;;;;;;;;;;;;;;:62;;;;;;;;;;;;;;;;;;7622:10;:19;;;;;;;;;;;;:::i;:::-;;7264:384;;:::o;3786:431::-;1105:4;1083:27;;:10;:27;;;1075:36;;;;;;;;3943:1;3934:5;:10;;;;3926:19;;;;;;;;4004:7;:14;4012:5;4004:14;;;;;;;;;;;;;;;;;;;;;;;;;4003:15;3995:24;;;;;;;;4029:6;:18;;;;;;;;;;;:::i;:::-;;;;;;;;;;4041:5;4029:18;;;;;;;;;;;;;;;;;;;;;;;4074:4;4057:7;:14;4065:5;4057:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;4159:10;4146:23;;:9;;;;;;;;;;;:23;;;;4142:68;;;4183:27;4199:10;4183:15;:27::i;:::-;4142:68;3786:431;;:::o;13870:290::-;13970:22;14013:6;14022:1;14013:10;;14008:146;14029:6;:13;;;;14025:1;:17;14008:146;;;14067:11;:22;14079:6;14086:1;14079:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;14067:22;;;;;;;;;;;;;;;:39;14090:15;14067:39;;;;;;;;;;;;;;;;;;;;;;;;;;;14063:80;;;14124:19;;;;;;;14063:80;14044:3;;;;;;;14008:146;;;13870:290;;;;:::o;6656:336::-;1105:4;1083:27;;:10;:27;;;1075:36;;;;;;;;6822:1;6808:9;6800:23;;;;6792:32;;;;;;;;6887:11;:22;6899:9;6887:22;;;;;;;;;;;;;;;;;;;;;;;;;6886:23;6878:32;;;;;;;;6920:10;:26;;;;;;;;;;;:::i;:::-;;;;;;;;;;6936:9;6920:26;;;;;;;;;;;;;;;;;;;;;;;6981:4;6956:11;:22;6968:9;6956:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;6656:336;:::o;13076:249::-;13225:7;13270:4;13265:10;;13277:4;13283:2;13287:5;13294:4;13300:9;13311:6;13255:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13248:70:1;;13076:249;;;;;;;:::o;7979:506::-;8220:23;8190:7;:19;8198:10;8190:19;;;;;;;;;;;;;;;;;;;;;;;;;8182:28;;;;;;;;8246:53;8265:2;8269:5;8276:4;8282:9;8293:5;;8246:18;:53::i;:::-;8220:79;;8380:11;:23;8392:10;8380:23;;;;;;;;;;;;;;;:40;8404:15;8380:40;;;;;;;;;;;;;;;;;;;;;;;;;;;8379:41;8371:50;;;;;;;;8474:4;8431:11;:23;8443:10;8431:23;;;;;;;;;;;;;;;:40;8455:15;8431:40;;;;;;;;;;;;;;;;;;:47;;;;;;;;;;;;;;;;;;7979:506;;;;;;:::o;607:40::-;;;;;;;;;;;;;;;;;;;;;;:::o;418:22::-;;;;;;;;;;;;;:::o;5468:502::-;1105:4;1083:27;;:10;:27;;;1075:36;;;;;;;;5658:1;5646:8;:13;;;;5638:22;;;;;;;;5719:7;:17;5727:8;5719:17;;;;;;;;;;;;;;;;;;;;;;;;;5718:18;5710:27;;;;;;;;5842:8;5817:33;;:6;5824:13;5817:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;:33;;;5809:42;;;;;;;;5881:5;5861:7;:17;5869:8;5861:17;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;5917:4;5896:7;:17;5904:8;5896:17;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;5955:8;5931:6;5938:13;5931:21;;;;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;5468:502;;;:::o;892:65::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3326:220::-;1105:4;1083:27;;:10;:27;;;1075:36;;;;;;;;3503:1;3487:11;3479:25;;;;3471:34;;;;;;;;3528:11;3515:10;;:24;;;;;;;;;;;;;;;;;;3326:220;:::o;13603:121::-;13673:11;;:::i;:::-;13707:10;13700:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13603:121;:::o;4548:599::-;1105:4;1083:27;;:10;:27;;;1075:36;;;;;;;;4776:10;4755:31;;4771:1;4755:6;:13;;;;:17;:31;;4747:40;;;;;;;;4889:5;4867:27;;:6;4874:10;4867:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;:27;;;4859:36;;;;;;;;4922:5;4905:7;:14;4913:5;4905:14;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;4958:6;4981:1;4965:6;:13;;;;:17;4958:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;4937:6;4944:10;4937:18;;;;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;4993:6;:15;;;;;;;;;;;;:::i;:::-;;5089:10;5076:23;;:9;;;;;;;;;;;:23;;;;5072:68;;;5113:27;5129:10;5113:15;:27::i;:::-;5072:68;4548:599;;;:::o;2039:1141::-;2550:9;2289:1;2276:9;;;;;;;;;;;:14;;;2268:23;;;;;;;;2397:7;:14;2383:10;:28;;;;2375:37;;;;;;;;2496:1;2482:10;:15;;;;2474:24;;;;;;;;2562:1;2550:13;;2545:266;2569:7;:14;2565:1;:18;2545:266;;;2671:1;2657:7;2665:1;2657:10;;;;;;;;;;;;;;;;;;:15;;;;2649:24;;;;;;;;2740:7;:19;2748:7;2756:1;2748:10;;;;;;;;;;;;;;;;;;2740:19;;;;;;;;;;;;;;;;;;;;;;;;;2739:20;2731:29;;;;;;;;2796:4;2774:7;:19;2782:7;2790:1;2782:10;;;;;;;;;;;;;;;;;;2774:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;2585:3;;;;;;;2545:266;;;2829:7;2820:6;:16;;;;;;;;;;;;:::i;:::-;;2858:10;2846:9;;:22;;;;;;;;;;;;;;;;;;3048:1;3042:2;:7;;;;3038:135;;;3143:29;3163:2;3167:4;3143:19;:29::i;:::-;3135:38;;;;;;;;3038:135;2039:1141;;;;;:::o;13407:111::-;13473:9;;:::i;:::-;13505:6;13498:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13407:111;:::o;295:43::-;;;;;;;;;;;;;;;;;;;;:::o;446:20::-;;;;:::o;11178:464::-;11374:11;:22;11386:9;11374:22;;;;;;;;;;;;;;;;;;;;;;;;;11366:31;;;;;;;;11464:9;:22;;;11487:10;11499:2;11503:5;11510:4;11516:9;11464:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11456:71:1;;;;;;;;11600:35;11608:2;11612:5;11619:4;11625:9;11600:7;:35::i;:::-;11178:464;;;;;:::o;6159:320::-;1105:4;1083:27;;:10;:27;;;1075:36;;;;;;;;6340:6;:13;;;;6326:10;:27;;;;6318:36;;;;;;;;6438:1;6424:10;:15;;;;6416:24;;;;;;;;6462:10;6450:9;;:22;;;;;;;;;;;;;;;;;;6159:320;:::o;14301:538::-;14400:26;;:::i;:::-;14442:22;14611:6;14467:37;14488:15;14467:20;:37::i;:::-;14442:62;;14547:17;14533:32;;;;;;;;;;;;;;;;;;;;;;;;14514:51;;14595:1;14575:21;;14620:1;14611:10;;14606:227;14627:6;:13;;;;14623:1;:17;14606:227;;;14665:11;:22;14677:6;14684:1;14677:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;14665:22;;;;;;;;;;;;;;;:39;14688:15;14665:39;;;;;;;;;;;;;;;;;;;;;;;;;;;14661:162;;;14762:6;14769:1;14762:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;14724:16;14741:17;14724:35;;;;;;;;;;;;;;;;;:47;;;;;;;;;;;14789:19;;;;;;;14661:162;14642:3;;;;;;;14606:227;;;14301:538;;;;;:::o;501:29::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;9222:1531::-;9414:23;9555:17;9595:20;9625:9;9644;9440:53;9459:2;9463:5;9470:4;9476:9;9487:5;;9440:18;:53::i;:::-;9414:79;;9583:1;9555:30;;9656:1;9644:13;;9718:1;9714:5;;9709:651;9725:9;;;;;;;;;;;9721:13;;:1;:13;9709:651;;;9860:1;9843:7;:14;:18;:37;;;;;9870:7;9878:1;9870:10;;;;;;;;;;;;;;;;;;9865:1;:15;9843:37;9839:381;;;9922:7;9930:1;9922:10;;;;;;;;;;;;;;;;;;9908:24;;:10;:24;;;:68;;;;9936:11;:23;9948:7;9956:1;9948:10;;;;;;;;;;;;;;;;;;9936:23;;;;;;;;;;;;;;;:40;9960:15;9936:40;;;;;;;;;;;;;;;;;;;;;;;;;;;9908:68;9900:77;;;;;;;;10010:7;10018:1;10010:10;;;;;;;;;;;;;;;;;;9995:25;;10043:1;10038:6;;;;9839:381;;;10170:50;10180:15;10197:1;10201;10199;:3;10197:6;;;;;;;;;;;;;;;;;;10205:1;10209;10207;:3;10205:6;;;;;;;;;;;;;;;;;;10213:1;10217;10215;:3;10213:6;;;;;;;;;;;;;;;;;;10170:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10155:65;;9839:381;10242:7;:21;10250:12;10242:21;;;;;;;;;;;;;;;;;;;;;;;;;10234:30;;;;;;;;10301:9;10286:24;;:12;:24;;;10278:33;;;;;;;;10337:12;10325:24;;9736:3;;;;;;;9709:651;;;10436:1;10419:7;:14;:18;10415:216;;;10462:1;10458:5;;10453:168;10469:7;:14;10465:1;:18;10453:168;;;10526:7;10534:1;10526:10;;;;;;;;;;;;;;;;;;10512:24;;:10;:24;;;;10508:98;;;10601:5;10558:11;:23;10570:7;10578:1;10570:10;;;;;;;;;;;;;;;;;;10558:23;;;;;;;;;;;;;;;:40;10582:15;10558:40;;;;;;;;;;;;;;;;;;:48;;;;;;;;;;;;;;;;;;10508:98;10485:3;;;;;;;10453:168;;;10415:216;10700:1;10691:5;;:10;;;;;;;;;;;10711:35;10719:2;10723:5;10730:4;10736:9;10711:7;:35::i;:::-;9222:1531;;;;;;;;;;;;;;:::o;729:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;344:40::-;;;;;;;;;;;;;;;;;;;;:::o;12356:225::-;12443:12;12563:1;12560;12553:4;12547:5;12540:4;12534;12530:3;12526:2;12522:1;12518:3;12505:12;12494:71;;12480:95;;;;:::o;11648:465::-;11973:19;11773:14;11760:27;;;;;;;;:9;:27;;;;;;;;;11756:351;;;11809:28;11821:2;11825:5;11832:4;11809:11;:28::i;:::-;11801:37;;;;;;;;11756:351;;;11870:22;11857:35;;;;;;;;:9;:35;;;;;;;;;11853:254;;;11914:29;11934:2;11938:4;11914:19;:29::i;:::-;11906:38;;;;;;;;11853:254;;;11995:19;12009:4;11995:13;:19::i;:::-;11973:41;;12051:1;12036:11;:16;;;;12028:25;;;;;;;;12067:29;12084:11;12067:29;;;;;;;;;;;;;;;;;;;;;;11853:254;11756:351;11648:465;;;;;:::o;12119:231::-;12213:12;12332:1;12329;12322:4;12316:5;12309:4;12303;12299:3;12292:5;12288:2;12284:1;12280:3;12275:4;12264:70;;12250:94;;;;;:::o;12587:197::-;12656:19;12762:4;12756:5;12749:4;12743;12739:3;12736:1;12729:6;12714:54;;12700:78;;;:::o;218:14623::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", - "source": "pragma solidity 0.4.19;\nimport \"./Extension.sol\";\n\n\n/// @title Gnosis Safe - A multisignature wallet with support for confirmations using signed messages based on ERC191.\n/// @author Stefan George - \ncontract GnosisSafe {\n\n event ContractCreation(address newContract);\n\n string public constant NAME = \"Gnosis Safe\";\n string public constant VERSION = \"0.0.1\";\n\n GnosisSafe masterCopy;\n uint8 public threshold;\n uint256 public nonce;\n address[] public owners;\n Extension[] public extensions;\n\n // isOwner mapping allows to check if an address is a Safe owner.\n mapping (address => bool) public isOwner;\n // isExtension mapping allows to check if an extension was whitelisted.\n mapping (address => bool) public isExtension;\n // isConfirmed mapping allows to check if a transaction was confirmed by an owner via a confirm transaction.\n mapping (address => mapping (bytes32 => bool)) public isConfirmed;\n\n enum Operation {\n Call,\n DelegateCall,\n Create\n }\n\n modifier onlyWallet() {\n require(msg.sender == address(this));\n _;\n }\n\n /// @dev Fallback function accepts Ether transactions.\n function ()\n external\n payable\n {\n\n }\n\n /// @dev Constructor function triggers setup function.\n /// @param _owners List of Safe owners.\n /// @param _threshold Number of required confirmations for a Safe transaction.\n /// @param to Contract address for optional delegate call.\n /// @param data Data payload for optional delegate call.\n function GnosisSafe(address[] _owners, uint8 _threshold, address to, bytes data)\n public\n {\n setup(_owners, _threshold, to, data);\n }\n\n /// @dev Setup function sets initial storage of contract.\n /// @param _owners List of Safe owners.\n /// @param _threshold Number of required confirmations for a Safe transaction.\n /// @param to Contract address for optional delegate call.\n /// @param data Data payload for optional delegate call.\n function setup(address[] _owners, uint8 _threshold, address to, bytes data)\n public\n {\n // Threshold can only be 0 at initialization.\n // Check ensures that setup function can only be called once.\n require(threshold == 0);\n // Validate that threshold is smaller than numbr of added owners.\n require(_threshold <= _owners.length);\n // There has to be at least one Safe owner.\n require(_threshold >= 1);\n // Initializing Safe owners.\n for (uint256 i = 0; i < _owners.length; i++) {\n // Owner address cannot be null.\n require(_owners[i] != 0);\n // No duplicate owners allowed.\n require(!isOwner[_owners[i]]);\n isOwner[_owners[i]] = true;\n }\n owners = _owners;\n threshold = _threshold;\n // If a to address is set, an additional delegate call is executed.\n // This call allows further contract setup steps, like adding an extension.\n if (to != 0)\n // Setup has to complete successfully or transaction fails.\n require(executeDelegateCall(to, data));\n }\n\n /// @dev Allows to upgrade the contract. This can only be done via a Safe transaction.\n /// @param _masterCopy New contract address.\n function changeMasterCopy(GnosisSafe _masterCopy)\n public\n onlyWallet\n {\n // Master copy address cannot be null.\n require(address(_masterCopy) != 0);\n masterCopy = _masterCopy;\n }\n\n /// @dev Allows to add a new owner to the Safe and update the threshold at the same time.\n /// This can only be done via a Safe transaction.\n /// @param owner New owner address.\n /// @param _threshold New threshold.\n function addOwner(address owner, uint8 _threshold)\n public\n onlyWallet\n {\n // Owner address cannot be null.\n require(owner != 0);\n // No duplicate owners allowed.\n require(!isOwner[owner]);\n owners.push(owner);\n isOwner[owner] = true;\n // Change threshold if threshold was changed.\n if (threshold != _threshold)\n changeThreshold(_threshold);\n }\n\n /// @dev Allows to remove an owner from the Safe and update the threshold at the same time.\n /// This can only be done via a Safe transaction.\n /// @param ownerIndex Array index position of owner address to be removed.\n /// @param owner Owner address to be removed.\n /// @param _threshold New threshold.\n function removeOwner(uint256 ownerIndex, address owner, uint8 _threshold)\n public\n onlyWallet\n {\n // Only allow to remove an owner, if threshold can still be reached.\n require(owners.length - 1 >= _threshold);\n // Validate owner address corresponds to owner index.\n require(owners[ownerIndex] == owner);\n isOwner[owner] = false;\n owners[ownerIndex] = owners[owners.length - 1];\n owners.length--;\n // Change threshold if threshold was changed.\n if (threshold != _threshold)\n changeThreshold(_threshold);\n }\n\n /// @dev Allows to replace an owner from the Safe with another address.\n /// This can only be done via a Safe transaction.\n /// @param oldOwnerIndex Array index position of owner address to be replaced.\n /// @param oldOwner Owner address to be replaced.\n /// @param newOwner New owner address.\n function replaceOwner(uint256 oldOwnerIndex, address oldOwner, address newOwner)\n public\n onlyWallet\n {\n // Owner address cannot be null.\n require(newOwner != 0);\n // No duplicate owners allowed.\n require(!isOwner[newOwner]);\n // Validate owner address corresponds to owner index.\n require(owners[oldOwnerIndex] == oldOwner);\n isOwner[oldOwner] = false;\n isOwner[newOwner] = true;\n owners[oldOwnerIndex] = newOwner;\n }\n\n /// @dev Allows to update the number of required confirmations by Safe owners.\n /// This can only be done via a Safe transaction.\n /// @param _threshold New threshold.\n function changeThreshold(uint8 _threshold)\n public\n onlyWallet\n {\n // Validate that threshold is smaller than numbr of owners.\n require(_threshold <= owners.length);\n // There has to be at least one Safe owner.\n require(_threshold >= 1);\n threshold = _threshold;\n }\n\n /// @dev Allows to add an extension to the whitelist.\n /// This can only be done via a Safe transaction.\n /// @param extension Extension to be whitelisted.\n function addExtension(Extension extension)\n public\n onlyWallet\n {\n // Extension address cannot be null.\n require(address(extension) != 0);\n // Extension cannot be added twice.\n require(!isExtension[extension]);\n extensions.push(extension);\n isExtension[extension] = true;\n }\n\n /// @dev Allows to remove an extension from the whitelist.\n /// This can only be done via a Safe transaction.\n /// @param extensionIndex Array index position of extension to be removed from whitelist.\n /// @param extension Extension to be removed.\n function removeExtension(uint256 extensionIndex, Extension extension)\n public\n onlyWallet\n {\n // Validate extension address corresponds to extension index.\n require(extensions[extensionIndex] == extension);\n isExtension[extension] = false;\n extensions[extensionIndex] = extensions[extensions.length - 1];\n extensions.length--;\n }\n\n /// @dev Allows to confirm a Safe transaction with a regular transaction.\n /// This can only be done from an owner address.\n /// @param to Destination address.\n /// @param value Ether value.\n /// @param data Data payload.\n /// @param operation Operation type.\n /// @param _nonce Transaction nonce.\n function confirmTransaction(address to, uint256 value, bytes data, Operation operation, uint256 _nonce)\n public\n {\n // Only Safe owners are allowed to confirm Safe transactions.\n require(isOwner[msg.sender]);\n bytes32 transactionHash = getTransactionHash(to, value, data, operation, nonce);\n // It is only possible to confirm a transaction once.\n require(!isConfirmed[msg.sender][transactionHash]);\n isConfirmed[msg.sender][transactionHash] = true;\n }\n\n /// @dev Allows to execute a Safe transaction confirmed by required number of owners.\n /// @param to Destination address of Safe transaction.\n /// @param value Ether value of Safe transaction.\n /// @param data Data payload of Safe transaction.\n /// @param operation Operation type of Safe transaction.\n /// @param v Array of signature V values sorted by owner addresses.\n /// @param r Array of signature R values sorted by owner addresses.\n /// @param s Array of signature S values sorted by owner addresses.\n /// @param _owners List of Safe owners confirming via regular transactions sorted by owner addresses.\n /// @param indices List of indeces of Safe owners confirming via regular transactions.\n function executeTransaction(address to, uint256 value, bytes data, Operation operation, uint8[] v, bytes32[] r, bytes32[] s, address[] _owners, uint256[] indices)\n public\n {\n bytes32 transactionHash = getTransactionHash(to, value, data, operation, nonce);\n // There cannot be an owner with address 0.\n address lastOwner = address(0);\n address currentOwner;\n uint256 i;\n uint256 j = 0;\n // Validate threshold is reached.\n for (i = 0; i < threshold; i++) {\n // Check confirmations done with regular transactions or by msg.sender.\n if (indices.length > j && i == indices[j]) {\n require(msg.sender == _owners[j] || isConfirmed[_owners[j]][transactionHash]);\n currentOwner = _owners[j];\n j += 1;\n }\n // Check confirmations done with signed messages.\n else\n currentOwner = ecrecover(transactionHash, v[i-j], r[i-j], s[i-j]);\n require(isOwner[currentOwner]);\n require(currentOwner > lastOwner);\n lastOwner = currentOwner;\n }\n // Delete storage to receive refunds.\n if (_owners.length > 0) {\n for (i = 0; i < _owners.length; i++) {\n if (msg.sender != _owners[i])\n isConfirmed[_owners[i]][transactionHash] = false;\n }\n }\n // Increase nonce and execute transaction.\n nonce += 1;\n execute(to, value, data, operation);\n }\n\n /// @dev Allows to execute a Safe transaction via an extension without any further confirmations.\n /// @param to Destination address of extension transaction.\n /// @param value Ether value of extension transaction.\n /// @param data Data payload of extension transaction.\n /// @param operation Operation type of extension transaction.\n /// @param extension Extension address of extension transaction.\n function executeExtension(address to, uint256 value, bytes data, Operation operation, Extension extension)\n public\n {\n // Only whitelisted extensions are allowed.\n require(isExtension[extension]);\n // Extension has to confirm transaction.\n require(extension.isExecutable(msg.sender, to, value, data, operation));\n // Exectute transaction without further confirmations.\n execute(to, value, data, operation);\n }\n\n function execute(address to, uint256 value, bytes data, Operation operation)\n internal\n {\n if (operation == Operation.Call)\n require(executeCall(to, value, data));\n else if (operation == Operation.DelegateCall)\n require(executeDelegateCall(to, data));\n else {\n address newContract = executeCreate(data);\n require(newContract != 0);\n ContractCreation(newContract);\n }\n }\n\n function executeCall(address to, uint256 value, bytes data)\n internal\n returns (bool success)\n {\n assembly {\n success := call(not(0), to, value, add(data, 0x20), mload(data), 0, 0)\n }\n }\n\n function executeDelegateCall(address to, bytes data)\n internal\n returns (bool success)\n {\n assembly {\n success := delegatecall(not(0), to, add(data, 0x20), mload(data), 0, 0)\n }\n }\n\n function executeCreate(bytes data)\n internal\n returns (address newContract)\n {\n assembly {\n newContract := create(0, add(data, 0x20), mload(data))\n }\n }\n\n /// @dev Returns transactions hash to be signed by owners.\n /// @param to Destination address.\n /// @param value Ether value.\n /// @param data Data payload.\n /// @param operation Operation type.\n /// @param _nonce Transaction nonce.\n /// @return Transaction hash.\n function getTransactionHash(address to, uint256 value, bytes data, Operation operation, uint256 _nonce)\n public\n view\n returns (bytes32)\n {\n return keccak256(byte(0x19), this, to, value, data, operation, _nonce);\n }\n\n /// @dev Returns array of owners.\n /// @return Array of Safe owners.\n function getOwners()\n public\n view\n returns (address[])\n {\n return owners;\n }\n\n /// @dev Returns array of extensions.\n /// @return Array of extensions.\n function getExtensions()\n public\n view\n returns (Extension[])\n {\n return extensions;\n }\n\n /// @dev Returns a the count of owners that have confirmed the given transaction.\n /// @param transactionHash Safe transaction hash.\n function getConfirmationCount(bytes32 transactionHash)\n public\n view\n returns (uint confirmationCount)\n {\n for (uint i = 0; i < owners.length; i++) {\n if (isConfirmed[owners[i]][transactionHash])\n confirmationCount++;\n }\n }\n\n /// @dev Returns a list of owners that have confirmed the given transaction.\n /// @param transactionHash Safe transaction hash.\n function getConfirmingOwners(bytes32 transactionHash)\n public\n view\n returns (address[] confirmingOwners)\n {\n uint confirmationCount = getConfirmationCount(transactionHash);\n confirmingOwners = new address[](confirmationCount);\n confirmationCount = 0;\n for (uint i = 0; i < owners.length; i++) {\n if (isConfirmed[owners[i]][transactionHash]) {\n confirmingOwners[confirmationCount] = owners[i];\n confirmationCount++;\n }\n }\n }\n}\n", - "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", - "ast": { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", - "exportedSymbols": { - "GnosisSafe": [ - 963 - ] - }, - "id": 964, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 20, - "literals": [ - "solidity", - "0.4", - ".19" - ], - "nodeType": "PragmaDirective", - "src": "0:23:1" - }, - { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Extension.sol", - "file": "./Extension.sol", - "id": 21, - "nodeType": "ImportDirective", - "scope": 964, - "sourceUnit": 19, - "src": "24:25:1", - "symbolAliases": [], - "unitAlias": "" - }, - { - "baseContracts": [], - "contractDependencies": [], - "contractKind": "contract", - "documentation": "@title Gnosis Safe - A multisignature wallet with support for confirmations using signed messages based on ERC191.\n @author Stefan George - ", - "fullyImplemented": true, - "id": 963, - "linearizedBaseContracts": [ - 963 - ], - "name": "GnosisSafe", - "nodeType": "ContractDefinition", - "nodes": [ - { - "anonymous": false, - "id": 25, - "name": "ContractCreation", - "nodeType": "EventDefinition", - "parameters": { - "id": 24, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 23, - "indexed": false, - "name": "newContract", - "nodeType": "VariableDeclaration", - "scope": 25, - "src": "268:19:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 22, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "268:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "267:21:1" - }, - "src": "245:44:1" - }, - { - "constant": true, - "id": 28, - "name": "NAME", - "nodeType": "VariableDeclaration", - "scope": 963, - "src": "295:43:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_string_memory", - "typeString": "string memory" - }, - "typeName": { - "id": 26, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "295:6:1", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string storage pointer" - } - }, - "value": { - "argumentTypes": null, - "hexValue": "476e6f7369732053616665", - "id": 27, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "325:13:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_72ec6775392f699e8ffd72b7c600556d49bdc746bf22bce93d3ae6019cdaff63", - "typeString": "literal_string \"Gnosis Safe\"" - }, - "value": "Gnosis Safe" - }, - "visibility": "public" - }, - { - "constant": true, - "id": 31, - "name": "VERSION", - "nodeType": "VariableDeclaration", - "scope": 963, - "src": "344:40:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_string_memory", - "typeString": "string memory" - }, - "typeName": { - "id": 29, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "344:6:1", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string storage pointer" - } - }, - "value": { - "argumentTypes": null, - "hexValue": "302e302e31", - "id": 30, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "377:7:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", - "typeString": "literal_string \"0.0.1\"" - }, - "value": "0.0.1" - }, - "visibility": "public" - }, - { - "constant": false, - "id": 33, - "name": "masterCopy", - "nodeType": "VariableDeclaration", - "scope": 963, - "src": "391:21:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - }, - "typeName": { - "contractScope": null, - "id": 32, - "name": "GnosisSafe", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 963, - "src": "391:10:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 35, - "name": "threshold", - "nodeType": "VariableDeclaration", - "scope": 963, - "src": "418:22:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 34, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "418:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "id": 37, - "name": "nonce", - "nodeType": "VariableDeclaration", - "scope": 963, - "src": "446:20:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 36, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "446:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "id": 40, - "name": "owners", - "nodeType": "VariableDeclaration", - "scope": 963, - "src": "472:23:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - }, - "typeName": { - "baseType": { - "id": 38, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "472:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 39, - "length": null, - "nodeType": "ArrayTypeName", - "src": "472:9:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[] storage pointer" - } - }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "id": 43, - "name": "extensions", - "nodeType": "VariableDeclaration", - "scope": 963, - "src": "501:29:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage", - "typeString": "contract Extension[] storage ref" - }, - "typeName": { - "baseType": { - "contractScope": null, - "id": 41, - "name": "Extension", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 18, - "src": "501:9:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "id": 42, - "length": null, - "nodeType": "ArrayTypeName", - "src": "501:11:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage_ptr", - "typeString": "contract Extension[] storage pointer" - } - }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "id": 47, - "name": "isOwner", - "nodeType": "VariableDeclaration", - "scope": 963, - "src": "607:40:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - }, - "typeName": { - "id": 46, - "keyType": { - "id": 44, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "616:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Mapping", - "src": "607:25:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - }, - "valueType": { - "id": 45, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "627:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "id": 51, - "name": "isExtension", - "nodeType": "VariableDeclaration", - "scope": 963, - "src": "729:44:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - }, - "typeName": { - "id": 50, - "keyType": { - "id": 48, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "738:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Mapping", - "src": "729:25:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - }, - "valueType": { - "id": 49, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "749:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "id": 57, - "name": "isConfirmed", - "nodeType": "VariableDeclaration", - "scope": 963, - "src": "892:65:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$", - "typeString": "mapping(address => mapping(bytes32 => bool))" - }, - "typeName": { - "id": 56, - "keyType": { - "id": 52, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "901:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Mapping", - "src": "892:46:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$", - "typeString": "mapping(address => mapping(bytes32 => bool))" - }, - "valueType": { - "id": 55, - "keyType": { - "id": 53, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "921:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Mapping", - "src": "912:25:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - }, - "valueType": { - "id": 54, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "932:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - } - }, - "value": null, - "visibility": "public" - }, - { - "canonicalName": "GnosisSafe.Operation", - "id": 61, - "members": [ - { - "id": 58, - "name": "Call", - "nodeType": "EnumValue", - "src": "989:4:1" - }, - { - "id": 59, - "name": "DelegateCall", - "nodeType": "EnumValue", - "src": "1003:12:1" - }, - { - "id": 60, - "name": "Create", - "nodeType": "EnumValue", - "src": "1025:6:1" - } - ], - "name": "Operation", - "nodeType": "EnumDefinition", - "src": "964:73:1" - }, - { - "body": { - "id": 73, - "nodeType": "Block", - "src": "1065:64:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 69, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 64, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2089, - "src": "1083:3:1", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 65, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "1083:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 67, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2100, - "src": "1105:4:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - ], - "id": 66, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "1097:7:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 68, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1097:13:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "1083:27:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 63, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "1075:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 70, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1075:36:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 71, - "nodeType": "ExpressionStatement", - "src": "1075:36:1" - }, - { - "id": 72, - "nodeType": "PlaceholderStatement", - "src": "1121:1:1" - } - ] - }, - "id": 74, - "name": "onlyWallet", - "nodeType": "ModifierDefinition", - "parameters": { - "id": 62, - "nodeType": "ParameterList", - "parameters": [], - "src": "1062:2:1" - }, - "src": "1043:86:1", - "visibility": "internal" - }, - { - "body": { - "id": 77, - "nodeType": "Block", - "src": "1243:8:1", - "statements": [] - }, - "id": 78, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 75, - "nodeType": "ParameterList", - "parameters": [], - "src": "1203:2:1" - }, - "payable": true, - "returnParameters": { - "id": 76, - "nodeType": "ParameterList", - "parameters": [], - "src": "1243:0:1" - }, - "scope": 963, - "src": "1194:57:1", - "stateMutability": "payable", - "superFunction": null, - "visibility": "external" - }, - { - "body": { - "id": 97, - "nodeType": "Block", - "src": "1667:53:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 91, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 81, - "src": "1683:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - { - "argumentTypes": null, - "id": 92, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 83, - "src": "1692:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - { - "argumentTypes": null, - "id": 93, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 85, - "src": "1704:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 94, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87, - "src": "1708:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - }, - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 90, - "name": "setup", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 187, - "src": "1677:5:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_uint8_$_t_address_$_t_bytes_memory_ptr_$returns$__$", - "typeString": "function (address[] memory,uint8,address,bytes memory)" - } - }, - "id": 95, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1677:36:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 96, - "nodeType": "ExpressionStatement", - "src": "1677:36:1" - } - ] - }, - "id": 98, - "implemented": true, - "isConstructor": true, - "isDeclaredConst": false, - "modifiers": [], - "name": "GnosisSafe", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 88, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 81, - "name": "_owners", - "nodeType": "VariableDeclaration", - "scope": 98, - "src": "1587:17:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - }, - "typeName": { - "baseType": { - "id": 79, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1587:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 80, - "length": null, - "nodeType": "ArrayTypeName", - "src": "1587:9:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 83, - "name": "_threshold", - "nodeType": "VariableDeclaration", - "scope": 98, - "src": "1606:16:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 82, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "1606:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 85, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 98, - "src": "1624:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 84, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1624:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 87, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 98, - "src": "1636:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 86, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "1636:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1586:61:1" - }, - "payable": false, - "returnParameters": { - "id": 89, - "nodeType": "ParameterList", - "parameters": [], - "src": "1667:0:1" - }, - "scope": 963, - "src": "1567:153:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 186, - "nodeType": "Block", - "src": "2134:1046:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 113, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 111, - "name": "threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 35, - "src": "2276:9:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 112, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2289:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2276:14:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 110, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "2268:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 114, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2268:23:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 115, - "nodeType": "ExpressionStatement", - "src": "2268:23:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 120, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 117, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 103, - "src": "2383:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": "<=", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 118, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 101, - "src": "2397:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 119, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2397:14:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2383:28:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 116, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "2375:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 121, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2375:37:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 122, - "nodeType": "ExpressionStatement", - "src": "2375:37:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 126, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 124, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 103, - "src": "2482:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 125, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2496:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "2482:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 123, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "2474:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 127, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2474:24:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 128, - "nodeType": "ExpressionStatement", - "src": "2474:24:1" - }, - { - "body": { - "id": 165, - "nodeType": "Block", - "src": "2590:221:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 145, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 141, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 101, - "src": "2657:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 143, - "indexExpression": { - "argumentTypes": null, - "id": 142, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 130, - "src": "2665:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2657:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 144, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2671:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2657:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 140, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "2649:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 146, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2649:24:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 147, - "nodeType": "ExpressionStatement", - "src": "2649:24:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 154, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "2739:20:1", - "subExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 149, - "name": "isOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 47, - "src": "2740:7:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 153, - "indexExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 150, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 101, - "src": "2748:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 152, - "indexExpression": { - "argumentTypes": null, - "id": 151, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 130, - "src": "2756:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2748:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2740:19:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 148, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "2731:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 155, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2731:29:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 156, - "nodeType": "ExpressionStatement", - "src": "2731:29:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 163, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 157, - "name": "isOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 47, - "src": "2774:7:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 161, - "indexExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 158, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 101, - "src": "2782:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 160, - "indexExpression": { - "argumentTypes": null, - "id": 159, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 130, - "src": "2790:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2782:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "2774:19:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 162, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2796:4:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "2774:26:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 164, - "nodeType": "ExpressionStatement", - "src": "2774:26:1" - } - ] - }, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 136, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 133, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 130, - "src": "2565:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 134, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 101, - "src": "2569:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 135, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2569:14:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2565:18:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 166, - "initializationExpression": { - "assignments": [ - 130 - ], - "declarations": [ - { - "constant": false, - "id": 130, - "name": "i", - "nodeType": "VariableDeclaration", - "scope": 187, - "src": "2550:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 129, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2550:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 132, - "initialValue": { - "argumentTypes": null, - "hexValue": "30", - "id": 131, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2562:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "2550:13:1" - }, - "loopExpression": { - "expression": { - "argumentTypes": null, - "id": 138, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "2585:3:1", - "subExpression": { - "argumentTypes": null, - "id": 137, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 130, - "src": "2585:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 139, - "nodeType": "ExpressionStatement", - "src": "2585:3:1" - }, - "nodeType": "ForStatement", - "src": "2545:266:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 169, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 167, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "2820:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 168, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 101, - "src": "2829:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "src": "2820:16:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 170, - "nodeType": "ExpressionStatement", - "src": "2820:16:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 173, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 171, - "name": "threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 35, - "src": "2846:9:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 172, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 103, - "src": "2858:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "2846:22:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "id": 174, - "nodeType": "ExpressionStatement", - "src": "2846:22:1" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 177, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 175, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 105, - "src": "3042:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 176, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3048:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "3042:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 185, - "nodeType": "IfStatement", - "src": "3038:135:1", - "trueBody": { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 180, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 105, - "src": "3163:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 181, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 107, - "src": "3167:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 179, - "name": "executeDelegateCall", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 815, - "src": "3143:19:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bool_$", - "typeString": "function (address,bytes memory) returns (bool)" - } - }, - "id": 182, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3143:29:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 178, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "3135:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 183, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3135:38:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 184, - "nodeType": "ExpressionStatement", - "src": "3135:38:1" - } - } - ] - }, - "id": 187, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "setup", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 108, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 101, - "name": "_owners", - "nodeType": "VariableDeclaration", - "scope": 187, - "src": "2054:17:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - }, - "typeName": { - "baseType": { - "id": 99, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2054:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 100, - "length": null, - "nodeType": "ArrayTypeName", - "src": "2054:9:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 103, - "name": "_threshold", - "nodeType": "VariableDeclaration", - "scope": 187, - "src": "2073:16:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 102, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "2073:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 105, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 187, - "src": "2091:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 104, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2091:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 107, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 187, - "src": "2103:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 106, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "2103:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "2053:61:1" - }, - "payable": false, - "returnParameters": { - "id": 109, - "nodeType": "ParameterList", - "parameters": [], - "src": "2134:0:1" - }, - "scope": 963, - "src": "2039:1141:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 206, - "nodeType": "Block", - "src": "3414:132:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 199, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 196, - "name": "_masterCopy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 189, - "src": "3487:11:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - ], - "id": 195, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "3479:7:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 197, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3479:20:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 198, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3503:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "3479:25:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 194, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "3471:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 200, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3471:34:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 201, - "nodeType": "ExpressionStatement", - "src": "3471:34:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 204, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 202, - "name": "masterCopy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33, - "src": "3515:10:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 203, - "name": "_masterCopy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 189, - "src": "3528:11:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - "src": "3515:24:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - "id": 205, - "nodeType": "ExpressionStatement", - "src": "3515:24:1" - } - ] - }, - "id": 207, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [], - "id": 192, - "modifierName": { - "argumentTypes": null, - "id": 191, - "name": "onlyWallet", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 74, - "src": "3399:10:1", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "3399:10:1" - } - ], - "name": "changeMasterCopy", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 190, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 189, - "name": "_masterCopy", - "nodeType": "VariableDeclaration", - "scope": 207, - "src": "3352:22:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - }, - "typeName": { - "contractScope": null, - "id": 188, - "name": "GnosisSafe", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 963, - "src": "3352:10:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "3351:24:1" - }, - "payable": false, - "returnParameters": { - "id": 193, - "nodeType": "ParameterList", - "parameters": [], - "src": "3414:0:1" - }, - "scope": 963, - "src": "3326:220:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 249, - "nodeType": "Block", - "src": "3875:342:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 219, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 217, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 209, - "src": "3934:5:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 218, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3943:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "3934:10:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 216, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "3926:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 220, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3926:19:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 221, - "nodeType": "ExpressionStatement", - "src": "3926:19:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 226, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "4003:15:1", - "subExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 223, - "name": "isOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 47, - "src": "4004:7:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 225, - "indexExpression": { - "argumentTypes": null, - "id": 224, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 209, - "src": "4012:5:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4004:14:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 222, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "3995:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 227, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3995:24:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 228, - "nodeType": "ExpressionStatement", - "src": "3995:24:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 232, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 209, - "src": "4041:5:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "expression": { - "argumentTypes": null, - "id": 229, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "4029:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 231, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "push", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "4029:11:1", - "typeDescriptions": { - "typeIdentifier": "t_function_arraypush_nonpayable$_t_address_$returns$_t_uint256_$", - "typeString": "function (address) returns (uint256)" - } - }, - "id": 233, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4029:18:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 234, - "nodeType": "ExpressionStatement", - "src": "4029:18:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 239, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 235, - "name": "isOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 47, - "src": "4057:7:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 237, - "indexExpression": { - "argumentTypes": null, - "id": 236, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 209, - "src": "4065:5:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "4057:14:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 238, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4074:4:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "4057:21:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 240, - "nodeType": "ExpressionStatement", - "src": "4057:21:1" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 243, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 241, - "name": "threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 35, - "src": "4146:9:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "id": 242, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 211, - "src": "4159:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "4146:23:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 248, - "nodeType": "IfStatement", - "src": "4142:68:1", - "trueBody": { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 245, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 211, - "src": "4199:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - ], - "id": 244, - "name": "changeThreshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 385, - "src": "4183:15:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$returns$__$", - "typeString": "function (uint8)" - } - }, - "id": 246, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4183:27:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 247, - "nodeType": "ExpressionStatement", - "src": "4183:27:1" - } - } - ] - }, - "id": 250, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [], - "id": 214, - "modifierName": { - "argumentTypes": null, - "id": 213, - "name": "onlyWallet", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 74, - "src": "3860:10:1", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "3860:10:1" - } - ], - "name": "addOwner", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 212, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 209, - "name": "owner", - "nodeType": "VariableDeclaration", - "scope": 250, - "src": "3804:13:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 208, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3804:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 211, - "name": "_threshold", - "nodeType": "VariableDeclaration", - "scope": 250, - "src": "3819:16:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 210, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "3819:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "3803:33:1" - }, - "payable": false, - "returnParameters": { - "id": 215, - "nodeType": "ParameterList", - "parameters": [], - "src": "3875:0:1" - }, - "scope": 963, - "src": "3786:431:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 308, - "nodeType": "Block", - "src": "4660:487:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 267, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 265, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 262, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "4755:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 263, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "4755:13:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 264, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4771:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "4755:17:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "argumentTypes": null, - "id": 266, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 256, - "src": "4776:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "4755:31:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 261, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "4747:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 268, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4747:40:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 269, - "nodeType": "ExpressionStatement", - "src": "4747:40:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 275, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 271, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "4867:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 273, - "indexExpression": { - "argumentTypes": null, - "id": 272, - "name": "ownerIndex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 252, - "src": "4874:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4867:18:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 274, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 254, - "src": "4889:5:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "4867:27:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 270, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "4859:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 276, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4859:36:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 277, - "nodeType": "ExpressionStatement", - "src": "4859:36:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 282, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 278, - "name": "isOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 47, - "src": "4905:7:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 280, - "indexExpression": { - "argumentTypes": null, - "id": 279, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 254, - "src": "4913:5:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "4905:14:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "66616c7365", - "id": 281, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4922:5:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "src": "4905:22:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 283, - "nodeType": "ExpressionStatement", - "src": "4905:22:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 293, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 284, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "4937:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 286, - "indexExpression": { - "argumentTypes": null, - "id": 285, - "name": "ownerIndex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 252, - "src": "4944:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "4937:18:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 287, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "4958:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 292, - "indexExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 291, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 288, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "4965:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 289, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "4965:13:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 290, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4981:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "4965:17:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4958:25:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "4937:46:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 294, - "nodeType": "ExpressionStatement", - "src": "4937:46:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 298, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "--", - "prefix": false, - "src": "4993:15:1", - "subExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 295, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "4993:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 297, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "4993:13:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 299, - "nodeType": "ExpressionStatement", - "src": "4993:15:1" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 302, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 300, - "name": "threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 35, - "src": "5076:9:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "id": 301, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 256, - "src": "5089:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "5076:23:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 307, - "nodeType": "IfStatement", - "src": "5072:68:1", - "trueBody": { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 304, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 256, - "src": "5129:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - ], - "id": 303, - "name": "changeThreshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 385, - "src": "5113:15:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$returns$__$", - "typeString": "function (uint8)" - } - }, - "id": 305, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5113:27:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 306, - "nodeType": "ExpressionStatement", - "src": "5113:27:1" - } - } - ] - }, - "id": 309, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [], - "id": 259, - "modifierName": { - "argumentTypes": null, - "id": 258, - "name": "onlyWallet", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 74, - "src": "4645:10:1", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "4645:10:1" - } - ], - "name": "removeOwner", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 257, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 252, - "name": "ownerIndex", - "nodeType": "VariableDeclaration", - "scope": 309, - "src": "4569:18:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 251, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4569:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 254, - "name": "owner", - "nodeType": "VariableDeclaration", - "scope": 309, - "src": "4589:13:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 253, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "4589:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 256, - "name": "_threshold", - "nodeType": "VariableDeclaration", - "scope": 309, - "src": "4604:16:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 255, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "4604:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "4568:53:1" - }, - "payable": false, - "returnParameters": { - "id": 260, - "nodeType": "ParameterList", - "parameters": [], - "src": "4660:0:1" - }, - "scope": 963, - "src": "4548:599:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 359, - "nodeType": "Block", - "src": "5587:383:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 323, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 321, - "name": "newOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 315, - "src": "5646:8:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 322, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5658:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "5646:13:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 320, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "5638:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 324, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5638:22:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 325, - "nodeType": "ExpressionStatement", - "src": "5638:22:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 330, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "5718:18:1", - "subExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 327, - "name": "isOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 47, - "src": "5719:7:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 329, - "indexExpression": { - "argumentTypes": null, - "id": 328, - "name": "newOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 315, - "src": "5727:8:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "5719:17:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 326, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "5710:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 331, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5710:27:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 332, - "nodeType": "ExpressionStatement", - "src": "5710:27:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 338, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 334, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "5817:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 336, - "indexExpression": { - "argumentTypes": null, - "id": 335, - "name": "oldOwnerIndex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 311, - "src": "5824:13:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "5817:21:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 337, - "name": "oldOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 313, - "src": "5842:8:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "5817:33:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 333, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "5809:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 339, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5809:42:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 340, - "nodeType": "ExpressionStatement", - "src": "5809:42:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 345, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 341, - "name": "isOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 47, - "src": "5861:7:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 343, - "indexExpression": { - "argumentTypes": null, - "id": 342, - "name": "oldOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 313, - "src": "5869:8:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "5861:17:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "66616c7365", - "id": 344, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5881:5:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "src": "5861:25:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 346, - "nodeType": "ExpressionStatement", - "src": "5861:25:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 351, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 347, - "name": "isOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 47, - "src": "5896:7:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 349, - "indexExpression": { - "argumentTypes": null, - "id": 348, - "name": "newOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 315, - "src": "5904:8:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "5896:17:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 350, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5917:4:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "5896:25:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 352, - "nodeType": "ExpressionStatement", - "src": "5896:25:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 357, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 353, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "5931:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 355, - "indexExpression": { - "argumentTypes": null, - "id": 354, - "name": "oldOwnerIndex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 311, - "src": "5938:13:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "5931:21:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 356, - "name": "newOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 315, - "src": "5955:8:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "5931:32:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 358, - "nodeType": "ExpressionStatement", - "src": "5931:32:1" - } - ] - }, - "id": 360, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [], - "id": 318, - "modifierName": { - "argumentTypes": null, - "id": 317, - "name": "onlyWallet", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 74, - "src": "5572:10:1", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "5572:10:1" - } - ], - "name": "replaceOwner", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 316, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 311, - "name": "oldOwnerIndex", - "nodeType": "VariableDeclaration", - "scope": 360, - "src": "5490:21:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 310, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "5490:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 313, - "name": "oldOwner", - "nodeType": "VariableDeclaration", - "scope": 360, - "src": "5513:16:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 312, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "5513:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 315, - "name": "newOwner", - "nodeType": "VariableDeclaration", - "scope": 360, - "src": "5531:16:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 314, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "5531:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "5489:59:1" - }, - "payable": false, - "returnParameters": { - "id": 319, - "nodeType": "ParameterList", - "parameters": [], - "src": "5587:0:1" - }, - "scope": 963, - "src": "5468:502:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 384, - "nodeType": "Block", - "src": "6240:239:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 371, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 368, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 362, - "src": "6326:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": "<=", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 369, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "6340:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 370, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "6340:13:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "6326:27:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 367, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "6318:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 372, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6318:36:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 373, - "nodeType": "ExpressionStatement", - "src": "6318:36:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 377, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 375, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 362, - "src": "6424:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 376, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6438:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "6424:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 374, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "6416:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 378, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6416:24:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 379, - "nodeType": "ExpressionStatement", - "src": "6416:24:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 382, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 380, - "name": "threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 35, - "src": "6450:9:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 381, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 362, - "src": "6462:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "6450:22:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "id": 383, - "nodeType": "ExpressionStatement", - "src": "6450:22:1" - } - ] - }, - "id": 385, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [], - "id": 365, - "modifierName": { - "argumentTypes": null, - "id": 364, - "name": "onlyWallet", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 74, - "src": "6225:10:1", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "6225:10:1" - } - ], - "name": "changeThreshold", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 363, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 362, - "name": "_threshold", - "nodeType": "VariableDeclaration", - "scope": 385, - "src": "6184:16:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 361, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "6184:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "6183:18:1" - }, - "payable": false, - "returnParameters": { - "id": 366, - "nodeType": "ParameterList", - "parameters": [], - "src": "6240:0:1" - }, - "scope": 963, - "src": "6159:320:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 419, - "nodeType": "Block", - "src": "6737:255:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 397, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 394, - "name": "extension", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 387, - "src": "6808:9:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - ], - "id": 393, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "6800:7:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 395, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6800:18:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 396, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6822:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "6800:23:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 392, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "6792:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 398, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6792:32:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 399, - "nodeType": "ExpressionStatement", - "src": "6792:32:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 404, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "6886:23:1", - "subExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 401, - "name": "isExtension", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51, - "src": "6887:11:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 403, - "indexExpression": { - "argumentTypes": null, - "id": 402, - "name": "extension", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 387, - "src": "6899:9:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "6887:22:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 400, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "6878:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 405, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6878:32:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 406, - "nodeType": "ExpressionStatement", - "src": "6878:32:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 410, - "name": "extension", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 387, - "src": "6936:9:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - ], - "expression": { - "argumentTypes": null, - "id": 407, - "name": "extensions", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 43, - "src": "6920:10:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage", - "typeString": "contract Extension[] storage ref" - } - }, - "id": 409, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "push", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "6920:15:1", - "typeDescriptions": { - "typeIdentifier": "t_function_arraypush_nonpayable$_t_contract$_Extension_$18_$returns$_t_uint256_$", - "typeString": "function (contract Extension) returns (uint256)" - } - }, - "id": 411, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6920:26:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 412, - "nodeType": "ExpressionStatement", - "src": "6920:26:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 417, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 413, - "name": "isExtension", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51, - "src": "6956:11:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 415, - "indexExpression": { - "argumentTypes": null, - "id": 414, - "name": "extension", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 387, - "src": "6968:9:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "6956:22:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 416, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6981:4:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "6956:29:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 418, - "nodeType": "ExpressionStatement", - "src": "6956:29:1" - } - ] - }, - "id": 420, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [], - "id": 390, - "modifierName": { - "argumentTypes": null, - "id": 389, - "name": "onlyWallet", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 74, - "src": "6722:10:1", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "6722:10:1" - } - ], - "name": "addExtension", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 388, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 387, - "name": "extension", - "nodeType": "VariableDeclaration", - "scope": 420, - "src": "6678:19:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - }, - "typeName": { - "contractScope": null, - "id": 386, - "name": "Extension", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 18, - "src": "6678:9:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "6677:21:1" - }, - "payable": false, - "returnParameters": { - "id": 391, - "nodeType": "ParameterList", - "parameters": [], - "src": "6737:0:1" - }, - "scope": 963, - "src": "6656:336:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 459, - "nodeType": "Block", - "src": "7372:276:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - }, - "id": 434, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 430, - "name": "extensions", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 43, - "src": "7460:10:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage", - "typeString": "contract Extension[] storage ref" - } - }, - "id": 432, - "indexExpression": { - "argumentTypes": null, - "id": 431, - "name": "extensionIndex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 422, - "src": "7471:14:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "7460:26:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 433, - "name": "extension", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 424, - "src": "7490:9:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "src": "7460:39:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 429, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "7452:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 435, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7452:48:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 436, - "nodeType": "ExpressionStatement", - "src": "7452:48:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 441, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 437, - "name": "isExtension", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51, - "src": "7510:11:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 439, - "indexExpression": { - "argumentTypes": null, - "id": 438, - "name": "extension", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 424, - "src": "7522:9:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "7510:22:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "66616c7365", - "id": 440, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7535:5:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "src": "7510:30:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 442, - "nodeType": "ExpressionStatement", - "src": "7510:30:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 452, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 443, - "name": "extensions", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 43, - "src": "7550:10:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage", - "typeString": "contract Extension[] storage ref" - } - }, - "id": 445, - "indexExpression": { - "argumentTypes": null, - "id": 444, - "name": "extensionIndex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 422, - "src": "7561:14:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "7550:26:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 446, - "name": "extensions", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 43, - "src": "7579:10:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage", - "typeString": "contract Extension[] storage ref" - } - }, - "id": 451, - "indexExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 450, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 447, - "name": "extensions", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 43, - "src": "7590:10:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage", - "typeString": "contract Extension[] storage ref" - } - }, - "id": 448, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "7590:17:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 449, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7610:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "7590:21:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "7579:33:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "src": "7550:62:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "id": 453, - "nodeType": "ExpressionStatement", - "src": "7550:62:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 457, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "--", - "prefix": false, - "src": "7622:19:1", - "subExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 454, - "name": "extensions", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 43, - "src": "7622:10:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage", - "typeString": "contract Extension[] storage ref" - } - }, - "id": 456, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "7622:17:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 458, - "nodeType": "ExpressionStatement", - "src": "7622:19:1" - } - ] - }, - "id": 460, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [], - "id": 427, - "modifierName": { - "argumentTypes": null, - "id": 426, - "name": "onlyWallet", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 74, - "src": "7357:10:1", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "7357:10:1" - } - ], - "name": "removeExtension", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 425, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 422, - "name": "extensionIndex", - "nodeType": "VariableDeclaration", - "scope": 460, - "src": "7289:22:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 421, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "7289:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 424, - "name": "extension", - "nodeType": "VariableDeclaration", - "scope": 460, - "src": "7313:19:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - }, - "typeName": { - "contractScope": null, - "id": 423, - "name": "Extension", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 18, - "src": "7313:9:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "7288:45:1" - }, - "payable": false, - "returnParameters": { - "id": 428, - "nodeType": "ParameterList", - "parameters": [], - "src": "7372:0:1" - }, - "scope": 963, - "src": "7264:384:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 509, - "nodeType": "Block", - "src": "8102:383:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 474, - "name": "isOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 47, - "src": "8190:7:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 477, - "indexExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 475, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2089, - "src": "8198:3:1", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 476, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "8198:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8190:19:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 473, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "8182:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 478, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8182:28:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 479, - "nodeType": "ExpressionStatement", - "src": "8182:28:1" - }, - { - "assignments": [ - 481 - ], - "declarations": [ - { - "constant": false, - "id": 481, - "name": "transactionHash", - "nodeType": "VariableDeclaration", - "scope": 510, - "src": "8220:23:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 480, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "8220:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 489, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 483, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 462, - "src": "8265:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 484, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 464, - "src": "8269:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 485, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 466, - "src": "8276:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "id": 486, - "name": "operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 468, - "src": "8282:9:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - { - "argumentTypes": null, - "id": 487, - "name": "nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 37, - "src": "8293:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 482, - "name": "getTransactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 852, - "src": "8246:18:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$61_$_t_uint256_$returns$_t_bytes32_$", - "typeString": "function (address,uint256,bytes memory,enum GnosisSafe.Operation,uint256) view returns (bytes32)" - } - }, - "id": 488, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8246:53:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "8220:79:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 497, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "8379:41:1", - "subExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 491, - "name": "isConfirmed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 57, - "src": "8380:11:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$", - "typeString": "mapping(address => mapping(bytes32 => bool))" - } - }, - "id": 494, - "indexExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 492, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2089, - "src": "8392:3:1", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 493, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "8392:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8380:23:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 496, - "indexExpression": { - "argumentTypes": null, - "id": 495, - "name": "transactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 481, - "src": "8404:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8380:40:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 490, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "8371:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 498, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8371:50:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 499, - "nodeType": "ExpressionStatement", - "src": "8371:50:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 507, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 500, - "name": "isConfirmed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 57, - "src": "8431:11:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$", - "typeString": "mapping(address => mapping(bytes32 => bool))" - } - }, - "id": 504, - "indexExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 501, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2089, - "src": "8443:3:1", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 502, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "8443:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8431:23:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 505, - "indexExpression": { - "argumentTypes": null, - "id": 503, - "name": "transactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 481, - "src": "8455:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "8431:40:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 506, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8474:4:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "8431:47:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 508, - "nodeType": "ExpressionStatement", - "src": "8431:47:1" - } - ] - }, - "id": 510, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "confirmTransaction", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 471, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 462, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 510, - "src": "8007:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 461, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "8007:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 464, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 510, - "src": "8019:13:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 463, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "8019:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 466, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 510, - "src": "8034:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 465, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "8034:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 468, - "name": "operation", - "nodeType": "VariableDeclaration", - "scope": 510, - "src": "8046:19:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - }, - "typeName": { - "contractScope": null, - "id": 467, - "name": "Operation", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 61, - "src": "8046:9:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 470, - "name": "_nonce", - "nodeType": "VariableDeclaration", - "scope": 510, - "src": "8067:14:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 469, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "8067:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "8006:76:1" - }, - "payable": false, - "returnParameters": { - "id": 472, - "nodeType": "ParameterList", - "parameters": [], - "src": "8102:0:1" - }, - "scope": 963, - "src": "7979:506:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 697, - "nodeType": "Block", - "src": "9404:1349:1", - "statements": [ - { - "assignments": [ - 537 - ], - "declarations": [ - { - "constant": false, - "id": 537, - "name": "transactionHash", - "nodeType": "VariableDeclaration", - "scope": 698, - "src": "9414:23:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 536, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "9414:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 545, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 539, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 512, - "src": "9459:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 540, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 514, - "src": "9463:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 541, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 516, - "src": "9470:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "id": 542, - "name": "operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 518, - "src": "9476:9:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - { - "argumentTypes": null, - "id": 543, - "name": "nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 37, - "src": "9487:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 538, - "name": "getTransactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 852, - "src": "9440:18:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$61_$_t_uint256_$returns$_t_bytes32_$", - "typeString": "function (address,uint256,bytes memory,enum GnosisSafe.Operation,uint256) view returns (bytes32)" - } - }, - "id": 544, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9440:53:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "9414:79:1" - }, - { - "assignments": [ - 547 - ], - "declarations": [ - { - "constant": false, - "id": 547, - "name": "lastOwner", - "nodeType": "VariableDeclaration", - "scope": 698, - "src": "9555:17:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 546, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "9555:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 551, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30", - "id": 549, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9583:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 548, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "9575:7:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 550, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9575:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "9555:30:1" - }, - { - "assignments": [], - "declarations": [ - { - "constant": false, - "id": 553, - "name": "currentOwner", - "nodeType": "VariableDeclaration", - "scope": 698, - "src": "9595:20:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 552, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "9595:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 554, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "9595:20:1" - }, - { - "assignments": [], - "declarations": [ - { - "constant": false, - "id": 556, - "name": "i", - "nodeType": "VariableDeclaration", - "scope": 698, - "src": "9625:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 555, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "9625:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 557, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "9625:9:1" - }, - { - "assignments": [ - 559 - ], - "declarations": [ - { - "constant": false, - "id": 559, - "name": "j", - "nodeType": "VariableDeclaration", - "scope": 698, - "src": "9644:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 558, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "9644:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 561, - "initialValue": { - "argumentTypes": null, - "hexValue": "30", - "id": 560, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9656:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "9644:13:1" - }, - { - "body": { - "id": 648, - "nodeType": "Block", - "src": "9741:619:1", - "statements": [ - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 581, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 575, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 572, - "name": "indices", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 533, - "src": "9843:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", - "typeString": "uint256[] memory" - } - }, - "id": 573, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "9843:14:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "id": 574, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 559, - "src": "9860:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "9843:18:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 580, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 576, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "9865:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 577, - "name": "indices", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 533, - "src": "9870:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", - "typeString": "uint256[] memory" - } - }, - "id": 579, - "indexExpression": { - "argumentTypes": null, - "id": 578, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 559, - "src": "9878:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9870:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "9865:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "9843:37:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "expression": { - "argumentTypes": null, - "id": 629, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 610, - "name": "currentOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 553, - "src": "10155:12:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 612, - "name": "transactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 537, - "src": "10180:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 613, - "name": "v", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 521, - "src": "10197:1:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", - "typeString": "uint8[] memory" - } - }, - "id": 617, - "indexExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 616, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 614, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "10199:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "id": 615, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 559, - "src": "10201:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "10199:3:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "10197:6:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 618, - "name": "r", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 524, - "src": "10205:1:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[] memory" - } - }, - "id": 622, - "indexExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 621, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 619, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "10207:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "id": 620, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 559, - "src": "10209:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "10207:3:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "10205:6:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 623, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 527, - "src": "10213:1:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[] memory" - } - }, - "id": 627, - "indexExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 626, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 624, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "10215:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "id": 625, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 559, - "src": "10217:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "10215:3:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "10213:6:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 611, - "name": "ecrecover", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2082, - "src": "10170:9:1", - "typeDescriptions": { - "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", - "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)" - } - }, - "id": 628, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "10170:50:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "10155:65:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 630, - "nodeType": "ExpressionStatement", - "src": "10155:65:1" - }, - "id": 631, - "nodeType": "IfStatement", - "src": "9839:381:1", - "trueBody": { - "id": 609, - "nodeType": "Block", - "src": "9882:177:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 596, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 588, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 583, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2089, - "src": "9908:3:1", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 584, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "9908:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 585, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 530, - "src": "9922:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 587, - "indexExpression": { - "argumentTypes": null, - "id": 586, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 559, - "src": "9930:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9922:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "9908:24:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "||", - "rightExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 589, - "name": "isConfirmed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 57, - "src": "9936:11:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$", - "typeString": "mapping(address => mapping(bytes32 => bool))" - } - }, - "id": 593, - "indexExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 590, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 530, - "src": "9948:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 592, - "indexExpression": { - "argumentTypes": null, - "id": 591, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 559, - "src": "9956:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9948:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9936:23:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 595, - "indexExpression": { - "argumentTypes": null, - "id": 594, - "name": "transactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 537, - "src": "9960:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9936:40:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "9908:68:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 582, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "9900:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 597, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9900:77:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 598, - "nodeType": "ExpressionStatement", - "src": "9900:77:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 603, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 599, - "name": "currentOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 553, - "src": "9995:12:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 600, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 530, - "src": "10010:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 602, - "indexExpression": { - "argumentTypes": null, - "id": 601, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 559, - "src": "10018:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "10010:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "9995:25:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 604, - "nodeType": "ExpressionStatement", - "src": "9995:25:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 607, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 605, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 559, - "src": "10038:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "+=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "31", - "id": 606, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "10043:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "10038:6:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 608, - "nodeType": "ExpressionStatement", - "src": "10038:6:1" - } - ] - } - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 633, - "name": "isOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 47, - "src": "10242:7:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 635, - "indexExpression": { - "argumentTypes": null, - "id": 634, - "name": "currentOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 553, - "src": "10250:12:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "10242:21:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 632, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "10234:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 636, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "10234:30:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 637, - "nodeType": "ExpressionStatement", - "src": "10234:30:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 641, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 639, - "name": "currentOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 553, - "src": "10286:12:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "id": 640, - "name": "lastOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 547, - "src": "10301:9:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "10286:24:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 638, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "10278:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 642, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "10278:33:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 643, - "nodeType": "ExpressionStatement", - "src": "10278:33:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 646, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 644, - "name": "lastOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 547, - "src": "10325:9:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 645, - "name": "currentOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 553, - "src": "10337:12:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "10325:24:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 647, - "nodeType": "ExpressionStatement", - "src": "10325:24:1" - } - ] - }, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 568, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 566, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "9721:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, - "id": 567, - "name": "threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 35, - "src": "9725:9:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "9721:13:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 649, - "initializationExpression": { - "expression": { - "argumentTypes": null, - "id": 564, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 562, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "9714:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "30", - "id": 563, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9718:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "9714:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 565, - "nodeType": "ExpressionStatement", - "src": "9714:5:1" - }, - "loopExpression": { - "expression": { - "argumentTypes": null, - "id": 570, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "9736:3:1", - "subExpression": { - "argumentTypes": null, - "id": 569, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "9736:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 571, - "nodeType": "ExpressionStatement", - "src": "9736:3:1" - }, - "nodeType": "ForStatement", - "src": "9709:651:1" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 653, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 650, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 530, - "src": "10419:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 651, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "10419:14:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 652, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "10436:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "10419:18:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 685, - "nodeType": "IfStatement", - "src": "10415:216:1", - "trueBody": { - "id": 684, - "nodeType": "Block", - "src": "10439:192:1", - "statements": [ - { - "body": { - "id": 682, - "nodeType": "Block", - "src": "10490:131:1", - "statements": [ - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 670, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 665, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2089, - "src": "10512:3:1", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 666, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "10512:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 667, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 530, - "src": "10526:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 669, - "indexExpression": { - "argumentTypes": null, - "id": 668, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "10534:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "10526:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "10512:24:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 681, - "nodeType": "IfStatement", - "src": "10508:98:1", - "trueBody": { - "expression": { - "argumentTypes": null, - "id": 679, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 671, - "name": "isConfirmed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 57, - "src": "10558:11:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$", - "typeString": "mapping(address => mapping(bytes32 => bool))" - } - }, - "id": 676, - "indexExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 672, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 530, - "src": "10570:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 674, - "indexExpression": { - "argumentTypes": null, - "id": 673, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "10578:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "10570:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "10558:23:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 677, - "indexExpression": { - "argumentTypes": null, - "id": 675, - "name": "transactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 537, - "src": "10582:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "10558:40:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "66616c7365", - "id": 678, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "10601:5:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "src": "10558:48:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 680, - "nodeType": "ExpressionStatement", - "src": "10558:48:1" - } - } - ] - }, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 661, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 658, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "10465:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 659, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 530, - "src": "10469:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 660, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "10469:14:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "10465:18:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 683, - "initializationExpression": { - "expression": { - "argumentTypes": null, - "id": 656, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 654, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "10458:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "30", - "id": 655, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "10462:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "10458:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 657, - "nodeType": "ExpressionStatement", - "src": "10458:5:1" - }, - "loopExpression": { - "expression": { - "argumentTypes": null, - "id": 663, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "10485:3:1", - "subExpression": { - "argumentTypes": null, - "id": 662, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "10485:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 664, - "nodeType": "ExpressionStatement", - "src": "10485:3:1" - }, - "nodeType": "ForStatement", - "src": "10453:168:1" - } - ] - } - }, - { - "expression": { - "argumentTypes": null, - "id": 688, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 686, - "name": "nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 37, - "src": "10691:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "+=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "31", - "id": 687, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "10700:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "10691:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 689, - "nodeType": "ExpressionStatement", - "src": "10691:10:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 691, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 512, - "src": "10719:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 692, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 514, - "src": "10723:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 693, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 516, - "src": "10730:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "id": 694, - "name": "operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 518, - "src": "10736:9:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - ], - "id": 690, - "name": "execute", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 791, - "src": "10711:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$61_$returns$__$", - "typeString": "function (address,uint256,bytes memory,enum GnosisSafe.Operation)" - } - }, - "id": 695, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "10711:35:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 696, - "nodeType": "ExpressionStatement", - "src": "10711:35:1" - } - ] - }, - "id": 698, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "executeTransaction", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 534, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 512, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 698, - "src": "9250:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 511, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "9250:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 514, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 698, - "src": "9262:13:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 513, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "9262:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 516, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 698, - "src": "9277:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 515, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "9277:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 518, - "name": "operation", - "nodeType": "VariableDeclaration", - "scope": 698, - "src": "9289:19:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - }, - "typeName": { - "contractScope": null, - "id": 517, - "name": "Operation", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 61, - "src": "9289:9:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 521, - "name": "v", - "nodeType": "VariableDeclaration", - "scope": 698, - "src": "9310:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", - "typeString": "uint8[] memory" - }, - "typeName": { - "baseType": { - "id": 519, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "9310:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "id": 520, - "length": null, - "nodeType": "ArrayTypeName", - "src": "9310:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr", - "typeString": "uint8[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 524, - "name": "r", - "nodeType": "VariableDeclaration", - "scope": 698, - "src": "9321:11:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[] memory" - }, - "typeName": { - "baseType": { - "id": 522, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "9321:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 523, - "length": null, - "nodeType": "ArrayTypeName", - "src": "9321:9:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", - "typeString": "bytes32[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 527, - "name": "s", - "nodeType": "VariableDeclaration", - "scope": 698, - "src": "9334:11:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[] memory" - }, - "typeName": { - "baseType": { - "id": 525, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "9334:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 526, - "length": null, - "nodeType": "ArrayTypeName", - "src": "9334:9:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", - "typeString": "bytes32[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 530, - "name": "_owners", - "nodeType": "VariableDeclaration", - "scope": 698, - "src": "9347:17:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - }, - "typeName": { - "baseType": { - "id": 528, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "9347:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 529, - "length": null, - "nodeType": "ArrayTypeName", - "src": "9347:9:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 533, - "name": "indices", - "nodeType": "VariableDeclaration", - "scope": 698, - "src": "9366:17:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", - "typeString": "uint256[] memory" - }, - "typeName": { - "baseType": { - "id": 531, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "9366:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 532, - "length": null, - "nodeType": "ArrayTypeName", - "src": "9366:9:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", - "typeString": "uint256[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "9249:135:1" - }, - "payable": false, - "returnParameters": { - "id": 535, - "nodeType": "ParameterList", - "parameters": [], - "src": "9404:0:1" - }, - "scope": 963, - "src": "9222:1531:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 736, - "nodeType": "Block", - "src": "11304:338:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 712, - "name": "isExtension", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51, - "src": "11374:11:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 714, - "indexExpression": { - "argumentTypes": null, - "id": 713, - "name": "extension", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 708, - "src": "11386:9:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "11374:22:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 711, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "11366:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 715, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11366:31:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 716, - "nodeType": "ExpressionStatement", - "src": "11366:31:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 720, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2089, - "src": "11487:3:1", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 721, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "11487:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 722, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 700, - "src": "11499:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 723, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 702, - "src": "11503:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 724, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 704, - "src": "11510:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "id": 725, - "name": "operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 706, - "src": "11516:9:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - ], - "expression": { - "argumentTypes": null, - "id": 718, - "name": "extension", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 708, - "src": "11464:9:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "id": 719, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "isExecutable", - "nodeType": "MemberAccess", - "referencedDeclaration": 17, - "src": "11464:22:1", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$61_$returns$_t_bool_$", - "typeString": "function (address,address,uint256,bytes memory,enum GnosisSafe.Operation) external returns (bool)" - } - }, - "id": 726, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11464:62:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 717, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "11456:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 727, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11456:71:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 728, - "nodeType": "ExpressionStatement", - "src": "11456:71:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 730, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 700, - "src": "11608:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 731, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 702, - "src": "11612:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 732, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 704, - "src": "11619:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "id": 733, - "name": "operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 706, - "src": "11625:9:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - ], - "id": 729, - "name": "execute", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 791, - "src": "11600:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$61_$returns$__$", - "typeString": "function (address,uint256,bytes memory,enum GnosisSafe.Operation)" - } - }, - "id": 734, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11600:35:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 735, - "nodeType": "ExpressionStatement", - "src": "11600:35:1" - } - ] - }, - "id": 737, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "executeExtension", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 709, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 700, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 737, - "src": "11204:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 699, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "11204:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 702, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 737, - "src": "11216:13:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 701, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "11216:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 704, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 737, - "src": "11231:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 703, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "11231:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 706, - "name": "operation", - "nodeType": "VariableDeclaration", - "scope": 737, - "src": "11243:19:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - }, - "typeName": { - "contractScope": null, - "id": 705, - "name": "Operation", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 61, - "src": "11243:9:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 708, - "name": "extension", - "nodeType": "VariableDeclaration", - "scope": 737, - "src": "11264:19:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - }, - "typeName": { - "contractScope": null, - "id": 707, - "name": "Extension", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 18, - "src": "11264:9:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "11203:81:1" - }, - "payable": false, - "returnParameters": { - "id": 710, - "nodeType": "ParameterList", - "parameters": [], - "src": "11304:0:1" - }, - "scope": 963, - "src": "11178:464:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 790, - "nodeType": "Block", - "src": "11746:367:1", - "statements": [ - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - }, - "id": 751, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 748, - "name": "operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 745, - "src": "11760:9:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 749, - "name": "Operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 61, - "src": "11773:9:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_Operation_$61_$", - "typeString": "type(enum GnosisSafe.Operation)" - } - }, - "id": 750, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "Call", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "11773:14:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "src": "11760:27:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - }, - "id": 763, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 760, - "name": "operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 745, - "src": "11857:9:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 761, - "name": "Operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 61, - "src": "11870:9:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_Operation_$61_$", - "typeString": "type(enum GnosisSafe.Operation)" - } - }, - "id": 762, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "DelegateCall", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "11870:22:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "src": "11857:35:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "id": 787, - "nodeType": "Block", - "src": "11959:148:1", - "statements": [ - { - "assignments": [ - 772 - ], - "declarations": [ - { - "constant": false, - "id": 772, - "name": "newContract", - "nodeType": "VariableDeclaration", - "scope": 791, - "src": "11973:19:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 771, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "11973:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 776, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 774, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 743, - "src": "12009:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 773, - "name": "executeCreate", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 824, - "src": "11995:13:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$_t_address_$", - "typeString": "function (bytes memory) returns (address)" - } - }, - "id": 775, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11995:19:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "11973:41:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 780, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 778, - "name": "newContract", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 772, - "src": "12036:11:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 779, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "12051:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "12036:16:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 777, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "12028:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 781, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "12028:25:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 782, - "nodeType": "ExpressionStatement", - "src": "12028:25:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 784, - "name": "newContract", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 772, - "src": "12084:11:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 783, - "name": "ContractCreation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 25, - "src": "12067:16:1", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", - "typeString": "function (address)" - } - }, - "id": 785, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "12067:29:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 786, - "nodeType": "ExpressionStatement", - "src": "12067:29:1" - } - ] - }, - "id": 788, - "nodeType": "IfStatement", - "src": "11853:254:1", - "trueBody": { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 766, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 739, - "src": "11934:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 767, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 743, - "src": "11938:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 765, - "name": "executeDelegateCall", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 815, - "src": "11914:19:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bool_$", - "typeString": "function (address,bytes memory) returns (bool)" - } - }, - "id": 768, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11914:29:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 764, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "11906:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 769, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11906:38:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 770, - "nodeType": "ExpressionStatement", - "src": "11906:38:1" - } - }, - "id": 789, - "nodeType": "IfStatement", - "src": "11756:351:1", - "trueBody": { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 754, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 739, - "src": "11821:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 755, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 741, - "src": "11825:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 756, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 743, - "src": "11832:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 753, - "name": "executeCall", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 804, - "src": "11809:11:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$", - "typeString": "function (address,uint256,bytes memory) returns (bool)" - } - }, - "id": 757, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11809:28:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 752, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "11801:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 758, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11801:37:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 759, - "nodeType": "ExpressionStatement", - "src": "11801:37:1" - } - } - ] - }, - "id": 791, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "execute", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 746, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 739, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 791, - "src": "11665:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 738, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "11665:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 741, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 791, - "src": "11677:13:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 740, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "11677:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 743, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 791, - "src": "11692:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 742, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "11692:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 745, - "name": "operation", - "nodeType": "VariableDeclaration", - "scope": 791, - "src": "11704:19:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - }, - "typeName": { - "contractScope": null, - "id": 744, - "name": "Operation", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 61, - "src": "11704:9:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "11664:60:1" - }, - "payable": false, - "returnParameters": { - "id": 747, - "nodeType": "ParameterList", - "parameters": [], - "src": "11746:0:1" - }, - "scope": 963, - "src": "11648:465:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 803, - "nodeType": "Block", - "src": "12231:119:1", - "statements": [ - { - "externalReferences": [ - { - "data": { - "declaration": 797, - "isOffset": false, - "isSlot": false, - "src": "12303:4:1", - "valueSize": 1 - } - }, - { - "data": { - "declaration": 797, - "isOffset": false, - "isSlot": false, - "src": "12322:4:1", - "valueSize": 1 - } - }, - { - "success": { - "declaration": 800, - "isOffset": false, - "isSlot": false, - "src": "12264:7:1", - "valueSize": 1 - } - }, - { - "to": { - "declaration": 793, - "isOffset": false, - "isSlot": false, - "src": "12288:2:1", - "valueSize": 1 - } - }, - { - "value": { - "declaration": 795, - "isOffset": false, - "isSlot": false, - "src": "12292:5:1", - "valueSize": 1 - } - } - ], - "id": 802, - "nodeType": "InlineAssembly", - "operations": "{\n success := call(not(0), to, value, add(data, 0x20), mload(data), 0, 0)\n}", - "src": "12241:109:1" - } - ] - }, - "id": 804, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "executeCall", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 798, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 793, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 804, - "src": "12140:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 792, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "12140:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 795, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 804, - "src": "12152:13:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 794, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "12152:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 797, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 804, - "src": "12167:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 796, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "12167:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "12139:39:1" - }, - "payable": false, - "returnParameters": { - "id": 801, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 800, - "name": "success", - "nodeType": "VariableDeclaration", - "scope": 804, - "src": "12213:12:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 799, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "12213:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "12212:14:1" - }, - "scope": 963, - "src": "12119:231:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 814, - "nodeType": "Block", - "src": "12461:120:1", - "statements": [ - { - "externalReferences": [ - { - "data": { - "declaration": 808, - "isOffset": false, - "isSlot": false, - "src": "12534:4:1", - "valueSize": 1 - } - }, - { - "data": { - "declaration": 808, - "isOffset": false, - "isSlot": false, - "src": "12553:4:1", - "valueSize": 1 - } - }, - { - "success": { - "declaration": 811, - "isOffset": false, - "isSlot": false, - "src": "12494:7:1", - "valueSize": 1 - } - }, - { - "to": { - "declaration": 806, - "isOffset": false, - "isSlot": false, - "src": "12526:2:1", - "valueSize": 1 - } - } - ], - "id": 813, - "nodeType": "InlineAssembly", - "operations": "{\n success := delegatecall(not(0), to, add(data, 0x20), mload(data), 0, 0)\n}", - "src": "12471:110:1" - } - ] - }, - "id": 815, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "executeDelegateCall", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 809, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 806, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 815, - "src": "12385:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 805, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "12385:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 808, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 815, - "src": "12397:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 807, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "12397:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "12384:24:1" - }, - "payable": false, - "returnParameters": { - "id": 812, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 811, - "name": "success", - "nodeType": "VariableDeclaration", - "scope": 815, - "src": "12443:12:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 810, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "12443:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "12442:14:1" - }, - "scope": 963, - "src": "12356:225:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 823, - "nodeType": "Block", - "src": "12681:103:1", - "statements": [ - { - "externalReferences": [ - { - "data": { - "declaration": 817, - "isOffset": false, - "isSlot": false, - "src": "12762:4:1", - "valueSize": 1 - } - }, - { - "newContract": { - "declaration": 820, - "isOffset": false, - "isSlot": false, - "src": "12714:11:1", - "valueSize": 1 - } - }, - { - "data": { - "declaration": 817, - "isOffset": false, - "isSlot": false, - "src": "12743:4:1", - "valueSize": 1 - } - } - ], - "id": 822, - "nodeType": "InlineAssembly", - "operations": "{\n newContract := create(0, add(data, 0x20), mload(data))\n}", - "src": "12691:93:1" - } - ] - }, - "id": 824, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "executeCreate", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 818, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 817, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 824, - "src": "12610:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 816, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "12610:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "12609:12:1" - }, - "payable": false, - "returnParameters": { - "id": 821, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 820, - "name": "newContract", - "nodeType": "VariableDeclaration", - "scope": 824, - "src": "12656:19:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 819, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "12656:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "12655:21:1" - }, - "scope": 963, - "src": "12587:197:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 851, - "nodeType": "Block", - "src": "13238:87:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30783139", - "id": 841, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "13270:4:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_25_by_1", - "typeString": "int_const 25" - }, - "value": "0x19" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_25_by_1", - "typeString": "int_const 25" - } - ], - "id": 840, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "13265:4:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes1_$", - "typeString": "type(bytes1)" - }, - "typeName": "byte" - }, - "id": 842, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "13265:10:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - } - }, - { - "argumentTypes": null, - "id": 843, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2100, - "src": "13277:4:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - { - "argumentTypes": null, - "id": 844, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 826, - "src": "13283:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 845, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 828, - "src": "13287:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 846, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 830, - "src": "13294:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "id": 847, - "name": "operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 832, - "src": "13300:9:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - { - "argumentTypes": null, - "id": 848, - "name": "_nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 834, - "src": "13311:6:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - }, - { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 839, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2083, - "src": "13255:9:1", - "typeDescriptions": { - "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", - "typeString": "function () pure returns (bytes32)" - } - }, - "id": 849, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "13255:63:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "functionReturnParameters": 838, - "id": 850, - "nodeType": "Return", - "src": "13248:70:1" - } - ] - }, - "id": 852, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "getTransactionHash", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 835, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 826, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 852, - "src": "13104:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 825, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "13104:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 828, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 852, - "src": "13116:13:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 827, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "13116:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 830, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 852, - "src": "13131:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 829, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "13131:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 832, - "name": "operation", - "nodeType": "VariableDeclaration", - "scope": 852, - "src": "13143:19:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - }, - "typeName": { - "contractScope": null, - "id": 831, - "name": "Operation", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 61, - "src": "13143:9:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 834, - "name": "_nonce", - "nodeType": "VariableDeclaration", - "scope": 852, - "src": "13164:14:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 833, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "13164:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "13103:76:1" - }, - "payable": false, - "returnParameters": { - "id": 838, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 837, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 852, - "src": "13225:7:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 836, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "13225:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "13224:9:1" - }, - "scope": 963, - "src": "13076:249:1", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 860, - "nodeType": "Block", - "src": "13488:30:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 858, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "13505:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "functionReturnParameters": 857, - "id": 859, - "nodeType": "Return", - "src": "13498:13:1" - } - ] - }, - "id": 861, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "getOwners", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 853, - "nodeType": "ParameterList", - "parameters": [], - "src": "13425:2:1" - }, - "payable": false, - "returnParameters": { - "id": 857, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 856, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 861, - "src": "13473:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - }, - "typeName": { - "baseType": { - "id": 854, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "13473:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 855, - "length": null, - "nodeType": "ArrayTypeName", - "src": "13473:9:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "13472:11:1" - }, - "scope": 963, - "src": "13407:111:1", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 869, - "nodeType": "Block", - "src": "13690:34:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 867, - "name": "extensions", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 43, - "src": "13707:10:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage", - "typeString": "contract Extension[] storage ref" - } - }, - "functionReturnParameters": 866, - "id": 868, - "nodeType": "Return", - "src": "13700:17:1" - } - ] - }, - "id": 870, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "getExtensions", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 862, - "nodeType": "ParameterList", - "parameters": [], - "src": "13625:2:1" - }, - "payable": false, - "returnParameters": { - "id": 866, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 865, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 870, - "src": "13673:11:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_memory_ptr", - "typeString": "contract Extension[] memory" - }, - "typeName": { - "baseType": { - "contractScope": null, - "id": 863, - "name": "Extension", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 18, - "src": "13673:9:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "id": 864, - "length": null, - "nodeType": "ArrayTypeName", - "src": "13673:11:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage_ptr", - "typeString": "contract Extension[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "13672:13:1" - }, - "scope": 963, - "src": "13603:121:1", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 901, - "nodeType": "Block", - "src": "13998:162:1", - "statements": [ - { - "body": { - "id": 899, - "nodeType": "Block", - "src": "14049:105:1", - "statements": [ - { - "condition": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 888, - "name": "isConfirmed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 57, - "src": "14067:11:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$", - "typeString": "mapping(address => mapping(bytes32 => bool))" - } - }, - "id": 892, - "indexExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 889, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "14079:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 891, - "indexExpression": { - "argumentTypes": null, - "id": 890, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 878, - "src": "14086:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "14079:9:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "14067:22:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 894, - "indexExpression": { - "argumentTypes": null, - "id": 893, - "name": "transactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 872, - "src": "14090:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "14067:39:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 898, - "nodeType": "IfStatement", - "src": "14063:80:1", - "trueBody": { - "expression": { - "argumentTypes": null, - "id": 896, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "14124:19:1", - "subExpression": { - "argumentTypes": null, - "id": 895, - "name": "confirmationCount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 875, - "src": "14124:17:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 897, - "nodeType": "ExpressionStatement", - "src": "14124:19:1" - } - } - ] - }, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 884, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 881, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 878, - "src": "14025:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 882, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "14029:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 883, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "14029:13:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "14025:17:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 900, - "initializationExpression": { - "assignments": [ - 878 - ], - "declarations": [ - { - "constant": false, - "id": 878, - "name": "i", - "nodeType": "VariableDeclaration", - "scope": 902, - "src": "14013:6:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 877, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "14013:4:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 880, - "initialValue": { - "argumentTypes": null, - "hexValue": "30", - "id": 879, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "14022:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "14013:10:1" - }, - "loopExpression": { - "expression": { - "argumentTypes": null, - "id": 886, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "14044:3:1", - "subExpression": { - "argumentTypes": null, - "id": 885, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 878, - "src": "14044:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 887, - "nodeType": "ExpressionStatement", - "src": "14044:3:1" - }, - "nodeType": "ForStatement", - "src": "14008:146:1" - } - ] - }, - "id": 902, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "getConfirmationCount", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 873, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 872, - "name": "transactionHash", - "nodeType": "VariableDeclaration", - "scope": 902, - "src": "13900:23:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 871, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "13900:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "13899:25:1" - }, - "payable": false, - "returnParameters": { - "id": 876, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 875, - "name": "confirmationCount", - "nodeType": "VariableDeclaration", - "scope": 902, - "src": "13970:22:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 874, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "13970:4:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "13969:24:1" - }, - "scope": 963, - "src": "13870:290:1", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 961, - "nodeType": "Block", - "src": "14432:407:1", - "statements": [ - { - "assignments": [ - 911 - ], - "declarations": [ - { - "constant": false, - "id": 911, - "name": "confirmationCount", - "nodeType": "VariableDeclaration", - "scope": 962, - "src": "14442:22:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 910, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "14442:4:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 915, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 913, - "name": "transactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 904, - "src": "14488:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 912, - "name": "getConfirmationCount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 902, - "src": "14467:20:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$", - "typeString": "function (bytes32) view returns (uint256)" - } - }, - "id": 914, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "14467:37:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "14442:62:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 922, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 916, - "name": "confirmingOwners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 908, - "src": "14514:16:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 920, - "name": "confirmationCount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 911, - "src": "14547:17:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 919, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "NewExpression", - "src": "14533:13:1", - "typeDescriptions": { - "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_$", - "typeString": "function (uint256) pure returns (address[] memory)" - }, - "typeName": { - "baseType": { - "id": 917, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "14537:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 918, - "length": null, - "nodeType": "ArrayTypeName", - "src": "14537:9:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[] storage pointer" - } - } - }, - "id": 921, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "14533:32:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory", - "typeString": "address[] memory" - } - }, - "src": "14514:51:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 923, - "nodeType": "ExpressionStatement", - "src": "14514:51:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 926, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 924, - "name": "confirmationCount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 911, - "src": "14575:17:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "30", - "id": 925, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "14595:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "14575:21:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 927, - "nodeType": "ExpressionStatement", - "src": "14575:21:1" - }, - { - "body": { - "id": 959, - "nodeType": "Block", - "src": "14647:186:1", - "statements": [ - { - "condition": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 939, - "name": "isConfirmed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 57, - "src": "14665:11:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$", - "typeString": "mapping(address => mapping(bytes32 => bool))" - } - }, - "id": 943, - "indexExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 940, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "14677:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 942, - "indexExpression": { - "argumentTypes": null, - "id": 941, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 929, - "src": "14684:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "14677:9:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "14665:22:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 945, - "indexExpression": { - "argumentTypes": null, - "id": 944, - "name": "transactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 904, - "src": "14688:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "14665:39:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 958, - "nodeType": "IfStatement", - "src": "14661:162:1", - "trueBody": { - "id": 957, - "nodeType": "Block", - "src": "14706:117:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 952, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 946, - "name": "confirmingOwners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 908, - "src": "14724:16:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 948, - "indexExpression": { - "argumentTypes": null, - "id": 947, - "name": "confirmationCount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 911, - "src": "14741:17:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "14724:35:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 949, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "14762:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 951, - "indexExpression": { - "argumentTypes": null, - "id": 950, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 929, - "src": "14769:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "14762:9:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "14724:47:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 953, - "nodeType": "ExpressionStatement", - "src": "14724:47:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 955, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "14789:19:1", - "subExpression": { - "argumentTypes": null, - "id": 954, - "name": "confirmationCount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 911, - "src": "14789:17:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 956, - "nodeType": "ExpressionStatement", - "src": "14789:19:1" - } - ] - } - } - ] - }, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 935, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 932, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 929, - "src": "14623:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 933, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "14627:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 934, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "14627:13:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "14623:17:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 960, - "initializationExpression": { - "assignments": [ - 929 - ], - "declarations": [ - { - "constant": false, - "id": 929, - "name": "i", - "nodeType": "VariableDeclaration", - "scope": 962, - "src": "14611:6:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 928, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "14611:4:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 931, - "initialValue": { - "argumentTypes": null, - "hexValue": "30", - "id": 930, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "14620:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "14611:10:1" - }, - "loopExpression": { - "expression": { - "argumentTypes": null, - "id": 937, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "14642:3:1", - "subExpression": { - "argumentTypes": null, - "id": 936, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 929, - "src": "14642:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 938, - "nodeType": "ExpressionStatement", - "src": "14642:3:1" - }, - "nodeType": "ForStatement", - "src": "14606:227:1" - } - ] - }, - "id": 962, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "getConfirmingOwners", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 905, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 904, - "name": "transactionHash", - "nodeType": "VariableDeclaration", - "scope": 962, - "src": "14330:23:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 903, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "14330:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "14329:25:1" - }, - "payable": false, - "returnParameters": { - "id": 909, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 908, - "name": "confirmingOwners", - "nodeType": "VariableDeclaration", - "scope": 962, - "src": "14400:26:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - }, - "typeName": { - "baseType": { - "id": 906, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "14400:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 907, - "length": null, - "nodeType": "ArrayTypeName", - "src": "14400:9:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "14399:28:1" - }, - "scope": 963, - "src": "14301:538:1", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - } - ], - "scope": 964, - "src": "218:14623:1" - } - ], - "src": "0:14842:1" - }, - "legacyAST": { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", - "exportedSymbols": { - "GnosisSafe": [ - 963 - ] - }, - "id": 964, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 20, - "literals": [ - "solidity", - "0.4", - ".19" - ], - "nodeType": "PragmaDirective", - "src": "0:23:1" - }, - { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Extension.sol", - "file": "./Extension.sol", - "id": 21, - "nodeType": "ImportDirective", - "scope": 964, - "sourceUnit": 19, - "src": "24:25:1", - "symbolAliases": [], - "unitAlias": "" - }, - { - "baseContracts": [], - "contractDependencies": [], - "contractKind": "contract", - "documentation": "@title Gnosis Safe - A multisignature wallet with support for confirmations using signed messages based on ERC191.\n @author Stefan George - ", - "fullyImplemented": true, - "id": 963, - "linearizedBaseContracts": [ - 963 - ], - "name": "GnosisSafe", - "nodeType": "ContractDefinition", - "nodes": [ - { - "anonymous": false, - "id": 25, - "name": "ContractCreation", - "nodeType": "EventDefinition", - "parameters": { - "id": 24, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 23, - "indexed": false, - "name": "newContract", - "nodeType": "VariableDeclaration", - "scope": 25, - "src": "268:19:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 22, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "268:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "267:21:1" - }, - "src": "245:44:1" - }, - { - "constant": true, - "id": 28, - "name": "NAME", - "nodeType": "VariableDeclaration", - "scope": 963, - "src": "295:43:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_string_memory", - "typeString": "string memory" - }, - "typeName": { - "id": 26, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "295:6:1", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string storage pointer" - } - }, - "value": { - "argumentTypes": null, - "hexValue": "476e6f7369732053616665", - "id": 27, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "325:13:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_72ec6775392f699e8ffd72b7c600556d49bdc746bf22bce93d3ae6019cdaff63", - "typeString": "literal_string \"Gnosis Safe\"" - }, - "value": "Gnosis Safe" - }, - "visibility": "public" - }, - { - "constant": true, - "id": 31, - "name": "VERSION", - "nodeType": "VariableDeclaration", - "scope": 963, - "src": "344:40:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_string_memory", - "typeString": "string memory" - }, - "typeName": { - "id": 29, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "344:6:1", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string storage pointer" - } - }, - "value": { - "argumentTypes": null, - "hexValue": "302e302e31", - "id": 30, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "377:7:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", - "typeString": "literal_string \"0.0.1\"" - }, - "value": "0.0.1" - }, - "visibility": "public" - }, - { - "constant": false, - "id": 33, - "name": "masterCopy", - "nodeType": "VariableDeclaration", - "scope": 963, - "src": "391:21:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - }, - "typeName": { - "contractScope": null, - "id": 32, - "name": "GnosisSafe", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 963, - "src": "391:10:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 35, - "name": "threshold", - "nodeType": "VariableDeclaration", - "scope": 963, - "src": "418:22:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 34, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "418:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "id": 37, - "name": "nonce", - "nodeType": "VariableDeclaration", - "scope": 963, - "src": "446:20:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 36, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "446:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "id": 40, - "name": "owners", - "nodeType": "VariableDeclaration", - "scope": 963, - "src": "472:23:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - }, - "typeName": { - "baseType": { - "id": 38, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "472:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 39, - "length": null, - "nodeType": "ArrayTypeName", - "src": "472:9:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[] storage pointer" - } - }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "id": 43, - "name": "extensions", - "nodeType": "VariableDeclaration", - "scope": 963, - "src": "501:29:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage", - "typeString": "contract Extension[] storage ref" - }, - "typeName": { - "baseType": { - "contractScope": null, - "id": 41, - "name": "Extension", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 18, - "src": "501:9:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "id": 42, - "length": null, - "nodeType": "ArrayTypeName", - "src": "501:11:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage_ptr", - "typeString": "contract Extension[] storage pointer" - } - }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "id": 47, - "name": "isOwner", - "nodeType": "VariableDeclaration", - "scope": 963, - "src": "607:40:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - }, - "typeName": { - "id": 46, - "keyType": { - "id": 44, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "616:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Mapping", - "src": "607:25:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - }, - "valueType": { - "id": 45, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "627:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "id": 51, - "name": "isExtension", - "nodeType": "VariableDeclaration", - "scope": 963, - "src": "729:44:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - }, - "typeName": { - "id": 50, - "keyType": { - "id": 48, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "738:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Mapping", - "src": "729:25:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - }, - "valueType": { - "id": 49, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "749:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "id": 57, - "name": "isConfirmed", - "nodeType": "VariableDeclaration", - "scope": 963, - "src": "892:65:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$", - "typeString": "mapping(address => mapping(bytes32 => bool))" - }, - "typeName": { - "id": 56, - "keyType": { - "id": 52, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "901:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Mapping", - "src": "892:46:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$", - "typeString": "mapping(address => mapping(bytes32 => bool))" - }, - "valueType": { - "id": 55, - "keyType": { - "id": 53, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "921:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Mapping", - "src": "912:25:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - }, - "valueType": { - "id": 54, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "932:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - } - }, - "value": null, - "visibility": "public" - }, - { - "canonicalName": "GnosisSafe.Operation", - "id": 61, - "members": [ - { - "id": 58, - "name": "Call", - "nodeType": "EnumValue", - "src": "989:4:1" - }, - { - "id": 59, - "name": "DelegateCall", - "nodeType": "EnumValue", - "src": "1003:12:1" - }, - { - "id": 60, - "name": "Create", - "nodeType": "EnumValue", - "src": "1025:6:1" - } - ], - "name": "Operation", - "nodeType": "EnumDefinition", - "src": "964:73:1" - }, - { - "body": { - "id": 73, - "nodeType": "Block", - "src": "1065:64:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 69, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 64, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2089, - "src": "1083:3:1", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 65, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "1083:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 67, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2100, - "src": "1105:4:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - ], - "id": 66, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "1097:7:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 68, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1097:13:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "1083:27:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 63, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "1075:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 70, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1075:36:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 71, - "nodeType": "ExpressionStatement", - "src": "1075:36:1" - }, - { - "id": 72, - "nodeType": "PlaceholderStatement", - "src": "1121:1:1" - } - ] - }, - "id": 74, - "name": "onlyWallet", - "nodeType": "ModifierDefinition", - "parameters": { - "id": 62, - "nodeType": "ParameterList", - "parameters": [], - "src": "1062:2:1" - }, - "src": "1043:86:1", - "visibility": "internal" - }, - { - "body": { - "id": 77, - "nodeType": "Block", - "src": "1243:8:1", - "statements": [] - }, - "id": 78, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 75, - "nodeType": "ParameterList", - "parameters": [], - "src": "1203:2:1" - }, - "payable": true, - "returnParameters": { - "id": 76, - "nodeType": "ParameterList", - "parameters": [], - "src": "1243:0:1" - }, - "scope": 963, - "src": "1194:57:1", - "stateMutability": "payable", - "superFunction": null, - "visibility": "external" - }, - { - "body": { - "id": 97, - "nodeType": "Block", - "src": "1667:53:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 91, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 81, - "src": "1683:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - { - "argumentTypes": null, - "id": 92, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 83, - "src": "1692:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - { - "argumentTypes": null, - "id": 93, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 85, - "src": "1704:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 94, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87, - "src": "1708:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - }, - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 90, - "name": "setup", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 187, - "src": "1677:5:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_uint8_$_t_address_$_t_bytes_memory_ptr_$returns$__$", - "typeString": "function (address[] memory,uint8,address,bytes memory)" - } - }, - "id": 95, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1677:36:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 96, - "nodeType": "ExpressionStatement", - "src": "1677:36:1" - } - ] - }, - "id": 98, - "implemented": true, - "isConstructor": true, - "isDeclaredConst": false, - "modifiers": [], - "name": "GnosisSafe", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 88, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 81, - "name": "_owners", - "nodeType": "VariableDeclaration", - "scope": 98, - "src": "1587:17:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - }, - "typeName": { - "baseType": { - "id": 79, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1587:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 80, - "length": null, - "nodeType": "ArrayTypeName", - "src": "1587:9:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 83, - "name": "_threshold", - "nodeType": "VariableDeclaration", - "scope": 98, - "src": "1606:16:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 82, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "1606:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 85, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 98, - "src": "1624:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 84, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1624:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 87, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 98, - "src": "1636:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 86, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "1636:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1586:61:1" - }, - "payable": false, - "returnParameters": { - "id": 89, - "nodeType": "ParameterList", - "parameters": [], - "src": "1667:0:1" - }, - "scope": 963, - "src": "1567:153:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 186, - "nodeType": "Block", - "src": "2134:1046:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 113, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 111, - "name": "threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 35, - "src": "2276:9:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 112, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2289:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2276:14:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 110, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "2268:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 114, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2268:23:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 115, - "nodeType": "ExpressionStatement", - "src": "2268:23:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 120, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 117, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 103, - "src": "2383:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": "<=", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 118, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 101, - "src": "2397:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 119, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2397:14:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2383:28:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 116, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "2375:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 121, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2375:37:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 122, - "nodeType": "ExpressionStatement", - "src": "2375:37:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 126, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 124, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 103, - "src": "2482:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 125, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2496:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "2482:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 123, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "2474:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 127, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2474:24:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 128, - "nodeType": "ExpressionStatement", - "src": "2474:24:1" - }, - { - "body": { - "id": 165, - "nodeType": "Block", - "src": "2590:221:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 145, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 141, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 101, - "src": "2657:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 143, - "indexExpression": { - "argumentTypes": null, - "id": 142, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 130, - "src": "2665:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2657:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 144, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2671:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2657:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 140, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "2649:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 146, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2649:24:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 147, - "nodeType": "ExpressionStatement", - "src": "2649:24:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 154, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "2739:20:1", - "subExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 149, - "name": "isOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 47, - "src": "2740:7:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 153, - "indexExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 150, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 101, - "src": "2748:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 152, - "indexExpression": { - "argumentTypes": null, - "id": 151, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 130, - "src": "2756:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2748:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2740:19:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 148, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "2731:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 155, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2731:29:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 156, - "nodeType": "ExpressionStatement", - "src": "2731:29:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 163, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 157, - "name": "isOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 47, - "src": "2774:7:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 161, - "indexExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 158, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 101, - "src": "2782:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 160, - "indexExpression": { - "argumentTypes": null, - "id": 159, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 130, - "src": "2790:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2782:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "2774:19:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 162, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2796:4:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "2774:26:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 164, - "nodeType": "ExpressionStatement", - "src": "2774:26:1" - } - ] - }, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 136, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 133, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 130, - "src": "2565:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 134, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 101, - "src": "2569:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 135, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2569:14:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2565:18:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 166, - "initializationExpression": { - "assignments": [ - 130 - ], - "declarations": [ - { - "constant": false, - "id": 130, - "name": "i", - "nodeType": "VariableDeclaration", - "scope": 187, - "src": "2550:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 129, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2550:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 132, - "initialValue": { - "argumentTypes": null, - "hexValue": "30", - "id": 131, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2562:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "2550:13:1" - }, - "loopExpression": { - "expression": { - "argumentTypes": null, - "id": 138, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "2585:3:1", - "subExpression": { - "argumentTypes": null, - "id": 137, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 130, - "src": "2585:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 139, - "nodeType": "ExpressionStatement", - "src": "2585:3:1" - }, - "nodeType": "ForStatement", - "src": "2545:266:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 169, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 167, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "2820:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 168, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 101, - "src": "2829:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "src": "2820:16:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 170, - "nodeType": "ExpressionStatement", - "src": "2820:16:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 173, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 171, - "name": "threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 35, - "src": "2846:9:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 172, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 103, - "src": "2858:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "2846:22:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "id": 174, - "nodeType": "ExpressionStatement", - "src": "2846:22:1" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 177, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 175, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 105, - "src": "3042:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 176, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3048:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "3042:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 185, - "nodeType": "IfStatement", - "src": "3038:135:1", - "trueBody": { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 180, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 105, - "src": "3163:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 181, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 107, - "src": "3167:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 179, - "name": "executeDelegateCall", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 815, - "src": "3143:19:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bool_$", - "typeString": "function (address,bytes memory) returns (bool)" - } - }, - "id": 182, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3143:29:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 178, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "3135:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 183, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3135:38:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 184, - "nodeType": "ExpressionStatement", - "src": "3135:38:1" - } - } - ] - }, - "id": 187, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "setup", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 108, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 101, - "name": "_owners", - "nodeType": "VariableDeclaration", - "scope": 187, - "src": "2054:17:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - }, - "typeName": { - "baseType": { - "id": 99, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2054:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 100, - "length": null, - "nodeType": "ArrayTypeName", - "src": "2054:9:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 103, - "name": "_threshold", - "nodeType": "VariableDeclaration", - "scope": 187, - "src": "2073:16:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 102, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "2073:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 105, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 187, - "src": "2091:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 104, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2091:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 107, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 187, - "src": "2103:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 106, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "2103:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "2053:61:1" - }, - "payable": false, - "returnParameters": { - "id": 109, - "nodeType": "ParameterList", - "parameters": [], - "src": "2134:0:1" - }, - "scope": 963, - "src": "2039:1141:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 206, - "nodeType": "Block", - "src": "3414:132:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 199, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 196, - "name": "_masterCopy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 189, - "src": "3487:11:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - ], - "id": 195, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "3479:7:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 197, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3479:20:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 198, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3503:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "3479:25:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 194, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "3471:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 200, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3471:34:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 201, - "nodeType": "ExpressionStatement", - "src": "3471:34:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 204, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 202, - "name": "masterCopy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33, - "src": "3515:10:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 203, - "name": "_masterCopy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 189, - "src": "3528:11:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - "src": "3515:24:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - "id": 205, - "nodeType": "ExpressionStatement", - "src": "3515:24:1" - } - ] - }, - "id": 207, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [], - "id": 192, - "modifierName": { - "argumentTypes": null, - "id": 191, - "name": "onlyWallet", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 74, - "src": "3399:10:1", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "3399:10:1" - } - ], - "name": "changeMasterCopy", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 190, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 189, - "name": "_masterCopy", - "nodeType": "VariableDeclaration", - "scope": 207, - "src": "3352:22:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - }, - "typeName": { - "contractScope": null, - "id": 188, - "name": "GnosisSafe", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 963, - "src": "3352:10:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "3351:24:1" - }, - "payable": false, - "returnParameters": { - "id": 193, - "nodeType": "ParameterList", - "parameters": [], - "src": "3414:0:1" - }, - "scope": 963, - "src": "3326:220:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 249, - "nodeType": "Block", - "src": "3875:342:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 219, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 217, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 209, - "src": "3934:5:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 218, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3943:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "3934:10:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 216, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "3926:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 220, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3926:19:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 221, - "nodeType": "ExpressionStatement", - "src": "3926:19:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 226, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "4003:15:1", - "subExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 223, - "name": "isOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 47, - "src": "4004:7:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 225, - "indexExpression": { - "argumentTypes": null, - "id": 224, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 209, - "src": "4012:5:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4004:14:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 222, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "3995:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 227, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3995:24:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 228, - "nodeType": "ExpressionStatement", - "src": "3995:24:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 232, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 209, - "src": "4041:5:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "expression": { - "argumentTypes": null, - "id": 229, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "4029:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 231, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "push", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "4029:11:1", - "typeDescriptions": { - "typeIdentifier": "t_function_arraypush_nonpayable$_t_address_$returns$_t_uint256_$", - "typeString": "function (address) returns (uint256)" - } - }, - "id": 233, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4029:18:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 234, - "nodeType": "ExpressionStatement", - "src": "4029:18:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 239, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 235, - "name": "isOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 47, - "src": "4057:7:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 237, - "indexExpression": { - "argumentTypes": null, - "id": 236, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 209, - "src": "4065:5:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "4057:14:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 238, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4074:4:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "4057:21:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 240, - "nodeType": "ExpressionStatement", - "src": "4057:21:1" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 243, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 241, - "name": "threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 35, - "src": "4146:9:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "id": 242, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 211, - "src": "4159:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "4146:23:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 248, - "nodeType": "IfStatement", - "src": "4142:68:1", - "trueBody": { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 245, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 211, - "src": "4199:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - ], - "id": 244, - "name": "changeThreshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 385, - "src": "4183:15:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$returns$__$", - "typeString": "function (uint8)" - } - }, - "id": 246, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4183:27:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 247, - "nodeType": "ExpressionStatement", - "src": "4183:27:1" - } - } - ] - }, - "id": 250, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [], - "id": 214, - "modifierName": { - "argumentTypes": null, - "id": 213, - "name": "onlyWallet", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 74, - "src": "3860:10:1", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "3860:10:1" - } - ], - "name": "addOwner", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 212, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 209, - "name": "owner", - "nodeType": "VariableDeclaration", - "scope": 250, - "src": "3804:13:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 208, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3804:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 211, - "name": "_threshold", - "nodeType": "VariableDeclaration", - "scope": 250, - "src": "3819:16:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 210, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "3819:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "3803:33:1" - }, - "payable": false, - "returnParameters": { - "id": 215, - "nodeType": "ParameterList", - "parameters": [], - "src": "3875:0:1" - }, - "scope": 963, - "src": "3786:431:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 308, - "nodeType": "Block", - "src": "4660:487:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 267, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 265, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 262, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "4755:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 263, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "4755:13:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 264, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4771:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "4755:17:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "argumentTypes": null, - "id": 266, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 256, - "src": "4776:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "4755:31:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 261, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "4747:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 268, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4747:40:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 269, - "nodeType": "ExpressionStatement", - "src": "4747:40:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 275, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 271, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "4867:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 273, - "indexExpression": { - "argumentTypes": null, - "id": 272, - "name": "ownerIndex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 252, - "src": "4874:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4867:18:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 274, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 254, - "src": "4889:5:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "4867:27:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 270, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "4859:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 276, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4859:36:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 277, - "nodeType": "ExpressionStatement", - "src": "4859:36:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 282, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 278, - "name": "isOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 47, - "src": "4905:7:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 280, - "indexExpression": { - "argumentTypes": null, - "id": 279, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 254, - "src": "4913:5:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "4905:14:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "66616c7365", - "id": 281, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4922:5:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "src": "4905:22:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 283, - "nodeType": "ExpressionStatement", - "src": "4905:22:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 293, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 284, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "4937:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 286, - "indexExpression": { - "argumentTypes": null, - "id": 285, - "name": "ownerIndex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 252, - "src": "4944:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "4937:18:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 287, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "4958:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 292, - "indexExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 291, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 288, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "4965:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 289, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "4965:13:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 290, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4981:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "4965:17:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4958:25:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "4937:46:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 294, - "nodeType": "ExpressionStatement", - "src": "4937:46:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 298, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "--", - "prefix": false, - "src": "4993:15:1", - "subExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 295, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "4993:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 297, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "4993:13:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 299, - "nodeType": "ExpressionStatement", - "src": "4993:15:1" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 302, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 300, - "name": "threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 35, - "src": "5076:9:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "id": 301, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 256, - "src": "5089:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "5076:23:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 307, - "nodeType": "IfStatement", - "src": "5072:68:1", - "trueBody": { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 304, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 256, - "src": "5129:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - ], - "id": 303, - "name": "changeThreshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 385, - "src": "5113:15:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$returns$__$", - "typeString": "function (uint8)" - } - }, - "id": 305, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5113:27:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 306, - "nodeType": "ExpressionStatement", - "src": "5113:27:1" - } - } - ] - }, - "id": 309, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [], - "id": 259, - "modifierName": { - "argumentTypes": null, - "id": 258, - "name": "onlyWallet", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 74, - "src": "4645:10:1", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "4645:10:1" - } - ], - "name": "removeOwner", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 257, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 252, - "name": "ownerIndex", - "nodeType": "VariableDeclaration", - "scope": 309, - "src": "4569:18:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 251, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4569:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 254, - "name": "owner", - "nodeType": "VariableDeclaration", - "scope": 309, - "src": "4589:13:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 253, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "4589:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 256, - "name": "_threshold", - "nodeType": "VariableDeclaration", - "scope": 309, - "src": "4604:16:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 255, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "4604:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "4568:53:1" - }, - "payable": false, - "returnParameters": { - "id": 260, - "nodeType": "ParameterList", - "parameters": [], - "src": "4660:0:1" - }, - "scope": 963, - "src": "4548:599:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 359, - "nodeType": "Block", - "src": "5587:383:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 323, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 321, - "name": "newOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 315, - "src": "5646:8:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 322, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5658:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "5646:13:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 320, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "5638:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 324, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5638:22:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 325, - "nodeType": "ExpressionStatement", - "src": "5638:22:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 330, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "5718:18:1", - "subExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 327, - "name": "isOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 47, - "src": "5719:7:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 329, - "indexExpression": { - "argumentTypes": null, - "id": 328, - "name": "newOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 315, - "src": "5727:8:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "5719:17:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 326, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "5710:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 331, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5710:27:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 332, - "nodeType": "ExpressionStatement", - "src": "5710:27:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 338, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 334, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "5817:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 336, - "indexExpression": { - "argumentTypes": null, - "id": 335, - "name": "oldOwnerIndex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 311, - "src": "5824:13:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "5817:21:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 337, - "name": "oldOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 313, - "src": "5842:8:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "5817:33:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 333, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "5809:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 339, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5809:42:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 340, - "nodeType": "ExpressionStatement", - "src": "5809:42:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 345, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 341, - "name": "isOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 47, - "src": "5861:7:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 343, - "indexExpression": { - "argumentTypes": null, - "id": 342, - "name": "oldOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 313, - "src": "5869:8:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "5861:17:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "66616c7365", - "id": 344, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5881:5:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "src": "5861:25:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 346, - "nodeType": "ExpressionStatement", - "src": "5861:25:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 351, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 347, - "name": "isOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 47, - "src": "5896:7:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 349, - "indexExpression": { - "argumentTypes": null, - "id": 348, - "name": "newOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 315, - "src": "5904:8:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "5896:17:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 350, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5917:4:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "5896:25:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 352, - "nodeType": "ExpressionStatement", - "src": "5896:25:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 357, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 353, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "5931:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 355, - "indexExpression": { - "argumentTypes": null, - "id": 354, - "name": "oldOwnerIndex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 311, - "src": "5938:13:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "5931:21:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 356, - "name": "newOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 315, - "src": "5955:8:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "5931:32:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 358, - "nodeType": "ExpressionStatement", - "src": "5931:32:1" - } - ] - }, - "id": 360, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [], - "id": 318, - "modifierName": { - "argumentTypes": null, - "id": 317, - "name": "onlyWallet", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 74, - "src": "5572:10:1", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "5572:10:1" - } - ], - "name": "replaceOwner", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 316, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 311, - "name": "oldOwnerIndex", - "nodeType": "VariableDeclaration", - "scope": 360, - "src": "5490:21:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 310, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "5490:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 313, - "name": "oldOwner", - "nodeType": "VariableDeclaration", - "scope": 360, - "src": "5513:16:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 312, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "5513:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 315, - "name": "newOwner", - "nodeType": "VariableDeclaration", - "scope": 360, - "src": "5531:16:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 314, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "5531:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "5489:59:1" - }, - "payable": false, - "returnParameters": { - "id": 319, - "nodeType": "ParameterList", - "parameters": [], - "src": "5587:0:1" - }, - "scope": 963, - "src": "5468:502:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 384, - "nodeType": "Block", - "src": "6240:239:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 371, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 368, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 362, - "src": "6326:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": "<=", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 369, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "6340:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 370, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "6340:13:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "6326:27:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 367, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "6318:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 372, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6318:36:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 373, - "nodeType": "ExpressionStatement", - "src": "6318:36:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 377, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 375, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 362, - "src": "6424:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 376, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6438:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "6424:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 374, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "6416:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 378, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6416:24:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 379, - "nodeType": "ExpressionStatement", - "src": "6416:24:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 382, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 380, - "name": "threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 35, - "src": "6450:9:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 381, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 362, - "src": "6462:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "6450:22:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "id": 383, - "nodeType": "ExpressionStatement", - "src": "6450:22:1" - } - ] - }, - "id": 385, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [], - "id": 365, - "modifierName": { - "argumentTypes": null, - "id": 364, - "name": "onlyWallet", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 74, - "src": "6225:10:1", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "6225:10:1" - } - ], - "name": "changeThreshold", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 363, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 362, - "name": "_threshold", - "nodeType": "VariableDeclaration", - "scope": 385, - "src": "6184:16:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 361, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "6184:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "6183:18:1" - }, - "payable": false, - "returnParameters": { - "id": 366, - "nodeType": "ParameterList", - "parameters": [], - "src": "6240:0:1" - }, - "scope": 963, - "src": "6159:320:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 419, - "nodeType": "Block", - "src": "6737:255:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 397, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 394, - "name": "extension", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 387, - "src": "6808:9:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - ], - "id": 393, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "6800:7:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 395, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6800:18:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 396, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6822:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "6800:23:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 392, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "6792:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 398, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6792:32:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 399, - "nodeType": "ExpressionStatement", - "src": "6792:32:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 404, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "6886:23:1", - "subExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 401, - "name": "isExtension", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51, - "src": "6887:11:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 403, - "indexExpression": { - "argumentTypes": null, - "id": 402, - "name": "extension", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 387, - "src": "6899:9:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "6887:22:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 400, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "6878:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 405, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6878:32:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 406, - "nodeType": "ExpressionStatement", - "src": "6878:32:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 410, - "name": "extension", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 387, - "src": "6936:9:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - ], - "expression": { - "argumentTypes": null, - "id": 407, - "name": "extensions", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 43, - "src": "6920:10:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage", - "typeString": "contract Extension[] storage ref" - } - }, - "id": 409, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "push", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "6920:15:1", - "typeDescriptions": { - "typeIdentifier": "t_function_arraypush_nonpayable$_t_contract$_Extension_$18_$returns$_t_uint256_$", - "typeString": "function (contract Extension) returns (uint256)" - } - }, - "id": 411, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6920:26:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 412, - "nodeType": "ExpressionStatement", - "src": "6920:26:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 417, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 413, - "name": "isExtension", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51, - "src": "6956:11:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 415, - "indexExpression": { - "argumentTypes": null, - "id": 414, - "name": "extension", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 387, - "src": "6968:9:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "6956:22:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 416, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6981:4:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "6956:29:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 418, - "nodeType": "ExpressionStatement", - "src": "6956:29:1" - } - ] - }, - "id": 420, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [], - "id": 390, - "modifierName": { - "argumentTypes": null, - "id": 389, - "name": "onlyWallet", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 74, - "src": "6722:10:1", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "6722:10:1" - } - ], - "name": "addExtension", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 388, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 387, - "name": "extension", - "nodeType": "VariableDeclaration", - "scope": 420, - "src": "6678:19:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - }, - "typeName": { - "contractScope": null, - "id": 386, - "name": "Extension", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 18, - "src": "6678:9:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "6677:21:1" - }, - "payable": false, - "returnParameters": { - "id": 391, - "nodeType": "ParameterList", - "parameters": [], - "src": "6737:0:1" - }, - "scope": 963, - "src": "6656:336:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 459, - "nodeType": "Block", - "src": "7372:276:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - }, - "id": 434, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 430, - "name": "extensions", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 43, - "src": "7460:10:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage", - "typeString": "contract Extension[] storage ref" - } - }, - "id": 432, - "indexExpression": { - "argumentTypes": null, - "id": 431, - "name": "extensionIndex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 422, - "src": "7471:14:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "7460:26:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 433, - "name": "extension", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 424, - "src": "7490:9:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "src": "7460:39:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 429, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "7452:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 435, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7452:48:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 436, - "nodeType": "ExpressionStatement", - "src": "7452:48:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 441, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 437, - "name": "isExtension", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51, - "src": "7510:11:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 439, - "indexExpression": { - "argumentTypes": null, - "id": 438, - "name": "extension", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 424, - "src": "7522:9:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "7510:22:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "66616c7365", - "id": 440, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7535:5:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "src": "7510:30:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 442, - "nodeType": "ExpressionStatement", - "src": "7510:30:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 452, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 443, - "name": "extensions", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 43, - "src": "7550:10:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage", - "typeString": "contract Extension[] storage ref" - } - }, - "id": 445, - "indexExpression": { - "argumentTypes": null, - "id": 444, - "name": "extensionIndex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 422, - "src": "7561:14:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "7550:26:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 446, - "name": "extensions", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 43, - "src": "7579:10:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage", - "typeString": "contract Extension[] storage ref" - } - }, - "id": 451, - "indexExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 450, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 447, - "name": "extensions", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 43, - "src": "7590:10:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage", - "typeString": "contract Extension[] storage ref" - } - }, - "id": 448, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "7590:17:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 449, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7610:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "7590:21:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "7579:33:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "src": "7550:62:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "id": 453, - "nodeType": "ExpressionStatement", - "src": "7550:62:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 457, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "--", - "prefix": false, - "src": "7622:19:1", - "subExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 454, - "name": "extensions", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 43, - "src": "7622:10:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage", - "typeString": "contract Extension[] storage ref" - } - }, - "id": 456, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "7622:17:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 458, - "nodeType": "ExpressionStatement", - "src": "7622:19:1" - } - ] - }, - "id": 460, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [], - "id": 427, - "modifierName": { - "argumentTypes": null, - "id": 426, - "name": "onlyWallet", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 74, - "src": "7357:10:1", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "7357:10:1" - } - ], - "name": "removeExtension", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 425, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 422, - "name": "extensionIndex", - "nodeType": "VariableDeclaration", - "scope": 460, - "src": "7289:22:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 421, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "7289:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 424, - "name": "extension", - "nodeType": "VariableDeclaration", - "scope": 460, - "src": "7313:19:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - }, - "typeName": { - "contractScope": null, - "id": 423, - "name": "Extension", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 18, - "src": "7313:9:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "7288:45:1" - }, - "payable": false, - "returnParameters": { - "id": 428, - "nodeType": "ParameterList", - "parameters": [], - "src": "7372:0:1" - }, - "scope": 963, - "src": "7264:384:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 509, - "nodeType": "Block", - "src": "8102:383:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 474, - "name": "isOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 47, - "src": "8190:7:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 477, - "indexExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 475, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2089, - "src": "8198:3:1", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 476, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "8198:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8190:19:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 473, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "8182:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 478, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8182:28:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 479, - "nodeType": "ExpressionStatement", - "src": "8182:28:1" - }, - { - "assignments": [ - 481 - ], - "declarations": [ - { - "constant": false, - "id": 481, - "name": "transactionHash", - "nodeType": "VariableDeclaration", - "scope": 510, - "src": "8220:23:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 480, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "8220:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 489, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 483, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 462, - "src": "8265:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 484, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 464, - "src": "8269:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 485, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 466, - "src": "8276:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "id": 486, - "name": "operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 468, - "src": "8282:9:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - { - "argumentTypes": null, - "id": 487, - "name": "nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 37, - "src": "8293:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 482, - "name": "getTransactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 852, - "src": "8246:18:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$61_$_t_uint256_$returns$_t_bytes32_$", - "typeString": "function (address,uint256,bytes memory,enum GnosisSafe.Operation,uint256) view returns (bytes32)" - } - }, - "id": 488, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8246:53:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "8220:79:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 497, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "8379:41:1", - "subExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 491, - "name": "isConfirmed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 57, - "src": "8380:11:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$", - "typeString": "mapping(address => mapping(bytes32 => bool))" - } - }, - "id": 494, - "indexExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 492, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2089, - "src": "8392:3:1", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 493, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "8392:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8380:23:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 496, - "indexExpression": { - "argumentTypes": null, - "id": 495, - "name": "transactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 481, - "src": "8404:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8380:40:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 490, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "8371:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 498, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8371:50:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 499, - "nodeType": "ExpressionStatement", - "src": "8371:50:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 507, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 500, - "name": "isConfirmed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 57, - "src": "8431:11:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$", - "typeString": "mapping(address => mapping(bytes32 => bool))" - } - }, - "id": 504, - "indexExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 501, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2089, - "src": "8443:3:1", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 502, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "8443:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8431:23:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 505, - "indexExpression": { - "argumentTypes": null, - "id": 503, - "name": "transactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 481, - "src": "8455:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "8431:40:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 506, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8474:4:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "8431:47:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 508, - "nodeType": "ExpressionStatement", - "src": "8431:47:1" - } - ] - }, - "id": 510, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "confirmTransaction", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 471, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 462, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 510, - "src": "8007:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 461, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "8007:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 464, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 510, - "src": "8019:13:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 463, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "8019:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 466, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 510, - "src": "8034:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 465, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "8034:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 468, - "name": "operation", - "nodeType": "VariableDeclaration", - "scope": 510, - "src": "8046:19:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - }, - "typeName": { - "contractScope": null, - "id": 467, - "name": "Operation", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 61, - "src": "8046:9:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 470, - "name": "_nonce", - "nodeType": "VariableDeclaration", - "scope": 510, - "src": "8067:14:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 469, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "8067:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "8006:76:1" - }, - "payable": false, - "returnParameters": { - "id": 472, - "nodeType": "ParameterList", - "parameters": [], - "src": "8102:0:1" - }, - "scope": 963, - "src": "7979:506:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 697, - "nodeType": "Block", - "src": "9404:1349:1", - "statements": [ - { - "assignments": [ - 537 - ], - "declarations": [ - { - "constant": false, - "id": 537, - "name": "transactionHash", - "nodeType": "VariableDeclaration", - "scope": 698, - "src": "9414:23:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 536, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "9414:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 545, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 539, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 512, - "src": "9459:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 540, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 514, - "src": "9463:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 541, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 516, - "src": "9470:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "id": 542, - "name": "operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 518, - "src": "9476:9:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - { - "argumentTypes": null, - "id": 543, - "name": "nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 37, - "src": "9487:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 538, - "name": "getTransactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 852, - "src": "9440:18:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$61_$_t_uint256_$returns$_t_bytes32_$", - "typeString": "function (address,uint256,bytes memory,enum GnosisSafe.Operation,uint256) view returns (bytes32)" - } - }, - "id": 544, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9440:53:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "9414:79:1" - }, - { - "assignments": [ - 547 - ], - "declarations": [ - { - "constant": false, - "id": 547, - "name": "lastOwner", - "nodeType": "VariableDeclaration", - "scope": 698, - "src": "9555:17:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 546, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "9555:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 551, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30", - "id": 549, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9583:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 548, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "9575:7:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 550, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9575:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "9555:30:1" - }, - { - "assignments": [], - "declarations": [ - { - "constant": false, - "id": 553, - "name": "currentOwner", - "nodeType": "VariableDeclaration", - "scope": 698, - "src": "9595:20:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 552, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "9595:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 554, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "9595:20:1" - }, - { - "assignments": [], - "declarations": [ - { - "constant": false, - "id": 556, - "name": "i", - "nodeType": "VariableDeclaration", - "scope": 698, - "src": "9625:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 555, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "9625:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 557, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "9625:9:1" - }, - { - "assignments": [ - 559 - ], - "declarations": [ - { - "constant": false, - "id": 559, - "name": "j", - "nodeType": "VariableDeclaration", - "scope": 698, - "src": "9644:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 558, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "9644:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 561, - "initialValue": { - "argumentTypes": null, - "hexValue": "30", - "id": 560, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9656:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "9644:13:1" - }, - { - "body": { - "id": 648, - "nodeType": "Block", - "src": "9741:619:1", - "statements": [ - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 581, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 575, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 572, - "name": "indices", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 533, - "src": "9843:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", - "typeString": "uint256[] memory" - } - }, - "id": 573, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "9843:14:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "id": 574, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 559, - "src": "9860:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "9843:18:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 580, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 576, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "9865:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 577, - "name": "indices", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 533, - "src": "9870:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", - "typeString": "uint256[] memory" - } - }, - "id": 579, - "indexExpression": { - "argumentTypes": null, - "id": 578, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 559, - "src": "9878:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9870:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "9865:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "9843:37:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "expression": { - "argumentTypes": null, - "id": 629, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 610, - "name": "currentOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 553, - "src": "10155:12:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 612, - "name": "transactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 537, - "src": "10180:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 613, - "name": "v", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 521, - "src": "10197:1:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", - "typeString": "uint8[] memory" - } - }, - "id": 617, - "indexExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 616, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 614, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "10199:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "id": 615, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 559, - "src": "10201:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "10199:3:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "10197:6:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 618, - "name": "r", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 524, - "src": "10205:1:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[] memory" - } - }, - "id": 622, - "indexExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 621, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 619, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "10207:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "id": 620, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 559, - "src": "10209:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "10207:3:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "10205:6:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 623, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 527, - "src": "10213:1:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[] memory" - } - }, - "id": 627, - "indexExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 626, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 624, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "10215:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "id": 625, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 559, - "src": "10217:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "10215:3:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "10213:6:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 611, - "name": "ecrecover", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2082, - "src": "10170:9:1", - "typeDescriptions": { - "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", - "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)" - } - }, - "id": 628, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "10170:50:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "10155:65:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 630, - "nodeType": "ExpressionStatement", - "src": "10155:65:1" - }, - "id": 631, - "nodeType": "IfStatement", - "src": "9839:381:1", - "trueBody": { - "id": 609, - "nodeType": "Block", - "src": "9882:177:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 596, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 588, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 583, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2089, - "src": "9908:3:1", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 584, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "9908:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 585, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 530, - "src": "9922:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 587, - "indexExpression": { - "argumentTypes": null, - "id": 586, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 559, - "src": "9930:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9922:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "9908:24:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "||", - "rightExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 589, - "name": "isConfirmed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 57, - "src": "9936:11:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$", - "typeString": "mapping(address => mapping(bytes32 => bool))" - } - }, - "id": 593, - "indexExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 590, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 530, - "src": "9948:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 592, - "indexExpression": { - "argumentTypes": null, - "id": 591, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 559, - "src": "9956:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9948:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9936:23:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 595, - "indexExpression": { - "argumentTypes": null, - "id": 594, - "name": "transactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 537, - "src": "9960:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9936:40:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "9908:68:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 582, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "9900:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 597, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9900:77:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 598, - "nodeType": "ExpressionStatement", - "src": "9900:77:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 603, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 599, - "name": "currentOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 553, - "src": "9995:12:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 600, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 530, - "src": "10010:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 602, - "indexExpression": { - "argumentTypes": null, - "id": 601, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 559, - "src": "10018:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "10010:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "9995:25:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 604, - "nodeType": "ExpressionStatement", - "src": "9995:25:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 607, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 605, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 559, - "src": "10038:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "+=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "31", - "id": 606, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "10043:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "10038:6:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 608, - "nodeType": "ExpressionStatement", - "src": "10038:6:1" - } - ] - } - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 633, - "name": "isOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 47, - "src": "10242:7:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 635, - "indexExpression": { - "argumentTypes": null, - "id": 634, - "name": "currentOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 553, - "src": "10250:12:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "10242:21:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 632, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "10234:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 636, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "10234:30:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 637, - "nodeType": "ExpressionStatement", - "src": "10234:30:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 641, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 639, - "name": "currentOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 553, - "src": "10286:12:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "id": 640, - "name": "lastOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 547, - "src": "10301:9:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "10286:24:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 638, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "10278:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 642, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "10278:33:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 643, - "nodeType": "ExpressionStatement", - "src": "10278:33:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 646, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 644, - "name": "lastOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 547, - "src": "10325:9:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 645, - "name": "currentOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 553, - "src": "10337:12:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "10325:24:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 647, - "nodeType": "ExpressionStatement", - "src": "10325:24:1" - } - ] - }, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 568, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 566, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "9721:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, - "id": 567, - "name": "threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 35, - "src": "9725:9:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "9721:13:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 649, - "initializationExpression": { - "expression": { - "argumentTypes": null, - "id": 564, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 562, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "9714:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "30", - "id": 563, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9718:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "9714:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 565, - "nodeType": "ExpressionStatement", - "src": "9714:5:1" - }, - "loopExpression": { - "expression": { - "argumentTypes": null, - "id": 570, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "9736:3:1", - "subExpression": { - "argumentTypes": null, - "id": 569, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "9736:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 571, - "nodeType": "ExpressionStatement", - "src": "9736:3:1" - }, - "nodeType": "ForStatement", - "src": "9709:651:1" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 653, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 650, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 530, - "src": "10419:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 651, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "10419:14:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 652, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "10436:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "10419:18:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 685, - "nodeType": "IfStatement", - "src": "10415:216:1", - "trueBody": { - "id": 684, - "nodeType": "Block", - "src": "10439:192:1", - "statements": [ - { - "body": { - "id": 682, - "nodeType": "Block", - "src": "10490:131:1", - "statements": [ - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 670, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 665, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2089, - "src": "10512:3:1", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 666, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "10512:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 667, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 530, - "src": "10526:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 669, - "indexExpression": { - "argumentTypes": null, - "id": 668, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "10534:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "10526:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "10512:24:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 681, - "nodeType": "IfStatement", - "src": "10508:98:1", - "trueBody": { - "expression": { - "argumentTypes": null, - "id": 679, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 671, - "name": "isConfirmed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 57, - "src": "10558:11:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$", - "typeString": "mapping(address => mapping(bytes32 => bool))" - } - }, - "id": 676, - "indexExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 672, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 530, - "src": "10570:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 674, - "indexExpression": { - "argumentTypes": null, - "id": 673, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "10578:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "10570:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "10558:23:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 677, - "indexExpression": { - "argumentTypes": null, - "id": 675, - "name": "transactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 537, - "src": "10582:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "10558:40:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "66616c7365", - "id": 678, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "10601:5:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "src": "10558:48:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 680, - "nodeType": "ExpressionStatement", - "src": "10558:48:1" - } - } - ] - }, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 661, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 658, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "10465:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 659, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 530, - "src": "10469:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 660, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "10469:14:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "10465:18:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 683, - "initializationExpression": { - "expression": { - "argumentTypes": null, - "id": 656, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 654, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "10458:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "30", - "id": 655, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "10462:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "10458:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 657, - "nodeType": "ExpressionStatement", - "src": "10458:5:1" - }, - "loopExpression": { - "expression": { - "argumentTypes": null, - "id": 663, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "10485:3:1", - "subExpression": { - "argumentTypes": null, - "id": 662, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "10485:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 664, - "nodeType": "ExpressionStatement", - "src": "10485:3:1" - }, - "nodeType": "ForStatement", - "src": "10453:168:1" - } - ] - } - }, - { - "expression": { - "argumentTypes": null, - "id": 688, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 686, - "name": "nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 37, - "src": "10691:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "+=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "31", - "id": 687, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "10700:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "10691:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 689, - "nodeType": "ExpressionStatement", - "src": "10691:10:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 691, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 512, - "src": "10719:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 692, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 514, - "src": "10723:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 693, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 516, - "src": "10730:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "id": 694, - "name": "operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 518, - "src": "10736:9:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - ], - "id": 690, - "name": "execute", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 791, - "src": "10711:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$61_$returns$__$", - "typeString": "function (address,uint256,bytes memory,enum GnosisSafe.Operation)" - } - }, - "id": 695, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "10711:35:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 696, - "nodeType": "ExpressionStatement", - "src": "10711:35:1" - } - ] - }, - "id": 698, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "executeTransaction", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 534, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 512, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 698, - "src": "9250:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 511, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "9250:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 514, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 698, - "src": "9262:13:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 513, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "9262:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 516, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 698, - "src": "9277:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 515, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "9277:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 518, - "name": "operation", - "nodeType": "VariableDeclaration", - "scope": 698, - "src": "9289:19:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - }, - "typeName": { - "contractScope": null, - "id": 517, - "name": "Operation", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 61, - "src": "9289:9:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 521, - "name": "v", - "nodeType": "VariableDeclaration", - "scope": 698, - "src": "9310:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", - "typeString": "uint8[] memory" - }, - "typeName": { - "baseType": { - "id": 519, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "9310:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "id": 520, - "length": null, - "nodeType": "ArrayTypeName", - "src": "9310:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr", - "typeString": "uint8[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 524, - "name": "r", - "nodeType": "VariableDeclaration", - "scope": 698, - "src": "9321:11:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[] memory" - }, - "typeName": { - "baseType": { - "id": 522, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "9321:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 523, - "length": null, - "nodeType": "ArrayTypeName", - "src": "9321:9:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", - "typeString": "bytes32[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 527, - "name": "s", - "nodeType": "VariableDeclaration", - "scope": 698, - "src": "9334:11:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[] memory" - }, - "typeName": { - "baseType": { - "id": 525, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "9334:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 526, - "length": null, - "nodeType": "ArrayTypeName", - "src": "9334:9:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", - "typeString": "bytes32[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 530, - "name": "_owners", - "nodeType": "VariableDeclaration", - "scope": 698, - "src": "9347:17:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - }, - "typeName": { - "baseType": { - "id": 528, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "9347:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 529, - "length": null, - "nodeType": "ArrayTypeName", - "src": "9347:9:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 533, - "name": "indices", - "nodeType": "VariableDeclaration", - "scope": 698, - "src": "9366:17:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", - "typeString": "uint256[] memory" - }, - "typeName": { - "baseType": { - "id": 531, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "9366:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 532, - "length": null, - "nodeType": "ArrayTypeName", - "src": "9366:9:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", - "typeString": "uint256[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "9249:135:1" - }, - "payable": false, - "returnParameters": { - "id": 535, - "nodeType": "ParameterList", - "parameters": [], - "src": "9404:0:1" - }, - "scope": 963, - "src": "9222:1531:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 736, - "nodeType": "Block", - "src": "11304:338:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 712, - "name": "isExtension", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51, - "src": "11374:11:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 714, - "indexExpression": { - "argumentTypes": null, - "id": 713, - "name": "extension", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 708, - "src": "11386:9:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "11374:22:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 711, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "11366:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 715, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11366:31:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 716, - "nodeType": "ExpressionStatement", - "src": "11366:31:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 720, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2089, - "src": "11487:3:1", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 721, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "11487:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 722, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 700, - "src": "11499:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 723, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 702, - "src": "11503:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 724, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 704, - "src": "11510:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "id": 725, - "name": "operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 706, - "src": "11516:9:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - ], - "expression": { - "argumentTypes": null, - "id": 718, - "name": "extension", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 708, - "src": "11464:9:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "id": 719, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "isExecutable", - "nodeType": "MemberAccess", - "referencedDeclaration": 17, - "src": "11464:22:1", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$61_$returns$_t_bool_$", - "typeString": "function (address,address,uint256,bytes memory,enum GnosisSafe.Operation) external returns (bool)" - } - }, - "id": 726, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11464:62:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 717, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "11456:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 727, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11456:71:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 728, - "nodeType": "ExpressionStatement", - "src": "11456:71:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 730, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 700, - "src": "11608:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 731, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 702, - "src": "11612:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 732, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 704, - "src": "11619:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "id": 733, - "name": "operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 706, - "src": "11625:9:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - ], - "id": 729, - "name": "execute", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 791, - "src": "11600:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$61_$returns$__$", - "typeString": "function (address,uint256,bytes memory,enum GnosisSafe.Operation)" - } - }, - "id": 734, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11600:35:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 735, - "nodeType": "ExpressionStatement", - "src": "11600:35:1" - } - ] - }, - "id": 737, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "executeExtension", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 709, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 700, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 737, - "src": "11204:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 699, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "11204:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 702, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 737, - "src": "11216:13:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 701, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "11216:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 704, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 737, - "src": "11231:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 703, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "11231:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 706, - "name": "operation", - "nodeType": "VariableDeclaration", - "scope": 737, - "src": "11243:19:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - }, - "typeName": { - "contractScope": null, - "id": 705, - "name": "Operation", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 61, - "src": "11243:9:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 708, - "name": "extension", - "nodeType": "VariableDeclaration", - "scope": 737, - "src": "11264:19:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - }, - "typeName": { - "contractScope": null, - "id": 707, - "name": "Extension", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 18, - "src": "11264:9:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "11203:81:1" - }, - "payable": false, - "returnParameters": { - "id": 710, - "nodeType": "ParameterList", - "parameters": [], - "src": "11304:0:1" - }, - "scope": 963, - "src": "11178:464:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 790, - "nodeType": "Block", - "src": "11746:367:1", - "statements": [ - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - }, - "id": 751, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 748, - "name": "operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 745, - "src": "11760:9:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 749, - "name": "Operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 61, - "src": "11773:9:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_Operation_$61_$", - "typeString": "type(enum GnosisSafe.Operation)" - } - }, - "id": 750, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "Call", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "11773:14:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "src": "11760:27:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - }, - "id": 763, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 760, - "name": "operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 745, - "src": "11857:9:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 761, - "name": "Operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 61, - "src": "11870:9:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_Operation_$61_$", - "typeString": "type(enum GnosisSafe.Operation)" - } - }, - "id": 762, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "DelegateCall", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "11870:22:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "src": "11857:35:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "id": 787, - "nodeType": "Block", - "src": "11959:148:1", - "statements": [ - { - "assignments": [ - 772 - ], - "declarations": [ - { - "constant": false, - "id": 772, - "name": "newContract", - "nodeType": "VariableDeclaration", - "scope": 791, - "src": "11973:19:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 771, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "11973:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 776, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 774, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 743, - "src": "12009:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 773, - "name": "executeCreate", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 824, - "src": "11995:13:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$_t_address_$", - "typeString": "function (bytes memory) returns (address)" - } - }, - "id": 775, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11995:19:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "11973:41:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 780, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 778, - "name": "newContract", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 772, - "src": "12036:11:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 779, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "12051:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "12036:16:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 777, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "12028:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 781, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "12028:25:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 782, - "nodeType": "ExpressionStatement", - "src": "12028:25:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 784, - "name": "newContract", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 772, - "src": "12084:11:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 783, - "name": "ContractCreation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 25, - "src": "12067:16:1", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", - "typeString": "function (address)" - } - }, - "id": 785, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "12067:29:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 786, - "nodeType": "ExpressionStatement", - "src": "12067:29:1" - } - ] - }, - "id": 788, - "nodeType": "IfStatement", - "src": "11853:254:1", - "trueBody": { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 766, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 739, - "src": "11934:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 767, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 743, - "src": "11938:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 765, - "name": "executeDelegateCall", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 815, - "src": "11914:19:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bool_$", - "typeString": "function (address,bytes memory) returns (bool)" - } - }, - "id": 768, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11914:29:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 764, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "11906:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 769, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11906:38:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 770, - "nodeType": "ExpressionStatement", - "src": "11906:38:1" - } - }, - "id": 789, - "nodeType": "IfStatement", - "src": "11756:351:1", - "trueBody": { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 754, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 739, - "src": "11821:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 755, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 741, - "src": "11825:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 756, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 743, - "src": "11832:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 753, - "name": "executeCall", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 804, - "src": "11809:11:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$", - "typeString": "function (address,uint256,bytes memory) returns (bool)" - } - }, - "id": 757, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11809:28:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 752, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "11801:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 758, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11801:37:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 759, - "nodeType": "ExpressionStatement", - "src": "11801:37:1" - } - } - ] - }, - "id": 791, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "execute", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 746, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 739, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 791, - "src": "11665:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 738, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "11665:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 741, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 791, - "src": "11677:13:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 740, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "11677:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 743, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 791, - "src": "11692:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 742, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "11692:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 745, - "name": "operation", - "nodeType": "VariableDeclaration", - "scope": 791, - "src": "11704:19:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - }, - "typeName": { - "contractScope": null, - "id": 744, - "name": "Operation", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 61, - "src": "11704:9:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "11664:60:1" - }, - "payable": false, - "returnParameters": { - "id": 747, - "nodeType": "ParameterList", - "parameters": [], - "src": "11746:0:1" - }, - "scope": 963, - "src": "11648:465:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 803, - "nodeType": "Block", - "src": "12231:119:1", - "statements": [ - { - "externalReferences": [ - { - "data": { - "declaration": 797, - "isOffset": false, - "isSlot": false, - "src": "12303:4:1", - "valueSize": 1 - } - }, - { - "data": { - "declaration": 797, - "isOffset": false, - "isSlot": false, - "src": "12322:4:1", - "valueSize": 1 - } - }, - { - "success": { - "declaration": 800, - "isOffset": false, - "isSlot": false, - "src": "12264:7:1", - "valueSize": 1 - } - }, - { - "to": { - "declaration": 793, - "isOffset": false, - "isSlot": false, - "src": "12288:2:1", - "valueSize": 1 - } - }, - { - "value": { - "declaration": 795, - "isOffset": false, - "isSlot": false, - "src": "12292:5:1", - "valueSize": 1 - } - } - ], - "id": 802, - "nodeType": "InlineAssembly", - "operations": "{\n success := call(not(0), to, value, add(data, 0x20), mload(data), 0, 0)\n}", - "src": "12241:109:1" - } - ] - }, - "id": 804, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "executeCall", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 798, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 793, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 804, - "src": "12140:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 792, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "12140:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 795, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 804, - "src": "12152:13:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 794, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "12152:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 797, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 804, - "src": "12167:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 796, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "12167:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "12139:39:1" - }, - "payable": false, - "returnParameters": { - "id": 801, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 800, - "name": "success", - "nodeType": "VariableDeclaration", - "scope": 804, - "src": "12213:12:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 799, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "12213:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "12212:14:1" - }, - "scope": 963, - "src": "12119:231:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 814, - "nodeType": "Block", - "src": "12461:120:1", - "statements": [ - { - "externalReferences": [ - { - "data": { - "declaration": 808, - "isOffset": false, - "isSlot": false, - "src": "12534:4:1", - "valueSize": 1 - } - }, - { - "data": { - "declaration": 808, - "isOffset": false, - "isSlot": false, - "src": "12553:4:1", - "valueSize": 1 - } - }, - { - "success": { - "declaration": 811, - "isOffset": false, - "isSlot": false, - "src": "12494:7:1", - "valueSize": 1 - } - }, - { - "to": { - "declaration": 806, - "isOffset": false, - "isSlot": false, - "src": "12526:2:1", - "valueSize": 1 - } - } - ], - "id": 813, - "nodeType": "InlineAssembly", - "operations": "{\n success := delegatecall(not(0), to, add(data, 0x20), mload(data), 0, 0)\n}", - "src": "12471:110:1" - } - ] - }, - "id": 815, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "executeDelegateCall", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 809, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 806, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 815, - "src": "12385:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 805, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "12385:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 808, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 815, - "src": "12397:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 807, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "12397:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "12384:24:1" - }, - "payable": false, - "returnParameters": { - "id": 812, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 811, - "name": "success", - "nodeType": "VariableDeclaration", - "scope": 815, - "src": "12443:12:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 810, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "12443:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "12442:14:1" - }, - "scope": 963, - "src": "12356:225:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 823, - "nodeType": "Block", - "src": "12681:103:1", - "statements": [ - { - "externalReferences": [ - { - "data": { - "declaration": 817, - "isOffset": false, - "isSlot": false, - "src": "12762:4:1", - "valueSize": 1 - } - }, - { - "newContract": { - "declaration": 820, - "isOffset": false, - "isSlot": false, - "src": "12714:11:1", - "valueSize": 1 - } - }, - { - "data": { - "declaration": 817, - "isOffset": false, - "isSlot": false, - "src": "12743:4:1", - "valueSize": 1 - } - } - ], - "id": 822, - "nodeType": "InlineAssembly", - "operations": "{\n newContract := create(0, add(data, 0x20), mload(data))\n}", - "src": "12691:93:1" - } - ] - }, - "id": 824, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "executeCreate", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 818, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 817, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 824, - "src": "12610:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 816, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "12610:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "12609:12:1" - }, - "payable": false, - "returnParameters": { - "id": 821, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 820, - "name": "newContract", - "nodeType": "VariableDeclaration", - "scope": 824, - "src": "12656:19:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 819, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "12656:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "12655:21:1" + "id": 64, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 32, + "literals": [ + "solidity", + "0.4", + ".23" + ], + "nodeType": "PragmaDirective", + "src": "0:23:2" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", + "file": "./Module.sol", + "id": 33, + "nodeType": "ImportDirective", + "scope": 64, + "sourceUnit": 878, + "src": "24:22:2", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ModuleManager.sol", + "file": "./ModuleManager.sol", + "id": 34, + "nodeType": "ImportDirective", + "scope": 64, + "sourceUnit": 1143, + "src": "47:29:2", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", + "file": "./OwnerManager.sol", + "id": 35, + "nodeType": "ImportDirective", + "scope": 64, + "sourceUnit": 1439, + "src": "77:28:2", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 36, + "name": "ModuleManager", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1142, + "src": "345:13:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ModuleManager_$1142", + "typeString": "contract ModuleManager" + } }, - "scope": 963, - "src": "12587:197:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" + "id": 37, + "nodeType": "InheritanceSpecifier", + "src": "345:13:2" }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 38, + "name": "OwnerManager", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1438, + "src": "360:12:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_OwnerManager_$1438", + "typeString": "contract OwnerManager" + } + }, + "id": 39, + "nodeType": "InheritanceSpecifier", + "src": "360:12:2" + } + ], + "contractDependencies": [ + 1142, + 1438, + 1559 + ], + "contractKind": "contract", + "documentation": "@title Gnosis Safe - A multisignature wallet with support for modules and owners. This contract needs to be extented to add functionality to execute transactions.\n @author Stefan George - ", + "fullyImplemented": true, + "id": 63, + "linearizedBaseContracts": [ + 63, + 1438, + 1142, + 1559 + ], + "name": "GnosisSafe", + "nodeType": "ContractDefinition", + "nodes": [ { "body": { - "id": 851, + "id": 61, "nodeType": "Block", - "src": "13238:87:1", + "src": "788:206:2", "statements": [ { "expression": { @@ -23507,1028 +458,463 @@ "arguments": [ { "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30783139", - "id": 841, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "13270:4:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_25_by_1", - "typeString": "int_const 25" - }, - "value": "0x19" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_25_by_1", - "typeString": "int_const 25" - } - ], - "id": 840, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "13265:4:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes1_$", - "typeString": "type(bytes1)" - }, - "typeName": "byte" - }, - "id": 842, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "13265:10:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - } - }, - { - "argumentTypes": null, - "id": 843, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2100, - "src": "13277:4:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - { - "argumentTypes": null, - "id": 844, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 826, - "src": "13283:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 845, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 828, - "src": "13287:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 846, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 830, - "src": "13294:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "id": 847, - "name": "operation", + "id": 52, + "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 832, - "src": "13300:9:1", + "referencedDeclaration": 42, + "src": "810:7:2", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" } }, { "argumentTypes": null, - "id": 848, - "name": "_nonce", + "id": 53, + "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 834, - "src": "13311:6:1", + "referencedDeclaration": 44, + "src": "819:10:2", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_uint8", + "typeString": "uint8" } } ], "expression": { "argumentTypes": [ { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - }, - { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" }, { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_uint8", + "typeString": "uint8" } ], - "id": 839, - "name": "keccak256", + "id": 51, + "name": "setupOwners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2083, - "src": "13255:9:1", + "referencedDeclaration": 1230, + "src": "798:11:2", "typeDescriptions": { - "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", - "typeString": "function () pure returns (bytes32)" + "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_uint8_$returns$__$", + "typeString": "function (address[] memory,uint8)" } }, - "id": 849, + "id": 54, "isConstant": false, "isLValue": false, "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "13255:63:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "functionReturnParameters": 838, - "id": 850, - "nodeType": "Return", - "src": "13248:70:1" - } - ] - }, - "id": 852, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "getTransactionHash", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 835, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 826, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 852, - "src": "13104:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 825, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "13104:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 828, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 852, - "src": "13116:13:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 827, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "13116:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 830, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 852, - "src": "13131:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 829, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "13131:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 832, - "name": "operation", - "nodeType": "VariableDeclaration", - "scope": 852, - "src": "13143:19:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - }, - "typeName": { - "contractScope": null, - "id": 831, - "name": "Operation", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 61, - "src": "13143:9:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 834, - "name": "_nonce", - "nodeType": "VariableDeclaration", - "scope": 852, - "src": "13164:14:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 833, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "13164:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "13103:76:1" - }, - "payable": false, - "returnParameters": { - "id": 838, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 837, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 852, - "src": "13225:7:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 836, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "13225:7:1", + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "798:32:2", "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } }, - "value": null, - "visibility": "internal" - } - ], - "src": "13224:9:1" - }, - "scope": 963, - "src": "13076:249:1", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 860, - "nodeType": "Block", - "src": "13488:30:1", - "statements": [ + "id": 55, + "nodeType": "ExpressionStatement", + "src": "798:32:2" + }, { "expression": { "argumentTypes": null, - "id": 858, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "13505:6:1", + "arguments": [ + { + "argumentTypes": null, + "id": 57, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 46, + "src": "978:2:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 58, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 48, + "src": "982:4:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 56, + "name": "setupModules", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 926, + "src": "965:12:2", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,bytes memory)" + } + }, + "id": 59, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "965:22:2", "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } }, - "functionReturnParameters": 857, - "id": 859, - "nodeType": "Return", - "src": "13498:13:1" + "id": 60, + "nodeType": "ExpressionStatement", + "src": "965:22:2" } ] }, - "id": 861, + "documentation": "@dev Setup function sets initial storage of contract.\n @param _owners List of Safe owners.\n @param _threshold Number of required confirmations for a Safe transaction.\n @param to Contract address for optional delegate call.\n @param data Data payload for optional delegate call.", + "id": 62, "implemented": true, "isConstructor": false, - "isDeclaredConst": true, + "isDeclaredConst": false, "modifiers": [], - "name": "getOwners", + "name": "setup", "nodeType": "FunctionDefinition", "parameters": { - "id": 853, - "nodeType": "ParameterList", - "parameters": [], - "src": "13425:2:1" - }, - "payable": false, - "returnParameters": { - "id": 857, + "id": 49, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 856, - "name": "", + "id": 42, + "name": "_owners", "nodeType": "VariableDeclaration", - "scope": 861, - "src": "13473:9:1", + "scope": 62, + "src": "708:17:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" + "typeString": "address[]" }, "typeName": { "baseType": { - "id": 854, + "id": 40, "name": "address", "nodeType": "ElementaryTypeName", - "src": "13473:7:1", + "src": "708:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 855, + "id": 41, "length": null, "nodeType": "ArrayTypeName", - "src": "13473:9:1", + "src": "708:9:2", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[] storage pointer" + "typeString": "address[]" } }, "value": null, "visibility": "internal" - } - ], - "src": "13472:11:1" - }, - "scope": 963, - "src": "13407:111:1", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 869, - "nodeType": "Block", - "src": "13690:34:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 867, - "name": "extensions", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 43, - "src": "13707:10:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage", - "typeString": "contract Extension[] storage ref" - } - }, - "functionReturnParameters": 866, - "id": 868, - "nodeType": "Return", - "src": "13700:17:1" - } - ] - }, - "id": 870, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "getExtensions", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 862, - "nodeType": "ParameterList", - "parameters": [], - "src": "13625:2:1" - }, - "payable": false, - "returnParameters": { - "id": 866, - "nodeType": "ParameterList", - "parameters": [ + }, { "constant": false, - "id": 865, - "name": "", + "id": 44, + "name": "_threshold", "nodeType": "VariableDeclaration", - "scope": 870, - "src": "13673:11:1", + "scope": 62, + "src": "727:16:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_memory_ptr", - "typeString": "contract Extension[] memory" + "typeIdentifier": "t_uint8", + "typeString": "uint8" }, "typeName": { - "baseType": { - "contractScope": null, - "id": 863, - "name": "Extension", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 18, - "src": "13673:9:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "id": 864, - "length": null, - "nodeType": "ArrayTypeName", - "src": "13673:11:1", + "id": 43, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "727:5:2", "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage_ptr", - "typeString": "contract Extension[] storage pointer" + "typeIdentifier": "t_uint8", + "typeString": "uint8" } }, "value": null, "visibility": "internal" - } - ], - "src": "13672:13:1" - }, - "scope": 963, - "src": "13603:121:1", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 901, - "nodeType": "Block", - "src": "13998:162:1", - "statements": [ - { - "body": { - "id": 899, - "nodeType": "Block", - "src": "14049:105:1", - "statements": [ - { - "condition": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 888, - "name": "isConfirmed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 57, - "src": "14067:11:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$", - "typeString": "mapping(address => mapping(bytes32 => bool))" - } - }, - "id": 892, - "indexExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 889, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "14079:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 891, - "indexExpression": { - "argumentTypes": null, - "id": 890, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 878, - "src": "14086:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "14079:9:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "14067:22:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 894, - "indexExpression": { - "argumentTypes": null, - "id": 893, - "name": "transactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 872, - "src": "14090:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "14067:39:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 898, - "nodeType": "IfStatement", - "src": "14063:80:1", - "trueBody": { - "expression": { - "argumentTypes": null, - "id": 896, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "14124:19:1", - "subExpression": { - "argumentTypes": null, - "id": 895, - "name": "confirmationCount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 875, - "src": "14124:17:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 897, - "nodeType": "ExpressionStatement", - "src": "14124:19:1" - } - } - ] - }, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 884, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 881, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 878, - "src": "14025:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 882, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "14029:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 883, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "14029:13:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "14025:17:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 900, - "initializationExpression": { - "assignments": [ - 878 - ], - "declarations": [ - { - "constant": false, - "id": 878, - "name": "i", - "nodeType": "VariableDeclaration", - "scope": 902, - "src": "14013:6:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 877, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "14013:4:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 880, - "initialValue": { - "argumentTypes": null, - "hexValue": "30", - "id": 879, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "14022:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "14013:10:1" - }, - "loopExpression": { - "expression": { - "argumentTypes": null, - "id": 886, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "14044:3:1", - "subExpression": { - "argumentTypes": null, - "id": 885, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 878, - "src": "14044:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 887, - "nodeType": "ExpressionStatement", - "src": "14044:3:1" - }, - "nodeType": "ForStatement", - "src": "14008:146:1" - } - ] - }, - "id": 902, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "getConfirmationCount", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 873, - "nodeType": "ParameterList", - "parameters": [ + }, { "constant": false, - "id": 872, - "name": "transactionHash", + "id": 46, + "name": "to", "nodeType": "VariableDeclaration", - "scope": 902, - "src": "13900:23:1", + "scope": 62, + "src": "745:10:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + "typeIdentifier": "t_address", + "typeString": "address" }, "typeName": { - "id": 871, - "name": "bytes32", + "id": 45, + "name": "address", "nodeType": "ElementaryTypeName", - "src": "13900:7:1", + "src": "745:7:2", "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + "typeIdentifier": "t_address", + "typeString": "address" } }, "value": null, "visibility": "internal" - } - ], - "src": "13899:25:1" - }, - "payable": false, - "returnParameters": { - "id": 876, - "nodeType": "ParameterList", - "parameters": [ + }, { "constant": false, - "id": 875, - "name": "confirmationCount", + "id": 48, + "name": "data", "nodeType": "VariableDeclaration", - "scope": 902, - "src": "13970:22:1", + "scope": 62, + "src": "757:10:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" }, "typeName": { - "id": 874, - "name": "uint", + "id": 47, + "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "13970:4:1", + "src": "757:5:2", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" } }, "value": null, "visibility": "internal" } ], - "src": "13969:24:1" + "src": "707:61:2" + }, + "payable": false, + "returnParameters": { + "id": 50, + "nodeType": "ParameterList", + "parameters": [], + "src": "788:0:2" + }, + "scope": 63, + "src": "693:301:2", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 64, + "src": "322:674:2" + } + ], + "src": "0:997:2" + }, + "legacyAST": { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", + "exportedSymbols": { + "GnosisSafe": [ + 63 + ] + }, + "id": 64, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 32, + "literals": [ + "solidity", + "0.4", + ".23" + ], + "nodeType": "PragmaDirective", + "src": "0:23:2" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", + "file": "./Module.sol", + "id": 33, + "nodeType": "ImportDirective", + "scope": 64, + "sourceUnit": 878, + "src": "24:22:2", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ModuleManager.sol", + "file": "./ModuleManager.sol", + "id": 34, + "nodeType": "ImportDirective", + "scope": 64, + "sourceUnit": 1143, + "src": "47:29:2", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", + "file": "./OwnerManager.sol", + "id": 35, + "nodeType": "ImportDirective", + "scope": 64, + "sourceUnit": 1439, + "src": "77:28:2", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 36, + "name": "ModuleManager", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1142, + "src": "345:13:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ModuleManager_$1142", + "typeString": "contract ModuleManager" + } }, - "scope": 963, - "src": "13870:290:1", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" + "id": 37, + "nodeType": "InheritanceSpecifier", + "src": "345:13:2" }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 38, + "name": "OwnerManager", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1438, + "src": "360:12:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_OwnerManager_$1438", + "typeString": "contract OwnerManager" + } + }, + "id": 39, + "nodeType": "InheritanceSpecifier", + "src": "360:12:2" + } + ], + "contractDependencies": [ + 1142, + 1438, + 1559 + ], + "contractKind": "contract", + "documentation": "@title Gnosis Safe - A multisignature wallet with support for modules and owners. This contract needs to be extented to add functionality to execute transactions.\n @author Stefan George - ", + "fullyImplemented": true, + "id": 63, + "linearizedBaseContracts": [ + 63, + 1438, + 1142, + 1559 + ], + "name": "GnosisSafe", + "nodeType": "ContractDefinition", + "nodes": [ { "body": { - "id": 961, + "id": 61, "nodeType": "Block", - "src": "14432:407:1", + "src": "788:206:2", "statements": [ { - "assignments": [ - 911 - ], - "declarations": [ - { - "constant": false, - "id": 911, - "name": "confirmationCount", - "nodeType": "VariableDeclaration", - "scope": 962, - "src": "14442:22:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 910, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "14442:4:1", + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 52, + "name": "_owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 42, + "src": "810:7:2", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" } }, - "value": null, - "visibility": "internal" - } - ], - "id": 915, - "initialValue": { - "argumentTypes": null, - "arguments": [ { "argumentTypes": null, - "id": 913, - "name": "transactionHash", + "id": 53, + "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 904, - "src": "14488:15:1", + "referencedDeclaration": 44, + "src": "819:10:2", "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + "typeIdentifier": "t_uint8", + "typeString": "uint8" } } ], "expression": { "argumentTypes": [ { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" } ], - "id": 912, - "name": "getConfirmationCount", + "id": 51, + "name": "setupOwners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 902, - "src": "14467:20:1", + "referencedDeclaration": 1230, + "src": "798:11:2", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$", - "typeString": "function (bytes32) view returns (uint256)" + "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_uint8_$returns$__$", + "typeString": "function (address[] memory,uint8)" } }, - "id": 914, + "id": 54, "isConstant": false, "isLValue": false, "isPure": false, @@ -24536,700 +922,243 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "14467:37:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "14442:62:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 922, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 916, - "name": "confirmingOwners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 908, - "src": "14514:16:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 920, - "name": "confirmationCount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 911, - "src": "14547:17:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 919, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "NewExpression", - "src": "14533:13:1", - "typeDescriptions": { - "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_$", - "typeString": "function (uint256) pure returns (address[] memory)" - }, - "typeName": { - "baseType": { - "id": 917, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "14537:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 918, - "length": null, - "nodeType": "ArrayTypeName", - "src": "14537:9:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[] storage pointer" - } - } - }, - "id": 921, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "14533:32:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory", - "typeString": "address[] memory" - } - }, - "src": "14514:51:1", + "src": "798:32:2", "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } }, - "id": 923, + "id": 55, "nodeType": "ExpressionStatement", - "src": "14514:51:1" + "src": "798:32:2" }, { "expression": { "argumentTypes": null, - "id": 926, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 924, - "name": "confirmationCount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 911, - "src": "14575:17:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "30", - "id": 925, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "14595:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "14575:21:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 927, - "nodeType": "ExpressionStatement", - "src": "14575:21:1" - }, - { - "body": { - "id": 959, - "nodeType": "Block", - "src": "14647:186:1", - "statements": [ + "arguments": [ { - "condition": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 939, - "name": "isConfirmed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 57, - "src": "14665:11:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$", - "typeString": "mapping(address => mapping(bytes32 => bool))" - } - }, - "id": 943, - "indexExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 940, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "14677:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 942, - "indexExpression": { - "argumentTypes": null, - "id": 941, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 929, - "src": "14684:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "14677:9:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "14665:22:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 945, - "indexExpression": { - "argumentTypes": null, - "id": 944, - "name": "transactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 904, - "src": "14688:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "14665:39:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 958, - "nodeType": "IfStatement", - "src": "14661:162:1", - "trueBody": { - "id": 957, - "nodeType": "Block", - "src": "14706:117:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 952, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 946, - "name": "confirmingOwners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 908, - "src": "14724:16:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 948, - "indexExpression": { - "argumentTypes": null, - "id": 947, - "name": "confirmationCount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 911, - "src": "14741:17:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "14724:35:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 949, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "14762:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 951, - "indexExpression": { - "argumentTypes": null, - "id": 950, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 929, - "src": "14769:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "14762:9:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "14724:47:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 953, - "nodeType": "ExpressionStatement", - "src": "14724:47:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 955, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "14789:19:1", - "subExpression": { - "argumentTypes": null, - "id": 954, - "name": "confirmationCount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 911, - "src": "14789:17:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 956, - "nodeType": "ExpressionStatement", - "src": "14789:19:1" - } - ] - } - } - ] - }, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 935, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 932, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 929, - "src": "14623:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, - "expression": { "argumentTypes": null, - "id": 933, - "name": "owners", + "id": 57, + "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "14627:6:1", + "referencedDeclaration": 46, + "src": "978:2:2", "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" + "typeIdentifier": "t_address", + "typeString": "address" } }, - "id": 934, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "14627:13:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "14623:17:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 960, - "initializationExpression": { - "assignments": [ - 929 - ], - "declarations": [ { - "constant": false, - "id": 929, - "name": "i", - "nodeType": "VariableDeclaration", - "scope": 962, - "src": "14611:6:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 928, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "14611:4:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 931, - "initialValue": { - "argumentTypes": null, - "hexValue": "30", - "id": 930, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "14620:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "14611:10:1" - }, - "loopExpression": { - "expression": { - "argumentTypes": null, - "id": 937, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "14642:3:1", - "subExpression": { "argumentTypes": null, - "id": 936, - "name": "i", + "id": 58, + "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 929, - "src": "14642:1:1", + "referencedDeclaration": 48, + "src": "982:4:2", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" } - }, + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 56, + "name": "setupModules", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 926, + "src": "965:12:2", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address,bytes memory)" } }, - "id": 938, - "nodeType": "ExpressionStatement", - "src": "14642:3:1" + "id": 59, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "965:22:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } }, - "nodeType": "ForStatement", - "src": "14606:227:1" + "id": 60, + "nodeType": "ExpressionStatement", + "src": "965:22:2" } ] }, - "id": 962, + "documentation": "@dev Setup function sets initial storage of contract.\n @param _owners List of Safe owners.\n @param _threshold Number of required confirmations for a Safe transaction.\n @param to Contract address for optional delegate call.\n @param data Data payload for optional delegate call.", + "id": 62, "implemented": true, "isConstructor": false, - "isDeclaredConst": true, + "isDeclaredConst": false, "modifiers": [], - "name": "getConfirmingOwners", + "name": "setup", "nodeType": "FunctionDefinition", "parameters": { - "id": 905, + "id": 49, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 904, - "name": "transactionHash", + "id": 42, + "name": "_owners", + "nodeType": "VariableDeclaration", + "scope": 62, + "src": "708:17:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 40, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "708:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 41, + "length": null, + "nodeType": "ArrayTypeName", + "src": "708:9:2", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 44, + "name": "_threshold", "nodeType": "VariableDeclaration", - "scope": 962, - "src": "14330:23:1", + "scope": 62, + "src": "727:16:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + "typeIdentifier": "t_uint8", + "typeString": "uint8" }, "typeName": { - "id": 903, - "name": "bytes32", + "id": 43, + "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "14330:7:1", + "src": "727:5:2", "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + "typeIdentifier": "t_uint8", + "typeString": "uint8" } }, "value": null, "visibility": "internal" - } - ], - "src": "14329:25:1" - }, - "payable": false, - "returnParameters": { - "id": 909, - "nodeType": "ParameterList", - "parameters": [ + }, { "constant": false, - "id": 908, - "name": "confirmingOwners", + "id": 46, + "name": "to", "nodeType": "VariableDeclaration", - "scope": 962, - "src": "14400:26:1", + "scope": 62, + "src": "745:10:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" + "typeIdentifier": "t_address", + "typeString": "address" }, "typeName": { - "baseType": { - "id": 906, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "14400:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 907, - "length": null, - "nodeType": "ArrayTypeName", - "src": "14400:9:1", + "id": 45, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "745:7:2", "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[] storage pointer" + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 48, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 62, + "src": "757:10:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 47, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "757:5:2", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" } }, "value": null, "visibility": "internal" } ], - "src": "14399:28:1" + "src": "707:61:2" + }, + "payable": false, + "returnParameters": { + "id": 50, + "nodeType": "ParameterList", + "parameters": [], + "src": "788:0:2" }, - "scope": 963, - "src": "14301:538:1", - "stateMutability": "view", + "scope": 63, + "src": "693:301:2", + "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 964, - "src": "218:14623:1" + "scope": 64, + "src": "322:674:2" } ], - "src": "0:14842:1" + "src": "0:997:2" }, "compiler": { "name": "solc", - "version": "0.4.19+commit.c4cbbb05.Emscripten.clang" - }, - "networks": { - "4": { - "events": {}, - "links": {}, - "address": "0x90bbec32c6d045b37b2ee32a2bbbef640b3972d1", - "transactionHash": "0x2f6d1570cc556eef41a2d5e6d0410188979b61cbd580084cc7451a5776009204" - }, - "42": { - "events": {}, - "links": {}, - "address": "0xaefa715af8a64d96f8619daa663fd72d78a0bf28", - "transactionHash": "0x13a8bc9539b1b6652ad74f4b3cbe2ec19d48cbbe578b7496e95379e12aca1862" - }, - "1525342778744": { - "events": {}, - "links": {}, - "address": "0x84c8db395337da2e3d4fb3e26af6bf35739d49b8", - "transactionHash": "0x5b64197eda9ffa97845a6a77ff7bfb134b37c81fa74b3eef652bffbcd6879f6a" - }, - "1525789101965": { - "events": {}, - "links": {}, - "address": "0x6ad761ab330a930f611c0a19226e39ae5da5122d", - "transactionHash": "0x2030f160032d1cea96610c0485dc0fc03426ab66de7f3582cd5fd02a60b14f52" - } + "version": "0.4.23+commit.124ca40d.Emscripten.clang" }, + "networks": {}, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-08T14:18:44.047Z" + "updatedAt": "2018-05-10T10:43:07.892Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/GnosisSafePersonalEdition.json b/safe-contracts/build/contracts/GnosisSafePersonalEdition.json new file mode 100644 index 0000000000..96168a1bad --- /dev/null +++ b/safe-contracts/build/contracts/GnosisSafePersonalEdition.json @@ -0,0 +1,8192 @@ +{ + "contractName": "GnosisSafePersonalEdition", + "abi": [ + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "uint256" + } + ], + "name": "owners", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "owner", + "type": "address" + }, + { + "name": "_threshold", + "type": "uint8" + } + ], + "name": "addOwner", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "module", + "type": "address" + } + ], + "name": "addModule", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "owner", + "type": "address" + } + ], + "name": "isOwner", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "threshold", + "outputs": [ + { + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "address" + } + ], + "name": "isModule", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "oldOwnerIndex", + "type": "uint256" + }, + { + "name": "oldOwner", + "type": "address" + }, + { + "name": "newOwner", + "type": "address" + } + ], + "name": "replaceOwner", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "moduleIndex", + "type": "uint256" + }, + { + "name": "module", + "type": "address" + } + ], + "name": "removeModule", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_masterCopy", + "type": "address" + } + ], + "name": "changeMasterCopy", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "uint256" + } + ], + "name": "modules", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "ownerIndex", + "type": "uint256" + }, + { + "name": "owner", + "type": "address" + }, + { + "name": "_threshold", + "type": "uint8" + } + ], + "name": "removeOwner", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_owners", + "type": "address[]" + }, + { + "name": "_threshold", + "type": "uint8" + }, + { + "name": "to", + "type": "address" + }, + { + "name": "data", + "type": "bytes" + } + ], + "name": "setup", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getOwners", + "outputs": [ + { + "name": "", + "type": "address[]" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "NAME", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "nonce", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "to", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + }, + { + "name": "data", + "type": "bytes" + }, + { + "name": "operation", + "type": "uint8" + } + ], + "name": "executeModule", + "outputs": [ + { + "name": "success", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getModules", + "outputs": [ + { + "name": "", + "type": "address[]" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_threshold", + "type": "uint8" + } + ], + "name": "changeThreshold", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "VERSION", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "payable": true, + "stateMutability": "payable", + "type": "fallback" + }, + { + "anonymous": false, + "inputs": [], + "name": "ExecutionFailed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "newContract", + "type": "address" + } + ], + "name": "ContractCreation", + "type": "event" + }, + { + "constant": false, + "inputs": [ + { + "name": "to", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + }, + { + "name": "data", + "type": "bytes" + }, + { + "name": "operation", + "type": "uint8" + }, + { + "name": "safeTxGas", + "type": "uint256" + }, + { + "name": "dataGas", + "type": "uint256" + }, + { + "name": "gasPrice", + "type": "uint256" + }, + { + "name": "v", + "type": "uint8[]" + }, + { + "name": "r", + "type": "bytes32[]" + }, + { + "name": "s", + "type": "bytes32[]" + } + ], + "name": "payAndExecuteTransaction", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "executionGas", + "type": "uint256" + }, + { + "name": "dataGas", + "type": "uint256" + } + ], + "name": "totalGasCosts", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "to", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + }, + { + "name": "data", + "type": "bytes" + }, + { + "name": "operation", + "type": "uint8" + } + ], + "name": "estimate", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "to", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + }, + { + "name": "data", + "type": "bytes" + }, + { + "name": "operation", + "type": "uint8" + }, + { + "name": "safeTxGas", + "type": "uint256" + }, + { + "name": "dataGas", + "type": "uint256" + }, + { + "name": "gasPrice", + "type": "uint256" + }, + { + "name": "_nonce", + "type": "uint256" + } + ], + "name": "getTransactionHash", + "outputs": [ + { + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b50612339806100206000396000f300608060405260043610610133576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063025e7c27146101355780630e5229b0146101a25780631ed86f19146101f25780632f54bf6e1461023557806342cde4e81461029057806342f6e389146102c15780634db5d0391461031c57806351cf63851461040057806354e99c6e146104b45780637b6d3eeb146105215780637c6401d3146106a85780637de7edef146106f557806381b2248a14610738578063842b954e146107a5578063a04222e1146107ff578063a0e67e2b146108d8578063a3f4df7e14610944578063ad8a0450146109d4578063affed0e014610a1f578063b021640a14610a4a578063b2494df314610b02578063b7f3358d14610b6e578063ffa1ad7414610b9e575b005b34801561014157600080fd5b5061016060048036038101908080359060200190929190505050610c2e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101ae57600080fd5b506101f0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050610c6c565b005b3480156101fe57600080fd5b50610233600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e0f565b005b34801561024157600080fd5b50610276600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f89565b604051808215151515815260200191505060405180910390f35b34801561029c57600080fd5b506102a5610fdf565b604051808260ff1660ff16815260200191505060405180910390f35b3480156102cd57600080fd5b50610302600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ff6565b604051808215151515815260200191505060405180910390f35b34801561032857600080fd5b506103e2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190505050611016565b60405180826000191660001916815260200191505060405180910390f35b34801561040c57600080fd5b5061049e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919050505061124d565b6040518082815260200191505060405180910390f35b3480156104c057600080fd5b5061051f60048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112b3565b005b34801561052d57600080fd5b506106a6600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff1690602001909291908035906020019092919080359060200190929190803590602001909291908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192905050506114ec565b005b3480156106b457600080fd5b506106f360048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115d9565b005b34801561070157600080fd5b50610736600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061178f565b005b34801561074457600080fd5b5061076360048036038101908080359060200190929190505050611832565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156107b157600080fd5b506107fd60048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050611870565b005b34801561080b57600080fd5b506108d660048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611a6b565b005b3480156108e457600080fd5b506108ed611a85565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610930578082015181840152602081019050610915565b505050509050019250505060405180910390f35b34801561095057600080fd5b50610959611b13565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561099957808201518184015260208101905061097e565b50505050905090810190601f1680156109c65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156109e057600080fd5b50610a096004803603810190808035906020019092919080359060200190929190505050611b4c565b6040518082815260200191505060405180910390f35b348015610a2b57600080fd5b50610a34611b61565b6040518082815260200191505060405180910390f35b348015610a5657600080fd5b50610ae8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050611b67565b604051808215151515815260200191505060405180910390f35b348015610b0e57600080fd5b50610b17611bd8565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610b5a578082015181840152602081019050610b3f565b505050509050019250505060405180910390f35b348015610b7a57600080fd5b50610b9c600480360381019080803560ff169060200190929190505050611c66565b005b348015610baa57600080fd5b50610bb3611ce8565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610bf3578082015181840152602081019050610bd8565b50505050905090810190601f168015610c205780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600381815481101515610c3d57fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610ca657600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614151515610ccc57600080fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610d2557600080fd5b60038290806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506001600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508060ff16600460009054906101000a900460ff1660ff16141515610e0b57610e0a81611c66565b5b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610e4957600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610e6f57600080fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610ec857600080fd5b60018190806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600460009054906101000a900460ff16905090565b60026020528060005260406000206000915054906101000a900460ff1681565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f010000000000000000000000000000000000000000000000000000000000000002308b8b8b8b8b8b8b8b604051808c7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140188815260200187805190602001908083835b6020831015156111ba5780518252602082019150602081019050602083039250611195565b6001836020036101000a0380198251168184511680821785525050505050509050018660028111156111e857fe5b60ff167f01000000000000000000000000000000000000000000000000000000000000000281526001018581526020018481526020018381526020018281526020019b5050505050505050505050506040518091039020905098975050505050505050565b6000803073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561128a57600080fd5b5a905061129a868686865a611d21565b15156112a557600080fd5b5a8103915050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156112ed57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561131357600080fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561136c57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff1660038481548110151561139257fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156113df57600080fd5b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508060038481548110151561149f57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000805a915061150f6115078d8d8d8d8d8d8d600654611016565b868686611e1e565b600660008154809291906001019190505550876127105a031015151561153457600080fd5b6115418c8c8c8c8c611d21565b1515611574577facfdb444727b3b8994850a379f4bfc8a5ca665a55604339199daafa16f687b1a60405160405180910390a15b6115805a830388611b4c565b90503273ffffffffffffffffffffffffffffffffffffffff166108fc8783029081150290604051600060405180830381858888f193505050501580156115ca573d6000803e3d6000fd5b50505050505050505050505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561161357600080fd5b8073ffffffffffffffffffffffffffffffffffffffff1660018381548110151561163957fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561168657600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001808080549050038154811015156116f357fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660018381548110151561172d57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600180548091906001900361178a91906121c3565b505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156117c957600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156117ef57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60018181548110151561184157fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156118aa57600080fd5b8060ff16600160038054905003101515156118c457600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166003848154811015156118ea57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561193757600080fd5b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060036001600380549050038154811015156119a657fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166003848154811015156119e057fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003805480919060019003611a3d91906121ef565b508060ff16600460009054906101000a900460ff1660ff16141515611a6657611a6581611c66565b5b505050565b611a758484611fb8565b611a7f8282612146565b50505050565b60606003805480602002602001604051908101604052809291908181526020018280548015611b0957602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611abf575b5050505050905090565b6040805190810160405280601c81526020017f476e6f736973205361666520506572736f6e616c2045646974696f6e0000000081525081565b60006152086127108385010101905092915050565b60065481565b6000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611bc157600080fd5b611bce858585855a611d21565b9050949350505050565b60606001805480602002602001604051908101604052809291908181526020018280548015611c5c57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611c12575b5050505050905090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611ca057600080fd5b6003805490508160ff1611151515611cb757600080fd5b60018160ff1610151515611cca57600080fd5b80600460006101000a81548160ff021916908360ff16021790555050565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b60008060006002811115611d3157fe5b846002811115611d3d57fe5b1415611d5657611d4f87878786612181565b9150611e14565b60016002811115611d6357fe5b846002811115611d6f57fe5b1415611d8757611d8087868561219a565b9150611e13565b611d90856121b1565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b6000806000809250600090505b600460009054906101000a900460ff1660ff16811015611faf576001878783815181101515611e5657fe5b906020019060200201518784815181101515611e6e57fe5b906020019060200201518785815181101515611e8657fe5b90602001906020020151604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af1158015611f01573d6000803e3d6000fd5b505050602060405103519150600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611f6557600080fd5b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16111515611f9f57600080fd5b8192508080600101915050611e2b565b50505050505050565b6000806000600460009054906101000a900460ff1660ff16141515611fdc57600080fd5b83518360ff1611151515611fef57600080fd5b60018360ff161015151561200257600080fd5b600091505b835182101561210e57838281518110151561201e57fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff161415151561205057600080fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156120a957600080fd5b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508180600101925050612007565b836003908051906020019061212492919061221b565b5082600460006101000a81548160ff021916908360ff16021790555050505050565b60008273ffffffffffffffffffffffffffffffffffffffff1614151561217d5761217182825a61219a565b151561217c57600080fd5b5b5050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f09050919050565b8154818355818111156121ea578183600052602060002091820191016121e991906122a5565b5b505050565b8154818355818111156122165781836000526020600020918201910161221591906122a5565b5b505050565b828054828255906000526020600020908101928215612294579160200282015b828111156122935782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509160200191906001019061223b565b5b5090506122a191906122ca565b5090565b6122c791905b808211156122c35760008160009055506001016122ab565b5090565b90565b61230a91905b8082111561230657600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055506001016122d0565b5090565b905600a165627a7a72305820ca10892c4ea05a472842c591f096020bf8935e317ef2e73a23019987aca937590029", + "deployedBytecode": "0x608060405260043610610133576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063025e7c27146101355780630e5229b0146101a25780631ed86f19146101f25780632f54bf6e1461023557806342cde4e81461029057806342f6e389146102c15780634db5d0391461031c57806351cf63851461040057806354e99c6e146104b45780637b6d3eeb146105215780637c6401d3146106a85780637de7edef146106f557806381b2248a14610738578063842b954e146107a5578063a04222e1146107ff578063a0e67e2b146108d8578063a3f4df7e14610944578063ad8a0450146109d4578063affed0e014610a1f578063b021640a14610a4a578063b2494df314610b02578063b7f3358d14610b6e578063ffa1ad7414610b9e575b005b34801561014157600080fd5b5061016060048036038101908080359060200190929190505050610c2e565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101ae57600080fd5b506101f0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050610c6c565b005b3480156101fe57600080fd5b50610233600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e0f565b005b34801561024157600080fd5b50610276600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f89565b604051808215151515815260200191505060405180910390f35b34801561029c57600080fd5b506102a5610fdf565b604051808260ff1660ff16815260200191505060405180910390f35b3480156102cd57600080fd5b50610302600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ff6565b604051808215151515815260200191505060405180910390f35b34801561032857600080fd5b506103e2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190505050611016565b60405180826000191660001916815260200191505060405180910390f35b34801561040c57600080fd5b5061049e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919050505061124d565b6040518082815260200191505060405180910390f35b3480156104c057600080fd5b5061051f60048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112b3565b005b34801561052d57600080fd5b506106a6600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff1690602001909291908035906020019092919080359060200190929190803590602001909291908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192905050506114ec565b005b3480156106b457600080fd5b506106f360048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115d9565b005b34801561070157600080fd5b50610736600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061178f565b005b34801561074457600080fd5b5061076360048036038101908080359060200190929190505050611832565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156107b157600080fd5b506107fd60048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050611870565b005b34801561080b57600080fd5b506108d660048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611a6b565b005b3480156108e457600080fd5b506108ed611a85565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610930578082015181840152602081019050610915565b505050509050019250505060405180910390f35b34801561095057600080fd5b50610959611b13565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561099957808201518184015260208101905061097e565b50505050905090810190601f1680156109c65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156109e057600080fd5b50610a096004803603810190808035906020019092919080359060200190929190505050611b4c565b6040518082815260200191505060405180910390f35b348015610a2b57600080fd5b50610a34611b61565b6040518082815260200191505060405180910390f35b348015610a5657600080fd5b50610ae8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050611b67565b604051808215151515815260200191505060405180910390f35b348015610b0e57600080fd5b50610b17611bd8565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610b5a578082015181840152602081019050610b3f565b505050509050019250505060405180910390f35b348015610b7a57600080fd5b50610b9c600480360381019080803560ff169060200190929190505050611c66565b005b348015610baa57600080fd5b50610bb3611ce8565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610bf3578082015181840152602081019050610bd8565b50505050905090810190601f168015610c205780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600381815481101515610c3d57fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610ca657600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614151515610ccc57600080fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610d2557600080fd5b60038290806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506001600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508060ff16600460009054906101000a900460ff1660ff16141515610e0b57610e0a81611c66565b5b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610e4957600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610e6f57600080fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610ec857600080fd5b60018190806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600460009054906101000a900460ff16905090565b60026020528060005260406000206000915054906101000a900460ff1681565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f010000000000000000000000000000000000000000000000000000000000000002308b8b8b8b8b8b8b8b604051808c7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140188815260200187805190602001908083835b6020831015156111ba5780518252602082019150602081019050602083039250611195565b6001836020036101000a0380198251168184511680821785525050505050509050018660028111156111e857fe5b60ff167f01000000000000000000000000000000000000000000000000000000000000000281526001018581526020018481526020018381526020018281526020019b5050505050505050505050506040518091039020905098975050505050505050565b6000803073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561128a57600080fd5b5a905061129a868686865a611d21565b15156112a557600080fd5b5a8103915050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156112ed57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561131357600080fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561136c57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff1660038481548110151561139257fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156113df57600080fd5b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508060038481548110151561149f57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000805a915061150f6115078d8d8d8d8d8d8d600654611016565b868686611e1e565b600660008154809291906001019190505550876127105a031015151561153457600080fd5b6115418c8c8c8c8c611d21565b1515611574577facfdb444727b3b8994850a379f4bfc8a5ca665a55604339199daafa16f687b1a60405160405180910390a15b6115805a830388611b4c565b90503273ffffffffffffffffffffffffffffffffffffffff166108fc8783029081150290604051600060405180830381858888f193505050501580156115ca573d6000803e3d6000fd5b50505050505050505050505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561161357600080fd5b8073ffffffffffffffffffffffffffffffffffffffff1660018381548110151561163957fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561168657600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001808080549050038154811015156116f357fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660018381548110151561172d57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600180548091906001900361178a91906121c3565b505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156117c957600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156117ef57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60018181548110151561184157fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156118aa57600080fd5b8060ff16600160038054905003101515156118c457600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166003848154811015156118ea57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561193757600080fd5b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060036001600380549050038154811015156119a657fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166003848154811015156119e057fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003805480919060019003611a3d91906121ef565b508060ff16600460009054906101000a900460ff1660ff16141515611a6657611a6581611c66565b5b505050565b611a758484611fb8565b611a7f8282612146565b50505050565b60606003805480602002602001604051908101604052809291908181526020018280548015611b0957602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611abf575b5050505050905090565b6040805190810160405280601c81526020017f476e6f736973205361666520506572736f6e616c2045646974696f6e0000000081525081565b60006152086127108385010101905092915050565b60065481565b6000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611bc157600080fd5b611bce858585855a611d21565b9050949350505050565b60606001805480602002602001604051908101604052809291908181526020018280548015611c5c57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611c12575b5050505050905090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611ca057600080fd5b6003805490508160ff1611151515611cb757600080fd5b60018160ff1610151515611cca57600080fd5b80600460006101000a81548160ff021916908360ff16021790555050565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b60008060006002811115611d3157fe5b846002811115611d3d57fe5b1415611d5657611d4f87878786612181565b9150611e14565b60016002811115611d6357fe5b846002811115611d6f57fe5b1415611d8757611d8087868561219a565b9150611e13565b611d90856121b1565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b6000806000809250600090505b600460009054906101000a900460ff1660ff16811015611faf576001878783815181101515611e5657fe5b906020019060200201518784815181101515611e6e57fe5b906020019060200201518785815181101515611e8657fe5b90602001906020020151604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af1158015611f01573d6000803e3d6000fd5b505050602060405103519150600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611f6557600080fd5b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16111515611f9f57600080fd5b8192508080600101915050611e2b565b50505050505050565b6000806000600460009054906101000a900460ff1660ff16141515611fdc57600080fd5b83518360ff1611151515611fef57600080fd5b60018360ff161015151561200257600080fd5b600091505b835182101561210e57838281518110151561201e57fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff161415151561205057600080fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156120a957600080fd5b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508180600101925050612007565b836003908051906020019061212492919061221b565b5082600460006101000a81548160ff021916908360ff16021790555050505050565b60008273ffffffffffffffffffffffffffffffffffffffff1614151561217d5761217182825a61219a565b151561217c57600080fd5b5b5050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f09050919050565b8154818355818111156121ea578183600052602060002091820191016121e991906122a5565b5b505050565b8154818355818111156122165781836000526020600020918201910161221591906122a5565b5b505050565b828054828255906000526020600020908101928215612294579160200282015b828111156122935782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509160200191906001019061223b565b5b5090506122a191906122ca565b5090565b6122c791905b808211156122c35760008160009055506001016122ab565b5090565b90565b61230a91905b8082111561230657600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055506001016122d0565b5090565b905600a165627a7a72305820ca10892c4ea05a472842c591f096020bf8935e317ef2e73a23019987aca937590029", + "sourceMap": "314:5265:3:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;314:5265:3;;;;;;;", + "deployedSourceMap": "314:5265:3:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;287:23:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;287:23:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1737:431;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1737:431:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1166:300:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1166:300:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;4552:125:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4552:125:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4436:110;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4436:110:10;;;;;;;;;;;;;;;;;;;;;;;;;;;599:41:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;599:41:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5153:424:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5153:424:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3798:294;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3798:294:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3419:501:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3419:501:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1443:1009:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1443:1009:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1722:336:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1722:336:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;626:208:6;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:208:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;500:23:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;500:23:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2499:599:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2499:599:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;693:301:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;693:301:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4759:111:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4759:111:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;4759:111:10;;;;;;;;;;;;;;;;;382:60:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;382:60:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;382:60:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2884:209;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2884:209:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;644:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;644:20:3;;;;;;;;;;;;;;;;;;;;;;;2394:361:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2394:361:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4279:112;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4279:112:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;4279:112:9;;;;;;;;;;;;;;;;;4109:321:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4109:321:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;448:40:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;448:40:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;448:40:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;287:23:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1737:431::-;244:4:14;222:27;;:10;:27;;;214:36;;;;;;;;1894:1:10;1885:5;:10;;;;1877:19;;;;;;;;1955:7;:14;1963:5;1955:14;;;;;;;;;;;;;;;;;;;;;;;;;1954:15;1946:24;;;;;;;;1980:6;1992:5;1980:18;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;1980:18:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2025:4;2008:7;:14;2016:5;2008:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;2110:10;2097:23;;:9;;;;;;;;;;;:23;;;;2093:68;;;2134:27;2150:10;2134:15;:27::i;:::-;2093:68;1737:431;;:::o;1166:300:9:-;244:4:14;222:27;;:10;:27;;;214:36;;;;;;;;1317:1:9;1306:6;1298:20;;;;1290:29;;;;;;;;1379:8;:16;1388:6;1379:16;;;;;;;;;;;;;;;;;;;;;;;;;1378:17;1370:26;;;;;;;;1406:7;1419:6;1406:20;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;1406:20:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1455:4;1436:8;:16;1445:6;1436:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;1166:300;:::o;4552:125:10:-;4629:4;4656:7;:14;4664:5;4656:14;;;;;;;;;;;;;;;;;;;;;;;;;4649:21;;4552:125;;;:::o;4436:110::-;4502:5;4530:9;;;;;;;;;;;4523:16;;4436:110;:::o;599:41:9:-;;;;;;;;;;;;;;;;;;;;;;:::o;5153:424:3:-;5438:7;5483:4;5478:10;;5495:1;5490:7;;5499:4;5505:2;5509:5;5516:4;5522:9;5533;5544:7;5553:8;5563:6;5468:102;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;5468:102:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5461:109;;5153:424;;;;;;;;;;:::o;3798:294::-;3932:7;3955:16;244:4:14;222:27;;:10;:27;;;214:36;;;;;;;;3974:9:3;3955:28;;4001:46;4009:2;4013:5;4020:4;4026:9;4037;4001:7;:46::i;:::-;3993:55;;;;;;;;4076:9;4065:8;:20;4058:27;;3798:294;;;;;;;:::o;3419:501:10:-;244:4:14;222:27;;:10;:27;;;214:36;;;;;;;;3609:1:10;3597:8;:13;;;;3589:22;;;;;;;;3670:7;:17;3678:8;3670:17;;;;;;;;;;;;;;;;;;;;;;;;;3669:18;3661:27;;;;;;;;3793:8;3768:33;;:6;3775:13;3768:21;;;;;;;;;;;;;;;;;;;;;;;;;;;:33;;;3760:42;;;;;;;;3832:5;3812:7;:17;3820:8;3812:17;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;3867:4;3847:7;:17;3855:8;3847:17;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;3905:8;3881:6;3888:13;3881:21;;;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;3419:501;;;:::o;1443:1009:3:-;1754:16;2143;1773:9;1754:28;;1792:103;1802:83;1821:2;1825:5;1832:4;1838:9;1849;1860:7;1869:8;1879:5;;1802:18;:83::i;:::-;1887:1;1890;1893;1792:9;:103::i;:::-;1956:5;;:7;;;;;;;;;;;;;2014:9;602:5;1981:9;:29;:42;;1973:51;;;;;;;;2039:46;2047:2;2051:5;2058:4;2064:9;2075;2039:7;:46::i;:::-;2038:47;2034:100;;;2106:17;;;;;;;;;;2034:100;2162:44;2187:9;2176:8;:20;2198:7;2162:13;:44::i;:::-;2143:63;;2406:9;:18;;:39;2436:8;2425;:19;2406:39;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2406:39:3;1443:1009;;;;;;;;;;;;:::o;1722:336:9:-;244:4:14;222:27;;:10;:27;;;214:36;;;;;;;;1924:6:9;1900:30;;:7;1908:11;1900:20;;;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;1892:39;;;;;;;;1960:5;1941:8;:16;1950:6;1941:16;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;1998:7;2023:1;2006:7;:14;;;;:18;1998:27;;;;;;;;;;;;;;;;;;;;;;;;;;;1975:7;1983:11;1975:20;;;;;;;;;;;;;;;;;;:50;;;;;;;;;;;;;;;;;;2035:7;:16;;;;;;;;;;;;:::i;:::-;;1722:336;;:::o;626:208:6:-;244:4:14;222:27;;:10;:27;;;214:36;;;;;;;;791:1:6;776:11;:16;;;;768:25;;;;;;;;816:11;803:10;;:24;;;;;;;;;;;;;;;;;;626:208;:::o;500:23:9:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2499:599:10:-;244:4:14;222:27;;:10;:27;;;214:36;;;;;;;;2727:10:10;2706:31;;2722:1;2706:6;:13;;;;:17;:31;;2698:40;;;;;;;;2840:5;2818:27;;:6;2825:10;2818:18;;;;;;;;;;;;;;;;;;;;;;;;;;;:27;;;2810:36;;;;;;;;2873:5;2856:7;:14;2864:5;2856:14;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;2909:6;2932:1;2916:6;:13;;;;:17;2909:25;;;;;;;;;;;;;;;;;;;;;;;;;;;2888:6;2895:10;2888:18;;;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;2944:6;:15;;;;;;;;;;;;:::i;:::-;;3040:10;3027:23;;:9;;;;;;;;;;;:23;;;;3023:68;;;3064:27;3080:10;3064:15;:27::i;:::-;3023:68;2499:599;;;:::o;693:301:2:-;798:32;810:7;819:10;798:11;:32::i;:::-;965:22;978:2;982:4;965:12;:22::i;:::-;693:301;;;;:::o;4759:111:10:-;4825:9;4857:6;4850:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4759:111;:::o;382:60:3:-;;;;;;;;;;;;;;;;;;;;:::o;2884:209::-;2993:7;545:5;602;3039:7;3024:12;:22;:42;:62;3017:69;;2884:209;;;;:::o;644:20::-;;;;:::o;2394:361:9:-;2514:12;2599:8;:20;2608:10;2599:20;;;;;;;;;;;;;;;;;;;;;;;;;2591:29;;;;;;;;2702:46;2710:2;2714:5;2721:4;2727:9;2738;2702:7;:46::i;:::-;2692:56;;2394:361;;;;;;:::o;4279:112::-;4346:8;4377:7;4370:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4279:112;:::o;4109:321:10:-;244:4:14;222:27;;:10;:27;;;214:36;;;;;;;;4291:6:10;:13;;;;4277:10;:27;;;;4269:36;;;;;;;;4389:1;4375:10;:15;;;;4367:24;;;;;;;;4413:10;4401:9;;:22;;;;;;;;;;;;;;;;;;4109:321;:::o;448:40:3:-;;;;;;;;;;;;;;;;;;;;:::o;2761:548:9:-;2892:12;3163:19;2937;2924:32;;;;;;;;:9;:32;;;;;;;;;2920:383;;;2980:35;2992:2;2996:5;3003:4;3009:5;2980:11;:35::i;:::-;2970:45;;2920:383;;;3047:27;3034:40;;;;;;;;:9;:40;;;;;;;;;3030:273;;;3098:36;3118:2;3122:4;3128:5;3098:19;:36::i;:::-;3088:46;;3030:273;;;3185:19;3199:4;3185:13;:19::i;:::-;3163:41;;3243:1;3228:11;:16;;;;3218:26;;3263:29;3280:11;3263:29;;;;;;;;;;;;;;;;;;;;;;3030:273;2920:383;2761:548;;;;;;;;:::o;4098:537:3:-;4264:17;4304:20;4334:9;4292:1;4264:30;;4404:1;4400:5;;4395:234;4411:9;;;;;;;;;;;4407:13;;:1;:13;4395:234;;;4456:33;4466:4;4472:1;4474;4472:4;;;;;;;;;;;;;;;;;;4478:1;4480;4478:4;;;;;;;;;;;;;;;;;;4484:1;4486;4484:4;;;;;;;;;;;;;;;;;;4456:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4456:33:3;;;;;;;;4441:48;;4511:7;:21;4519:12;4511:21;;;;;;;;;;;;;;;;;;;;;;;;;4503:30;;;;;;;;4570:9;4555:24;;:12;:24;;;4547:33;;;;;;;;4606:12;4594:24;;4422:3;;;;;;;4395:234;;;4098:537;;;;;;;:::o;651:846:10:-;1147:9;1246:13;885:1;872:9;;;;;;;;;;;:14;;;864:23;;;;;;;;994:7;:14;980:10;:28;;;;972:37;;;;;;;;1093:1;1079:10;:15;;;;1071:24;;;;;;;;1159:1;1147:13;;1142:291;1166:7;:14;1162:1;:18;1142:291;;;1262:7;1270:1;1262:10;;;;;;;;;;;;;;;;;;1246:26;;1303:1;1294:5;:10;;;;1286:19;;;;;;;;1372:7;:14;1380:5;1372:14;;;;;;;;;;;;;;;;;;;;;;;;;1371:15;1363:24;;;;;;;;1418:4;1401:7;:14;1409:5;1401:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;1182:3;;;;;;;1142:291;;;1451:7;1442:6;:16;;;;;;;;;;;;:::i;:::-;;1480:10;1468:9;;:22;;;;;;;;;;;;;;;;;;651:846;;;;:::o;769:230:9:-;856:1;850:2;:7;;;;846:146;;;951:40;971:2;975:4;981:9;951:19;:40::i;:::-;943:49;;;;;;;;846:146;769:230;;:::o;3315:309::-;3424:12;3606:1;3603;3596:4;3590:11;3583:4;3577;3573:15;3566:5;3562:2;3555:5;3550:58;3539:69;;3525:93;;;;;;:::o;3630:303::-;3732:12;3915:1;3912;3905:4;3899:11;3892:4;3886;3882:15;3878:2;3871:5;3858:59;3847:70;;3833:94;;;;;:::o;3939:261::-;4008:19;4178:4;4172:11;4165:4;4159;4155:15;4152:1;4145:39;4130:54;;4116:78;;;:::o;314:5265:3:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", + "source": "pragma solidity 0.4.23;\nimport \"./GnosisSafe.sol\";\nimport \"./MasterCopy.sol\";\n\n\n/// @title Gnosis Safe Personal Edition - A multisignature wallet with support for confirmations using signed messages based on ERC191.\n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract GnosisSafePersonalEdition is MasterCopy, GnosisSafe {\n\n string public constant NAME = \"Gnosis Safe Personal Edition\";\n string public constant VERSION = \"0.0.1\";\n \n uint256 internal constant BASE_TX_GAS_COSTS = 21000;\n uint256 internal constant PAYMENT_GAS_COSTS = 10000;\n\n event ExecutionFailed();\n\n uint256 public nonce;\n\n /// @dev Allows to execute a Safe transaction confirmed by required number of owners.\n /// @param to Destination address of Safe transaction.\n /// @param value Ether value of Safe transaction.\n /// @param data Data payload of Safe transaction.\n /// @param operation Operation type of Safe transaction.\n /// @param safeTxGas Gas that should be used for the Safe transaction.\n /// @param dataGas Gas costs for data used to trigger the safe transaction.\n /// @param gasPrice Gas price that should be used for the payment calculation.\n /// @param v Array of signature V values sorted by owner addresses.\n /// @param r Array of signature R values sorted by owner addresses.\n /// @param s Array of signature S values sorted by owner addresses.\n function payAndExecuteTransaction(\n address to, \n uint256 value, \n bytes data, \n Enum.Operation operation, \n uint256 safeTxGas,\n uint256 dataGas,\n uint256 gasPrice,\n uint8[] v, \n bytes32[] r, \n bytes32[] s\n )\n public\n {\n uint256 startGas = gasleft();\n checkHash(getTransactionHash(to, value, data, operation, safeTxGas, dataGas, gasPrice, nonce), v, r, s);\n // Increase nonce and execute transaction.\n nonce++;\n require(gasleft() - PAYMENT_GAS_COSTS >= safeTxGas);\n if (!execute(to, value, data, operation, safeTxGas)) {\n emit ExecutionFailed();\n }\n uint256 gasCosts = totalGasCosts(startGas - gasleft(), dataGas);\n\n // We transfer the calculated tx costs to the tx.origin to avoid sending it to intermediate contracts that have made calls\n // solium-disable-next-line security/no-tx-origin\n tx.origin.transfer(gasCosts * gasPrice);\n }\n\n /// @dev Calculates the total gas costs for a safe transaction with the gas costs for the execution of the transaction.\n /// @param executionGas Gas costs for the execution of the safe transaction.\n /// @param dataGas Gas costs for data used to trigger the safe transaction.\n /// @return Total gas costs for the execution (this includes gas costs for the payment to tx.origin, base transaction and payload data).\n function totalGasCosts(uint256 executionGas, uint256 dataGas) \n public \n pure\n returns (uint256) \n {\n return executionGas + dataGas + PAYMENT_GAS_COSTS + BASE_TX_GAS_COSTS;\n }\n\n /// @dev Allows to estimate a Safe transaction. \n /// This method can only be used by the safe itself in a transaction. When estimating set `from` to the address of the safe.\n /// Since the `estimateGas` function includes refunds, call this method to get an estimated of the costs that are deducted from the safe with `payAndExecuteTransaction`\n /// @param to Destination address of Safe transaction.\n /// @param value Ether value of Safe transaction.\n /// @param data Data payload of Safe transaction.\n /// @param operation Operation type of Safe transaction.\n /// @return Estimate without refunds and overhead fees (base transaction and payload data gas costs).\n function estimate(address to, uint256 value, bytes data, Enum.Operation operation)\n public\n authorized\n returns (uint256)\n {\n uint256 startGas = gasleft();\n require(execute(to, value, data, operation, gasleft()));\n return startGas - gasleft();\n }\n\n function checkHash(bytes32 hash, uint8[] v, bytes32[] r, bytes32[] s)\n internal\n view\n {\n // There cannot be an owner with address 0.\n address lastOwner = address(0);\n address currentOwner;\n uint256 i;\n // Validate threshold is reached.\n for (i = 0; i < threshold; i++) {\n currentOwner = ecrecover(hash, v[i], r[i], s[i]);\n require(isOwner[currentOwner]);\n require(currentOwner > lastOwner);\n lastOwner = currentOwner;\n }\n }\n\n /// @dev Returns hash to be signed by owners.\n /// @param to Destination address.\n /// @param value Ether value.\n /// @param data Data payload.\n /// @param operation Operation type.\n /// @param safeTxGas Fas that should be used for the safe transaction.\n /// @param dataGas Gas costs for data used to trigger the safe transaction.\n /// @param gasPrice Maximum gas price that should be used for this transaction.\n /// @param _nonce Transaction nonce.\n /// @return Transaction hash.\n function getTransactionHash(\n address to, \n uint256 value, \n bytes data, \n Enum.Operation operation, \n uint256 safeTxGas, \n uint256 dataGas, \n uint256 gasPrice, \n uint256 _nonce\n )\n public\n view\n returns (bytes32)\n {\n return keccak256(byte(0x19), byte(0), this, to, value, data, operation, safeTxGas, dataGas, gasPrice, _nonce);\n }\n}\n", + "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafePersonalEdition.sol", + "ast": { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafePersonalEdition.sol", + "exportedSymbols": { + "GnosisSafePersonalEdition": [ + 346 + ] + }, + "id": 347, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 65, + "literals": [ + "solidity", + "0.4", + ".23" + ], + "nodeType": "PragmaDirective", + "src": "0:23:3" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", + "file": "./GnosisSafe.sol", + "id": 66, + "nodeType": "ImportDirective", + "scope": 347, + "sourceUnit": 64, + "src": "24:26:3", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/MasterCopy.sol", + "file": "./MasterCopy.sol", + "id": 67, + "nodeType": "ImportDirective", + "scope": 347, + "sourceUnit": 780, + "src": "51:26:3", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 68, + "name": "MasterCopy", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 779, + "src": "352:10:3", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MasterCopy_$779", + "typeString": "contract MasterCopy" + } + }, + "id": 69, + "nodeType": "InheritanceSpecifier", + "src": "352:10:3" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 70, + "name": "GnosisSafe", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 63, + "src": "364:10:3", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$63", + "typeString": "contract GnosisSafe" + } + }, + "id": 71, + "nodeType": "InheritanceSpecifier", + "src": "364:10:3" + } + ], + "contractDependencies": [ + 63, + 779, + 1142, + 1438, + 1559 + ], + "contractKind": "contract", + "documentation": "@title Gnosis Safe Personal Edition - A multisignature wallet with support for confirmations using signed messages based on ERC191.\n @author Stefan George - \n @author Richard Meissner - ", + "fullyImplemented": true, + "id": 346, + "linearizedBaseContracts": [ + 346, + 63, + 1438, + 1142, + 779, + 1559 + ], + "name": "GnosisSafePersonalEdition", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "id": 74, + "name": "NAME", + "nodeType": "VariableDeclaration", + "scope": 346, + "src": "382:60:3", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory", + "typeString": "string" + }, + "typeName": { + "id": 72, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "382:6:3", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "476e6f736973205361666520506572736f6e616c2045646974696f6e", + "id": 73, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "412:30:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_b657d2895d137bf089ce1df776b732639b1ebc2a3aec3bd837e225e9e0965154", + "typeString": "literal_string \"Gnosis Safe Personal Edition\"" + }, + "value": "Gnosis Safe Personal Edition" + }, + "visibility": "public" + }, + { + "constant": true, + "id": 77, + "name": "VERSION", + "nodeType": "VariableDeclaration", + "scope": 346, + "src": "448:40:3", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory", + "typeString": "string" + }, + "typeName": { + "id": 75, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "448:6:3", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "302e302e31", + "id": 76, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "481:7:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", + "typeString": "literal_string \"0.0.1\"" + }, + "value": "0.0.1" + }, + "visibility": "public" + }, + { + "constant": true, + "id": 80, + "name": "BASE_TX_GAS_COSTS", + "nodeType": "VariableDeclaration", + "scope": 346, + "src": "499:51:3", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 78, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "499:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "3231303030", + "id": 79, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "545:5:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_21000_by_1", + "typeString": "int_const 21000" + }, + "value": "21000" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 83, + "name": "PAYMENT_GAS_COSTS", + "nodeType": "VariableDeclaration", + "scope": 346, + "src": "556:51:3", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 81, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "556:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "3130303030", + "id": 82, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "602:5:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_10000_by_1", + "typeString": "int_const 10000" + }, + "value": "10000" + }, + "visibility": "internal" + }, + { + "anonymous": false, + "documentation": null, + "id": 85, + "name": "ExecutionFailed", + "nodeType": "EventDefinition", + "parameters": { + "id": 84, + "nodeType": "ParameterList", + "parameters": [], + "src": "635:2:3" + }, + "src": "614:24:3" + }, + { + "constant": false, + "id": 87, + "name": "nonce", + "nodeType": "VariableDeclaration", + "scope": 346, + "src": "644:20:3", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 86, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "644:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "public" + }, + { + "body": { + "id": 179, + "nodeType": "Block", + "src": "1744:708:3", + "statements": [ + { + "assignments": [ + 114 + ], + "declarations": [ + { + "constant": false, + "id": 114, + "name": "startGas", + "nodeType": "VariableDeclaration", + "scope": 180, + "src": "1754:16:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 113, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1754:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 117, + "initialValue": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 115, + "name": "gasleft", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2458, + "src": "1773:7:3", + "typeDescriptions": { + "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 116, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1773:9:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1754:28:3" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 120, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 89, + "src": "1821:2:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 121, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 91, + "src": "1825:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 122, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 93, + "src": "1832:4:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 123, + "name": "operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 95, + "src": "1838:9:3", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + }, + { + "argumentTypes": null, + "id": 124, + "name": "safeTxGas", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 97, + "src": "1849:9:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 125, + "name": "dataGas", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 99, + "src": "1860:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 126, + "name": "gasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 101, + "src": "1869:8:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 127, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 87, + "src": "1879:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 119, + "name": "getTransactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 345, + "src": "1802:18:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256,uint256,uint256,uint256) view returns (bytes32)" + } + }, + "id": 128, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1802:83:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 129, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 104, + "src": "1887:1:3", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", + "typeString": "uint8[] memory" + } + }, + { + "argumentTypes": null, + "id": 130, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 107, + "src": "1890:1:3", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + { + "argumentTypes": null, + "id": 131, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 110, + "src": "1893:1:3", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", + "typeString": "uint8[] memory" + }, + { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + }, + { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + ], + "id": 118, + "name": "checkHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 305, + "src": "1792:9:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_array$_t_uint8_$dyn_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$returns$__$", + "typeString": "function (bytes32,uint8[] memory,bytes32[] memory,bytes32[] memory) view" + } + }, + "id": 132, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1792:103:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 133, + "nodeType": "ExpressionStatement", + "src": "1792:103:3" + }, + { + "expression": { + "argumentTypes": null, + "id": 135, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "1956:7:3", + "subExpression": { + "argumentTypes": null, + "id": 134, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 87, + "src": "1956:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 136, + "nodeType": "ExpressionStatement", + "src": "1956:7:3" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 143, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 141, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 138, + "name": "gasleft", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2458, + "src": "1981:7:3", + "typeDescriptions": { + "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 139, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1981:9:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "id": 140, + "name": "PAYMENT_GAS_COSTS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 83, + "src": "1993:17:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1981:29:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 142, + "name": "safeTxGas", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 97, + "src": "2014:9:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1981:42:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 137, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "1973:7:3", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 144, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1973:51:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 145, + "nodeType": "ExpressionStatement", + "src": "1973:51:3" + }, + { + "condition": { + "argumentTypes": null, + "id": 153, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "2038:47:3", + "subExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 147, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 89, + "src": "2047:2:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 148, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 91, + "src": "2051:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 149, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 93, + "src": "2058:4:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 150, + "name": "operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 95, + "src": "2064:9:3", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + }, + { + "argumentTypes": null, + "id": 151, + "name": "safeTxGas", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 97, + "src": "2075:9:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 146, + "name": "execute", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1095, + "src": "2039:7:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) returns (bool)" + } + }, + "id": 152, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2039:46:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 158, + "nodeType": "IfStatement", + "src": "2034:100:3", + "trueBody": { + "id": 157, + "nodeType": "Block", + "src": "2087:47:3", + "statements": [ + { + "eventCall": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 154, + "name": "ExecutionFailed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 85, + "src": "2106:15:3", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 155, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2106:17:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 156, + "nodeType": "EmitStatement", + "src": "2101:22:3" + } + ] + } + }, + { + "assignments": [ + 160 + ], + "declarations": [ + { + "constant": false, + "id": 160, + "name": "gasCosts", + "nodeType": "VariableDeclaration", + "scope": 180, + "src": "2143:16:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 159, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2143:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 168, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 165, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 162, + "name": "startGas", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 114, + "src": "2176:8:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 163, + "name": "gasleft", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2458, + "src": "2187:7:3", + "typeDescriptions": { + "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 164, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2187:9:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2176:20:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 166, + "name": "dataGas", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 99, + "src": "2198:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 161, + "name": "totalGasCosts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 198, + "src": "2162:13:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 167, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2162:44:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2143:63:3" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 176, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 174, + "name": "gasCosts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 160, + "src": "2425:8:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "id": 175, + "name": "gasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 101, + "src": "2436:8:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2425:19:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 169, + "name": "tx", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2477, + "src": "2406:2:3", + "typeDescriptions": { + "typeIdentifier": "t_magic_transaction", + "typeString": "tx" + } + }, + "id": 172, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "origin", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2406:9:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 173, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2406:18:3", + "typeDescriptions": { + "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 177, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2406:39:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 178, + "nodeType": "ExpressionStatement", + "src": "2406:39:3" + } + ] + }, + "documentation": "@dev Allows to execute a Safe transaction confirmed by required number of owners.\n @param to Destination address of Safe transaction.\n @param value Ether value of Safe transaction.\n @param data Data payload of Safe transaction.\n @param operation Operation type of Safe transaction.\n @param safeTxGas Gas that should be used for the Safe transaction.\n @param dataGas Gas costs for data used to trigger the safe transaction.\n @param gasPrice Gas price that should be used for the payment calculation.\n @param v Array of signature V values sorted by owner addresses.\n @param r Array of signature R values sorted by owner addresses.\n @param s Array of signature S values sorted by owner addresses.", + "id": 180, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "payAndExecuteTransaction", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 111, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 89, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 180, + "src": "1486:10:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 88, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1486:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 91, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 180, + "src": "1507:13:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 90, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1507:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 93, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 180, + "src": "1531:10:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 92, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1531:5:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 95, + "name": "operation", + "nodeType": "VariableDeclaration", + "scope": 180, + "src": "1552:24:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + }, + "typeName": { + "contractScope": null, + "id": 94, + "name": "Enum.Operation", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 29, + "src": "1552:14:3", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 97, + "name": "safeTxGas", + "nodeType": "VariableDeclaration", + "scope": 180, + "src": "1587:17:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 96, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1587:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 99, + "name": "dataGas", + "nodeType": "VariableDeclaration", + "scope": 180, + "src": "1614:15:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 98, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1614:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 101, + "name": "gasPrice", + "nodeType": "VariableDeclaration", + "scope": 180, + "src": "1639:16:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 100, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1639:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 104, + "name": "v", + "nodeType": "VariableDeclaration", + "scope": 180, + "src": "1665:9:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", + "typeString": "uint8[]" + }, + "typeName": { + "baseType": { + "id": 102, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1665:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 103, + "length": null, + "nodeType": "ArrayTypeName", + "src": "1665:7:3", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr", + "typeString": "uint8[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 107, + "name": "r", + "nodeType": "VariableDeclaration", + "scope": 180, + "src": "1685:11:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 105, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1685:7:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 106, + "length": null, + "nodeType": "ArrayTypeName", + "src": "1685:9:3", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 110, + "name": "s", + "nodeType": "VariableDeclaration", + "scope": 180, + "src": "1707:11:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 108, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1707:7:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 109, + "length": null, + "nodeType": "ArrayTypeName", + "src": "1707:9:3", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1476:248:3" + }, + "payable": false, + "returnParameters": { + "id": 112, + "nodeType": "ParameterList", + "parameters": [], + "src": "1744:0:3" + }, + "scope": 346, + "src": "1443:1009:3", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 197, + "nodeType": "Block", + "src": "3007:86:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 195, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 193, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 191, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 189, + "name": "executionGas", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 182, + "src": "3024:12:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "id": 190, + "name": "dataGas", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 184, + "src": "3039:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3024:22:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "id": 192, + "name": "PAYMENT_GAS_COSTS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 83, + "src": "3049:17:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3024:42:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "id": 194, + "name": "BASE_TX_GAS_COSTS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 80, + "src": "3069:17:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3024:62:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 188, + "id": 196, + "nodeType": "Return", + "src": "3017:69:3" + } + ] + }, + "documentation": "@dev Calculates the total gas costs for a safe transaction with the gas costs for the execution of the transaction.\n @param executionGas Gas costs for the execution of the safe transaction.\n @param dataGas Gas costs for data used to trigger the safe transaction.\n @return Total gas costs for the execution (this includes gas costs for the payment to tx.origin, base transaction and payload data).", + "id": 198, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "totalGasCosts", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 185, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 182, + "name": "executionGas", + "nodeType": "VariableDeclaration", + "scope": 198, + "src": "2907:20:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 181, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2907:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 184, + "name": "dataGas", + "nodeType": "VariableDeclaration", + "scope": 198, + "src": "2929:15:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 183, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2929:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2906:39:3" + }, + "payable": false, + "returnParameters": { + "id": 188, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 187, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 198, + "src": "2993:7:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 186, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2993:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2992:9:3" + }, + "scope": 346, + "src": "2884:209:3", + "stateMutability": "pure", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 234, + "nodeType": "Block", + "src": "3945:147:3", + "statements": [ + { + "assignments": [ + 214 + ], + "declarations": [ + { + "constant": false, + "id": 214, + "name": "startGas", + "nodeType": "VariableDeclaration", + "scope": 235, + "src": "3955:16:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 213, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3955:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 217, + "initialValue": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 215, + "name": "gasleft", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2458, + "src": "3974:7:3", + "typeDescriptions": { + "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 216, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3974:9:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3955:28:3" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 220, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 200, + "src": "4009:2:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 221, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 202, + "src": "4013:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 222, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 204, + "src": "4020:4:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 223, + "name": "operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 206, + "src": "4026:9:3", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 224, + "name": "gasleft", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2458, + "src": "4037:7:3", + "typeDescriptions": { + "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 225, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4037:9:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 219, + "name": "execute", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1095, + "src": "4001:7:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) returns (bool)" + } + }, + "id": 226, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4001:46:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 218, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "3993:7:3", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 227, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3993:55:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 228, + "nodeType": "ExpressionStatement", + "src": "3993:55:3" + }, + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 232, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 229, + "name": "startGas", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 214, + "src": "4065:8:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 230, + "name": "gasleft", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2458, + "src": "4076:7:3", + "typeDescriptions": { + "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 231, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4076:9:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4065:20:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 212, + "id": 233, + "nodeType": "Return", + "src": "4058:27:3" + } + ] + }, + "documentation": "@dev Allows to estimate a Safe transaction. \n This method can only be used by the safe itself in a transaction. When estimating set `from` to the address of the safe.\n Since the `estimateGas` function includes refunds, call this method to get an estimated of the costs that are deducted from the safe with `payAndExecuteTransaction`\n @param to Destination address of Safe transaction.\n @param value Ether value of Safe transaction.\n @param data Data payload of Safe transaction.\n @param operation Operation type of Safe transaction.\n @return Estimate without refunds and overhead fees (base transaction and payload data gas costs).", + "id": 235, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 209, + "modifierName": { + "argumentTypes": null, + "id": 208, + "name": "authorized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1558, + "src": "3904:10:3", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "3904:10:3" + } + ], + "name": "estimate", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 207, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 200, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 235, + "src": "3816:10:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 199, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3816:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 202, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 235, + "src": "3828:13:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 201, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3828:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 204, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 235, + "src": "3843:10:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 203, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3843:5:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 206, + "name": "operation", + "nodeType": "VariableDeclaration", + "scope": 235, + "src": "3855:24:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + }, + "typeName": { + "contractScope": null, + "id": 205, + "name": "Enum.Operation", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 29, + "src": "3855:14:3", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3815:65:3" + }, + "payable": false, + "returnParameters": { + "id": 212, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 211, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 235, + "src": "3932:7:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 210, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3932:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3931:9:3" + }, + "scope": 346, + "src": "3798:294:3", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 304, + "nodeType": "Block", + "src": "4202:433:3", + "statements": [ + { + "assignments": [ + 250 + ], + "declarations": [ + { + "constant": false, + "id": 250, + "name": "lastOwner", + "nodeType": "VariableDeclaration", + "scope": 305, + "src": "4264:17:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 249, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4264:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 254, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 252, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4292:1:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 251, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4284:7:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 253, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4284:10:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4264:30:3" + }, + { + "assignments": [], + "declarations": [ + { + "constant": false, + "id": 256, + "name": "currentOwner", + "nodeType": "VariableDeclaration", + "scope": 305, + "src": "4304:20:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 255, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4304:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 257, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "4304:20:3" + }, + { + "assignments": [], + "declarations": [ + { + "constant": false, + "id": 259, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 305, + "src": "4334:9:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 258, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4334:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 260, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "4334:9:3" + }, + { + "body": { + "id": 302, + "nodeType": "Block", + "src": "4427:202:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 284, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 271, + "name": "currentOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 256, + "src": "4441:12:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 273, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 237, + "src": "4466:4:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 274, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 240, + "src": "4472:1:3", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", + "typeString": "uint8[] memory" + } + }, + "id": 276, + "indexExpression": { + "argumentTypes": null, + "id": 275, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 259, + "src": "4474:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4472:4:3", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 277, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 243, + "src": "4478:1:3", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 279, + "indexExpression": { + "argumentTypes": null, + "id": 278, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 259, + "src": "4480:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4478:4:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 280, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 246, + "src": "4484:1:3", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 282, + "indexExpression": { + "argumentTypes": null, + "id": 281, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 259, + "src": "4486:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4484:4:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 272, + "name": "ecrecover", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2457, + "src": "4456:9:3", + "typeDescriptions": { + "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)" + } + }, + "id": 283, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4456:33:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "4441:48:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 285, + "nodeType": "ExpressionStatement", + "src": "4441:48:3" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 287, + "name": "isOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1156 + ], + "referencedDeclaration": 1156, + "src": "4511:7:3", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 289, + "indexExpression": { + "argumentTypes": null, + "id": 288, + "name": "currentOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 256, + "src": "4519:12:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4511:21:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 286, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "4503:7:3", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 290, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4503:30:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 291, + "nodeType": "ExpressionStatement", + "src": "4503:30:3" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 295, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 293, + "name": "currentOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 256, + "src": "4555:12:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "id": 294, + "name": "lastOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 250, + "src": "4570:9:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "4555:24:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 292, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "4547:7:3", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 296, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4547:33:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 297, + "nodeType": "ExpressionStatement", + "src": "4547:33:3" + }, + { + "expression": { + "argumentTypes": null, + "id": 300, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 298, + "name": "lastOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 250, + "src": "4594:9:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 299, + "name": "currentOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 256, + "src": "4606:12:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "4594:24:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 301, + "nodeType": "ExpressionStatement", + "src": "4594:24:3" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 267, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 265, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 259, + "src": "4407:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "id": 266, + "name": "threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1152 + ], + "referencedDeclaration": 1152, + "src": "4411:9:3", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "4407:13:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 303, + "initializationExpression": { + "expression": { + "argumentTypes": null, + "id": 263, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 261, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 259, + "src": "4400:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 262, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4404:1:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4400:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 264, + "nodeType": "ExpressionStatement", + "src": "4400:5:3" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 269, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "4422:3:3", + "subExpression": { + "argumentTypes": null, + "id": 268, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 259, + "src": "4422:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 270, + "nodeType": "ExpressionStatement", + "src": "4422:3:3" + }, + "nodeType": "ForStatement", + "src": "4395:234:3" + } + ] + }, + "documentation": null, + "id": 305, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "checkHash", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 247, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 237, + "name": "hash", + "nodeType": "VariableDeclaration", + "scope": 305, + "src": "4117:12:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 236, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4117:7:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 240, + "name": "v", + "nodeType": "VariableDeclaration", + "scope": 305, + "src": "4131:9:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", + "typeString": "uint8[]" + }, + "typeName": { + "baseType": { + "id": 238, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "4131:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 239, + "length": null, + "nodeType": "ArrayTypeName", + "src": "4131:7:3", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr", + "typeString": "uint8[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 243, + "name": "r", + "nodeType": "VariableDeclaration", + "scope": 305, + "src": "4142:11:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 241, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4142:7:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 242, + "length": null, + "nodeType": "ArrayTypeName", + "src": "4142:9:3", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 246, + "name": "s", + "nodeType": "VariableDeclaration", + "scope": 305, + "src": "4155:11:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 244, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4155:7:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 245, + "length": null, + "nodeType": "ArrayTypeName", + "src": "4155:9:3", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4116:51:3" + }, + "payable": false, + "returnParameters": { + "id": 248, + "nodeType": "ParameterList", + "parameters": [], + "src": "4202:0:3" + }, + "scope": 346, + "src": "4098:537:3", + "stateMutability": "view", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 344, + "nodeType": "Block", + "src": "5451:126:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30783139", + "id": 328, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5483:4:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_25_by_1", + "typeString": "int_const 25" + }, + "value": "0x19" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_25_by_1", + "typeString": "int_const 25" + } + ], + "id": 327, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5478:4:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes1_$", + "typeString": "type(bytes1)" + }, + "typeName": "byte" + }, + "id": 329, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5478:10:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 331, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5495:1:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 330, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5490:4:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes1_$", + "typeString": "type(bytes1)" + }, + "typeName": "byte" + }, + "id": 332, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5490:7:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + { + "argumentTypes": null, + "id": 333, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2496, + "src": "5499:4:3", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafePersonalEdition_$346", + "typeString": "contract GnosisSafePersonalEdition" + } + }, + { + "argumentTypes": null, + "id": 334, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 307, + "src": "5505:2:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 335, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 309, + "src": "5509:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 336, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 311, + "src": "5516:4:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 337, + "name": "operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 313, + "src": "5522:9:3", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + }, + { + "argumentTypes": null, + "id": 338, + "name": "safeTxGas", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 315, + "src": "5533:9:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 339, + "name": "dataGas", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 317, + "src": "5544:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 340, + "name": "gasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 319, + "src": "5553:8:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 341, + "name": "_nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 321, + "src": "5563:6:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + { + "typeIdentifier": "t_contract$_GnosisSafePersonalEdition_$346", + "typeString": "contract GnosisSafePersonalEdition" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 326, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2459, + "src": "5468:9:3", + "typeDescriptions": { + "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", + "typeString": "function () pure returns (bytes32)" + } + }, + "id": 342, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5468:102:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 325, + "id": 343, + "nodeType": "Return", + "src": "5461:109:3" + } + ] + }, + "documentation": "@dev Returns hash to be signed by owners.\n @param to Destination address.\n @param value Ether value.\n @param data Data payload.\n @param operation Operation type.\n @param safeTxGas Fas that should be used for the safe transaction.\n @param dataGas Gas costs for data used to trigger the safe transaction.\n @param gasPrice Maximum gas price that should be used for this transaction.\n @param _nonce Transaction nonce.\n @return Transaction hash.", + "id": 345, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "getTransactionHash", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 322, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 307, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 345, + "src": "5190:10:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 306, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5190:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 309, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 345, + "src": "5211:13:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 308, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5211:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 311, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 345, + "src": "5235:10:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 310, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5235:5:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 313, + "name": "operation", + "nodeType": "VariableDeclaration", + "scope": 345, + "src": "5256:24:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + }, + "typeName": { + "contractScope": null, + "id": 312, + "name": "Enum.Operation", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 29, + "src": "5256:14:3", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 315, + "name": "safeTxGas", + "nodeType": "VariableDeclaration", + "scope": 345, + "src": "5291:17:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 314, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5291:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 317, + "name": "dataGas", + "nodeType": "VariableDeclaration", + "scope": 345, + "src": "5319:15:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 316, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5319:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 319, + "name": "gasPrice", + "nodeType": "VariableDeclaration", + "scope": 345, + "src": "5345:16:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 318, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5345:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 321, + "name": "_nonce", + "nodeType": "VariableDeclaration", + "scope": 345, + "src": "5372:14:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 320, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5372:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5180:212:3" + }, + "payable": false, + "returnParameters": { + "id": 325, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 324, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 345, + "src": "5438:7:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 323, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5438:7:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5437:9:3" + }, + "scope": 346, + "src": "5153:424:3", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 347, + "src": "314:5265:3" + } + ], + "src": "0:5580:3" + }, + "legacyAST": { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafePersonalEdition.sol", + "exportedSymbols": { + "GnosisSafePersonalEdition": [ + 346 + ] + }, + "id": 347, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 65, + "literals": [ + "solidity", + "0.4", + ".23" + ], + "nodeType": "PragmaDirective", + "src": "0:23:3" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", + "file": "./GnosisSafe.sol", + "id": 66, + "nodeType": "ImportDirective", + "scope": 347, + "sourceUnit": 64, + "src": "24:26:3", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/MasterCopy.sol", + "file": "./MasterCopy.sol", + "id": 67, + "nodeType": "ImportDirective", + "scope": 347, + "sourceUnit": 780, + "src": "51:26:3", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 68, + "name": "MasterCopy", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 779, + "src": "352:10:3", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MasterCopy_$779", + "typeString": "contract MasterCopy" + } + }, + "id": 69, + "nodeType": "InheritanceSpecifier", + "src": "352:10:3" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 70, + "name": "GnosisSafe", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 63, + "src": "364:10:3", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$63", + "typeString": "contract GnosisSafe" + } + }, + "id": 71, + "nodeType": "InheritanceSpecifier", + "src": "364:10:3" + } + ], + "contractDependencies": [ + 63, + 779, + 1142, + 1438, + 1559 + ], + "contractKind": "contract", + "documentation": "@title Gnosis Safe Personal Edition - A multisignature wallet with support for confirmations using signed messages based on ERC191.\n @author Stefan George - \n @author Richard Meissner - ", + "fullyImplemented": true, + "id": 346, + "linearizedBaseContracts": [ + 346, + 63, + 1438, + 1142, + 779, + 1559 + ], + "name": "GnosisSafePersonalEdition", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "id": 74, + "name": "NAME", + "nodeType": "VariableDeclaration", + "scope": 346, + "src": "382:60:3", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory", + "typeString": "string" + }, + "typeName": { + "id": 72, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "382:6:3", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "476e6f736973205361666520506572736f6e616c2045646974696f6e", + "id": 73, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "412:30:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_b657d2895d137bf089ce1df776b732639b1ebc2a3aec3bd837e225e9e0965154", + "typeString": "literal_string \"Gnosis Safe Personal Edition\"" + }, + "value": "Gnosis Safe Personal Edition" + }, + "visibility": "public" + }, + { + "constant": true, + "id": 77, + "name": "VERSION", + "nodeType": "VariableDeclaration", + "scope": 346, + "src": "448:40:3", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory", + "typeString": "string" + }, + "typeName": { + "id": 75, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "448:6:3", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "302e302e31", + "id": 76, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "481:7:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", + "typeString": "literal_string \"0.0.1\"" + }, + "value": "0.0.1" + }, + "visibility": "public" + }, + { + "constant": true, + "id": 80, + "name": "BASE_TX_GAS_COSTS", + "nodeType": "VariableDeclaration", + "scope": 346, + "src": "499:51:3", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 78, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "499:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "3231303030", + "id": 79, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "545:5:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_21000_by_1", + "typeString": "int_const 21000" + }, + "value": "21000" + }, + "visibility": "internal" + }, + { + "constant": true, + "id": 83, + "name": "PAYMENT_GAS_COSTS", + "nodeType": "VariableDeclaration", + "scope": 346, + "src": "556:51:3", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 81, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "556:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "3130303030", + "id": 82, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "602:5:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_10000_by_1", + "typeString": "int_const 10000" + }, + "value": "10000" + }, + "visibility": "internal" + }, + { + "anonymous": false, + "documentation": null, + "id": 85, + "name": "ExecutionFailed", + "nodeType": "EventDefinition", + "parameters": { + "id": 84, + "nodeType": "ParameterList", + "parameters": [], + "src": "635:2:3" + }, + "src": "614:24:3" + }, + { + "constant": false, + "id": 87, + "name": "nonce", + "nodeType": "VariableDeclaration", + "scope": 346, + "src": "644:20:3", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 86, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "644:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "public" + }, + { + "body": { + "id": 179, + "nodeType": "Block", + "src": "1744:708:3", + "statements": [ + { + "assignments": [ + 114 + ], + "declarations": [ + { + "constant": false, + "id": 114, + "name": "startGas", + "nodeType": "VariableDeclaration", + "scope": 180, + "src": "1754:16:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 113, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1754:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 117, + "initialValue": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 115, + "name": "gasleft", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2458, + "src": "1773:7:3", + "typeDescriptions": { + "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 116, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1773:9:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1754:28:3" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 120, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 89, + "src": "1821:2:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 121, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 91, + "src": "1825:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 122, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 93, + "src": "1832:4:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 123, + "name": "operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 95, + "src": "1838:9:3", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + }, + { + "argumentTypes": null, + "id": 124, + "name": "safeTxGas", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 97, + "src": "1849:9:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 125, + "name": "dataGas", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 99, + "src": "1860:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 126, + "name": "gasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 101, + "src": "1869:8:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 127, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 87, + "src": "1879:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 119, + "name": "getTransactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 345, + "src": "1802:18:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256,uint256,uint256,uint256) view returns (bytes32)" + } + }, + "id": 128, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1802:83:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 129, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 104, + "src": "1887:1:3", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", + "typeString": "uint8[] memory" + } + }, + { + "argumentTypes": null, + "id": 130, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 107, + "src": "1890:1:3", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + { + "argumentTypes": null, + "id": 131, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 110, + "src": "1893:1:3", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", + "typeString": "uint8[] memory" + }, + { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + }, + { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + ], + "id": 118, + "name": "checkHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 305, + "src": "1792:9:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_array$_t_uint8_$dyn_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$returns$__$", + "typeString": "function (bytes32,uint8[] memory,bytes32[] memory,bytes32[] memory) view" + } + }, + "id": 132, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1792:103:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 133, + "nodeType": "ExpressionStatement", + "src": "1792:103:3" + }, + { + "expression": { + "argumentTypes": null, + "id": 135, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "1956:7:3", + "subExpression": { + "argumentTypes": null, + "id": 134, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 87, + "src": "1956:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 136, + "nodeType": "ExpressionStatement", + "src": "1956:7:3" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 143, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 141, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 138, + "name": "gasleft", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2458, + "src": "1981:7:3", + "typeDescriptions": { + "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 139, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1981:9:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "id": 140, + "name": "PAYMENT_GAS_COSTS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 83, + "src": "1993:17:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1981:29:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 142, + "name": "safeTxGas", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 97, + "src": "2014:9:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1981:42:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 137, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "1973:7:3", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 144, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1973:51:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 145, + "nodeType": "ExpressionStatement", + "src": "1973:51:3" + }, + { + "condition": { + "argumentTypes": null, + "id": 153, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "2038:47:3", + "subExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 147, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 89, + "src": "2047:2:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 148, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 91, + "src": "2051:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 149, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 93, + "src": "2058:4:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 150, + "name": "operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 95, + "src": "2064:9:3", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + }, + { + "argumentTypes": null, + "id": 151, + "name": "safeTxGas", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 97, + "src": "2075:9:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 146, + "name": "execute", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1095, + "src": "2039:7:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) returns (bool)" + } + }, + "id": 152, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2039:46:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 158, + "nodeType": "IfStatement", + "src": "2034:100:3", + "trueBody": { + "id": 157, + "nodeType": "Block", + "src": "2087:47:3", + "statements": [ + { + "eventCall": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 154, + "name": "ExecutionFailed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 85, + "src": "2106:15:3", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 155, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2106:17:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 156, + "nodeType": "EmitStatement", + "src": "2101:22:3" + } + ] + } + }, + { + "assignments": [ + 160 + ], + "declarations": [ + { + "constant": false, + "id": 160, + "name": "gasCosts", + "nodeType": "VariableDeclaration", + "scope": 180, + "src": "2143:16:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 159, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2143:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 168, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 165, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 162, + "name": "startGas", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 114, + "src": "2176:8:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 163, + "name": "gasleft", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2458, + "src": "2187:7:3", + "typeDescriptions": { + "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 164, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2187:9:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2176:20:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 166, + "name": "dataGas", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 99, + "src": "2198:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 161, + "name": "totalGasCosts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 198, + "src": "2162:13:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" + } + }, + "id": 167, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2162:44:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2143:63:3" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 176, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 174, + "name": "gasCosts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 160, + "src": "2425:8:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "id": 175, + "name": "gasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 101, + "src": "2436:8:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2425:19:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 169, + "name": "tx", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2477, + "src": "2406:2:3", + "typeDescriptions": { + "typeIdentifier": "t_magic_transaction", + "typeString": "tx" + } + }, + "id": 172, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "origin", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2406:9:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 173, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2406:18:3", + "typeDescriptions": { + "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 177, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2406:39:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 178, + "nodeType": "ExpressionStatement", + "src": "2406:39:3" + } + ] + }, + "documentation": "@dev Allows to execute a Safe transaction confirmed by required number of owners.\n @param to Destination address of Safe transaction.\n @param value Ether value of Safe transaction.\n @param data Data payload of Safe transaction.\n @param operation Operation type of Safe transaction.\n @param safeTxGas Gas that should be used for the Safe transaction.\n @param dataGas Gas costs for data used to trigger the safe transaction.\n @param gasPrice Gas price that should be used for the payment calculation.\n @param v Array of signature V values sorted by owner addresses.\n @param r Array of signature R values sorted by owner addresses.\n @param s Array of signature S values sorted by owner addresses.", + "id": 180, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "payAndExecuteTransaction", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 111, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 89, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 180, + "src": "1486:10:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 88, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1486:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 91, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 180, + "src": "1507:13:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 90, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1507:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 93, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 180, + "src": "1531:10:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 92, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1531:5:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 95, + "name": "operation", + "nodeType": "VariableDeclaration", + "scope": 180, + "src": "1552:24:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + }, + "typeName": { + "contractScope": null, + "id": 94, + "name": "Enum.Operation", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 29, + "src": "1552:14:3", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 97, + "name": "safeTxGas", + "nodeType": "VariableDeclaration", + "scope": 180, + "src": "1587:17:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 96, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1587:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 99, + "name": "dataGas", + "nodeType": "VariableDeclaration", + "scope": 180, + "src": "1614:15:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 98, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1614:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 101, + "name": "gasPrice", + "nodeType": "VariableDeclaration", + "scope": 180, + "src": "1639:16:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 100, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1639:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 104, + "name": "v", + "nodeType": "VariableDeclaration", + "scope": 180, + "src": "1665:9:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", + "typeString": "uint8[]" + }, + "typeName": { + "baseType": { + "id": 102, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1665:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 103, + "length": null, + "nodeType": "ArrayTypeName", + "src": "1665:7:3", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr", + "typeString": "uint8[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 107, + "name": "r", + "nodeType": "VariableDeclaration", + "scope": 180, + "src": "1685:11:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 105, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1685:7:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 106, + "length": null, + "nodeType": "ArrayTypeName", + "src": "1685:9:3", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 110, + "name": "s", + "nodeType": "VariableDeclaration", + "scope": 180, + "src": "1707:11:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 108, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1707:7:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 109, + "length": null, + "nodeType": "ArrayTypeName", + "src": "1707:9:3", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1476:248:3" + }, + "payable": false, + "returnParameters": { + "id": 112, + "nodeType": "ParameterList", + "parameters": [], + "src": "1744:0:3" + }, + "scope": 346, + "src": "1443:1009:3", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 197, + "nodeType": "Block", + "src": "3007:86:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 195, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 193, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 191, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 189, + "name": "executionGas", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 182, + "src": "3024:12:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "id": 190, + "name": "dataGas", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 184, + "src": "3039:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3024:22:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "id": 192, + "name": "PAYMENT_GAS_COSTS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 83, + "src": "3049:17:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3024:42:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "id": 194, + "name": "BASE_TX_GAS_COSTS", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 80, + "src": "3069:17:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3024:62:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 188, + "id": 196, + "nodeType": "Return", + "src": "3017:69:3" + } + ] + }, + "documentation": "@dev Calculates the total gas costs for a safe transaction with the gas costs for the execution of the transaction.\n @param executionGas Gas costs for the execution of the safe transaction.\n @param dataGas Gas costs for data used to trigger the safe transaction.\n @return Total gas costs for the execution (this includes gas costs for the payment to tx.origin, base transaction and payload data).", + "id": 198, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "totalGasCosts", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 185, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 182, + "name": "executionGas", + "nodeType": "VariableDeclaration", + "scope": 198, + "src": "2907:20:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 181, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2907:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 184, + "name": "dataGas", + "nodeType": "VariableDeclaration", + "scope": 198, + "src": "2929:15:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 183, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2929:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2906:39:3" + }, + "payable": false, + "returnParameters": { + "id": 188, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 187, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 198, + "src": "2993:7:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 186, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2993:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2992:9:3" + }, + "scope": 346, + "src": "2884:209:3", + "stateMutability": "pure", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 234, + "nodeType": "Block", + "src": "3945:147:3", + "statements": [ + { + "assignments": [ + 214 + ], + "declarations": [ + { + "constant": false, + "id": 214, + "name": "startGas", + "nodeType": "VariableDeclaration", + "scope": 235, + "src": "3955:16:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 213, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3955:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 217, + "initialValue": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 215, + "name": "gasleft", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2458, + "src": "3974:7:3", + "typeDescriptions": { + "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 216, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3974:9:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3955:28:3" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 220, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 200, + "src": "4009:2:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 221, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 202, + "src": "4013:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 222, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 204, + "src": "4020:4:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 223, + "name": "operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 206, + "src": "4026:9:3", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 224, + "name": "gasleft", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2458, + "src": "4037:7:3", + "typeDescriptions": { + "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 225, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4037:9:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 219, + "name": "execute", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1095, + "src": "4001:7:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) returns (bool)" + } + }, + "id": 226, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4001:46:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 218, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "3993:7:3", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 227, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3993:55:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 228, + "nodeType": "ExpressionStatement", + "src": "3993:55:3" + }, + { + "expression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 232, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 229, + "name": "startGas", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 214, + "src": "4065:8:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 230, + "name": "gasleft", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2458, + "src": "4076:7:3", + "typeDescriptions": { + "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 231, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4076:9:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4065:20:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "functionReturnParameters": 212, + "id": 233, + "nodeType": "Return", + "src": "4058:27:3" + } + ] + }, + "documentation": "@dev Allows to estimate a Safe transaction. \n This method can only be used by the safe itself in a transaction. When estimating set `from` to the address of the safe.\n Since the `estimateGas` function includes refunds, call this method to get an estimated of the costs that are deducted from the safe with `payAndExecuteTransaction`\n @param to Destination address of Safe transaction.\n @param value Ether value of Safe transaction.\n @param data Data payload of Safe transaction.\n @param operation Operation type of Safe transaction.\n @return Estimate without refunds and overhead fees (base transaction and payload data gas costs).", + "id": 235, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 209, + "modifierName": { + "argumentTypes": null, + "id": 208, + "name": "authorized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1558, + "src": "3904:10:3", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "3904:10:3" + } + ], + "name": "estimate", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 207, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 200, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 235, + "src": "3816:10:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 199, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3816:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 202, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 235, + "src": "3828:13:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 201, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3828:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 204, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 235, + "src": "3843:10:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 203, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3843:5:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 206, + "name": "operation", + "nodeType": "VariableDeclaration", + "scope": 235, + "src": "3855:24:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + }, + "typeName": { + "contractScope": null, + "id": 205, + "name": "Enum.Operation", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 29, + "src": "3855:14:3", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3815:65:3" + }, + "payable": false, + "returnParameters": { + "id": 212, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 211, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 235, + "src": "3932:7:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 210, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3932:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3931:9:3" + }, + "scope": 346, + "src": "3798:294:3", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 304, + "nodeType": "Block", + "src": "4202:433:3", + "statements": [ + { + "assignments": [ + 250 + ], + "declarations": [ + { + "constant": false, + "id": 250, + "name": "lastOwner", + "nodeType": "VariableDeclaration", + "scope": 305, + "src": "4264:17:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 249, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4264:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 254, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 252, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4292:1:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 251, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4284:7:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 253, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4284:10:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4264:30:3" + }, + { + "assignments": [], + "declarations": [ + { + "constant": false, + "id": 256, + "name": "currentOwner", + "nodeType": "VariableDeclaration", + "scope": 305, + "src": "4304:20:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 255, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4304:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 257, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "4304:20:3" + }, + { + "assignments": [], + "declarations": [ + { + "constant": false, + "id": 259, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 305, + "src": "4334:9:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 258, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4334:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 260, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "4334:9:3" + }, + { + "body": { + "id": 302, + "nodeType": "Block", + "src": "4427:202:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 284, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 271, + "name": "currentOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 256, + "src": "4441:12:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 273, + "name": "hash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 237, + "src": "4466:4:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 274, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 240, + "src": "4472:1:3", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", + "typeString": "uint8[] memory" + } + }, + "id": 276, + "indexExpression": { + "argumentTypes": null, + "id": 275, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 259, + "src": "4474:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4472:4:3", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 277, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 243, + "src": "4478:1:3", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 279, + "indexExpression": { + "argumentTypes": null, + "id": 278, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 259, + "src": "4480:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4478:4:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 280, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 246, + "src": "4484:1:3", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 282, + "indexExpression": { + "argumentTypes": null, + "id": 281, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 259, + "src": "4486:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4484:4:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 272, + "name": "ecrecover", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2457, + "src": "4456:9:3", + "typeDescriptions": { + "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)" + } + }, + "id": 283, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4456:33:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "4441:48:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 285, + "nodeType": "ExpressionStatement", + "src": "4441:48:3" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 287, + "name": "isOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1156 + ], + "referencedDeclaration": 1156, + "src": "4511:7:3", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 289, + "indexExpression": { + "argumentTypes": null, + "id": 288, + "name": "currentOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 256, + "src": "4519:12:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4511:21:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 286, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "4503:7:3", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 290, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4503:30:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 291, + "nodeType": "ExpressionStatement", + "src": "4503:30:3" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 295, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 293, + "name": "currentOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 256, + "src": "4555:12:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "id": 294, + "name": "lastOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 250, + "src": "4570:9:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "4555:24:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 292, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "4547:7:3", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 296, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4547:33:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 297, + "nodeType": "ExpressionStatement", + "src": "4547:33:3" + }, + { + "expression": { + "argumentTypes": null, + "id": 300, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 298, + "name": "lastOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 250, + "src": "4594:9:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 299, + "name": "currentOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 256, + "src": "4606:12:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "4594:24:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 301, + "nodeType": "ExpressionStatement", + "src": "4594:24:3" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 267, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 265, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 259, + "src": "4407:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "id": 266, + "name": "threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1152 + ], + "referencedDeclaration": 1152, + "src": "4411:9:3", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "4407:13:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 303, + "initializationExpression": { + "expression": { + "argumentTypes": null, + "id": 263, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 261, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 259, + "src": "4400:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 262, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4404:1:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "4400:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 264, + "nodeType": "ExpressionStatement", + "src": "4400:5:3" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 269, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "4422:3:3", + "subExpression": { + "argumentTypes": null, + "id": 268, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 259, + "src": "4422:1:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 270, + "nodeType": "ExpressionStatement", + "src": "4422:3:3" + }, + "nodeType": "ForStatement", + "src": "4395:234:3" + } + ] + }, + "documentation": null, + "id": 305, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "checkHash", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 247, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 237, + "name": "hash", + "nodeType": "VariableDeclaration", + "scope": 305, + "src": "4117:12:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 236, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4117:7:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 240, + "name": "v", + "nodeType": "VariableDeclaration", + "scope": 305, + "src": "4131:9:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", + "typeString": "uint8[]" + }, + "typeName": { + "baseType": { + "id": 238, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "4131:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 239, + "length": null, + "nodeType": "ArrayTypeName", + "src": "4131:7:3", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr", + "typeString": "uint8[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 243, + "name": "r", + "nodeType": "VariableDeclaration", + "scope": 305, + "src": "4142:11:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 241, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4142:7:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 242, + "length": null, + "nodeType": "ArrayTypeName", + "src": "4142:9:3", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 246, + "name": "s", + "nodeType": "VariableDeclaration", + "scope": 305, + "src": "4155:11:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 244, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "4155:7:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 245, + "length": null, + "nodeType": "ArrayTypeName", + "src": "4155:9:3", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4116:51:3" + }, + "payable": false, + "returnParameters": { + "id": 248, + "nodeType": "ParameterList", + "parameters": [], + "src": "4202:0:3" + }, + "scope": 346, + "src": "4098:537:3", + "stateMutability": "view", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 344, + "nodeType": "Block", + "src": "5451:126:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30783139", + "id": 328, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5483:4:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_25_by_1", + "typeString": "int_const 25" + }, + "value": "0x19" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_25_by_1", + "typeString": "int_const 25" + } + ], + "id": 327, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5478:4:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes1_$", + "typeString": "type(bytes1)" + }, + "typeName": "byte" + }, + "id": 329, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5478:10:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 331, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5495:1:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 330, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "5490:4:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes1_$", + "typeString": "type(bytes1)" + }, + "typeName": "byte" + }, + "id": 332, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5490:7:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + { + "argumentTypes": null, + "id": 333, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2496, + "src": "5499:4:3", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafePersonalEdition_$346", + "typeString": "contract GnosisSafePersonalEdition" + } + }, + { + "argumentTypes": null, + "id": 334, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 307, + "src": "5505:2:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 335, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 309, + "src": "5509:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 336, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 311, + "src": "5516:4:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 337, + "name": "operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 313, + "src": "5522:9:3", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + }, + { + "argumentTypes": null, + "id": 338, + "name": "safeTxGas", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 315, + "src": "5533:9:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 339, + "name": "dataGas", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 317, + "src": "5544:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 340, + "name": "gasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 319, + "src": "5553:8:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 341, + "name": "_nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 321, + "src": "5563:6:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + { + "typeIdentifier": "t_contract$_GnosisSafePersonalEdition_$346", + "typeString": "contract GnosisSafePersonalEdition" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 326, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2459, + "src": "5468:9:3", + "typeDescriptions": { + "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", + "typeString": "function () pure returns (bytes32)" + } + }, + "id": 342, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5468:102:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 325, + "id": 343, + "nodeType": "Return", + "src": "5461:109:3" + } + ] + }, + "documentation": "@dev Returns hash to be signed by owners.\n @param to Destination address.\n @param value Ether value.\n @param data Data payload.\n @param operation Operation type.\n @param safeTxGas Fas that should be used for the safe transaction.\n @param dataGas Gas costs for data used to trigger the safe transaction.\n @param gasPrice Maximum gas price that should be used for this transaction.\n @param _nonce Transaction nonce.\n @return Transaction hash.", + "id": 345, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "getTransactionHash", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 322, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 307, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 345, + "src": "5190:10:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 306, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5190:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 309, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 345, + "src": "5211:13:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 308, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5211:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 311, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 345, + "src": "5235:10:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 310, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "5235:5:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 313, + "name": "operation", + "nodeType": "VariableDeclaration", + "scope": 345, + "src": "5256:24:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + }, + "typeName": { + "contractScope": null, + "id": 312, + "name": "Enum.Operation", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 29, + "src": "5256:14:3", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 315, + "name": "safeTxGas", + "nodeType": "VariableDeclaration", + "scope": 345, + "src": "5291:17:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 314, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5291:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 317, + "name": "dataGas", + "nodeType": "VariableDeclaration", + "scope": 345, + "src": "5319:15:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 316, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5319:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 319, + "name": "gasPrice", + "nodeType": "VariableDeclaration", + "scope": 345, + "src": "5345:16:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 318, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5345:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 321, + "name": "_nonce", + "nodeType": "VariableDeclaration", + "scope": 345, + "src": "5372:14:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 320, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5372:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5180:212:3" + }, + "payable": false, + "returnParameters": { + "id": 325, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 324, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 345, + "src": "5438:7:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 323, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "5438:7:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5437:9:3" + }, + "scope": 346, + "src": "5153:424:3", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 347, + "src": "314:5265:3" + } + ], + "src": "0:5580:3" + }, + "compiler": { + "name": "solc", + "version": "0.4.23+commit.124ca40d.Emscripten.clang" + }, + "networks": { + "4": { + "events": {}, + "links": {}, + "address": "0x15d8f9bb023d47ffd2fb2330b868521ea2161895", + "transactionHash": "0xcf3802c2d7b1ce19bd5a1556a992b9ac785bd3c4c7885a5b20f69edc75ddd844" + }, + "1525950336085": { + "events": {}, + "links": {}, + "address": "0x1f8829f66b8ac7a6893109dd298007f5dd3bcadf", + "transactionHash": "0x9a582bc25c7705ede926f13bef0ba8fa76176d0ec80dc0871e1b28d87382f545" + } + }, + "schemaVersion": "2.0.0", + "updatedAt": "2018-05-10T11:07:04.685Z" +} \ No newline at end of file diff --git a/safe-contracts/build/contracts/GnosisSafeStateChannelEdition.json b/safe-contracts/build/contracts/GnosisSafeStateChannelEdition.json new file mode 100644 index 0000000000..c15e4a8768 --- /dev/null +++ b/safe-contracts/build/contracts/GnosisSafeStateChannelEdition.json @@ -0,0 +1,5463 @@ +{ + "contractName": "GnosisSafeStateChannelEdition", + "abi": [ + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "uint256" + } + ], + "name": "owners", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "owner", + "type": "address" + }, + { + "name": "_threshold", + "type": "uint8" + } + ], + "name": "addOwner", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "module", + "type": "address" + } + ], + "name": "addModule", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "owner", + "type": "address" + } + ], + "name": "isOwner", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "threshold", + "outputs": [ + { + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "address" + } + ], + "name": "isModule", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "oldOwnerIndex", + "type": "uint256" + }, + { + "name": "oldOwner", + "type": "address" + }, + { + "name": "newOwner", + "type": "address" + } + ], + "name": "replaceOwner", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "moduleIndex", + "type": "uint256" + }, + { + "name": "module", + "type": "address" + } + ], + "name": "removeModule", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_masterCopy", + "type": "address" + } + ], + "name": "changeMasterCopy", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "uint256" + } + ], + "name": "modules", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "ownerIndex", + "type": "uint256" + }, + { + "name": "owner", + "type": "address" + }, + { + "name": "_threshold", + "type": "uint8" + } + ], + "name": "removeOwner", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_owners", + "type": "address[]" + }, + { + "name": "_threshold", + "type": "uint8" + }, + { + "name": "to", + "type": "address" + }, + { + "name": "data", + "type": "bytes" + } + ], + "name": "setup", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getOwners", + "outputs": [ + { + "name": "", + "type": "address[]" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "NAME", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "to", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + }, + { + "name": "data", + "type": "bytes" + }, + { + "name": "operation", + "type": "uint8" + } + ], + "name": "executeModule", + "outputs": [ + { + "name": "success", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getModules", + "outputs": [ + { + "name": "", + "type": "address[]" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_threshold", + "type": "uint8" + } + ], + "name": "changeThreshold", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "bytes32" + } + ], + "name": "isExecuted", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "VERSION", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "payable": true, + "stateMutability": "payable", + "type": "fallback" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "newContract", + "type": "address" + } + ], + "name": "ContractCreation", + "type": "event" + }, + { + "constant": false, + "inputs": [ + { + "name": "to", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + }, + { + "name": "data", + "type": "bytes" + }, + { + "name": "operation", + "type": "uint8" + }, + { + "name": "nonce", + "type": "uint256" + }, + { + "name": "v", + "type": "uint8[]" + }, + { + "name": "r", + "type": "bytes32[]" + }, + { + "name": "s", + "type": "bytes32[]" + } + ], + "name": "executeTransaction", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "to", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + }, + { + "name": "data", + "type": "bytes" + }, + { + "name": "operation", + "type": "uint8" + }, + { + "name": "nonce", + "type": "uint256" + } + ], + "name": "getTransactionHash", + "outputs": [ + { + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b50612177806100206000396000f30060806040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063025e7c271461011f5780630e5229b01461018c5780631ed86f19146101dc5780632b5000411461021f5780632f54bf6e146102e557806342cde4e81461034057806342f6e3891461037157806354e99c6e146103cc578063782e46be146104395780637c6401d3146105ac5780637de7edef146105f957806381b2248a1461063c578063842b954e146106a9578063a04222e114610703578063a0e67e2b146107dc578063a3f4df7e14610848578063b021640a146108d8578063b2494df314610990578063b7f3358d146109fc578063e52cb36a14610a2c578063ffa1ad7414610a75575b005b34801561012b57600080fd5b5061014a60048036038101908080359060200190929190505050610b05565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561019857600080fd5b506101da600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050610b43565b005b3480156101e857600080fd5b5061021d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ce6565b005b34801561022b57600080fd5b506102c7600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050610e60565b60405180826000191660001916815260200191505060405180910390f35b3480156102f157600080fd5b50610326600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061107c565b604051808215151515815260200191505060405180910390f35b34801561034c57600080fd5b506103556110d2565b604051808260ff1660ff16815260200191505060405180910390f35b34801561037d57600080fd5b506103b2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110e9565b604051808215151515815260200191505060405180910390f35b3480156103d857600080fd5b5061043760048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611109565b005b34801561044557600080fd5b506105aa600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050611342565b005b3480156105b857600080fd5b506105f760048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506113eb565b005b34801561060557600080fd5b5061063a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115a1565b005b34801561064857600080fd5b5061066760048036038101908080359060200190929190505050611644565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156106b557600080fd5b5061070160048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050611682565b005b34801561070f57600080fd5b506107da60048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061187d565b005b3480156107e857600080fd5b506107f1611897565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610834578082015181840152602081019050610819565b505050509050019250505060405180910390f35b34801561085457600080fd5b5061085d611925565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561089d578082015181840152602081019050610882565b50505050905090810190601f1680156108ca5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156108e457600080fd5b50610976600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050611985565b604051808215151515815260200191505060405180910390f35b34801561099c57600080fd5b506109a56119f6565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156109e85780820151818401526020810190506109cd565b505050509050019250505060405180910390f35b348015610a0857600080fd5b50610a2a600480360381019080803560ff169060200190929190505050611a84565b005b348015610a3857600080fd5b50610a5b6004803603810190808035600019169060200190929190505050611b06565b604051808215151515815260200191505060405180910390f35b348015610a8157600080fd5b50610a8a611b26565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610aca578082015181840152602081019050610aaf565b50505050905090810190601f168015610af75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600381815481101515610b1457fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b7d57600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614151515610ba357600080fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610bfc57600080fd5b60038290806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506001600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508060ff16600460009054906101000a900460ff1660ff16141515610ce257610ce181611a84565b5b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610d2057600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610d4657600080fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610d9f57600080fd5b60018190806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f01000000000000000000000000000000000000000000000000000000000000000230888888888860405180897effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083835b6020831015156110015780518252602082019150602081019050602083039250610fdc565b6001836020036101000a03801982511681845116808217855250505050505090500183600281111561102f57fe5b60ff167f0100000000000000000000000000000000000000000000000000000000000000028152600101828152602001985050505050505050506040518091039020905095945050505050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600460009054906101000a900460ff16905090565b60026020528060005260406000206000915054906101000a900460ff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561114357600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561116957600080fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156111c257600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166003848154811015156111e857fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561123557600080fd5b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550806003848154811015156112f557fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b60006113518989898989610e60565b905060066000826000191660001916815260200190815260200160002060009054906101000a900460ff1615151561138857600080fd5b61139481858585611b5f565b600160066000836000191660001916815260200190815260200160002060006101000a81548160ff0219169083151502179055506113d5898989895a611cf9565b15156113e057600080fd5b505050505050505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561142557600080fd5b8073ffffffffffffffffffffffffffffffffffffffff1660018381548110151561144b57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561149857600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060018080805490500381548110151561150557fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660018381548110151561153f57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600180548091906001900361159c9190612001565b505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156115db57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561160157600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60018181548110151561165357fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156116bc57600080fd5b8060ff16600160038054905003101515156116d657600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166003848154811015156116fc57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561174957600080fd5b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060036001600380549050038154811015156117b857fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166003848154811015156117f257fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600380548091906001900361184f919061202d565b508060ff16600460009054906101000a900460ff1660ff161415156118785761187781611a84565b5b505050565b6118878484611df6565b6118918282611f84565b50505050565b6060600380548060200260200160405190810160405280929190818152602001828054801561191b57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116118d1575b5050505050905090565b606060405190810160405280602181526020017f476e6f7369732053616665205374617465204368616e6e656c2045646974696f81526020017f6e0000000000000000000000000000000000000000000000000000000000000081525081565b6000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156119df57600080fd5b6119ec858585855a611cf9565b9050949350505050565b60606001805480602002602001604051908101604052809291908181526020018280548015611a7a57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611a30575b5050505050905090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611abe57600080fd5b6003805490508160ff1611151515611ad557600080fd5b60018160ff1610151515611ae857600080fd5b80600460006101000a81548160ff021916908360ff16021790555050565b60066020528060005260406000206000915054906101000a900460ff1681565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000806000809250600090505b600460009054906101000a900460ff1660ff16811015611cf0576001878783815181101515611b9757fe5b906020019060200201518784815181101515611baf57fe5b906020019060200201518785815181101515611bc757fe5b90602001906020020151604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af1158015611c42573d6000803e3d6000fd5b505050602060405103519150600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611ca657600080fd5b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16111515611ce057600080fd5b8192508080600101915050611b6c565b50505050505050565b60008060006002811115611d0957fe5b846002811115611d1557fe5b1415611d2e57611d2787878786611fbf565b9150611dec565b60016002811115611d3b57fe5b846002811115611d4757fe5b1415611d5f57611d58878685611fd8565b9150611deb565b611d6885611fef565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b6000806000600460009054906101000a900460ff1660ff16141515611e1a57600080fd5b83518360ff1611151515611e2d57600080fd5b60018360ff1610151515611e4057600080fd5b600091505b8351821015611f4c578382815181101515611e5c57fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff1614151515611e8e57600080fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515611ee757600080fd5b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508180600101925050611e45565b8360039080519060200190611f62929190612059565b5082600460006101000a81548160ff021916908360ff16021790555050505050565b60008273ffffffffffffffffffffffffffffffffffffffff16141515611fbb57611faf82825a611fd8565b1515611fba57600080fd5b5b5050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f09050919050565b8154818355818111156120285781836000526020600020918201910161202791906120e3565b5b505050565b8154818355818111156120545781836000526020600020918201910161205391906120e3565b5b505050565b8280548282559060005260206000209081019282156120d2579160200282015b828111156120d15782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190612079565b5b5090506120df9190612108565b5090565b61210591905b808211156121015760008160009055506001016120e9565b5090565b90565b61214891905b8082111561214457600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555060010161210e565b5090565b905600a165627a7a723058206b355f2ebea16bb70cf5109e223d45edf3885f89d9bac77bbdb410e1e0884c8e0029", + "deployedBytecode": "0x60806040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063025e7c271461011f5780630e5229b01461018c5780631ed86f19146101dc5780632b5000411461021f5780632f54bf6e146102e557806342cde4e81461034057806342f6e3891461037157806354e99c6e146103cc578063782e46be146104395780637c6401d3146105ac5780637de7edef146105f957806381b2248a1461063c578063842b954e146106a9578063a04222e114610703578063a0e67e2b146107dc578063a3f4df7e14610848578063b021640a146108d8578063b2494df314610990578063b7f3358d146109fc578063e52cb36a14610a2c578063ffa1ad7414610a75575b005b34801561012b57600080fd5b5061014a60048036038101908080359060200190929190505050610b05565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561019857600080fd5b506101da600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050610b43565b005b3480156101e857600080fd5b5061021d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ce6565b005b34801561022b57600080fd5b506102c7600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050610e60565b60405180826000191660001916815260200191505060405180910390f35b3480156102f157600080fd5b50610326600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061107c565b604051808215151515815260200191505060405180910390f35b34801561034c57600080fd5b506103556110d2565b604051808260ff1660ff16815260200191505060405180910390f35b34801561037d57600080fd5b506103b2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110e9565b604051808215151515815260200191505060405180910390f35b3480156103d857600080fd5b5061043760048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611109565b005b34801561044557600080fd5b506105aa600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050611342565b005b3480156105b857600080fd5b506105f760048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506113eb565b005b34801561060557600080fd5b5061063a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115a1565b005b34801561064857600080fd5b5061066760048036038101908080359060200190929190505050611644565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156106b557600080fd5b5061070160048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050611682565b005b34801561070f57600080fd5b506107da60048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061187d565b005b3480156107e857600080fd5b506107f1611897565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610834578082015181840152602081019050610819565b505050509050019250505060405180910390f35b34801561085457600080fd5b5061085d611925565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561089d578082015181840152602081019050610882565b50505050905090810190601f1680156108ca5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156108e457600080fd5b50610976600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050611985565b604051808215151515815260200191505060405180910390f35b34801561099c57600080fd5b506109a56119f6565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156109e85780820151818401526020810190506109cd565b505050509050019250505060405180910390f35b348015610a0857600080fd5b50610a2a600480360381019080803560ff169060200190929190505050611a84565b005b348015610a3857600080fd5b50610a5b6004803603810190808035600019169060200190929190505050611b06565b604051808215151515815260200191505060405180910390f35b348015610a8157600080fd5b50610a8a611b26565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610aca578082015181840152602081019050610aaf565b50505050905090810190601f168015610af75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600381815481101515610b1457fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b7d57600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614151515610ba357600080fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610bfc57600080fd5b60038290806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506001600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508060ff16600460009054906101000a900460ff1660ff16141515610ce257610ce181611a84565b5b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610d2057600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610d4657600080fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610d9f57600080fd5b60018190806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f01000000000000000000000000000000000000000000000000000000000000000230888888888860405180897effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083835b6020831015156110015780518252602082019150602081019050602083039250610fdc565b6001836020036101000a03801982511681845116808217855250505050505090500183600281111561102f57fe5b60ff167f0100000000000000000000000000000000000000000000000000000000000000028152600101828152602001985050505050505050506040518091039020905095945050505050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600460009054906101000a900460ff16905090565b60026020528060005260406000206000915054906101000a900460ff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561114357600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561116957600080fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156111c257600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166003848154811015156111e857fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561123557600080fd5b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550806003848154811015156112f557fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b60006113518989898989610e60565b905060066000826000191660001916815260200190815260200160002060009054906101000a900460ff1615151561138857600080fd5b61139481858585611b5f565b600160066000836000191660001916815260200190815260200160002060006101000a81548160ff0219169083151502179055506113d5898989895a611cf9565b15156113e057600080fd5b505050505050505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561142557600080fd5b8073ffffffffffffffffffffffffffffffffffffffff1660018381548110151561144b57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561149857600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060018080805490500381548110151561150557fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660018381548110151561153f57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600180548091906001900361159c9190612001565b505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156115db57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561160157600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60018181548110151561165357fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156116bc57600080fd5b8060ff16600160038054905003101515156116d657600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166003848154811015156116fc57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561174957600080fd5b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060036001600380549050038154811015156117b857fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166003848154811015156117f257fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600380548091906001900361184f919061202d565b508060ff16600460009054906101000a900460ff1660ff161415156118785761187781611a84565b5b505050565b6118878484611df6565b6118918282611f84565b50505050565b6060600380548060200260200160405190810160405280929190818152602001828054801561191b57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116118d1575b5050505050905090565b606060405190810160405280602181526020017f476e6f7369732053616665205374617465204368616e6e656c2045646974696f81526020017f6e0000000000000000000000000000000000000000000000000000000000000081525081565b6000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156119df57600080fd5b6119ec858585855a611cf9565b9050949350505050565b60606001805480602002602001604051908101604052809291908181526020018280548015611a7a57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611a30575b5050505050905090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611abe57600080fd5b6003805490508160ff1611151515611ad557600080fd5b60018160ff1610151515611ae857600080fd5b80600460006101000a81548160ff021916908360ff16021790555050565b60066020528060005260406000206000915054906101000a900460ff1681565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000806000809250600090505b600460009054906101000a900460ff1660ff16811015611cf0576001878783815181101515611b9757fe5b906020019060200201518784815181101515611baf57fe5b906020019060200201518785815181101515611bc757fe5b90602001906020020151604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af1158015611c42573d6000803e3d6000fd5b505050602060405103519150600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611ca657600080fd5b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16111515611ce057600080fd5b8192508080600101915050611b6c565b50505050505050565b60008060006002811115611d0957fe5b846002811115611d1557fe5b1415611d2e57611d2787878786611fbf565b9150611dec565b60016002811115611d3b57fe5b846002811115611d4757fe5b1415611d5f57611d58878685611fd8565b9150611deb565b611d6885611fef565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b6000806000600460009054906101000a900460ff1660ff16141515611e1a57600080fd5b83518360ff1611151515611e2d57600080fd5b60018360ff1610151515611e4057600080fd5b600091505b8351821015611f4c578382815181101515611e5c57fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff1614151515611e8e57600080fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515611ee757600080fd5b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508180600101925050611e45565b8360039080519060200190611f62929190612059565b5082600460006101000a81548160ff021916908360ff16021790555050505050565b60008273ffffffffffffffffffffffffffffffffffffffff16141515611fbb57611faf82825a611fd8565b1515611fba57600080fd5b5b5050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f09050919050565b8154818355818111156120285781836000526020600020918201910161202791906120e3565b5b505050565b8154818355818111156120545781836000526020600020918201910161205391906120e3565b5b505050565b8280548282559060005260206000209081019282156120d2579160200282015b828111156120d15782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190612079565b5b5090506120df9190612108565b5090565b61210591905b808211156121015760008160009055506001016120e9565b5090565b90565b61214891905b8082111561214457600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555060010161210e565b5090565b905600a165627a7a723058206b355f2ebea16bb70cf5109e223d45edf3885f89d9bac77bbdb410e1e0884c8e0029", + "sourceMap": "281:2670:4:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;281:2670:4;;;;;;;", + "deployedSourceMap": "281:2670:4:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;287:23:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;287:23:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1737:431;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1737:431:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1166:300:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1166:300:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;2638:311:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2638:311:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4552:125:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4552:125:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4436:110;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4436:110:10;;;;;;;;;;;;;;;;;;;;;;;;;;;599:41:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;599:41:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3419:501:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3419:501:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1205:590:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1205:590:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1722:336:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1722:336:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;626:208:6;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:208:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;500:23:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;500:23:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2499:599:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2499:599:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;693:301:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;693:301:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4759:111:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4759:111:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;4759:111:10;;;;;;;;;;;;;;;;;353:65:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;353:65:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;353:65:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2394:361:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2394:361:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4279:112;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4279:112:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;4279:112:9;;;;;;;;;;;;;;;;;4109:321:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4109:321:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;562:43:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;562:43:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;424:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;424:40:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;424:40:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;287:23:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1737:431::-;244:4:14;222:27;;:10;:27;;;214:36;;;;;;;;1894:1:10;1885:5;:10;;;;1877:19;;;;;;;;1955:7;:14;1963:5;1955:14;;;;;;;;;;;;;;;;;;;;;;;;;1954:15;1946:24;;;;;;;;1980:6;1992:5;1980:18;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;1980:18:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2025:4;2008:7;:14;2016:5;2008:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;2110:10;2097:23;;:9;;;;;;;;;;;:23;;;;2093:68;;;2134:27;2150:10;2134:15;:27::i;:::-;2093:68;1737:431;;:::o;1166:300:9:-;244:4:14;222:27;;:10;:27;;;214:36;;;;;;;;1317:1:9;1306:6;1298:20;;;;1290:29;;;;;;;;1379:8;:16;1388:6;1379:16;;;;;;;;;;;;;;;;;;;;;;;;;1378:17;1370:26;;;;;;;;1406:7;1419:6;1406:20;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;1406:20:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1455:4;1436:8;:16;1445:6;1436:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;1166:300;:::o;2638:311:4:-;2841:7;2886:4;2881:10;;2898:1;2893:7;;2902:4;2908:2;2912:5;2919:4;2925:9;2936:5;2871:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;2871:71:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2864:78;;2638:311;;;;;;;:::o;4552:125:10:-;4629:4;4656:7;:14;4664:5;4656:14;;;;;;;;;;;;;;;;;;;;;;;;;4649:21;;4552:125;;;:::o;4436:110::-;4502:5;4530:9;;;;;;;;;;;4523:16;;4436:110;:::o;599:41:9:-;;;;;;;;;;;;;;;;;;;;;;:::o;3419:501:10:-;244:4:14;222:27;;:10;:27;;;214:36;;;;;;;;3609:1:10;3597:8;:13;;;;3589:22;;;;;;;;3670:7;:17;3678:8;3670:17;;;;;;;;;;;;;;;;;;;;;;;;;3669:18;3661:27;;;;;;;;3793:8;3768:33;;:6;3775:13;3768:21;;;;;;;;;;;;;;;;;;;;;;;;;;;:33;;;3760:42;;;;;;;;3832:5;3812:7;:17;3820:8;3812:17;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;3867:4;3847:7;:17;3855:8;3847:17;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;3905:8;3881:6;3888:13;3881:21;;;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;3419:501;;;:::o;1205:590:4:-;1455:23;1481:53;1500:2;1504:5;1511:4;1517:9;1528:5;1481:18;:53::i;:::-;1455:79;;1553:10;:27;1564:15;1553:27;;;;;;;;;;;;;;;;;;;;;;;;;;;1552:28;1544:37;;;;;;;;1591:35;1601:15;1618:1;1621;1624;1591:9;:35::i;:::-;1719:4;1689:10;:27;1700:15;1689:27;;;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;1741:46;1749:2;1753:5;1760:4;1766:9;1777;1741:7;:46::i;:::-;1733:55;;;;;;;;1205:590;;;;;;;;;:::o;1722:336:9:-;244:4:14;222:27;;:10;:27;;;214:36;;;;;;;;1924:6:9;1900:30;;:7;1908:11;1900:20;;;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;1892:39;;;;;;;;1960:5;1941:8;:16;1950:6;1941:16;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;1998:7;2023:1;2006:7;:14;;;;:18;1998:27;;;;;;;;;;;;;;;;;;;;;;;;;;;1975:7;1983:11;1975:20;;;;;;;;;;;;;;;;;;:50;;;;;;;;;;;;;;;;;;2035:7;:16;;;;;;;;;;;;:::i;:::-;;1722:336;;:::o;626:208:6:-;244:4:14;222:27;;:10;:27;;;214:36;;;;;;;;791:1:6;776:11;:16;;;;768:25;;;;;;;;816:11;803:10;;:24;;;;;;;;;;;;;;;;;;626:208;:::o;500:23:9:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2499:599:10:-;244:4:14;222:27;;:10;:27;;;214:36;;;;;;;;2727:10:10;2706:31;;2722:1;2706:6;:13;;;;:17;:31;;2698:40;;;;;;;;2840:5;2818:27;;:6;2825:10;2818:18;;;;;;;;;;;;;;;;;;;;;;;;;;;:27;;;2810:36;;;;;;;;2873:5;2856:7;:14;2864:5;2856:14;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;2909:6;2932:1;2916:6;:13;;;;:17;2909:25;;;;;;;;;;;;;;;;;;;;;;;;;;;2888:6;2895:10;2888:18;;;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;2944:6;:15;;;;;;;;;;;;:::i;:::-;;3040:10;3027:23;;:9;;;;;;;;;;;:23;;;;3023:68;;;3064:27;3080:10;3064:15;:27::i;:::-;3023:68;2499:599;;;:::o;693:301:2:-;798:32;810:7;819:10;798:11;:32::i;:::-;965:22;978:2;982:4;965:12;:22::i;:::-;693:301;;;;:::o;4759:111:10:-;4825:9;4857:6;4850:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4759:111;:::o;353:65:4:-;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2394:361:9:-;2514:12;2599:8;:20;2608:10;2599:20;;;;;;;;;;;;;;;;;;;;;;;;;2591:29;;;;;;;;2702:46;2710:2;2714:5;2721:4;2727:9;2738;2702:7;:46::i;:::-;2692:56;;2394:361;;;;;;:::o;4279:112::-;4346:8;4377:7;4370:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4279:112;:::o;4109:321:10:-;244:4:14;222:27;;:10;:27;;;214:36;;;;;;;;4291:6:10;:13;;;;4277:10;:27;;;;4269:36;;;;;;;;4389:1;4375:10;:15;;;;4367:24;;;;;;;;4413:10;4401:9;;:22;;;;;;;;;;;;;;;;;;4109:321;:::o;562:43:4:-;;;;;;;;;;;;;;;;;;;;;;:::o;424:40::-;;;;;;;;;;;;;;;;;;;;:::o;1801:559::-;1978:17;2018:20;2048:9;2006:1;1978:30;;2118:1;2114:5;;2109:245;2125:9;;;;;;;;;;;2121:13;;:1;:13;2109:245;;;2170:44;2180:15;2197:1;2199;2197:4;;;;;;;;;;;;;;;;;;2203:1;2205;2203:4;;;;;;;;;;;;;;;;;;2209:1;2211;2209:4;;;;;;;;;;;;;;;;;;2170:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2170:44:4;;;;;;;;2155:59;;2236:7;:21;2244:12;2236:21;;;;;;;;;;;;;;;;;;;;;;;;;2228:30;;;;;;;;2295:9;2280:24;;:12;:24;;;2272:33;;;;;;;;2331:12;2319:24;;2136:3;;;;;;;2109:245;;;1801:559;;;;;;;:::o;2761:548:9:-;2892:12;3163:19;2937;2924:32;;;;;;;;:9;:32;;;;;;;;;2920:383;;;2980:35;2992:2;2996:5;3003:4;3009:5;2980:11;:35::i;:::-;2970:45;;2920:383;;;3047:27;3034:40;;;;;;;;:9;:40;;;;;;;;;3030:273;;;3098:36;3118:2;3122:4;3128:5;3098:19;:36::i;:::-;3088:46;;3030:273;;;3185:19;3199:4;3185:13;:19::i;:::-;3163:41;;3243:1;3228:11;:16;;;;3218:26;;3263:29;3280:11;3263:29;;;;;;;;;;;;;;;;;;;;;;3030:273;2920:383;2761:548;;;;;;;;:::o;651:846:10:-;1147:9;1246:13;885:1;872:9;;;;;;;;;;;:14;;;864:23;;;;;;;;994:7;:14;980:10;:28;;;;972:37;;;;;;;;1093:1;1079:10;:15;;;;1071:24;;;;;;;;1159:1;1147:13;;1142:291;1166:7;:14;1162:1;:18;1142:291;;;1262:7;1270:1;1262:10;;;;;;;;;;;;;;;;;;1246:26;;1303:1;1294:5;:10;;;;1286:19;;;;;;;;1372:7;:14;1380:5;1372:14;;;;;;;;;;;;;;;;;;;;;;;;;1371:15;1363:24;;;;;;;;1418:4;1401:7;:14;1409:5;1401:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;1182:3;;;;;;;1142:291;;;1451:7;1442:6;:16;;;;;;;;;;;;:::i;:::-;;1480:10;1468:9;;:22;;;;;;;;;;;;;;;;;;651:846;;;;:::o;769:230:9:-;856:1;850:2;:7;;;;846:146;;;951:40;971:2;975:4;981:9;951:19;:40::i;:::-;943:49;;;;;;;;846:146;769:230;;:::o;3315:309::-;3424:12;3606:1;3603;3596:4;3590:11;3583:4;3577;3573:15;3566:5;3562:2;3555:5;3550:58;3539:69;;3525:93;;;;;;:::o;3630:303::-;3732:12;3915:1;3912;3905:4;3899:11;3892:4;3886;3882:15;3878:2;3871:5;3858:59;3847:70;;3833:94;;;;;:::o;3939:261::-;4008:19;4178:4;4172:11;4165:4;4159;4155:15;4152:1;4145:39;4130:54;;4116:78;;;:::o;281:2670:4:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", + "source": "pragma solidity 0.4.23;\nimport \"./GnosisSafe.sol\";\nimport \"./MasterCopy.sol\";\n\n\n/// @title Gnosis Safe State Channel Edition - A multisignature wallet with support for confirmations.\n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract GnosisSafeStateChannelEdition is MasterCopy, GnosisSafe {\n\n string public constant NAME = \"Gnosis Safe State Channel Edition\";\n string public constant VERSION = \"0.0.1\";\n\n // isExecuted mapping allows to check if a transaction (by hash) was already executed.\n mapping (bytes32 => bool) public isExecuted;\n\n /// @dev Allows to execute a Safe transaction confirmed by required number of owners.\n /// @param to Destination address of Safe transaction.\n /// @param value Ether value of Safe transaction.\n /// @param data Data payload of Safe transaction.\n /// @param operation Operation type of Safe transaction.\n /// @param nonce Nonce used for this Safe transaction.\n /// @param v Array of signature V values sorted by owner addresses.\n /// @param r Array of signature R values sorted by owner addresses.\n /// @param s Array of signature S values sorted by owner addresses.\n function executeTransaction(\n address to, \n uint256 value, \n bytes data, \n Enum.Operation operation, \n uint256 nonce,\n uint8[] v, \n bytes32[] r, \n bytes32[] s\n )\n public\n {\n bytes32 transactionHash = getTransactionHash(to, value, data, operation, nonce);\n require(!isExecuted[transactionHash]);\n checkHash(transactionHash, v, r, s);\n // Mark as executed and execute transaction.\n isExecuted[transactionHash] = true;\n require(execute(to, value, data, operation, gasleft()));\n }\n\n function checkHash(bytes32 transactionHash, uint8[] v, bytes32[] r, bytes32[] s)\n internal\n view\n {\n // There cannot be an owner with address 0.\n address lastOwner = address(0);\n address currentOwner;\n uint256 i;\n // Validate threshold is reached.\n for (i = 0; i < threshold; i++) {\n currentOwner = ecrecover(transactionHash, v[i], r[i], s[i]);\n require(isOwner[currentOwner]);\n require(currentOwner > lastOwner);\n lastOwner = currentOwner;\n }\n }\n\n /// @dev Returns hash to be signed by owners.\n /// @param to Destination address.\n /// @param value Ether value.\n /// @param data Data payload.\n /// @param operation Operation type.\n /// @param nonce Transaction nonce.\n /// @return Transaction hash.\n function getTransactionHash(\n address to, \n uint256 value, \n bytes data, \n Enum.Operation operation, \n uint256 nonce\n )\n public\n view\n returns (bytes32)\n {\n return keccak256(byte(0x19), byte(0), this, to, value, data, operation, nonce);\n }\n}\n", + "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafeStateChannelEdition.sol", + "ast": { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafeStateChannelEdition.sol", + "exportedSymbols": { + "GnosisSafeStateChannelEdition": [ + 530 + ] + }, + "id": 531, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 348, + "literals": [ + "solidity", + "0.4", + ".23" + ], + "nodeType": "PragmaDirective", + "src": "0:23:4" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", + "file": "./GnosisSafe.sol", + "id": 349, + "nodeType": "ImportDirective", + "scope": 531, + "sourceUnit": 64, + "src": "24:26:4", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/MasterCopy.sol", + "file": "./MasterCopy.sol", + "id": 350, + "nodeType": "ImportDirective", + "scope": 531, + "sourceUnit": 780, + "src": "51:26:4", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 351, + "name": "MasterCopy", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 779, + "src": "323:10:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MasterCopy_$779", + "typeString": "contract MasterCopy" + } + }, + "id": 352, + "nodeType": "InheritanceSpecifier", + "src": "323:10:4" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 353, + "name": "GnosisSafe", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 63, + "src": "335:10:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$63", + "typeString": "contract GnosisSafe" + } + }, + "id": 354, + "nodeType": "InheritanceSpecifier", + "src": "335:10:4" + } + ], + "contractDependencies": [ + 63, + 779, + 1142, + 1438, + 1559 + ], + "contractKind": "contract", + "documentation": "@title Gnosis Safe State Channel Edition - A multisignature wallet with support for confirmations.\n @author Stefan George - \n @author Richard Meissner - ", + "fullyImplemented": true, + "id": 530, + "linearizedBaseContracts": [ + 530, + 63, + 1438, + 1142, + 779, + 1559 + ], + "name": "GnosisSafeStateChannelEdition", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "id": 357, + "name": "NAME", + "nodeType": "VariableDeclaration", + "scope": 530, + "src": "353:65:4", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory", + "typeString": "string" + }, + "typeName": { + "id": 355, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "353:6:4", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "476e6f7369732053616665205374617465204368616e6e656c2045646974696f6e", + "id": 356, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "383:35:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_8ed77695330a1e702d7599137bd776e333a5b5bdc777b481e480866a9eb5edc4", + "typeString": "literal_string \"Gnosis Safe State Channel Edition\"" + }, + "value": "Gnosis Safe State Channel Edition" + }, + "visibility": "public" + }, + { + "constant": true, + "id": 360, + "name": "VERSION", + "nodeType": "VariableDeclaration", + "scope": 530, + "src": "424:40:4", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory", + "typeString": "string" + }, + "typeName": { + "id": 358, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "424:6:4", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "302e302e31", + "id": 359, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "457:7:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", + "typeString": "literal_string \"0.0.1\"" + }, + "value": "0.0.1" + }, + "visibility": "public" + }, + { + "constant": false, + "id": 364, + "name": "isExecuted", + "nodeType": "VariableDeclaration", + "scope": 530, + "src": "562:43:4", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + }, + "typeName": { + "id": 363, + "keyType": { + "id": 361, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "571:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Mapping", + "src": "562:25:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + }, + "valueType": { + "id": 362, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "582:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "value": null, + "visibility": "public" + }, + { + "body": { + "id": 427, + "nodeType": "Block", + "src": "1445:350:4", + "statements": [ + { + "assignments": [ + 387 + ], + "declarations": [ + { + "constant": false, + "id": 387, + "name": "transactionHash", + "nodeType": "VariableDeclaration", + "scope": 428, + "src": "1455:23:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 386, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1455:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 395, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 389, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 366, + "src": "1500:2:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 390, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 368, + "src": "1504:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 391, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 370, + "src": "1511:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 392, + "name": "operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 372, + "src": "1517:9:4", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + }, + { + "argumentTypes": null, + "id": 393, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 374, + "src": "1528:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 388, + "name": "getTransactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 529, + "src": "1481:18:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) view returns (bytes32)" + } + }, + "id": 394, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1481:53:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1455:79:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 400, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "1552:28:4", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 397, + "name": "isExecuted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 364, + "src": "1553:10:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + } + }, + "id": 399, + "indexExpression": { + "argumentTypes": null, + "id": 398, + "name": "transactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 387, + "src": "1564:15:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1553:27:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 396, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "1544:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 401, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1544:37:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 402, + "nodeType": "ExpressionStatement", + "src": "1544:37:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 404, + "name": "transactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 387, + "src": "1601:15:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 405, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 377, + "src": "1618:1:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", + "typeString": "uint8[] memory" + } + }, + { + "argumentTypes": null, + "id": 406, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 380, + "src": "1621:1:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + { + "argumentTypes": null, + "id": 407, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 383, + "src": "1624:1:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", + "typeString": "uint8[] memory" + }, + { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + }, + { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + ], + "id": 403, + "name": "checkHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 498, + "src": "1591:9:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_array$_t_uint8_$dyn_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$returns$__$", + "typeString": "function (bytes32,uint8[] memory,bytes32[] memory,bytes32[] memory) view" + } + }, + "id": 408, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1591:35:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 409, + "nodeType": "ExpressionStatement", + "src": "1591:35:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 414, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 410, + "name": "isExecuted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 364, + "src": "1689:10:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + } + }, + "id": 412, + "indexExpression": { + "argumentTypes": null, + "id": 411, + "name": "transactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 387, + "src": "1700:15:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1689:27:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 413, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1719:4:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "1689:34:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 415, + "nodeType": "ExpressionStatement", + "src": "1689:34:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 418, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 366, + "src": "1749:2:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 419, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 368, + "src": "1753:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 420, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 370, + "src": "1760:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 421, + "name": "operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 372, + "src": "1766:9:4", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 422, + "name": "gasleft", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2458, + "src": "1777:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 423, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1777:9:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 417, + "name": "execute", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1095, + "src": "1741:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) returns (bool)" + } + }, + "id": 424, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1741:46:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 416, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "1733:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 425, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1733:55:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 426, + "nodeType": "ExpressionStatement", + "src": "1733:55:4" + } + ] + }, + "documentation": "@dev Allows to execute a Safe transaction confirmed by required number of owners.\n @param to Destination address of Safe transaction.\n @param value Ether value of Safe transaction.\n @param data Data payload of Safe transaction.\n @param operation Operation type of Safe transaction.\n @param nonce Nonce used for this Safe transaction.\n @param v Array of signature V values sorted by owner addresses.\n @param r Array of signature R values sorted by owner addresses.\n @param s Array of signature S values sorted by owner addresses.", + "id": 428, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "executeTransaction", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 384, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 366, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 428, + "src": "1242:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 365, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1242:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 368, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 428, + "src": "1263:13:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 367, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1263:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 370, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 428, + "src": "1287:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 369, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1287:5:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 372, + "name": "operation", + "nodeType": "VariableDeclaration", + "scope": 428, + "src": "1308:24:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + }, + "typeName": { + "contractScope": null, + "id": 371, + "name": "Enum.Operation", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 29, + "src": "1308:14:4", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 374, + "name": "nonce", + "nodeType": "VariableDeclaration", + "scope": 428, + "src": "1343:13:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 373, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1343:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 377, + "name": "v", + "nodeType": "VariableDeclaration", + "scope": 428, + "src": "1366:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", + "typeString": "uint8[]" + }, + "typeName": { + "baseType": { + "id": 375, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1366:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 376, + "length": null, + "nodeType": "ArrayTypeName", + "src": "1366:7:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr", + "typeString": "uint8[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 380, + "name": "r", + "nodeType": "VariableDeclaration", + "scope": 428, + "src": "1386:11:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 378, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1386:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 379, + "length": null, + "nodeType": "ArrayTypeName", + "src": "1386:9:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 383, + "name": "s", + "nodeType": "VariableDeclaration", + "scope": 428, + "src": "1408:11:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 381, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1408:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 382, + "length": null, + "nodeType": "ArrayTypeName", + "src": "1408:9:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1232:193:4" + }, + "payable": false, + "returnParameters": { + "id": 385, + "nodeType": "ParameterList", + "parameters": [], + "src": "1445:0:4" + }, + "scope": 530, + "src": "1205:590:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 497, + "nodeType": "Block", + "src": "1916:444:4", + "statements": [ + { + "assignments": [ + 443 + ], + "declarations": [ + { + "constant": false, + "id": 443, + "name": "lastOwner", + "nodeType": "VariableDeclaration", + "scope": 498, + "src": "1978:17:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 442, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1978:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 447, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 445, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2006:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 444, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1998:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 446, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1998:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1978:30:4" + }, + { + "assignments": [], + "declarations": [ + { + "constant": false, + "id": 449, + "name": "currentOwner", + "nodeType": "VariableDeclaration", + "scope": 498, + "src": "2018:20:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 448, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2018:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 450, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "2018:20:4" + }, + { + "assignments": [], + "declarations": [ + { + "constant": false, + "id": 452, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 498, + "src": "2048:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 451, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2048:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 453, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "2048:9:4" + }, + { + "body": { + "id": 495, + "nodeType": "Block", + "src": "2141:213:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 477, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 464, + "name": "currentOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 449, + "src": "2155:12:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 466, + "name": "transactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 430, + "src": "2180:15:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 467, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 433, + "src": "2197:1:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", + "typeString": "uint8[] memory" + } + }, + "id": 469, + "indexExpression": { + "argumentTypes": null, + "id": 468, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 452, + "src": "2199:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2197:4:4", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 470, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 436, + "src": "2203:1:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 472, + "indexExpression": { + "argumentTypes": null, + "id": 471, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 452, + "src": "2205:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2203:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 473, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 439, + "src": "2209:1:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 475, + "indexExpression": { + "argumentTypes": null, + "id": 474, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 452, + "src": "2211:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2209:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 465, + "name": "ecrecover", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2457, + "src": "2170:9:4", + "typeDescriptions": { + "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)" + } + }, + "id": 476, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2170:44:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2155:59:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 478, + "nodeType": "ExpressionStatement", + "src": "2155:59:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 480, + "name": "isOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1156 + ], + "referencedDeclaration": 1156, + "src": "2236:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 482, + "indexExpression": { + "argumentTypes": null, + "id": 481, + "name": "currentOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 449, + "src": "2244:12:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2236:21:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 479, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "2228:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 483, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2228:30:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 484, + "nodeType": "ExpressionStatement", + "src": "2228:30:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 488, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 486, + "name": "currentOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 449, + "src": "2280:12:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "id": 487, + "name": "lastOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 443, + "src": "2295:9:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2280:24:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 485, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "2272:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 489, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2272:33:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 490, + "nodeType": "ExpressionStatement", + "src": "2272:33:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 493, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 491, + "name": "lastOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 443, + "src": "2319:9:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 492, + "name": "currentOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 449, + "src": "2331:12:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2319:24:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 494, + "nodeType": "ExpressionStatement", + "src": "2319:24:4" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 460, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 458, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 452, + "src": "2121:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "id": 459, + "name": "threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1152 + ], + "referencedDeclaration": 1152, + "src": "2125:9:4", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "2121:13:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 496, + "initializationExpression": { + "expression": { + "argumentTypes": null, + "id": 456, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 454, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 452, + "src": "2114:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 455, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2118:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2114:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 457, + "nodeType": "ExpressionStatement", + "src": "2114:5:4" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 462, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "2136:3:4", + "subExpression": { + "argumentTypes": null, + "id": 461, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 452, + "src": "2136:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 463, + "nodeType": "ExpressionStatement", + "src": "2136:3:4" + }, + "nodeType": "ForStatement", + "src": "2109:245:4" + } + ] + }, + "documentation": null, + "id": 498, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "checkHash", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 440, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 430, + "name": "transactionHash", + "nodeType": "VariableDeclaration", + "scope": 498, + "src": "1820:23:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 429, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1820:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 433, + "name": "v", + "nodeType": "VariableDeclaration", + "scope": 498, + "src": "1845:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", + "typeString": "uint8[]" + }, + "typeName": { + "baseType": { + "id": 431, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1845:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 432, + "length": null, + "nodeType": "ArrayTypeName", + "src": "1845:7:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr", + "typeString": "uint8[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 436, + "name": "r", + "nodeType": "VariableDeclaration", + "scope": 498, + "src": "1856:11:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 434, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1856:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 435, + "length": null, + "nodeType": "ArrayTypeName", + "src": "1856:9:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 439, + "name": "s", + "nodeType": "VariableDeclaration", + "scope": 498, + "src": "1869:11:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 437, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1869:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 438, + "length": null, + "nodeType": "ArrayTypeName", + "src": "1869:9:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1819:62:4" + }, + "payable": false, + "returnParameters": { + "id": 441, + "nodeType": "ParameterList", + "parameters": [], + "src": "1916:0:4" + }, + "scope": 530, + "src": "1801:559:4", + "stateMutability": "view", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 528, + "nodeType": "Block", + "src": "2854:95:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30783139", + "id": 515, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2886:4:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_25_by_1", + "typeString": "int_const 25" + }, + "value": "0x19" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_25_by_1", + "typeString": "int_const 25" + } + ], + "id": 514, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2881:4:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes1_$", + "typeString": "type(bytes1)" + }, + "typeName": "byte" + }, + "id": 516, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2881:10:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 518, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2898:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 517, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2893:4:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes1_$", + "typeString": "type(bytes1)" + }, + "typeName": "byte" + }, + "id": 519, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2893:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + { + "argumentTypes": null, + "id": 520, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2498, + "src": "2902:4:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafeStateChannelEdition_$530", + "typeString": "contract GnosisSafeStateChannelEdition" + } + }, + { + "argumentTypes": null, + "id": 521, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 500, + "src": "2908:2:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 522, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 502, + "src": "2912:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 523, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 504, + "src": "2919:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 524, + "name": "operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 506, + "src": "2925:9:4", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + }, + { + "argumentTypes": null, + "id": 525, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 508, + "src": "2936:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + { + "typeIdentifier": "t_contract$_GnosisSafeStateChannelEdition_$530", + "typeString": "contract GnosisSafeStateChannelEdition" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 513, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2459, + "src": "2871:9:4", + "typeDescriptions": { + "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", + "typeString": "function () pure returns (bytes32)" + } + }, + "id": 526, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2871:71:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 512, + "id": 527, + "nodeType": "Return", + "src": "2864:78:4" + } + ] + }, + "documentation": "@dev Returns hash to be signed by owners.\n @param to Destination address.\n @param value Ether value.\n @param data Data payload.\n @param operation Operation type.\n @param nonce Transaction nonce.\n @return Transaction hash.", + "id": 529, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "getTransactionHash", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 509, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 500, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 529, + "src": "2675:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 499, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2675:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 502, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 529, + "src": "2696:13:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 501, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2696:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 504, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 529, + "src": "2720:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 503, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2720:5:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 506, + "name": "operation", + "nodeType": "VariableDeclaration", + "scope": 529, + "src": "2741:24:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + }, + "typeName": { + "contractScope": null, + "id": 505, + "name": "Enum.Operation", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 29, + "src": "2741:14:4", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 508, + "name": "nonce", + "nodeType": "VariableDeclaration", + "scope": 529, + "src": "2776:13:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 507, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2776:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2665:130:4" + }, + "payable": false, + "returnParameters": { + "id": 512, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 511, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 529, + "src": "2841:7:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 510, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2841:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2840:9:4" + }, + "scope": 530, + "src": "2638:311:4", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 531, + "src": "281:2670:4" + } + ], + "src": "0:2952:4" + }, + "legacyAST": { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafeStateChannelEdition.sol", + "exportedSymbols": { + "GnosisSafeStateChannelEdition": [ + 530 + ] + }, + "id": 531, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 348, + "literals": [ + "solidity", + "0.4", + ".23" + ], + "nodeType": "PragmaDirective", + "src": "0:23:4" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", + "file": "./GnosisSafe.sol", + "id": 349, + "nodeType": "ImportDirective", + "scope": 531, + "sourceUnit": 64, + "src": "24:26:4", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/MasterCopy.sol", + "file": "./MasterCopy.sol", + "id": 350, + "nodeType": "ImportDirective", + "scope": 531, + "sourceUnit": 780, + "src": "51:26:4", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 351, + "name": "MasterCopy", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 779, + "src": "323:10:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MasterCopy_$779", + "typeString": "contract MasterCopy" + } + }, + "id": 352, + "nodeType": "InheritanceSpecifier", + "src": "323:10:4" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 353, + "name": "GnosisSafe", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 63, + "src": "335:10:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$63", + "typeString": "contract GnosisSafe" + } + }, + "id": 354, + "nodeType": "InheritanceSpecifier", + "src": "335:10:4" + } + ], + "contractDependencies": [ + 63, + 779, + 1142, + 1438, + 1559 + ], + "contractKind": "contract", + "documentation": "@title Gnosis Safe State Channel Edition - A multisignature wallet with support for confirmations.\n @author Stefan George - \n @author Richard Meissner - ", + "fullyImplemented": true, + "id": 530, + "linearizedBaseContracts": [ + 530, + 63, + 1438, + 1142, + 779, + 1559 + ], + "name": "GnosisSafeStateChannelEdition", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "id": 357, + "name": "NAME", + "nodeType": "VariableDeclaration", + "scope": 530, + "src": "353:65:4", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory", + "typeString": "string" + }, + "typeName": { + "id": 355, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "353:6:4", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "476e6f7369732053616665205374617465204368616e6e656c2045646974696f6e", + "id": 356, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "383:35:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_8ed77695330a1e702d7599137bd776e333a5b5bdc777b481e480866a9eb5edc4", + "typeString": "literal_string \"Gnosis Safe State Channel Edition\"" + }, + "value": "Gnosis Safe State Channel Edition" + }, + "visibility": "public" + }, + { + "constant": true, + "id": 360, + "name": "VERSION", + "nodeType": "VariableDeclaration", + "scope": 530, + "src": "424:40:4", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory", + "typeString": "string" + }, + "typeName": { + "id": 358, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "424:6:4", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "302e302e31", + "id": 359, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "457:7:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", + "typeString": "literal_string \"0.0.1\"" + }, + "value": "0.0.1" + }, + "visibility": "public" + }, + { + "constant": false, + "id": 364, + "name": "isExecuted", + "nodeType": "VariableDeclaration", + "scope": 530, + "src": "562:43:4", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + }, + "typeName": { + "id": 363, + "keyType": { + "id": 361, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "571:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Mapping", + "src": "562:25:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + }, + "valueType": { + "id": 362, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "582:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "value": null, + "visibility": "public" + }, + { + "body": { + "id": 427, + "nodeType": "Block", + "src": "1445:350:4", + "statements": [ + { + "assignments": [ + 387 + ], + "declarations": [ + { + "constant": false, + "id": 387, + "name": "transactionHash", + "nodeType": "VariableDeclaration", + "scope": 428, + "src": "1455:23:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 386, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1455:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 395, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 389, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 366, + "src": "1500:2:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 390, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 368, + "src": "1504:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 391, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 370, + "src": "1511:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 392, + "name": "operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 372, + "src": "1517:9:4", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + }, + { + "argumentTypes": null, + "id": 393, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 374, + "src": "1528:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 388, + "name": "getTransactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 529, + "src": "1481:18:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) view returns (bytes32)" + } + }, + "id": 394, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1481:53:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1455:79:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 400, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "1552:28:4", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 397, + "name": "isExecuted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 364, + "src": "1553:10:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + } + }, + "id": 399, + "indexExpression": { + "argumentTypes": null, + "id": 398, + "name": "transactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 387, + "src": "1564:15:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1553:27:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 396, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "1544:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 401, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1544:37:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 402, + "nodeType": "ExpressionStatement", + "src": "1544:37:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 404, + "name": "transactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 387, + "src": "1601:15:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "id": 405, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 377, + "src": "1618:1:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", + "typeString": "uint8[] memory" + } + }, + { + "argumentTypes": null, + "id": 406, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 380, + "src": "1621:1:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + { + "argumentTypes": null, + "id": 407, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 383, + "src": "1624:1:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", + "typeString": "uint8[] memory" + }, + { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + }, + { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + ], + "id": 403, + "name": "checkHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 498, + "src": "1591:9:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_array$_t_uint8_$dyn_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$returns$__$", + "typeString": "function (bytes32,uint8[] memory,bytes32[] memory,bytes32[] memory) view" + } + }, + "id": 408, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1591:35:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 409, + "nodeType": "ExpressionStatement", + "src": "1591:35:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 414, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 410, + "name": "isExecuted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 364, + "src": "1689:10:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + } + }, + "id": 412, + "indexExpression": { + "argumentTypes": null, + "id": 411, + "name": "transactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 387, + "src": "1700:15:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1689:27:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 413, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1719:4:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "1689:34:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 415, + "nodeType": "ExpressionStatement", + "src": "1689:34:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 418, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 366, + "src": "1749:2:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 419, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 368, + "src": "1753:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 420, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 370, + "src": "1760:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 421, + "name": "operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 372, + "src": "1766:9:4", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 422, + "name": "gasleft", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2458, + "src": "1777:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 423, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1777:9:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 417, + "name": "execute", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1095, + "src": "1741:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) returns (bool)" + } + }, + "id": 424, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1741:46:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 416, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "1733:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 425, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1733:55:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 426, + "nodeType": "ExpressionStatement", + "src": "1733:55:4" + } + ] + }, + "documentation": "@dev Allows to execute a Safe transaction confirmed by required number of owners.\n @param to Destination address of Safe transaction.\n @param value Ether value of Safe transaction.\n @param data Data payload of Safe transaction.\n @param operation Operation type of Safe transaction.\n @param nonce Nonce used for this Safe transaction.\n @param v Array of signature V values sorted by owner addresses.\n @param r Array of signature R values sorted by owner addresses.\n @param s Array of signature S values sorted by owner addresses.", + "id": 428, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "executeTransaction", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 384, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 366, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 428, + "src": "1242:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 365, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1242:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 368, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 428, + "src": "1263:13:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 367, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1263:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 370, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 428, + "src": "1287:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 369, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1287:5:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 372, + "name": "operation", + "nodeType": "VariableDeclaration", + "scope": 428, + "src": "1308:24:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + }, + "typeName": { + "contractScope": null, + "id": 371, + "name": "Enum.Operation", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 29, + "src": "1308:14:4", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 374, + "name": "nonce", + "nodeType": "VariableDeclaration", + "scope": 428, + "src": "1343:13:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 373, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1343:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 377, + "name": "v", + "nodeType": "VariableDeclaration", + "scope": 428, + "src": "1366:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", + "typeString": "uint8[]" + }, + "typeName": { + "baseType": { + "id": 375, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1366:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 376, + "length": null, + "nodeType": "ArrayTypeName", + "src": "1366:7:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr", + "typeString": "uint8[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 380, + "name": "r", + "nodeType": "VariableDeclaration", + "scope": 428, + "src": "1386:11:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 378, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1386:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 379, + "length": null, + "nodeType": "ArrayTypeName", + "src": "1386:9:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 383, + "name": "s", + "nodeType": "VariableDeclaration", + "scope": 428, + "src": "1408:11:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 381, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1408:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 382, + "length": null, + "nodeType": "ArrayTypeName", + "src": "1408:9:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1232:193:4" + }, + "payable": false, + "returnParameters": { + "id": 385, + "nodeType": "ParameterList", + "parameters": [], + "src": "1445:0:4" + }, + "scope": 530, + "src": "1205:590:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 497, + "nodeType": "Block", + "src": "1916:444:4", + "statements": [ + { + "assignments": [ + 443 + ], + "declarations": [ + { + "constant": false, + "id": 443, + "name": "lastOwner", + "nodeType": "VariableDeclaration", + "scope": 498, + "src": "1978:17:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 442, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1978:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 447, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 445, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2006:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 444, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1998:7:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 446, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1998:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1978:30:4" + }, + { + "assignments": [], + "declarations": [ + { + "constant": false, + "id": 449, + "name": "currentOwner", + "nodeType": "VariableDeclaration", + "scope": 498, + "src": "2018:20:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 448, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2018:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 450, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "2018:20:4" + }, + { + "assignments": [], + "declarations": [ + { + "constant": false, + "id": 452, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 498, + "src": "2048:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 451, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2048:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 453, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "2048:9:4" + }, + { + "body": { + "id": 495, + "nodeType": "Block", + "src": "2141:213:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 477, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 464, + "name": "currentOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 449, + "src": "2155:12:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 466, + "name": "transactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 430, + "src": "2180:15:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 467, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 433, + "src": "2197:1:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", + "typeString": "uint8[] memory" + } + }, + "id": 469, + "indexExpression": { + "argumentTypes": null, + "id": 468, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 452, + "src": "2199:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2197:4:4", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 470, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 436, + "src": "2203:1:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 472, + "indexExpression": { + "argumentTypes": null, + "id": 471, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 452, + "src": "2205:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2203:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 473, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 439, + "src": "2209:1:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 475, + "indexExpression": { + "argumentTypes": null, + "id": 474, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 452, + "src": "2211:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2209:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 465, + "name": "ecrecover", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2457, + "src": "2170:9:4", + "typeDescriptions": { + "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)" + } + }, + "id": 476, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2170:44:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2155:59:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 478, + "nodeType": "ExpressionStatement", + "src": "2155:59:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 480, + "name": "isOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1156 + ], + "referencedDeclaration": 1156, + "src": "2236:7:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 482, + "indexExpression": { + "argumentTypes": null, + "id": 481, + "name": "currentOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 449, + "src": "2244:12:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2236:21:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 479, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "2228:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 483, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2228:30:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 484, + "nodeType": "ExpressionStatement", + "src": "2228:30:4" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 488, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 486, + "name": "currentOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 449, + "src": "2280:12:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "id": 487, + "name": "lastOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 443, + "src": "2295:9:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2280:24:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 485, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "2272:7:4", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 489, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2272:33:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 490, + "nodeType": "ExpressionStatement", + "src": "2272:33:4" + }, + { + "expression": { + "argumentTypes": null, + "id": 493, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 491, + "name": "lastOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 443, + "src": "2319:9:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 492, + "name": "currentOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 449, + "src": "2331:12:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2319:24:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 494, + "nodeType": "ExpressionStatement", + "src": "2319:24:4" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 460, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 458, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 452, + "src": "2121:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "id": 459, + "name": "threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1152 + ], + "referencedDeclaration": 1152, + "src": "2125:9:4", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "2121:13:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 496, + "initializationExpression": { + "expression": { + "argumentTypes": null, + "id": 456, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 454, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 452, + "src": "2114:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 455, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2118:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2114:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 457, + "nodeType": "ExpressionStatement", + "src": "2114:5:4" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 462, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "2136:3:4", + "subExpression": { + "argumentTypes": null, + "id": 461, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 452, + "src": "2136:1:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 463, + "nodeType": "ExpressionStatement", + "src": "2136:3:4" + }, + "nodeType": "ForStatement", + "src": "2109:245:4" + } + ] + }, + "documentation": null, + "id": 498, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "checkHash", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 440, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 430, + "name": "transactionHash", + "nodeType": "VariableDeclaration", + "scope": 498, + "src": "1820:23:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 429, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1820:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 433, + "name": "v", + "nodeType": "VariableDeclaration", + "scope": 498, + "src": "1845:9:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", + "typeString": "uint8[]" + }, + "typeName": { + "baseType": { + "id": 431, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1845:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 432, + "length": null, + "nodeType": "ArrayTypeName", + "src": "1845:7:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr", + "typeString": "uint8[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 436, + "name": "r", + "nodeType": "VariableDeclaration", + "scope": 498, + "src": "1856:11:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 434, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1856:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 435, + "length": null, + "nodeType": "ArrayTypeName", + "src": "1856:9:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 439, + "name": "s", + "nodeType": "VariableDeclaration", + "scope": 498, + "src": "1869:11:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[]" + }, + "typeName": { + "baseType": { + "id": 437, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1869:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 438, + "length": null, + "nodeType": "ArrayTypeName", + "src": "1869:9:4", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1819:62:4" + }, + "payable": false, + "returnParameters": { + "id": 441, + "nodeType": "ParameterList", + "parameters": [], + "src": "1916:0:4" + }, + "scope": 530, + "src": "1801:559:4", + "stateMutability": "view", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 528, + "nodeType": "Block", + "src": "2854:95:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30783139", + "id": 515, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2886:4:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_25_by_1", + "typeString": "int_const 25" + }, + "value": "0x19" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_25_by_1", + "typeString": "int_const 25" + } + ], + "id": 514, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2881:4:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes1_$", + "typeString": "type(bytes1)" + }, + "typeName": "byte" + }, + "id": 516, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2881:10:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 518, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2898:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 517, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2893:4:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes1_$", + "typeString": "type(bytes1)" + }, + "typeName": "byte" + }, + "id": 519, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2893:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + { + "argumentTypes": null, + "id": 520, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2498, + "src": "2902:4:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafeStateChannelEdition_$530", + "typeString": "contract GnosisSafeStateChannelEdition" + } + }, + { + "argumentTypes": null, + "id": 521, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 500, + "src": "2908:2:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 522, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 502, + "src": "2912:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 523, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 504, + "src": "2919:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 524, + "name": "operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 506, + "src": "2925:9:4", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + }, + { + "argumentTypes": null, + "id": 525, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 508, + "src": "2936:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + { + "typeIdentifier": "t_contract$_GnosisSafeStateChannelEdition_$530", + "typeString": "contract GnosisSafeStateChannelEdition" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 513, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2459, + "src": "2871:9:4", + "typeDescriptions": { + "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", + "typeString": "function () pure returns (bytes32)" + } + }, + "id": 526, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2871:71:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 512, + "id": 527, + "nodeType": "Return", + "src": "2864:78:4" + } + ] + }, + "documentation": "@dev Returns hash to be signed by owners.\n @param to Destination address.\n @param value Ether value.\n @param data Data payload.\n @param operation Operation type.\n @param nonce Transaction nonce.\n @return Transaction hash.", + "id": 529, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "getTransactionHash", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 509, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 500, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 529, + "src": "2675:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 499, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2675:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 502, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 529, + "src": "2696:13:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 501, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2696:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 504, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 529, + "src": "2720:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 503, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2720:5:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 506, + "name": "operation", + "nodeType": "VariableDeclaration", + "scope": 529, + "src": "2741:24:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + }, + "typeName": { + "contractScope": null, + "id": 505, + "name": "Enum.Operation", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 29, + "src": "2741:14:4", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 508, + "name": "nonce", + "nodeType": "VariableDeclaration", + "scope": 529, + "src": "2776:13:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 507, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2776:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2665:130:4" + }, + "payable": false, + "returnParameters": { + "id": 512, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 511, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 529, + "src": "2841:7:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 510, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2841:7:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2840:9:4" + }, + "scope": 530, + "src": "2638:311:4", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 531, + "src": "281:2670:4" + } + ], + "src": "0:2952:4" + }, + "compiler": { + "name": "solc", + "version": "0.4.23+commit.124ca40d.Emscripten.clang" + }, + "networks": { + "4": { + "events": {}, + "links": {}, + "address": "0xa6f1efbaf462946058ef6086fd562f7ddaf84dda", + "transactionHash": "0xc96d3c71f8b88c6649e4b95ad2f30eadf63f8c4bd58da57a856a3b7931bbbf4f" + }, + "1525950336085": { + "events": {}, + "links": {}, + "address": "0x9327970e8e29e8dba16b28acb177906a92447a0c", + "transactionHash": "0x8b91e38b0bbafe43309aca9832bcd234b82d7ac9f81abe94891cd406a735549c" + } + }, + "schemaVersion": "2.0.0", + "updatedAt": "2018-05-10T11:07:04.688Z" +} \ No newline at end of file diff --git a/safe-contracts/build/contracts/GnosisSafeTeamEdition.json b/safe-contracts/build/contracts/GnosisSafeTeamEdition.json new file mode 100644 index 0000000000..9266fee5e7 --- /dev/null +++ b/safe-contracts/build/contracts/GnosisSafeTeamEdition.json @@ -0,0 +1,6502 @@ +{ + "contractName": "GnosisSafeTeamEdition", + "abi": [ + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "uint256" + } + ], + "name": "owners", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "owner", + "type": "address" + }, + { + "name": "_threshold", + "type": "uint8" + } + ], + "name": "addOwner", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "module", + "type": "address" + } + ], + "name": "addModule", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "owner", + "type": "address" + } + ], + "name": "isOwner", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "threshold", + "outputs": [ + { + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "address" + } + ], + "name": "isModule", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "oldOwnerIndex", + "type": "uint256" + }, + { + "name": "oldOwner", + "type": "address" + }, + { + "name": "newOwner", + "type": "address" + } + ], + "name": "replaceOwner", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "moduleIndex", + "type": "uint256" + }, + { + "name": "module", + "type": "address" + } + ], + "name": "removeModule", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_masterCopy", + "type": "address" + } + ], + "name": "changeMasterCopy", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "uint256" + } + ], + "name": "modules", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "ownerIndex", + "type": "uint256" + }, + { + "name": "owner", + "type": "address" + }, + { + "name": "_threshold", + "type": "uint8" + } + ], + "name": "removeOwner", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_owners", + "type": "address[]" + }, + { + "name": "_threshold", + "type": "uint8" + }, + { + "name": "to", + "type": "address" + }, + { + "name": "data", + "type": "bytes" + } + ], + "name": "setup", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getOwners", + "outputs": [ + { + "name": "", + "type": "address[]" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "NAME", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "to", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + }, + { + "name": "data", + "type": "bytes" + }, + { + "name": "operation", + "type": "uint8" + } + ], + "name": "executeModule", + "outputs": [ + { + "name": "success", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getModules", + "outputs": [ + { + "name": "", + "type": "address[]" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "bytes32" + }, + { + "name": "", + "type": "address" + } + ], + "name": "isConfirmed", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_threshold", + "type": "uint8" + } + ], + "name": "changeThreshold", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "bytes32" + } + ], + "name": "isExecuted", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "VERSION", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "payable": true, + "stateMutability": "payable", + "type": "fallback" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "newContract", + "type": "address" + } + ], + "name": "ContractCreation", + "type": "event" + }, + { + "constant": false, + "inputs": [ + { + "name": "to", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + }, + { + "name": "data", + "type": "bytes" + }, + { + "name": "operation", + "type": "uint8" + }, + { + "name": "nonce", + "type": "uint256" + } + ], + "name": "confirmTransaction", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "to", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + }, + { + "name": "data", + "type": "bytes" + }, + { + "name": "operation", + "type": "uint8" + }, + { + "name": "nonce", + "type": "uint256" + } + ], + "name": "executeTransaction", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "to", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + }, + { + "name": "data", + "type": "bytes" + }, + { + "name": "operation", + "type": "uint8" + }, + { + "name": "nonce", + "type": "uint256" + } + ], + "name": "getTransactionHash", + "outputs": [ + { + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b50612345806100206000396000f300608060405260043610610133576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063025e7c27146101355780630e5229b0146101a25780631ed86f19146101f25780632b500041146102355780632b5b1f82146102fb5780632f54bf6e146103a557806342cde4e81461040057806342f6e3891461043157806354e99c6e1461048c5780637c6401d3146104f95780637de7edef1461054657806381b2248a14610589578063842b954e146105f65780639681467f14610650578063a04222e1146106fa578063a0e67e2b146107d3578063a3f4df7e1461083f578063b021640a146108cf578063b2494df314610987578063b79ffaff146109f3578063b7f3358d14610a5c578063e52cb36a14610a8c578063ffa1ad7414610ad5575b005b34801561014157600080fd5b5061016060048036038101908080359060200190929190505050610b65565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101ae57600080fd5b506101f0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050610ba3565b005b3480156101fe57600080fd5b50610233600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d46565b005b34801561024157600080fd5b506102dd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050610ec0565b60405180826000191660001916815260200191505060405180910390f35b34801561030757600080fd5b506103a3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190803590602001909291905050506110dc565b005b3480156103b157600080fd5b506103e6600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611230565b604051808215151515815260200191505060405180910390f35b34801561040c57600080fd5b50610415611286565b604051808260ff1660ff16815260200191505060405180910390f35b34801561043d57600080fd5b50610472600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061129d565b604051808215151515815260200191505060405180910390f35b34801561049857600080fd5b506104f760048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112bd565b005b34801561050557600080fd5b5061054460048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506114f6565b005b34801561055257600080fd5b50610587600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116ac565b005b34801561059557600080fd5b506105b46004803603810190808035906020019092919050505061174f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561060257600080fd5b5061064e60048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff16906020019092919050505061178d565b005b34801561065c57600080fd5b506106f8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050611988565b005b34801561070657600080fd5b506107d160048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611a2b565b005b3480156107df57600080fd5b506107e8611a45565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561082b578082015181840152602081019050610810565b505050509050019250505060405180910390f35b34801561084b57600080fd5b50610854611ad3565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610894578082015181840152602081019050610879565b50505050905090810190601f1680156108c15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156108db57600080fd5b5061096d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050611b0c565b604051808215151515815260200191505060405180910390f35b34801561099357600080fd5b5061099c611b7d565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156109df5780820151818401526020810190506109c4565b505050509050019250505060405180910390f35b3480156109ff57600080fd5b50610a426004803603810190808035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c0b565b604051808215151515815260200191505060405180910390f35b348015610a6857600080fd5b50610a8a600480360381019080803560ff169060200190929190505050611c3a565b005b348015610a9857600080fd5b50610abb6004803603810190808035600019169060200190929190505050611cbc565b604051808215151515815260200191505060405180910390f35b348015610ae157600080fd5b50610aea611cdc565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610b2a578082015181840152602081019050610b0f565b50505050905090810190601f168015610b575780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600381815481101515610b7457fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610bdd57600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614151515610c0357600080fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610c5c57600080fd5b60038290806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506001600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508060ff16600460009054906101000a900460ff1660ff16141515610d4257610d4181611c3a565b5b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610d8057600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610da657600080fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610dff57600080fd5b60018190806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f01000000000000000000000000000000000000000000000000000000000000000230888888888860405180897effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083835b602083101515611061578051825260208201915060208101905060208303925061103c565b6001836020036101000a03801982511681845116808217855250505050505090500183600281111561108f57fe5b60ff167f0100000000000000000000000000000000000000000000000000000000000000028152600101828152602001985050505050505050506040518091039020905095945050505050565b6000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561113657600080fd5b6111438686868686610ec0565b905060076000826000191660001916815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156111b757600080fd5b600160076000836000191660001916815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050505050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600460009054906101000a900460ff16905090565b60026020528060005260406000206000915054906101000a900460ff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156112f757600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561131d57600080fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561137657600080fd5b8173ffffffffffffffffffffffffffffffffffffffff1660038481548110151561139c57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156113e957600080fd5b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550806003848154811015156114a957fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561153057600080fd5b8073ffffffffffffffffffffffffffffffffffffffff1660018381548110151561155657fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156115a357600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060018080805490500381548110151561161057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660018381548110151561164a57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018054809190600190036116a791906121cf565b505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156116e657600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561170c57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60018181548110151561175e57fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156117c757600080fd5b8060ff16600160038054905003101515156117e157600080fd5b8173ffffffffffffffffffffffffffffffffffffffff1660038481548110151561180757fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561185457600080fd5b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060036001600380549050038154811015156118c357fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166003848154811015156118fd57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600380548091906001900361195a91906121fb565b508060ff16600460009054906101000a900460ff1660ff161415156119835761198281611c3a565b5b505050565b60006119978686868686610ec0565b905060066000826000191660001916815260200190815260200160002060009054906101000a900460ff161515156119ce57600080fd5b6119d781611d15565b600160066000836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550611a18868686865a611ec7565b1515611a2357600080fd5b505050505050565b611a358484611fc4565b611a3f8282612152565b50505050565b60606003805480602002602001604051908101604052809291908181526020018280548015611ac957602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611a7f575b5050505050905090565b6040805190810160405280601881526020017f476e6f7369732053616665205465616d2045646974696f6e000000000000000081525081565b6000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611b6657600080fd5b611b73858585855a611ec7565b9050949350505050565b60606001805480602002602001604051908101604052809291908181526020018280548015611c0157602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611bb7575b5050505050905090565b60076020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611c7457600080fd5b6003805490508160ff1611151515611c8b57600080fd5b60018160ff1610151515611c9e57600080fd5b80600460006101000a81548160ff021916908360ff16021790555050565b60066020528060005260406000206000915054906101000a900460ff1681565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b60008060008060009350600092505b600380549050831015611e9f57600383815481101515611d4057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915060076000866000191660001916815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1690503373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480611e0c5750805b15611e92578015611e8957600060076000876000191660001916815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b83806001019450505b8280600101935050611d24565b600460009054906101000a900460ff1660ff168410151515611ec057600080fd5b5050505050565b60008060006002811115611ed757fe5b846002811115611ee357fe5b1415611efc57611ef58787878661218d565b9150611fba565b60016002811115611f0957fe5b846002811115611f1557fe5b1415611f2d57611f268786856121a6565b9150611fb9565b611f36856121bd565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b6000806000600460009054906101000a900460ff1660ff16141515611fe857600080fd5b83518360ff1611151515611ffb57600080fd5b60018360ff161015151561200e57600080fd5b600091505b835182101561211a57838281518110151561202a57fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff161415151561205c57600080fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156120b557600080fd5b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508180600101925050612013565b8360039080519060200190612130929190612227565b5082600460006101000a81548160ff021916908360ff16021790555050505050565b60008273ffffffffffffffffffffffffffffffffffffffff161415156121895761217d82825a6121a6565b151561218857600080fd5b5b5050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f09050919050565b8154818355818111156121f6578183600052602060002091820191016121f591906122b1565b5b505050565b8154818355818111156122225781836000526020600020918201910161222191906122b1565b5b505050565b8280548282559060005260206000209081019282156122a0579160200282015b8281111561229f5782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190612247565b5b5090506122ad91906122d6565b5090565b6122d391905b808211156122cf5760008160009055506001016122b7565b5090565b90565b61231691905b8082111561231257600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055506001016122dc565b5090565b905600a165627a7a72305820ab4d09dc7a7a64b6f63048cb825754216f413beab85cd31284921e0b2018b7030029", + "deployedBytecode": "0x608060405260043610610133576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063025e7c27146101355780630e5229b0146101a25780631ed86f19146101f25780632b500041146102355780632b5b1f82146102fb5780632f54bf6e146103a557806342cde4e81461040057806342f6e3891461043157806354e99c6e1461048c5780637c6401d3146104f95780637de7edef1461054657806381b2248a14610589578063842b954e146105f65780639681467f14610650578063a04222e1146106fa578063a0e67e2b146107d3578063a3f4df7e1461083f578063b021640a146108cf578063b2494df314610987578063b79ffaff146109f3578063b7f3358d14610a5c578063e52cb36a14610a8c578063ffa1ad7414610ad5575b005b34801561014157600080fd5b5061016060048036038101908080359060200190929190505050610b65565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101ae57600080fd5b506101f0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050610ba3565b005b3480156101fe57600080fd5b50610233600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d46565b005b34801561024157600080fd5b506102dd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050610ec0565b60405180826000191660001916815260200191505060405180910390f35b34801561030757600080fd5b506103a3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190803590602001909291905050506110dc565b005b3480156103b157600080fd5b506103e6600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611230565b604051808215151515815260200191505060405180910390f35b34801561040c57600080fd5b50610415611286565b604051808260ff1660ff16815260200191505060405180910390f35b34801561043d57600080fd5b50610472600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061129d565b604051808215151515815260200191505060405180910390f35b34801561049857600080fd5b506104f760048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506112bd565b005b34801561050557600080fd5b5061054460048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506114f6565b005b34801561055257600080fd5b50610587600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116ac565b005b34801561059557600080fd5b506105b46004803603810190808035906020019092919050505061174f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561060257600080fd5b5061064e60048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff16906020019092919050505061178d565b005b34801561065c57600080fd5b506106f8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050611988565b005b34801561070657600080fd5b506107d160048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611a2b565b005b3480156107df57600080fd5b506107e8611a45565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561082b578082015181840152602081019050610810565b505050509050019250505060405180910390f35b34801561084b57600080fd5b50610854611ad3565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610894578082015181840152602081019050610879565b50505050905090810190601f1680156108c15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156108db57600080fd5b5061096d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050611b0c565b604051808215151515815260200191505060405180910390f35b34801561099357600080fd5b5061099c611b7d565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156109df5780820151818401526020810190506109c4565b505050509050019250505060405180910390f35b3480156109ff57600080fd5b50610a426004803603810190808035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c0b565b604051808215151515815260200191505060405180910390f35b348015610a6857600080fd5b50610a8a600480360381019080803560ff169060200190929190505050611c3a565b005b348015610a9857600080fd5b50610abb6004803603810190808035600019169060200190929190505050611cbc565b604051808215151515815260200191505060405180910390f35b348015610ae157600080fd5b50610aea611cdc565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610b2a578082015181840152602081019050610b0f565b50505050905090810190601f168015610b575780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600381815481101515610b7457fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610bdd57600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614151515610c0357600080fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610c5c57600080fd5b60038290806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506001600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508060ff16600460009054906101000a900460ff1660ff16141515610d4257610d4181611c3a565b5b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610d8057600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610da657600080fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610dff57600080fd5b60018190806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f01000000000000000000000000000000000000000000000000000000000000000230888888888860405180897effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083835b602083101515611061578051825260208201915060208101905060208303925061103c565b6001836020036101000a03801982511681845116808217855250505050505090500183600281111561108f57fe5b60ff167f0100000000000000000000000000000000000000000000000000000000000000028152600101828152602001985050505050505050506040518091039020905095945050505050565b6000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561113657600080fd5b6111438686868686610ec0565b905060076000826000191660001916815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156111b757600080fd5b600160076000836000191660001916815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050505050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600460009054906101000a900460ff16905090565b60026020528060005260406000206000915054906101000a900460ff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156112f757600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561131d57600080fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561137657600080fd5b8173ffffffffffffffffffffffffffffffffffffffff1660038481548110151561139c57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156113e957600080fd5b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550806003848154811015156114a957fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561153057600080fd5b8073ffffffffffffffffffffffffffffffffffffffff1660018381548110151561155657fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156115a357600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060018080805490500381548110151561161057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660018381548110151561164a57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018054809190600190036116a791906121cf565b505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156116e657600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561170c57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60018181548110151561175e57fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156117c757600080fd5b8060ff16600160038054905003101515156117e157600080fd5b8173ffffffffffffffffffffffffffffffffffffffff1660038481548110151561180757fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561185457600080fd5b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060036001600380549050038154811015156118c357fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166003848154811015156118fd57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600380548091906001900361195a91906121fb565b508060ff16600460009054906101000a900460ff1660ff161415156119835761198281611c3a565b5b505050565b60006119978686868686610ec0565b905060066000826000191660001916815260200190815260200160002060009054906101000a900460ff161515156119ce57600080fd5b6119d781611d15565b600160066000836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550611a18868686865a611ec7565b1515611a2357600080fd5b505050505050565b611a358484611fc4565b611a3f8282612152565b50505050565b60606003805480602002602001604051908101604052809291908181526020018280548015611ac957602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611a7f575b5050505050905090565b6040805190810160405280601881526020017f476e6f7369732053616665205465616d2045646974696f6e000000000000000081525081565b6000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611b6657600080fd5b611b73858585855a611ec7565b9050949350505050565b60606001805480602002602001604051908101604052809291908181526020018280548015611c0157602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611bb7575b5050505050905090565b60076020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611c7457600080fd5b6003805490508160ff1611151515611c8b57600080fd5b60018160ff1610151515611c9e57600080fd5b80600460006101000a81548160ff021916908360ff16021790555050565b60066020528060005260406000206000915054906101000a900460ff1681565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b60008060008060009350600092505b600380549050831015611e9f57600383815481101515611d4057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915060076000866000191660001916815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1690503373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161480611e0c5750805b15611e92578015611e8957600060076000876000191660001916815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b83806001019450505b8280600101935050611d24565b600460009054906101000a900460ff1660ff168410151515611ec057600080fd5b5050505050565b60008060006002811115611ed757fe5b846002811115611ee357fe5b1415611efc57611ef58787878661218d565b9150611fba565b60016002811115611f0957fe5b846002811115611f1557fe5b1415611f2d57611f268786856121a6565b9150611fb9565b611f36856121bd565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b6000806000600460009054906101000a900460ff1660ff16141515611fe857600080fd5b83518360ff1611151515611ffb57600080fd5b60018360ff161015151561200e57600080fd5b600091505b835182101561211a57838281518110151561202a57fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff161415151561205c57600080fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156120b557600080fd5b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508180600101925050612013565b8360039080519060200190612130929190612227565b5082600460006101000a81548160ff021916908360ff16021790555050505050565b60008273ffffffffffffffffffffffffffffffffffffffff161415156121895761217d82825a6121a6565b151561218857600080fd5b5b5050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f09050919050565b8154818355818111156121f6578183600052602060002091820191016121f591906122b1565b5b505050565b8154818355818111156122225781836000526020600020918201910161222191906122b1565b5b505050565b8280548282559060005260206000209081019282156122a0579160200282015b8281111561229f5782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190612247565b5b5090506122ad91906122d6565b5090565b6122d391905b808211156122cf5760008160009055506001016122b7565b5090565b90565b61231691905b8082111561231257600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055506001016122dc565b5090565b905600a165627a7a72305820ab4d09dc7a7a64b6f63048cb825754216f413beab85cd31284921e0b2018b7030029", + "sourceMap": "272:3441:5:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;272:3441:5;;;;;;;", + "deployedSourceMap": "272:3441:5:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;287:23:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;287:23:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1737:431;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1737:431:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1166:300:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1166:300:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;3400:311:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3400:311:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1078:510;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1078:510:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4552:125:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4552:125:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4436:110;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4436:110:10;;;;;;;;;;;;;;;;;;;;;;;;;;;599:41:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;599:41:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3419:501:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3419:501:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1722:336:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1722:336:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;626:208:6;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:208:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;500:23:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;500:23:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2499:599:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2499:599:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1971:535:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1971:535:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;693:301:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;693:301:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4759:111:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4759:111:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;4759:111:10;;;;;;;;;;;;;;;;;336:56:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;336:56:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;336:56:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2394:361:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2394:361:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4279:112;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4279:112:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;4279:112:9;;;;;;;;;;;;;;;;;683:64:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;683:64:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4109:321:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4109:321:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;536:43:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;536:43:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;398:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;398:40:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;398:40:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;287:23:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1737:431::-;244:4:14;222:27;;:10;:27;;;214:36;;;;;;;;1894:1:10;1885:5;:10;;;;1877:19;;;;;;;;1955:7;:14;1963:5;1955:14;;;;;;;;;;;;;;;;;;;;;;;;;1954:15;1946:24;;;;;;;;1980:6;1992:5;1980:18;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;1980:18:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2025:4;2008:7;:14;2016:5;2008:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;2110:10;2097:23;;:9;;;;;;;;;;;:23;;;;2093:68;;;2134:27;2150:10;2134:15;:27::i;:::-;2093:68;1737:431;;:::o;1166:300:9:-;244:4:14;222:27;;:10;:27;;;214:36;;;;;;;;1317:1:9;1306:6;1298:20;;;;1290:29;;;;;;;;1379:8;:16;1388:6;1379:16;;;;;;;;;;;;;;;;;;;;;;;;;1378:17;1370:26;;;;;;;;1406:7;1419:6;1406:20;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;1406:20:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1455:4;1436:8;:16;1445:6;1436:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;1166:300;:::o;3400:311:5:-;3603:7;3648:4;3643:10;;3660:1;3655:7;;3664:4;3670:2;3674:5;3681:4;3687:9;3698:5;3633:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;3633:71:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3626:78;;3400:311;;;;;;;:::o;1078:510::-;1323:23;1293:7;:19;1301:10;1293:19;;;;;;;;;;;;;;;;;;;;;;;;;1285:28;;;;;;;;1349:53;1368:2;1372:5;1379:4;1385:9;1396:5;1349:18;:53::i;:::-;1323:79;;1483:11;:28;1495:15;1483:28;;;;;;;;;;;;;;;;;:40;1512:10;1483:40;;;;;;;;;;;;;;;;;;;;;;;;;1482:41;1474:50;;;;;;;;1577:4;1534:11;:28;1546:15;1534:28;;;;;;;;;;;;;;;;;:40;1563:10;1534:40;;;;;;;;;;;;;;;;:47;;;;;;;;;;;;;;;;;;1078:510;;;;;;:::o;4552:125:10:-;4629:4;4656:7;:14;4664:5;4656:14;;;;;;;;;;;;;;;;;;;;;;;;;4649:21;;4552:125;;;:::o;4436:110::-;4502:5;4530:9;;;;;;;;;;;4523:16;;4436:110;:::o;599:41:9:-;;;;;;;;;;;;;;;;;;;;;;:::o;3419:501:10:-;244:4:14;222:27;;:10;:27;;;214:36;;;;;;;;3609:1:10;3597:8;:13;;;;3589:22;;;;;;;;3670:7;:17;3678:8;3670:17;;;;;;;;;;;;;;;;;;;;;;;;;3669:18;3661:27;;;;;;;;3793:8;3768:33;;:6;3775:13;3768:21;;;;;;;;;;;;;;;;;;;;;;;;;;;:33;;;3760:42;;;;;;;;3832:5;3812:7;:17;3820:8;3812:17;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;3867:4;3847:7;:17;3855:8;3847:17;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;3905:8;3881:6;3888:13;3881:21;;;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;3419:501;;;:::o;1722:336:9:-;244:4:14;222:27;;:10;:27;;;214:36;;;;;;;;1924:6:9;1900:30;;:7;1908:11;1900:20;;;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;1892:39;;;;;;;;1960:5;1941:8;:16;1950:6;1941:16;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;1998:7;2023:1;2006:7;:14;;;;:18;1998:27;;;;;;;;;;;;;;;;;;;;;;;;;;;1975:7;1983:11;1975:20;;;;;;;;;;;;;;;;;;:50;;;;;;;;;;;;;;;;;;2035:7;:16;;;;;;;;;;;;:::i;:::-;;1722:336;;:::o;626:208:6:-;244:4:14;222:27;;:10;:27;;;214:36;;;;;;;;791:1:6;776:11;:16;;;;768:25;;;;;;;;816:11;803:10;;:24;;;;;;;;;;;;;;;;;;626:208;:::o;500:23:9:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2499:599:10:-;244:4:14;222:27;;:10;:27;;;214:36;;;;;;;;2727:10:10;2706:31;;2722:1;2706:6;:13;;;;:17;:31;;2698:40;;;;;;;;2840:5;2818:27;;:6;2825:10;2818:18;;;;;;;;;;;;;;;;;;;;;;;;;;;:27;;;2810:36;;;;;;;;2873:5;2856:7;:14;2864:5;2856:14;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;2909:6;2932:1;2916:6;:13;;;;:17;2909:25;;;;;;;;;;;;;;;;;;;;;;;;;;;2888:6;2895:10;2888:18;;;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;2944:6;:15;;;;;;;;;;;;:::i;:::-;;3040:10;3027:23;;:9;;;;;;;;;;;:23;;;;3023:68;;;3064:27;3080:10;3064:15;:27::i;:::-;3023:68;2499:599;;;:::o;1971:535:5:-;2158:23;2184:53;2203:2;2207:5;2214:4;2220:9;2231:5;2184:18;:53::i;:::-;2158:79;;2256:10;:27;2267:15;2256:27;;;;;;;;;;;;;;;;;;;;;;;;;;;2255:28;2247:37;;;;;;;;2294:43;2321:15;2294:26;:43::i;:::-;2430:4;2400:10;:27;2411:15;2400:27;;;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;2452:46;2460:2;2464:5;2471:4;2477:9;2488;2452:7;:46::i;:::-;2444:55;;;;;;;;1971:535;;;;;;:::o;693:301:2:-;798:32;810:7;819:10;798:11;:32::i;:::-;965:22;978:2;982:4;965:12;:22::i;:::-;693:301;;;;:::o;4759:111:10:-;4825:9;4857:6;4850:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4759:111;:::o;336:56:5:-;;;;;;;;;;;;;;;;;;;;:::o;2394:361:9:-;2514:12;2599:8;:20;2608:10;2599:20;;;;;;;;;;;;;;;;;;;;;;;;;2591:29;;;;;;;;2702:46;2710:2;2714:5;2721:4;2727:9;2738;2702:7;:46::i;:::-;2692:56;;2394:361;;;;;;:::o;4279:112::-;4346:8;4377:7;4370:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4279:112;:::o;683:64:5:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4109:321:10:-;244:4:14;222:27;;:10;:27;;;214:36;;;;;;;;4291:6:10;:13;;;;4277:10;:27;;;;4269:36;;;;;;;;4389:1;4375:10;:15;;;;4367:24;;;;;;;;4413:10;4401:9;;:22;;;;;;;;;;;;;;;;;;4109:321;:::o;536:43:5:-;;;;;;;;;;;;;;;;;;;;;;:::o;398:40::-;;;;;;;;;;;;;;;;;;;;:::o;2512:610::-;2604:21;2686:9;2739:13;2778:19;2628:1;2604:25;;2698:1;2686:13;;2681:390;2705:6;:13;;;;2701:1;:17;2681:390;;;2755:6;2762:1;2755:9;;;;;;;;;;;;;;;;;;;;;;;;;;;2739:25;;2800:11;:28;2812:15;2800:28;;;;;;;;;;;;;;;;;:35;2829:5;2800:35;;;;;;;;;;;;;;;;;;;;;;;;;2778:57;;2861:10;2852:19;;:5;:19;;;:37;;;;2875:14;2852:37;2849:212;;;2913:14;2909:104;;;2989:5;2951:11;:28;2963:15;2951:28;;;;;;;;;;;;;;;;;:35;2980:5;2951:35;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;2909:104;3030:16;;;;;;;2849:212;2720:3;;;;;;;2681:390;;;3105:9;;;;;;;;;;;3088:26;;:13;:26;;3080:35;;;;;;;;2512:610;;;;;:::o;2761:548:9:-;2892:12;3163:19;2937;2924:32;;;;;;;;:9;:32;;;;;;;;;2920:383;;;2980:35;2992:2;2996:5;3003:4;3009:5;2980:11;:35::i;:::-;2970:45;;2920:383;;;3047:27;3034:40;;;;;;;;:9;:40;;;;;;;;;3030:273;;;3098:36;3118:2;3122:4;3128:5;3098:19;:36::i;:::-;3088:46;;3030:273;;;3185:19;3199:4;3185:13;:19::i;:::-;3163:41;;3243:1;3228:11;:16;;;;3218:26;;3263:29;3280:11;3263:29;;;;;;;;;;;;;;;;;;;;;;3030:273;2920:383;2761:548;;;;;;;;:::o;651:846:10:-;1147:9;1246:13;885:1;872:9;;;;;;;;;;;:14;;;864:23;;;;;;;;994:7;:14;980:10;:28;;;;972:37;;;;;;;;1093:1;1079:10;:15;;;;1071:24;;;;;;;;1159:1;1147:13;;1142:291;1166:7;:14;1162:1;:18;1142:291;;;1262:7;1270:1;1262:10;;;;;;;;;;;;;;;;;;1246:26;;1303:1;1294:5;:10;;;;1286:19;;;;;;;;1372:7;:14;1380:5;1372:14;;;;;;;;;;;;;;;;;;;;;;;;;1371:15;1363:24;;;;;;;;1418:4;1401:7;:14;1409:5;1401:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;1182:3;;;;;;;1142:291;;;1451:7;1442:6;:16;;;;;;;;;;;;:::i;:::-;;1480:10;1468:9;;:22;;;;;;;;;;;;;;;;;;651:846;;;;:::o;769:230:9:-;856:1;850:2;:7;;;;846:146;;;951:40;971:2;975:4;981:9;951:19;:40::i;:::-;943:49;;;;;;;;846:146;769:230;;:::o;3315:309::-;3424:12;3606:1;3603;3596:4;3590:11;3583:4;3577;3573:15;3566:5;3562:2;3555:5;3550:58;3539:69;;3525:93;;;;;;:::o;3630:303::-;3732:12;3915:1;3912;3905:4;3899:11;3892:4;3886;3882:15;3878:2;3871:5;3858:59;3847:70;;3833:94;;;;;:::o;3939:261::-;4008:19;4178:4;4172:11;4165:4;4159;4155:15;4152:1;4145:39;4130:54;;4116:78;;;:::o;272:3441:5:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", + "source": "pragma solidity 0.4.23;\nimport \"./GnosisSafe.sol\";\nimport \"./MasterCopy.sol\";\n\n\n/// @title Gnosis Safe Team Edition - A multisignature wallet with support for confirmations.\n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract GnosisSafeTeamEdition is MasterCopy, GnosisSafe {\n\n string public constant NAME = \"Gnosis Safe Team Edition\";\n string public constant VERSION = \"0.0.1\";\n\n // isExecuted mapping allows to check if a transaction (by hash) was already executed.\n mapping (bytes32 => bool) public isExecuted;\n\n // isConfirmed mapping allows to check if a transaction (by hash) was confirmed by an owner.\n mapping (bytes32 => mapping(address => bool)) public isConfirmed;\n\n /// @dev Allows to confirm a Safe transaction with a regular transaction.\n /// This can only be done from an owner address.\n /// @param to Destination address.\n /// @param value Ether value.\n /// @param data Data payload.\n /// @param operation Operation type.\n /// @param nonce Transaction nonce.\n function confirmTransaction(address to, uint256 value, bytes data, Enum.Operation operation, uint256 nonce)\n public\n {\n // Only Safe owners are allowed to confirm Safe transactions.\n require(isOwner[msg.sender]);\n bytes32 transactionHash = getTransactionHash(to, value, data, operation, nonce);\n // It is only possible to confirm a transaction once.\n require(!isConfirmed[transactionHash][msg.sender]);\n isConfirmed[transactionHash][msg.sender] = true;\n }\n\n /// @dev Allows to execute a Safe transaction confirmed by required number of owners.\n /// @param to Destination address of Safe transaction.\n /// @param value Ether value of Safe transaction.\n /// @param data Data payload of Safe transaction.\n /// @param operation Operation type of Safe transaction.\n /// @param nonce Nonce used for this Safe transaction.\n function executeTransaction(\n address to, \n uint256 value, \n bytes data, \n Enum.Operation operation, \n uint256 nonce\n )\n public\n {\n bytes32 transactionHash = getTransactionHash(to, value, data, operation, nonce);\n require(!isExecuted[transactionHash]);\n checkAndClearConfirmations(transactionHash);\n // Mark as executed and execute transaction.\n isExecuted[transactionHash] = true;\n require(execute(to, value, data, operation, gasleft()));\n }\n\n function checkAndClearConfirmations(bytes32 transactionHash)\n internal\n {\n uint256 confirmations = 0;\n // Validate threshold is reached.\n for (uint256 i = 0; i < owners.length; i++) {\n address owner = owners[i];\n bool ownerConfirmed = isConfirmed[transactionHash][owner];\n if(owner == msg.sender || ownerConfirmed) {\n if (ownerConfirmed) {\n isConfirmed[transactionHash][owner] = false;\n }\n confirmations ++;\n }\n }\n require(confirmations >= threshold);\n }\n\n /// @dev Returns hash to be signed by owners.\n /// @param to Destination address.\n /// @param value Ether value.\n /// @param data Data payload.\n /// @param operation Operation type.\n /// @param nonce Transaction nonce.\n /// @return Transaction hash.\n function getTransactionHash(\n address to, \n uint256 value, \n bytes data, \n Enum.Operation operation, \n uint256 nonce\n )\n public\n view\n returns (bytes32)\n {\n return keccak256(byte(0x19), byte(0), this, to, value, data, operation, nonce);\n }\n}\n", + "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafeTeamEdition.sol", + "ast": { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafeTeamEdition.sol", + "exportedSymbols": { + "GnosisSafeTeamEdition": [ + 753 + ] + }, + "id": 754, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 532, + "literals": [ + "solidity", + "0.4", + ".23" + ], + "nodeType": "PragmaDirective", + "src": "0:23:5" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", + "file": "./GnosisSafe.sol", + "id": 533, + "nodeType": "ImportDirective", + "scope": 754, + "sourceUnit": 64, + "src": "24:26:5", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/MasterCopy.sol", + "file": "./MasterCopy.sol", + "id": 534, + "nodeType": "ImportDirective", + "scope": 754, + "sourceUnit": 780, + "src": "51:26:5", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 535, + "name": "MasterCopy", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 779, + "src": "306:10:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MasterCopy_$779", + "typeString": "contract MasterCopy" + } + }, + "id": 536, + "nodeType": "InheritanceSpecifier", + "src": "306:10:5" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 537, + "name": "GnosisSafe", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 63, + "src": "318:10:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$63", + "typeString": "contract GnosisSafe" + } + }, + "id": 538, + "nodeType": "InheritanceSpecifier", + "src": "318:10:5" + } + ], + "contractDependencies": [ + 63, + 779, + 1142, + 1438, + 1559 + ], + "contractKind": "contract", + "documentation": "@title Gnosis Safe Team Edition - A multisignature wallet with support for confirmations.\n @author Stefan George - \n @author Richard Meissner - ", + "fullyImplemented": true, + "id": 753, + "linearizedBaseContracts": [ + 753, + 63, + 1438, + 1142, + 779, + 1559 + ], + "name": "GnosisSafeTeamEdition", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "id": 541, + "name": "NAME", + "nodeType": "VariableDeclaration", + "scope": 753, + "src": "336:56:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory", + "typeString": "string" + }, + "typeName": { + "id": 539, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "336:6:5", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "476e6f7369732053616665205465616d2045646974696f6e", + "id": 540, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "366:26:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_69b1cb372bb47730ba653a0e87363aa6de8337d13ed5852e6fe3ba4e2004a81e", + "typeString": "literal_string \"Gnosis Safe Team Edition\"" + }, + "value": "Gnosis Safe Team Edition" + }, + "visibility": "public" + }, + { + "constant": true, + "id": 544, + "name": "VERSION", + "nodeType": "VariableDeclaration", + "scope": 753, + "src": "398:40:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory", + "typeString": "string" + }, + "typeName": { + "id": 542, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "398:6:5", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "302e302e31", + "id": 543, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "431:7:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", + "typeString": "literal_string \"0.0.1\"" + }, + "value": "0.0.1" + }, + "visibility": "public" + }, + { + "constant": false, + "id": 548, + "name": "isExecuted", + "nodeType": "VariableDeclaration", + "scope": 753, + "src": "536:43:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + }, + "typeName": { + "id": 547, + "keyType": { + "id": 545, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "545:7:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Mapping", + "src": "536:25:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + }, + "valueType": { + "id": 546, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "556:4:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 554, + "name": "isConfirmed", + "nodeType": "VariableDeclaration", + "scope": 753, + "src": "683:64:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(bytes32 => mapping(address => bool))" + }, + "typeName": { + "id": 553, + "keyType": { + "id": 549, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "692:7:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Mapping", + "src": "683:45:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(bytes32 => mapping(address => bool))" + }, + "valueType": { + "id": 552, + "keyType": { + "id": 550, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "711:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "703:24:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "valueType": { + "id": 551, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "722:4:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + } + }, + "value": null, + "visibility": "public" + }, + { + "body": { + "id": 603, + "nodeType": "Block", + "src": "1205:383:5", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 568, + "name": "isOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1156 + ], + "referencedDeclaration": 1156, + "src": "1293:7:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 571, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 569, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2465, + "src": "1301:3:5", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 570, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1301:10:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1293:19:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 567, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "1285:7:5", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 572, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1285:28:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 573, + "nodeType": "ExpressionStatement", + "src": "1285:28:5" + }, + { + "assignments": [ + 575 + ], + "declarations": [ + { + "constant": false, + "id": 575, + "name": "transactionHash", + "nodeType": "VariableDeclaration", + "scope": 604, + "src": "1323:23:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 574, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1323:7:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 583, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 577, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 556, + "src": "1368:2:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 578, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 558, + "src": "1372:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 579, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 560, + "src": "1379:4:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 580, + "name": "operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 562, + "src": "1385:9:5", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + }, + { + "argumentTypes": null, + "id": 581, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 564, + "src": "1396:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 576, + "name": "getTransactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 752, + "src": "1349:18:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) view returns (bytes32)" + } + }, + "id": 582, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1349:53:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1323:79:5" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 591, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "1482:41:5", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 585, + "name": "isConfirmed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 554, + "src": "1483:11:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(bytes32 => mapping(address => bool))" + } + }, + "id": 587, + "indexExpression": { + "argumentTypes": null, + "id": 586, + "name": "transactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 575, + "src": "1495:15:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1483:28:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 590, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 588, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2465, + "src": "1512:3:5", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 589, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1512:10:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1483:40:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 584, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "1474:7:5", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 592, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1474:50:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 593, + "nodeType": "ExpressionStatement", + "src": "1474:50:5" + }, + { + "expression": { + "argumentTypes": null, + "id": 601, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 594, + "name": "isConfirmed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 554, + "src": "1534:11:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(bytes32 => mapping(address => bool))" + } + }, + "id": 598, + "indexExpression": { + "argumentTypes": null, + "id": 595, + "name": "transactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 575, + "src": "1546:15:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1534:28:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 599, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 596, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2465, + "src": "1563:3:5", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 597, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1563:10:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1534:40:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 600, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1577:4:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "1534:47:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 602, + "nodeType": "ExpressionStatement", + "src": "1534:47:5" + } + ] + }, + "documentation": "@dev Allows to confirm a Safe transaction with a regular transaction.\n This can only be done from an owner address.\n @param to Destination address.\n @param value Ether value.\n @param data Data payload.\n @param operation Operation type.\n @param nonce Transaction nonce.", + "id": 604, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "confirmTransaction", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 565, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 556, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 604, + "src": "1106:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 555, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1106:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 558, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 604, + "src": "1118:13:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 557, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1118:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 560, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 604, + "src": "1133:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 559, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1133:5:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 562, + "name": "operation", + "nodeType": "VariableDeclaration", + "scope": 604, + "src": "1145:24:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + }, + "typeName": { + "contractScope": null, + "id": 561, + "name": "Enum.Operation", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 29, + "src": "1145:14:5", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 564, + "name": "nonce", + "nodeType": "VariableDeclaration", + "scope": 604, + "src": "1171:13:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 563, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1171:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1105:80:5" + }, + "payable": false, + "returnParameters": { + "id": 566, + "nodeType": "ParameterList", + "parameters": [], + "src": "1205:0:5" + }, + "scope": 753, + "src": "1078:510:5", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 655, + "nodeType": "Block", + "src": "2148:358:5", + "statements": [ + { + "assignments": [ + 618 + ], + "declarations": [ + { + "constant": false, + "id": 618, + "name": "transactionHash", + "nodeType": "VariableDeclaration", + "scope": 656, + "src": "2158:23:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 617, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2158:7:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 626, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 620, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 606, + "src": "2203:2:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 621, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 608, + "src": "2207:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 622, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 610, + "src": "2214:4:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 623, + "name": "operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 612, + "src": "2220:9:5", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + }, + { + "argumentTypes": null, + "id": 624, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 614, + "src": "2231:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 619, + "name": "getTransactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 752, + "src": "2184:18:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) view returns (bytes32)" + } + }, + "id": 625, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2184:53:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2158:79:5" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 631, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "2255:28:5", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 628, + "name": "isExecuted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 548, + "src": "2256:10:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + } + }, + "id": 630, + "indexExpression": { + "argumentTypes": null, + "id": 629, + "name": "transactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 618, + "src": "2267:15:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2256:27:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 627, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "2247:7:5", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 632, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2247:37:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 633, + "nodeType": "ExpressionStatement", + "src": "2247:37:5" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 635, + "name": "transactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 618, + "src": "2321:15:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 634, + "name": "checkAndClearConfirmations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 721, + "src": "2294:26:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$__$", + "typeString": "function (bytes32)" + } + }, + "id": 636, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2294:43:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 637, + "nodeType": "ExpressionStatement", + "src": "2294:43:5" + }, + { + "expression": { + "argumentTypes": null, + "id": 642, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 638, + "name": "isExecuted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 548, + "src": "2400:10:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + } + }, + "id": 640, + "indexExpression": { + "argumentTypes": null, + "id": 639, + "name": "transactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 618, + "src": "2411:15:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2400:27:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 641, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2430:4:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "2400:34:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 643, + "nodeType": "ExpressionStatement", + "src": "2400:34:5" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 646, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 606, + "src": "2460:2:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 647, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 608, + "src": "2464:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 648, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 610, + "src": "2471:4:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 649, + "name": "operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 612, + "src": "2477:9:5", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 650, + "name": "gasleft", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2458, + "src": "2488:7:5", + "typeDescriptions": { + "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 651, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2488:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 645, + "name": "execute", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1095, + "src": "2452:7:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) returns (bool)" + } + }, + "id": 652, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2452:46:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 644, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "2444:7:5", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 653, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2444:55:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 654, + "nodeType": "ExpressionStatement", + "src": "2444:55:5" + } + ] + }, + "documentation": "@dev Allows to execute a Safe transaction confirmed by required number of owners.\n @param to Destination address of Safe transaction.\n @param value Ether value of Safe transaction.\n @param data Data payload of Safe transaction.\n @param operation Operation type of Safe transaction.\n @param nonce Nonce used for this Safe transaction.", + "id": 656, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "executeTransaction", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 615, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 606, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 656, + "src": "2008:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 605, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2008:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 608, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 656, + "src": "2029:13:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 607, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2029:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 610, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 656, + "src": "2053:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 609, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2053:5:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 612, + "name": "operation", + "nodeType": "VariableDeclaration", + "scope": 656, + "src": "2074:24:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + }, + "typeName": { + "contractScope": null, + "id": 611, + "name": "Enum.Operation", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 29, + "src": "2074:14:5", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 614, + "name": "nonce", + "nodeType": "VariableDeclaration", + "scope": 656, + "src": "2109:13:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 613, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2109:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1998:130:5" + }, + "payable": false, + "returnParameters": { + "id": 616, + "nodeType": "ParameterList", + "parameters": [], + "src": "2148:0:5" + }, + "scope": 753, + "src": "1971:535:5", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 720, + "nodeType": "Block", + "src": "2594:528:5", + "statements": [ + { + "assignments": [ + 662 + ], + "declarations": [ + { + "constant": false, + "id": 662, + "name": "confirmations", + "nodeType": "VariableDeclaration", + "scope": 721, + "src": "2604:21:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 661, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2604:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 664, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 663, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2628:1:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "2604:25:5" + }, + { + "body": { + "id": 712, + "nodeType": "Block", + "src": "2725:346:5", + "statements": [ + { + "assignments": [ + 677 + ], + "declarations": [ + { + "constant": false, + "id": 677, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 721, + "src": "2739:13:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 676, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2739:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 681, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 678, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1150, + "src": "2755:6:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 680, + "indexExpression": { + "argumentTypes": null, + "id": 679, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 666, + "src": "2762:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2755:9:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2739:25:5" + }, + { + "assignments": [ + 683 + ], + "declarations": [ + { + "constant": false, + "id": 683, + "name": "ownerConfirmed", + "nodeType": "VariableDeclaration", + "scope": 721, + "src": "2778:19:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 682, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2778:4:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 689, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 684, + "name": "isConfirmed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 554, + "src": "2800:11:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(bytes32 => mapping(address => bool))" + } + }, + "id": 686, + "indexExpression": { + "argumentTypes": null, + "id": 685, + "name": "transactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 658, + "src": "2812:15:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2800:28:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 688, + "indexExpression": { + "argumentTypes": null, + "id": 687, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 677, + "src": "2829:5:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2800:35:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2778:57:5" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 695, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 693, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 690, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 677, + "src": "2852:5:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 691, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2465, + "src": "2861:3:5", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 692, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2861:10:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2852:19:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "id": 694, + "name": "ownerConfirmed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 683, + "src": "2875:14:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "2852:37:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 711, + "nodeType": "IfStatement", + "src": "2849:212:5", + "trueBody": { + "id": 710, + "nodeType": "Block", + "src": "2891:170:5", + "statements": [ + { + "condition": { + "argumentTypes": null, + "id": 696, + "name": "ownerConfirmed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 683, + "src": "2913:14:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 706, + "nodeType": "IfStatement", + "src": "2909:104:5", + "trueBody": { + "id": 705, + "nodeType": "Block", + "src": "2929:84:5", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 703, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 697, + "name": "isConfirmed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 554, + "src": "2951:11:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(bytes32 => mapping(address => bool))" + } + }, + "id": 700, + "indexExpression": { + "argumentTypes": null, + "id": 698, + "name": "transactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 658, + "src": "2963:15:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2951:28:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 701, + "indexExpression": { + "argumentTypes": null, + "id": 699, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 677, + "src": "2980:5:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2951:35:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 702, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2989:5:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "2951:43:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 704, + "nodeType": "ExpressionStatement", + "src": "2951:43:5" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "id": 708, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "3030:16:5", + "subExpression": { + "argumentTypes": null, + "id": 707, + "name": "confirmations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 662, + "src": "3030:13:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 709, + "nodeType": "ExpressionStatement", + "src": "3030:16:5" + } + ] + } + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 672, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 669, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 666, + "src": "2701:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 670, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1150, + "src": "2705:6:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 671, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2705:13:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2701:17:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 713, + "initializationExpression": { + "assignments": [ + 666 + ], + "declarations": [ + { + "constant": false, + "id": 666, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 721, + "src": "2686:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 665, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2686:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 668, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 667, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2698:1:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "2686:13:5" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 674, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "2720:3:5", + "subExpression": { + "argumentTypes": null, + "id": 673, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 666, + "src": "2720:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 675, + "nodeType": "ExpressionStatement", + "src": "2720:3:5" + }, + "nodeType": "ForStatement", + "src": "2681:390:5" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 717, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 715, + "name": "confirmations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 662, + "src": "3088:13:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 716, + "name": "threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1152 + ], + "referencedDeclaration": 1152, + "src": "3105:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "3088:26:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 714, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "3080:7:5", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 718, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3080:35:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 719, + "nodeType": "ExpressionStatement", + "src": "3080:35:5" + } + ] + }, + "documentation": null, + "id": 721, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "checkAndClearConfirmations", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 659, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 658, + "name": "transactionHash", + "nodeType": "VariableDeclaration", + "scope": 721, + "src": "2548:23:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 657, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2548:7:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2547:25:5" + }, + "payable": false, + "returnParameters": { + "id": 660, + "nodeType": "ParameterList", + "parameters": [], + "src": "2594:0:5" + }, + "scope": 753, + "src": "2512:610:5", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 751, + "nodeType": "Block", + "src": "3616:95:5", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30783139", + "id": 738, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3648:4:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_25_by_1", + "typeString": "int_const 25" + }, + "value": "0x19" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_25_by_1", + "typeString": "int_const 25" + } + ], + "id": 737, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3643:4:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes1_$", + "typeString": "type(bytes1)" + }, + "typeName": "byte" + }, + "id": 739, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3643:10:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 741, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3660:1:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 740, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3655:4:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes1_$", + "typeString": "type(bytes1)" + }, + "typeName": "byte" + }, + "id": 742, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3655:7:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + { + "argumentTypes": null, + "id": 743, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2500, + "src": "3664:4:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafeTeamEdition_$753", + "typeString": "contract GnosisSafeTeamEdition" + } + }, + { + "argumentTypes": null, + "id": 744, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 723, + "src": "3670:2:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 745, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 725, + "src": "3674:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 746, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 727, + "src": "3681:4:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 747, + "name": "operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 729, + "src": "3687:9:5", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + }, + { + "argumentTypes": null, + "id": 748, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 731, + "src": "3698:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + { + "typeIdentifier": "t_contract$_GnosisSafeTeamEdition_$753", + "typeString": "contract GnosisSafeTeamEdition" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 736, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2459, + "src": "3633:9:5", + "typeDescriptions": { + "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", + "typeString": "function () pure returns (bytes32)" + } + }, + "id": 749, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3633:71:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 735, + "id": 750, + "nodeType": "Return", + "src": "3626:78:5" + } + ] + }, + "documentation": "@dev Returns hash to be signed by owners.\n @param to Destination address.\n @param value Ether value.\n @param data Data payload.\n @param operation Operation type.\n @param nonce Transaction nonce.\n @return Transaction hash.", + "id": 752, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "getTransactionHash", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 732, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 723, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 752, + "src": "3437:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 722, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3437:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 725, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 752, + "src": "3458:13:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 724, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3458:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 727, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 752, + "src": "3482:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 726, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3482:5:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 729, + "name": "operation", + "nodeType": "VariableDeclaration", + "scope": 752, + "src": "3503:24:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + }, + "typeName": { + "contractScope": null, + "id": 728, + "name": "Enum.Operation", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 29, + "src": "3503:14:5", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 731, + "name": "nonce", + "nodeType": "VariableDeclaration", + "scope": 752, + "src": "3538:13:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 730, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3538:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3427:130:5" + }, + "payable": false, + "returnParameters": { + "id": 735, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 734, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 752, + "src": "3603:7:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 733, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3603:7:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3602:9:5" + }, + "scope": 753, + "src": "3400:311:5", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 754, + "src": "272:3441:5" + } + ], + "src": "0:3714:5" + }, + "legacyAST": { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafeTeamEdition.sol", + "exportedSymbols": { + "GnosisSafeTeamEdition": [ + 753 + ] + }, + "id": 754, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 532, + "literals": [ + "solidity", + "0.4", + ".23" + ], + "nodeType": "PragmaDirective", + "src": "0:23:5" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", + "file": "./GnosisSafe.sol", + "id": 533, + "nodeType": "ImportDirective", + "scope": 754, + "sourceUnit": 64, + "src": "24:26:5", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/MasterCopy.sol", + "file": "./MasterCopy.sol", + "id": 534, + "nodeType": "ImportDirective", + "scope": 754, + "sourceUnit": 780, + "src": "51:26:5", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 535, + "name": "MasterCopy", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 779, + "src": "306:10:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MasterCopy_$779", + "typeString": "contract MasterCopy" + } + }, + "id": 536, + "nodeType": "InheritanceSpecifier", + "src": "306:10:5" + }, + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 537, + "name": "GnosisSafe", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 63, + "src": "318:10:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$63", + "typeString": "contract GnosisSafe" + } + }, + "id": 538, + "nodeType": "InheritanceSpecifier", + "src": "318:10:5" + } + ], + "contractDependencies": [ + 63, + 779, + 1142, + 1438, + 1559 + ], + "contractKind": "contract", + "documentation": "@title Gnosis Safe Team Edition - A multisignature wallet with support for confirmations.\n @author Stefan George - \n @author Richard Meissner - ", + "fullyImplemented": true, + "id": 753, + "linearizedBaseContracts": [ + 753, + 63, + 1438, + 1142, + 779, + 1559 + ], + "name": "GnosisSafeTeamEdition", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "id": 541, + "name": "NAME", + "nodeType": "VariableDeclaration", + "scope": 753, + "src": "336:56:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory", + "typeString": "string" + }, + "typeName": { + "id": 539, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "336:6:5", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "476e6f7369732053616665205465616d2045646974696f6e", + "id": 540, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "366:26:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_69b1cb372bb47730ba653a0e87363aa6de8337d13ed5852e6fe3ba4e2004a81e", + "typeString": "literal_string \"Gnosis Safe Team Edition\"" + }, + "value": "Gnosis Safe Team Edition" + }, + "visibility": "public" + }, + { + "constant": true, + "id": 544, + "name": "VERSION", + "nodeType": "VariableDeclaration", + "scope": 753, + "src": "398:40:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory", + "typeString": "string" + }, + "typeName": { + "id": 542, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "398:6:5", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "302e302e31", + "id": 543, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "431:7:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", + "typeString": "literal_string \"0.0.1\"" + }, + "value": "0.0.1" + }, + "visibility": "public" + }, + { + "constant": false, + "id": 548, + "name": "isExecuted", + "nodeType": "VariableDeclaration", + "scope": 753, + "src": "536:43:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + }, + "typeName": { + "id": 547, + "keyType": { + "id": 545, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "545:7:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Mapping", + "src": "536:25:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + }, + "valueType": { + "id": 546, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "556:4:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 554, + "name": "isConfirmed", + "nodeType": "VariableDeclaration", + "scope": 753, + "src": "683:64:5", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(bytes32 => mapping(address => bool))" + }, + "typeName": { + "id": 553, + "keyType": { + "id": 549, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "692:7:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Mapping", + "src": "683:45:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(bytes32 => mapping(address => bool))" + }, + "valueType": { + "id": 552, + "keyType": { + "id": 550, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "711:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "703:24:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "valueType": { + "id": 551, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "722:4:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + } + }, + "value": null, + "visibility": "public" + }, + { + "body": { + "id": 603, + "nodeType": "Block", + "src": "1205:383:5", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 568, + "name": "isOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1156 + ], + "referencedDeclaration": 1156, + "src": "1293:7:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 571, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 569, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2465, + "src": "1301:3:5", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 570, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1301:10:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1293:19:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 567, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "1285:7:5", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 572, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1285:28:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 573, + "nodeType": "ExpressionStatement", + "src": "1285:28:5" + }, + { + "assignments": [ + 575 + ], + "declarations": [ + { + "constant": false, + "id": 575, + "name": "transactionHash", + "nodeType": "VariableDeclaration", + "scope": 604, + "src": "1323:23:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 574, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1323:7:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 583, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 577, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 556, + "src": "1368:2:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 578, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 558, + "src": "1372:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 579, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 560, + "src": "1379:4:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 580, + "name": "operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 562, + "src": "1385:9:5", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + }, + { + "argumentTypes": null, + "id": 581, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 564, + "src": "1396:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 576, + "name": "getTransactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 752, + "src": "1349:18:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) view returns (bytes32)" + } + }, + "id": 582, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1349:53:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1323:79:5" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 591, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "1482:41:5", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 585, + "name": "isConfirmed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 554, + "src": "1483:11:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(bytes32 => mapping(address => bool))" + } + }, + "id": 587, + "indexExpression": { + "argumentTypes": null, + "id": 586, + "name": "transactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 575, + "src": "1495:15:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1483:28:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 590, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 588, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2465, + "src": "1512:3:5", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 589, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1512:10:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1483:40:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 584, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "1474:7:5", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 592, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1474:50:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 593, + "nodeType": "ExpressionStatement", + "src": "1474:50:5" + }, + { + "expression": { + "argumentTypes": null, + "id": 601, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 594, + "name": "isConfirmed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 554, + "src": "1534:11:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(bytes32 => mapping(address => bool))" + } + }, + "id": 598, + "indexExpression": { + "argumentTypes": null, + "id": 595, + "name": "transactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 575, + "src": "1546:15:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1534:28:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 599, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 596, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2465, + "src": "1563:3:5", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 597, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1563:10:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1534:40:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 600, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1577:4:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "1534:47:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 602, + "nodeType": "ExpressionStatement", + "src": "1534:47:5" + } + ] + }, + "documentation": "@dev Allows to confirm a Safe transaction with a regular transaction.\n This can only be done from an owner address.\n @param to Destination address.\n @param value Ether value.\n @param data Data payload.\n @param operation Operation type.\n @param nonce Transaction nonce.", + "id": 604, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "confirmTransaction", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 565, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 556, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 604, + "src": "1106:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 555, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1106:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 558, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 604, + "src": "1118:13:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 557, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1118:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 560, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 604, + "src": "1133:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 559, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1133:5:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 562, + "name": "operation", + "nodeType": "VariableDeclaration", + "scope": 604, + "src": "1145:24:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + }, + "typeName": { + "contractScope": null, + "id": 561, + "name": "Enum.Operation", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 29, + "src": "1145:14:5", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 564, + "name": "nonce", + "nodeType": "VariableDeclaration", + "scope": 604, + "src": "1171:13:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 563, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1171:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1105:80:5" + }, + "payable": false, + "returnParameters": { + "id": 566, + "nodeType": "ParameterList", + "parameters": [], + "src": "1205:0:5" + }, + "scope": 753, + "src": "1078:510:5", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 655, + "nodeType": "Block", + "src": "2148:358:5", + "statements": [ + { + "assignments": [ + 618 + ], + "declarations": [ + { + "constant": false, + "id": 618, + "name": "transactionHash", + "nodeType": "VariableDeclaration", + "scope": 656, + "src": "2158:23:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 617, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2158:7:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 626, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 620, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 606, + "src": "2203:2:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 621, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 608, + "src": "2207:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 622, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 610, + "src": "2214:4:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 623, + "name": "operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 612, + "src": "2220:9:5", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + }, + { + "argumentTypes": null, + "id": 624, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 614, + "src": "2231:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 619, + "name": "getTransactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 752, + "src": "2184:18:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) view returns (bytes32)" + } + }, + "id": 625, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2184:53:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2158:79:5" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 631, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "2255:28:5", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 628, + "name": "isExecuted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 548, + "src": "2256:10:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + } + }, + "id": 630, + "indexExpression": { + "argumentTypes": null, + "id": 629, + "name": "transactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 618, + "src": "2267:15:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2256:27:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 627, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "2247:7:5", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 632, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2247:37:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 633, + "nodeType": "ExpressionStatement", + "src": "2247:37:5" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 635, + "name": "transactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 618, + "src": "2321:15:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 634, + "name": "checkAndClearConfirmations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 721, + "src": "2294:26:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$__$", + "typeString": "function (bytes32)" + } + }, + "id": 636, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2294:43:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 637, + "nodeType": "ExpressionStatement", + "src": "2294:43:5" + }, + { + "expression": { + "argumentTypes": null, + "id": 642, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 638, + "name": "isExecuted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 548, + "src": "2400:10:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + } + }, + "id": 640, + "indexExpression": { + "argumentTypes": null, + "id": 639, + "name": "transactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 618, + "src": "2411:15:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2400:27:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 641, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2430:4:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "2400:34:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 643, + "nodeType": "ExpressionStatement", + "src": "2400:34:5" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 646, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 606, + "src": "2460:2:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 647, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 608, + "src": "2464:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 648, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 610, + "src": "2471:4:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 649, + "name": "operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 612, + "src": "2477:9:5", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 650, + "name": "gasleft", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2458, + "src": "2488:7:5", + "typeDescriptions": { + "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 651, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2488:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 645, + "name": "execute", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1095, + "src": "2452:7:5", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) returns (bool)" + } + }, + "id": 652, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2452:46:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 644, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "2444:7:5", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 653, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2444:55:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 654, + "nodeType": "ExpressionStatement", + "src": "2444:55:5" + } + ] + }, + "documentation": "@dev Allows to execute a Safe transaction confirmed by required number of owners.\n @param to Destination address of Safe transaction.\n @param value Ether value of Safe transaction.\n @param data Data payload of Safe transaction.\n @param operation Operation type of Safe transaction.\n @param nonce Nonce used for this Safe transaction.", + "id": 656, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "executeTransaction", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 615, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 606, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 656, + "src": "2008:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 605, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2008:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 608, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 656, + "src": "2029:13:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 607, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2029:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 610, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 656, + "src": "2053:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 609, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2053:5:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 612, + "name": "operation", + "nodeType": "VariableDeclaration", + "scope": 656, + "src": "2074:24:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + }, + "typeName": { + "contractScope": null, + "id": 611, + "name": "Enum.Operation", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 29, + "src": "2074:14:5", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 614, + "name": "nonce", + "nodeType": "VariableDeclaration", + "scope": 656, + "src": "2109:13:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 613, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2109:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1998:130:5" + }, + "payable": false, + "returnParameters": { + "id": 616, + "nodeType": "ParameterList", + "parameters": [], + "src": "2148:0:5" + }, + "scope": 753, + "src": "1971:535:5", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 720, + "nodeType": "Block", + "src": "2594:528:5", + "statements": [ + { + "assignments": [ + 662 + ], + "declarations": [ + { + "constant": false, + "id": 662, + "name": "confirmations", + "nodeType": "VariableDeclaration", + "scope": 721, + "src": "2604:21:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 661, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2604:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 664, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 663, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2628:1:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "2604:25:5" + }, + { + "body": { + "id": 712, + "nodeType": "Block", + "src": "2725:346:5", + "statements": [ + { + "assignments": [ + 677 + ], + "declarations": [ + { + "constant": false, + "id": 677, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 721, + "src": "2739:13:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 676, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2739:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 681, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 678, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1150, + "src": "2755:6:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 680, + "indexExpression": { + "argumentTypes": null, + "id": 679, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 666, + "src": "2762:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2755:9:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2739:25:5" + }, + { + "assignments": [ + 683 + ], + "declarations": [ + { + "constant": false, + "id": 683, + "name": "ownerConfirmed", + "nodeType": "VariableDeclaration", + "scope": 721, + "src": "2778:19:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 682, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2778:4:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 689, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 684, + "name": "isConfirmed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 554, + "src": "2800:11:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(bytes32 => mapping(address => bool))" + } + }, + "id": 686, + "indexExpression": { + "argumentTypes": null, + "id": 685, + "name": "transactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 658, + "src": "2812:15:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2800:28:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 688, + "indexExpression": { + "argumentTypes": null, + "id": 687, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 677, + "src": "2829:5:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2800:35:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2778:57:5" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 695, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 693, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 690, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 677, + "src": "2852:5:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 691, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2465, + "src": "2861:3:5", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 692, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2861:10:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2852:19:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "id": 694, + "name": "ownerConfirmed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 683, + "src": "2875:14:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "2852:37:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 711, + "nodeType": "IfStatement", + "src": "2849:212:5", + "trueBody": { + "id": 710, + "nodeType": "Block", + "src": "2891:170:5", + "statements": [ + { + "condition": { + "argumentTypes": null, + "id": 696, + "name": "ownerConfirmed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 683, + "src": "2913:14:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 706, + "nodeType": "IfStatement", + "src": "2909:104:5", + "trueBody": { + "id": 705, + "nodeType": "Block", + "src": "2929:84:5", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 703, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 697, + "name": "isConfirmed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 554, + "src": "2951:11:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(bytes32 => mapping(address => bool))" + } + }, + "id": 700, + "indexExpression": { + "argumentTypes": null, + "id": 698, + "name": "transactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 658, + "src": "2963:15:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2951:28:5", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 701, + "indexExpression": { + "argumentTypes": null, + "id": 699, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 677, + "src": "2980:5:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2951:35:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 702, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2989:5:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "2951:43:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 704, + "nodeType": "ExpressionStatement", + "src": "2951:43:5" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "id": 708, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "3030:16:5", + "subExpression": { + "argumentTypes": null, + "id": 707, + "name": "confirmations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 662, + "src": "3030:13:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 709, + "nodeType": "ExpressionStatement", + "src": "3030:16:5" + } + ] + } + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 672, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 669, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 666, + "src": "2701:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 670, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1150, + "src": "2705:6:5", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 671, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2705:13:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2701:17:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 713, + "initializationExpression": { + "assignments": [ + 666 + ], + "declarations": [ + { + "constant": false, + "id": 666, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 721, + "src": "2686:9:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 665, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2686:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 668, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 667, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2698:1:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "2686:13:5" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 674, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "2720:3:5", + "subExpression": { + "argumentTypes": null, + "id": 673, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 666, + "src": "2720:1:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 675, + "nodeType": "ExpressionStatement", + "src": "2720:3:5" + }, + "nodeType": "ForStatement", + "src": "2681:390:5" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 717, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 715, + "name": "confirmations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 662, + "src": "3088:13:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 716, + "name": "threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1152 + ], + "referencedDeclaration": 1152, + "src": "3105:9:5", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "3088:26:5", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 714, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "3080:7:5", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 718, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3080:35:5", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 719, + "nodeType": "ExpressionStatement", + "src": "3080:35:5" + } + ] + }, + "documentation": null, + "id": 721, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "checkAndClearConfirmations", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 659, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 658, + "name": "transactionHash", + "nodeType": "VariableDeclaration", + "scope": 721, + "src": "2548:23:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 657, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2548:7:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2547:25:5" + }, + "payable": false, + "returnParameters": { + "id": 660, + "nodeType": "ParameterList", + "parameters": [], + "src": "2594:0:5" + }, + "scope": 753, + "src": "2512:610:5", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 751, + "nodeType": "Block", + "src": "3616:95:5", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30783139", + "id": 738, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3648:4:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_25_by_1", + "typeString": "int_const 25" + }, + "value": "0x19" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_25_by_1", + "typeString": "int_const 25" + } + ], + "id": 737, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3643:4:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes1_$", + "typeString": "type(bytes1)" + }, + "typeName": "byte" + }, + "id": 739, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3643:10:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 741, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3660:1:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 740, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3655:4:5", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes1_$", + "typeString": "type(bytes1)" + }, + "typeName": "byte" + }, + "id": 742, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3655:7:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + { + "argumentTypes": null, + "id": 743, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2500, + "src": "3664:4:5", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafeTeamEdition_$753", + "typeString": "contract GnosisSafeTeamEdition" + } + }, + { + "argumentTypes": null, + "id": 744, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 723, + "src": "3670:2:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 745, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 725, + "src": "3674:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 746, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 727, + "src": "3681:4:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 747, + "name": "operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 729, + "src": "3687:9:5", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + }, + { + "argumentTypes": null, + "id": 748, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 731, + "src": "3698:5:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + { + "typeIdentifier": "t_contract$_GnosisSafeTeamEdition_$753", + "typeString": "contract GnosisSafeTeamEdition" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 736, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2459, + "src": "3633:9:5", + "typeDescriptions": { + "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", + "typeString": "function () pure returns (bytes32)" + } + }, + "id": 749, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3633:71:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 735, + "id": 750, + "nodeType": "Return", + "src": "3626:78:5" + } + ] + }, + "documentation": "@dev Returns hash to be signed by owners.\n @param to Destination address.\n @param value Ether value.\n @param data Data payload.\n @param operation Operation type.\n @param nonce Transaction nonce.\n @return Transaction hash.", + "id": 752, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "getTransactionHash", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 732, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 723, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 752, + "src": "3437:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 722, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3437:7:5", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 725, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 752, + "src": "3458:13:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 724, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3458:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 727, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 752, + "src": "3482:10:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 726, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3482:5:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 729, + "name": "operation", + "nodeType": "VariableDeclaration", + "scope": 752, + "src": "3503:24:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + }, + "typeName": { + "contractScope": null, + "id": 728, + "name": "Enum.Operation", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 29, + "src": "3503:14:5", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 731, + "name": "nonce", + "nodeType": "VariableDeclaration", + "scope": 752, + "src": "3538:13:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 730, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3538:7:5", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3427:130:5" + }, + "payable": false, + "returnParameters": { + "id": 735, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 734, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 752, + "src": "3603:7:5", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 733, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3603:7:5", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3602:9:5" + }, + "scope": 753, + "src": "3400:311:5", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 754, + "src": "272:3441:5" + } + ], + "src": "0:3714:5" + }, + "compiler": { + "name": "solc", + "version": "0.4.23+commit.124ca40d.Emscripten.clang" + }, + "networks": { + "4": { + "events": {}, + "links": {}, + "address": "0x7e9805d6da2f382a2af21c492522fb81e7f7bfcd", + "transactionHash": "0xf80e26dc1da4895a87b9f4039f4d307205cd4f19be8c2f2a11a3be88c61de24d" + }, + "1525950336085": { + "events": {}, + "links": {}, + "address": "0xd16506c40cb044bf78552d9bea796c9d98fa0a45", + "transactionHash": "0x782ef1b28e30afdcb711e7119c7bc794bbd7f42356ea5a68072b8f59400b05e3" + } + }, + "schemaVersion": "2.0.0", + "updatedAt": "2018-05-10T11:07:04.681Z" +} \ No newline at end of file diff --git a/safe-contracts/build/contracts/MasterCopy.json b/safe-contracts/build/contracts/MasterCopy.json new file mode 100644 index 0000000000..ef6e5bc3d1 --- /dev/null +++ b/safe-contracts/build/contracts/MasterCopy.json @@ -0,0 +1,674 @@ +{ + "contractName": "MasterCopy", + "abi": [ + { + "constant": false, + "inputs": [ + { + "name": "_masterCopy", + "type": "address" + } + ], + "name": "changeMasterCopy", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b50610158806100206000396000f300608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680637de7edef14610046575b600080fd5b34801561005257600080fd5b50610087600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610089565b005b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156100c357600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156100e957600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505600a165627a7a7230582073cd5ab8858f9d67e5e09748f71ecf939357d0d1230776e9f935b1ef5d664eb00029", + "deployedBytecode": "0x608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680637de7edef14610046575b600080fd5b34801561005257600080fd5b50610087600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610089565b005b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156100c357600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156100e957600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505600a165627a7a7230582073cd5ab8858f9d67e5e09748f71ecf939357d0d1230776e9f935b1ef5d664eb00029", + "sourceMap": "203:633:6:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;203:633:6;;;;;;;", + "deployedSourceMap": "203:633:6:-;;;;;;;;;;;;;;;;;;;;;;;;626:208;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:208:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;244:4:14;222:27;;:10;:27;;;214:36;;;;;;;;791:1:6;776:11;:16;;;;768:25;;;;;;;;816:11;803:10;;:24;;;;;;;;;;;;;;;;;;626:208;:::o", + "source": "pragma solidity 0.4.23;\nimport \"./SelfAuthorized.sol\";\n\n\n/// @title MasterCopy - Base for master copy contracts (should always be first super contract)\n/// @author Richard Meissner - \ncontract MasterCopy is SelfAuthorized {\n // masterCopy always needs to be first declared variable, to ensure that it is at the same location as in the Proxy contract.\n // It should also always be ensured that the address is stored alone (uses a full word)\n address masterCopy;\n\n /// @dev Allows to upgrade the contract. This can only be done via a Safe transaction.\n /// @param _masterCopy New contract address.\n function changeMasterCopy(address _masterCopy)\n public\n authorized\n {\n // Master copy address cannot be null.\n require(_masterCopy != 0);\n masterCopy = _masterCopy;\n }\n}\n", + "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/MasterCopy.sol", + "ast": { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/MasterCopy.sol", + "exportedSymbols": { + "MasterCopy": [ + 779 + ] + }, + "id": 780, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 755, + "literals": [ + "solidity", + "0.4", + ".23" + ], + "nodeType": "PragmaDirective", + "src": "0:23:6" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/SelfAuthorized.sol", + "file": "./SelfAuthorized.sol", + "id": 756, + "nodeType": "ImportDirective", + "scope": 780, + "sourceUnit": 1560, + "src": "24:30:6", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 757, + "name": "SelfAuthorized", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1559, + "src": "226:14:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SelfAuthorized_$1559", + "typeString": "contract SelfAuthorized" + } + }, + "id": 758, + "nodeType": "InheritanceSpecifier", + "src": "226:14:6" + } + ], + "contractDependencies": [ + 1559 + ], + "contractKind": "contract", + "documentation": "@title MasterCopy - Base for master copy contracts (should always be first super contract)\n @author Richard Meissner - ", + "fullyImplemented": true, + "id": 779, + "linearizedBaseContracts": [ + 779, + 1559 + ], + "name": "MasterCopy", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 760, + "name": "masterCopy", + "nodeType": "VariableDeclaration", + "scope": 779, + "src": "465:18:6", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 759, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "465:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "body": { + "id": 777, + "nodeType": "Block", + "src": "711:123:6", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 770, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 768, + "name": "_masterCopy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 762, + "src": "776:11:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 769, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "791:1:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "776:16:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 767, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "768:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 771, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "768:25:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 772, + "nodeType": "ExpressionStatement", + "src": "768:25:6" + }, + { + "expression": { + "argumentTypes": null, + "id": 775, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 773, + "name": "masterCopy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 760, + "src": "803:10:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 774, + "name": "_masterCopy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 762, + "src": "816:11:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "803:24:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 776, + "nodeType": "ExpressionStatement", + "src": "803:24:6" + } + ] + }, + "documentation": "@dev Allows to upgrade the contract. This can only be done via a Safe transaction.\n @param _masterCopy New contract address.", + "id": 778, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 765, + "modifierName": { + "argumentTypes": null, + "id": 764, + "name": "authorized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1558, + "src": "696:10:6", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "696:10:6" + } + ], + "name": "changeMasterCopy", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 763, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 762, + "name": "_masterCopy", + "nodeType": "VariableDeclaration", + "scope": 778, + "src": "652:19:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 761, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "652:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "651:21:6" + }, + "payable": false, + "returnParameters": { + "id": 766, + "nodeType": "ParameterList", + "parameters": [], + "src": "711:0:6" + }, + "scope": 779, + "src": "626:208:6", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 780, + "src": "203:633:6" + } + ], + "src": "0:837:6" + }, + "legacyAST": { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/MasterCopy.sol", + "exportedSymbols": { + "MasterCopy": [ + 779 + ] + }, + "id": 780, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 755, + "literals": [ + "solidity", + "0.4", + ".23" + ], + "nodeType": "PragmaDirective", + "src": "0:23:6" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/SelfAuthorized.sol", + "file": "./SelfAuthorized.sol", + "id": 756, + "nodeType": "ImportDirective", + "scope": 780, + "sourceUnit": 1560, + "src": "24:30:6", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 757, + "name": "SelfAuthorized", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1559, + "src": "226:14:6", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SelfAuthorized_$1559", + "typeString": "contract SelfAuthorized" + } + }, + "id": 758, + "nodeType": "InheritanceSpecifier", + "src": "226:14:6" + } + ], + "contractDependencies": [ + 1559 + ], + "contractKind": "contract", + "documentation": "@title MasterCopy - Base for master copy contracts (should always be first super contract)\n @author Richard Meissner - ", + "fullyImplemented": true, + "id": 779, + "linearizedBaseContracts": [ + 779, + 1559 + ], + "name": "MasterCopy", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 760, + "name": "masterCopy", + "nodeType": "VariableDeclaration", + "scope": 779, + "src": "465:18:6", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 759, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "465:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "body": { + "id": 777, + "nodeType": "Block", + "src": "711:123:6", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 770, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 768, + "name": "_masterCopy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 762, + "src": "776:11:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 769, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "791:1:6", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "776:16:6", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 767, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "768:7:6", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 771, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "768:25:6", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 772, + "nodeType": "ExpressionStatement", + "src": "768:25:6" + }, + { + "expression": { + "argumentTypes": null, + "id": 775, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 773, + "name": "masterCopy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 760, + "src": "803:10:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 774, + "name": "_masterCopy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 762, + "src": "816:11:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "803:24:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 776, + "nodeType": "ExpressionStatement", + "src": "803:24:6" + } + ] + }, + "documentation": "@dev Allows to upgrade the contract. This can only be done via a Safe transaction.\n @param _masterCopy New contract address.", + "id": 778, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 765, + "modifierName": { + "argumentTypes": null, + "id": 764, + "name": "authorized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1558, + "src": "696:10:6", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "696:10:6" + } + ], + "name": "changeMasterCopy", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 763, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 762, + "name": "_masterCopy", + "nodeType": "VariableDeclaration", + "scope": 778, + "src": "652:19:6", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 761, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "652:7:6", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "651:21:6" + }, + "payable": false, + "returnParameters": { + "id": 766, + "nodeType": "ParameterList", + "parameters": [], + "src": "711:0:6" + }, + "scope": 779, + "src": "626:208:6", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 780, + "src": "203:633:6" + } + ], + "src": "0:837:6" + }, + "compiler": { + "name": "solc", + "version": "0.4.23+commit.124ca40d.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "2.0.0", + "updatedAt": "2018-05-10T10:43:07.897Z" +} \ No newline at end of file diff --git a/safe-contracts/build/contracts/Migrations.json b/safe-contracts/build/contracts/Migrations.json index e6b99e6ecf..499d53d4e3 100644 --- a/safe-contracts/build/contracts/Migrations.json +++ b/safe-contracts/build/contracts/Migrations.json @@ -64,24 +64,24 @@ "type": "function" } ], - "bytecode": "0x6060604052341561000f57600080fd5b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506102db8061005e6000396000f300606060405260043610610062576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630900f01014610067578063445df0ac146100a05780638da5cb5b146100c9578063fdacd5761461011e575b600080fd5b341561007257600080fd5b61009e600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610141565b005b34156100ab57600080fd5b6100b3610224565b6040518082815260200191505060405180910390f35b34156100d457600080fd5b6100dc61022a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561012957600080fd5b61013f600480803590602001909190505061024f565b005b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610220578190508073ffffffffffffffffffffffffffffffffffffffff1663fdacd5766001546040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b151561020b57600080fd5b6102c65a03f1151561021c57600080fd5b5050505b5050565b60015481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156102ac57806001819055505b505600a165627a7a723058201cc1585f9df7ab81426097daac394849e8580cf9e44d78be5b645de915c388300029", - "deployedBytecode": "0x606060405260043610610062576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630900f01014610067578063445df0ac146100a05780638da5cb5b146100c9578063fdacd5761461011e575b600080fd5b341561007257600080fd5b61009e600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610141565b005b34156100ab57600080fd5b6100b3610224565b6040518082815260200191505060405180910390f35b34156100d457600080fd5b6100dc61022a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561012957600080fd5b61013f600480803590602001909190505061024f565b005b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610220578190508073ffffffffffffffffffffffffffffffffffffffff1663fdacd5766001546040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b151561020b57600080fd5b6102c65a03f1151561021c57600080fd5b5050505b5050565b60015481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156102ac57806001819055505b505600a165627a7a723058201cc1585f9df7ab81426097daac394849e8580cf9e44d78be5b645de915c388300029", - "sourceMap": "25:580:2:-;;;191:76;;;;;;;;250:10;242:5;;:18;;;;;;;;;;;;;;;;;;25:580;;;;;;", - "deployedSourceMap": "25:580:2:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;408:195;;;;;;;;;;;;;;;;;;;;;;;;;;;;77:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;51:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;273:129;;;;;;;;;;;;;;;;;;;;;;;;;;408:195;494:19;170:5;;;;;;;;;;;156:19;;:10;:19;;;152:26;;;527:11;494:45;;549:8;:21;;;571:24;;549:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;152:26;408:195;;:::o;77:36::-;;;;:::o;51:20::-;;;;;;;;;;;;;:::o;273:129::-;170:5;;;;;;;;;;;156:19;;:10;:19;;;152:26;;;386:9;359:24;:36;;;;152:26;273:129;:::o", + "bytecode": "0x608060405234801561001057600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506102f8806100606000396000f300608060405260043610610062576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630900f01014610067578063445df0ac146100aa5780638da5cb5b146100d5578063fdacd5761461012c575b600080fd5b34801561007357600080fd5b506100a8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610159565b005b3480156100b657600080fd5b506100bf610241565b6040518082815260200191505060405180910390f35b3480156100e157600080fd5b506100ea610247565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561013857600080fd5b506101576004803603810190808035906020019092919050505061026c565b005b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561023d578190508073ffffffffffffffffffffffffffffffffffffffff1663fdacd5766001546040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b15801561022457600080fd5b505af1158015610238573d6000803e3d6000fd5b505050505b5050565b60015481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156102c957806001819055505b505600a165627a7a723058206ae04dab7842a035dafed67c3a7c6e4dba46f3f40b8fa0fd9a934fb2efadc85b0029", + "deployedBytecode": "0x608060405260043610610062576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630900f01014610067578063445df0ac146100aa5780638da5cb5b146100d5578063fdacd5761461012c575b600080fd5b34801561007357600080fd5b506100a8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610159565b005b3480156100b657600080fd5b506100bf610241565b6040518082815260200191505060405180910390f35b3480156100e157600080fd5b506100ea610247565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561013857600080fd5b506101576004803603810190808035906020019092919050505061026c565b005b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561023d578190508073ffffffffffffffffffffffffffffffffffffffff1663fdacd5766001546040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b15801561022457600080fd5b505af1158015610238573d6000803e3d6000fd5b505050505b5050565b60015481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156102c957806001819055505b505600a165627a7a723058206ae04dab7842a035dafed67c3a7c6e4dba46f3f40b8fa0fd9a934fb2efadc85b0029", + "sourceMap": "25:580:7:-;;;191:76;8:9:-1;5:2;;;30:1;27;20:12;5:2;191:76:7;250:10;242:5;;:18;;;;;;;;;;;;;;;;;;25:580;;;;;;", + "deployedSourceMap": "25:580:7:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;408:195;;8:9:-1;5:2;;;30:1;27;20:12;5:2;408:195:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;77:36;;8:9:-1;5:2;;;30:1;27;20:12;5:2;77:36:7;;;;;;;;;;;;;;;;;;;;;;;51:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;51:20:7;;;;;;;;;;;;;;;;;;;;;;;;;;;273:129;;8:9:-1;5:2;;;30:1;27;20:12;5:2;273:129:7;;;;;;;;;;;;;;;;;;;;;;;;;;408:195;494:19;170:5;;;;;;;;;;;156:19;;:10;:19;;;152:26;;;527:11;494:45;;549:8;:21;;;571:24;;549:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;549:47:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;549:47:7;;;;152:26;408:195;;:::o;77:36::-;;;;:::o;51:20::-;;;;;;;;;;;;;:::o;273:129::-;170:5;;;;;;;;;;;156:19;;:10;:19;;;152:26;;;386:9;359:24;:36;;;;152:26;273:129;:::o", "source": "pragma solidity ^0.4.4;\n\ncontract Migrations {\n address public owner;\n uint public last_completed_migration;\n\n modifier restricted() {\n if (msg.sender == owner) _;\n }\n\n function Migrations()\n public\n {\n owner = msg.sender;\n }\n\n function setCompleted(uint completed)\n public\n restricted\n {\n last_completed_migration = completed;\n }\n\n function upgrade(address new_address)\n public\n restricted\n {\n Migrations upgraded = Migrations(new_address);\n upgraded.setCompleted(last_completed_migration);\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Migrations.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Migrations.sol", "exportedSymbols": { "Migrations": [ - 1020 + 836 ] }, - "id": 1021, + "id": 837, "nodeType": "SourceUnit", "nodes": [ { - "id": 965, + "id": 781, "literals": [ "solidity", "^", @@ -89,7 +89,7 @@ ".4" ], "nodeType": "PragmaDirective", - "src": "0:23:2" + "src": "0:23:7" }, { "baseContracts": [], @@ -97,20 +97,20 @@ "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 1020, + "id": 836, "linearizedBaseContracts": [ - 1020 + 836 ], "name": "Migrations", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, - "id": 967, + "id": 783, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 1020, - "src": "51:20:2", + "scope": 836, + "src": "51:20:7", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -118,10 +118,10 @@ "typeString": "address" }, "typeName": { - "id": 966, + "id": 782, "name": "address", "nodeType": "ElementaryTypeName", - "src": "51:7:2", + "src": "51:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -132,11 +132,11 @@ }, { "constant": false, - "id": 969, + "id": 785, "name": "last_completed_migration", "nodeType": "VariableDeclaration", - "scope": 1020, - "src": "77:36:2", + "scope": 836, + "src": "77:36:7", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -144,10 +144,10 @@ "typeString": "uint256" }, "typeName": { - "id": 968, + "id": 784, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "77:4:2", + "src": "77:4:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -158,9 +158,9 @@ }, { "body": { - "id": 977, + "id": 793, "nodeType": "Block", - "src": "142:43:2", + "src": "142:43:7", "statements": [ { "condition": { @@ -169,7 +169,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 974, + "id": 790, "isConstant": false, "isLValue": false, "isPure": false, @@ -178,18 +178,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 971, + "id": 787, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2089, - "src": "156:3:2", + "referencedDeclaration": 2465, + "src": "156:3:7", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 972, + "id": 788, "isConstant": false, "isLValue": false, "isPure": false, @@ -197,7 +197,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "156:10:2", + "src": "156:10:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -207,69 +207,70 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 973, + "id": 789, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 967, - "src": "170:5:2", + "referencedDeclaration": 783, + "src": "170:5:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "156:19:2", + "src": "156:19:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 976, + "id": 792, "nodeType": "IfStatement", - "src": "152:26:2", + "src": "152:26:7", "trueBody": { - "id": 975, + "id": 791, "nodeType": "PlaceholderStatement", - "src": "177:1:2" + "src": "177:1:7" } } ] }, - "id": 978, + "documentation": null, + "id": 794, "name": "restricted", "nodeType": "ModifierDefinition", "parameters": { - "id": 970, + "id": 786, "nodeType": "ParameterList", "parameters": [], - "src": "139:2:2" + "src": "139:2:7" }, - "src": "120:65:2", + "src": "120:65:7", "visibility": "internal" }, { "body": { - "id": 986, + "id": 802, "nodeType": "Block", - "src": "232:35:2", + "src": "232:35:7", "statements": [ { "expression": { "argumentTypes": null, - "id": 984, + "id": 800, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 981, + "id": 797, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 967, - "src": "242:5:2", + "referencedDeclaration": 783, + "src": "242:5:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -281,18 +282,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 982, + "id": 798, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2089, - "src": "250:3:2", + "referencedDeclaration": 2465, + "src": "250:3:7", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 983, + "id": 799, "isConstant": false, "isLValue": false, "isPure": false, @@ -300,25 +301,26 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "250:10:2", + "src": "250:10:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "242:18:2", + "src": "242:18:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 985, + "id": 801, "nodeType": "ExpressionStatement", - "src": "242:18:2" + "src": "242:18:7" } ] }, - "id": 987, + "documentation": null, + "id": 803, "implemented": true, "isConstructor": true, "isDeclaredConst": false, @@ -326,46 +328,46 @@ "name": "Migrations", "nodeType": "FunctionDefinition", "parameters": { - "id": 979, + "id": 795, "nodeType": "ParameterList", "parameters": [], - "src": "210:2:2" + "src": "210:2:7" }, "payable": false, "returnParameters": { - "id": 980, + "id": 796, "nodeType": "ParameterList", "parameters": [], - "src": "232:0:2" + "src": "232:0:7" }, - "scope": 1020, - "src": "191:76:2", + "scope": 836, + "src": "191:76:7", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 998, + "id": 814, "nodeType": "Block", - "src": "349:53:2", + "src": "349:53:7", "statements": [ { "expression": { "argumentTypes": null, - "id": 996, + "id": 812, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 994, + "id": 810, "name": "last_completed_migration", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 969, - "src": "359:24:2", + "referencedDeclaration": 785, + "src": "359:24:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -375,67 +377,68 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 995, + "id": 811, "name": "completed", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 989, - "src": "386:9:2", + "referencedDeclaration": 805, + "src": "386:9:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "359:36:2", + "src": "359:36:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 997, + "id": 813, "nodeType": "ExpressionStatement", - "src": "359:36:2" + "src": "359:36:7" } ] }, - "id": 999, + "documentation": null, + "id": 815, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { - "arguments": [], - "id": 992, + "arguments": null, + "id": 808, "modifierName": { "argumentTypes": null, - "id": 991, + "id": 807, "name": "restricted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 978, - "src": "334:10:2", + "referencedDeclaration": 794, + "src": "334:10:7", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "334:10:2" + "src": "334:10:7" } ], "name": "setCompleted", "nodeType": "FunctionDefinition", "parameters": { - "id": 990, + "id": 806, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 989, + "id": 805, "name": "completed", "nodeType": "VariableDeclaration", - "scope": 999, - "src": "295:14:2", + "scope": 815, + "src": "295:14:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -443,10 +446,10 @@ "typeString": "uint256" }, "typeName": { - "id": 988, + "id": 804, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "295:4:2", + "src": "295:4:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -456,54 +459,54 @@ "visibility": "internal" } ], - "src": "294:16:2" + "src": "294:16:7" }, "payable": false, "returnParameters": { - "id": 993, + "id": 809, "nodeType": "ParameterList", "parameters": [], - "src": "349:0:2" + "src": "349:0:7" }, - "scope": 1020, - "src": "273:129:2", + "scope": 836, + "src": "273:129:7", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1018, + "id": 834, "nodeType": "Block", - "src": "484:119:2", + "src": "484:119:7", "statements": [ { "assignments": [ - 1007 + 823 ], "declarations": [ { "constant": false, - "id": 1007, + "id": 823, "name": "upgraded", "nodeType": "VariableDeclaration", - "scope": 1019, - "src": "494:19:2", + "scope": 835, + "src": "494:19:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Migrations_$1020", + "typeIdentifier": "t_contract$_Migrations_$836", "typeString": "contract Migrations" }, "typeName": { "contractScope": null, - "id": 1006, + "id": 822, "name": "Migrations", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1020, - "src": "494:10:2", + "referencedDeclaration": 836, + "src": "494:10:7", "typeDescriptions": { - "typeIdentifier": "t_contract$_Migrations_$1020", + "typeIdentifier": "t_contract$_Migrations_$836", "typeString": "contract Migrations" } }, @@ -511,18 +514,18 @@ "visibility": "internal" } ], - "id": 1011, + "id": 827, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 1009, + "id": 825, "name": "new_address", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1001, - "src": "527:11:2", + "referencedDeclaration": 817, + "src": "527:11:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -536,18 +539,18 @@ "typeString": "address" } ], - "id": 1008, + "id": 824, "name": "Migrations", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1020, - "src": "516:10:2", + "referencedDeclaration": 836, + "src": "516:10:7", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Migrations_$1020_$", + "typeIdentifier": "t_type$_t_contract$_Migrations_$836_$", "typeString": "type(contract Migrations)" } }, - "id": 1010, + "id": 826, "isConstant": false, "isLValue": false, "isPure": false, @@ -555,14 +558,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "516:23:2", + "src": "516:23:7", "typeDescriptions": { - "typeIdentifier": "t_contract$_Migrations_$1020", + "typeIdentifier": "t_contract$_Migrations_$836", "typeString": "contract Migrations" } }, "nodeType": "VariableDeclarationStatement", - "src": "494:45:2" + "src": "494:45:7" }, { "expression": { @@ -570,12 +573,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1015, + "id": 831, "name": "last_completed_migration", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 969, - "src": "571:24:2", + "referencedDeclaration": 785, + "src": "571:24:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -591,32 +594,32 @@ ], "expression": { "argumentTypes": null, - "id": 1012, + "id": 828, "name": "upgraded", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1007, - "src": "549:8:2", + "referencedDeclaration": 823, + "src": "549:8:7", "typeDescriptions": { - "typeIdentifier": "t_contract$_Migrations_$1020", + "typeIdentifier": "t_contract$_Migrations_$836", "typeString": "contract Migrations" } }, - "id": 1014, + "id": 830, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "setCompleted", "nodeType": "MemberAccess", - "referencedDeclaration": 999, - "src": "549:21:2", + "referencedDeclaration": 815, + "src": "549:21:7", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256) external" } }, - "id": 1016, + "id": 832, "isConstant": false, "isLValue": false, "isPure": false, @@ -624,56 +627,57 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "549:47:2", + "src": "549:47:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1017, + "id": 833, "nodeType": "ExpressionStatement", - "src": "549:47:2" + "src": "549:47:7" } ] }, - "id": 1019, + "documentation": null, + "id": 835, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { - "arguments": [], - "id": 1004, + "arguments": null, + "id": 820, "modifierName": { "argumentTypes": null, - "id": 1003, + "id": 819, "name": "restricted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 978, - "src": "469:10:2", + "referencedDeclaration": 794, + "src": "469:10:7", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "469:10:2" + "src": "469:10:7" } ], "name": "upgrade", "nodeType": "FunctionDefinition", "parameters": { - "id": 1002, + "id": 818, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1001, + "id": 817, "name": "new_address", "nodeType": "VariableDeclaration", - "scope": 1019, - "src": "425:19:2", + "scope": 835, + "src": "425:19:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -681,10 +685,10 @@ "typeString": "address" }, "typeName": { - "id": 1000, + "id": 816, "name": "address", "nodeType": "ElementaryTypeName", - "src": "425:7:2", + "src": "425:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -694,40 +698,40 @@ "visibility": "internal" } ], - "src": "424:21:2" + "src": "424:21:7" }, "payable": false, "returnParameters": { - "id": 1005, + "id": 821, "nodeType": "ParameterList", "parameters": [], - "src": "484:0:2" + "src": "484:0:7" }, - "scope": 1020, - "src": "408:195:2", + "scope": 836, + "src": "408:195:7", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 1021, - "src": "25:580:2" + "scope": 837, + "src": "25:580:7" } ], - "src": "0:606:2" + "src": "0:606:7" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Migrations.sol", "exportedSymbols": { "Migrations": [ - 1020 + 836 ] }, - "id": 1021, + "id": 837, "nodeType": "SourceUnit", "nodes": [ { - "id": 965, + "id": 781, "literals": [ "solidity", "^", @@ -735,7 +739,7 @@ ".4" ], "nodeType": "PragmaDirective", - "src": "0:23:2" + "src": "0:23:7" }, { "baseContracts": [], @@ -743,20 +747,20 @@ "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 1020, + "id": 836, "linearizedBaseContracts": [ - 1020 + 836 ], "name": "Migrations", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, - "id": 967, + "id": 783, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 1020, - "src": "51:20:2", + "scope": 836, + "src": "51:20:7", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -764,10 +768,10 @@ "typeString": "address" }, "typeName": { - "id": 966, + "id": 782, "name": "address", "nodeType": "ElementaryTypeName", - "src": "51:7:2", + "src": "51:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -778,11 +782,11 @@ }, { "constant": false, - "id": 969, + "id": 785, "name": "last_completed_migration", "nodeType": "VariableDeclaration", - "scope": 1020, - "src": "77:36:2", + "scope": 836, + "src": "77:36:7", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -790,10 +794,10 @@ "typeString": "uint256" }, "typeName": { - "id": 968, + "id": 784, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "77:4:2", + "src": "77:4:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -804,9 +808,9 @@ }, { "body": { - "id": 977, + "id": 793, "nodeType": "Block", - "src": "142:43:2", + "src": "142:43:7", "statements": [ { "condition": { @@ -815,7 +819,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 974, + "id": 790, "isConstant": false, "isLValue": false, "isPure": false, @@ -824,18 +828,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 971, + "id": 787, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2089, - "src": "156:3:2", + "referencedDeclaration": 2465, + "src": "156:3:7", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 972, + "id": 788, "isConstant": false, "isLValue": false, "isPure": false, @@ -843,7 +847,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "156:10:2", + "src": "156:10:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -853,69 +857,70 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 973, + "id": 789, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 967, - "src": "170:5:2", + "referencedDeclaration": 783, + "src": "170:5:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "156:19:2", + "src": "156:19:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 976, + "id": 792, "nodeType": "IfStatement", - "src": "152:26:2", + "src": "152:26:7", "trueBody": { - "id": 975, + "id": 791, "nodeType": "PlaceholderStatement", - "src": "177:1:2" + "src": "177:1:7" } } ] }, - "id": 978, + "documentation": null, + "id": 794, "name": "restricted", "nodeType": "ModifierDefinition", "parameters": { - "id": 970, + "id": 786, "nodeType": "ParameterList", "parameters": [], - "src": "139:2:2" + "src": "139:2:7" }, - "src": "120:65:2", + "src": "120:65:7", "visibility": "internal" }, { "body": { - "id": 986, + "id": 802, "nodeType": "Block", - "src": "232:35:2", + "src": "232:35:7", "statements": [ { "expression": { "argumentTypes": null, - "id": 984, + "id": 800, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 981, + "id": 797, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 967, - "src": "242:5:2", + "referencedDeclaration": 783, + "src": "242:5:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -927,18 +932,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 982, + "id": 798, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2089, - "src": "250:3:2", + "referencedDeclaration": 2465, + "src": "250:3:7", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 983, + "id": 799, "isConstant": false, "isLValue": false, "isPure": false, @@ -946,25 +951,26 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "250:10:2", + "src": "250:10:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "242:18:2", + "src": "242:18:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 985, + "id": 801, "nodeType": "ExpressionStatement", - "src": "242:18:2" + "src": "242:18:7" } ] }, - "id": 987, + "documentation": null, + "id": 803, "implemented": true, "isConstructor": true, "isDeclaredConst": false, @@ -972,46 +978,46 @@ "name": "Migrations", "nodeType": "FunctionDefinition", "parameters": { - "id": 979, + "id": 795, "nodeType": "ParameterList", "parameters": [], - "src": "210:2:2" + "src": "210:2:7" }, "payable": false, "returnParameters": { - "id": 980, + "id": 796, "nodeType": "ParameterList", "parameters": [], - "src": "232:0:2" + "src": "232:0:7" }, - "scope": 1020, - "src": "191:76:2", + "scope": 836, + "src": "191:76:7", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 998, + "id": 814, "nodeType": "Block", - "src": "349:53:2", + "src": "349:53:7", "statements": [ { "expression": { "argumentTypes": null, - "id": 996, + "id": 812, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 994, + "id": 810, "name": "last_completed_migration", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 969, - "src": "359:24:2", + "referencedDeclaration": 785, + "src": "359:24:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1021,67 +1027,68 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 995, + "id": 811, "name": "completed", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 989, - "src": "386:9:2", + "referencedDeclaration": 805, + "src": "386:9:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "359:36:2", + "src": "359:36:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 997, + "id": 813, "nodeType": "ExpressionStatement", - "src": "359:36:2" + "src": "359:36:7" } ] }, - "id": 999, + "documentation": null, + "id": 815, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { - "arguments": [], - "id": 992, + "arguments": null, + "id": 808, "modifierName": { "argumentTypes": null, - "id": 991, + "id": 807, "name": "restricted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 978, - "src": "334:10:2", + "referencedDeclaration": 794, + "src": "334:10:7", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "334:10:2" + "src": "334:10:7" } ], "name": "setCompleted", "nodeType": "FunctionDefinition", "parameters": { - "id": 990, + "id": 806, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 989, + "id": 805, "name": "completed", "nodeType": "VariableDeclaration", - "scope": 999, - "src": "295:14:2", + "scope": 815, + "src": "295:14:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1089,10 +1096,10 @@ "typeString": "uint256" }, "typeName": { - "id": 988, + "id": 804, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "295:4:2", + "src": "295:4:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1102,54 +1109,54 @@ "visibility": "internal" } ], - "src": "294:16:2" + "src": "294:16:7" }, "payable": false, "returnParameters": { - "id": 993, + "id": 809, "nodeType": "ParameterList", "parameters": [], - "src": "349:0:2" + "src": "349:0:7" }, - "scope": 1020, - "src": "273:129:2", + "scope": 836, + "src": "273:129:7", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1018, + "id": 834, "nodeType": "Block", - "src": "484:119:2", + "src": "484:119:7", "statements": [ { "assignments": [ - 1007 + 823 ], "declarations": [ { "constant": false, - "id": 1007, + "id": 823, "name": "upgraded", "nodeType": "VariableDeclaration", - "scope": 1019, - "src": "494:19:2", + "scope": 835, + "src": "494:19:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Migrations_$1020", + "typeIdentifier": "t_contract$_Migrations_$836", "typeString": "contract Migrations" }, "typeName": { "contractScope": null, - "id": 1006, + "id": 822, "name": "Migrations", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1020, - "src": "494:10:2", + "referencedDeclaration": 836, + "src": "494:10:7", "typeDescriptions": { - "typeIdentifier": "t_contract$_Migrations_$1020", + "typeIdentifier": "t_contract$_Migrations_$836", "typeString": "contract Migrations" } }, @@ -1157,18 +1164,18 @@ "visibility": "internal" } ], - "id": 1011, + "id": 827, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 1009, + "id": 825, "name": "new_address", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1001, - "src": "527:11:2", + "referencedDeclaration": 817, + "src": "527:11:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1182,18 +1189,18 @@ "typeString": "address" } ], - "id": 1008, + "id": 824, "name": "Migrations", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1020, - "src": "516:10:2", + "referencedDeclaration": 836, + "src": "516:10:7", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Migrations_$1020_$", + "typeIdentifier": "t_type$_t_contract$_Migrations_$836_$", "typeString": "type(contract Migrations)" } }, - "id": 1010, + "id": 826, "isConstant": false, "isLValue": false, "isPure": false, @@ -1201,14 +1208,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "516:23:2", + "src": "516:23:7", "typeDescriptions": { - "typeIdentifier": "t_contract$_Migrations_$1020", + "typeIdentifier": "t_contract$_Migrations_$836", "typeString": "contract Migrations" } }, "nodeType": "VariableDeclarationStatement", - "src": "494:45:2" + "src": "494:45:7" }, { "expression": { @@ -1216,12 +1223,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1015, + "id": 831, "name": "last_completed_migration", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 969, - "src": "571:24:2", + "referencedDeclaration": 785, + "src": "571:24:7", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1237,32 +1244,32 @@ ], "expression": { "argumentTypes": null, - "id": 1012, + "id": 828, "name": "upgraded", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1007, - "src": "549:8:2", + "referencedDeclaration": 823, + "src": "549:8:7", "typeDescriptions": { - "typeIdentifier": "t_contract$_Migrations_$1020", + "typeIdentifier": "t_contract$_Migrations_$836", "typeString": "contract Migrations" } }, - "id": 1014, + "id": 830, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "setCompleted", "nodeType": "MemberAccess", - "referencedDeclaration": 999, - "src": "549:21:2", + "referencedDeclaration": 815, + "src": "549:21:7", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256) external" } }, - "id": 1016, + "id": 832, "isConstant": false, "isLValue": false, "isPure": false, @@ -1270,56 +1277,57 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "549:47:2", + "src": "549:47:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1017, + "id": 833, "nodeType": "ExpressionStatement", - "src": "549:47:2" + "src": "549:47:7" } ] }, - "id": 1019, + "documentation": null, + "id": 835, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { - "arguments": [], - "id": 1004, + "arguments": null, + "id": 820, "modifierName": { "argumentTypes": null, - "id": 1003, + "id": 819, "name": "restricted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 978, - "src": "469:10:2", + "referencedDeclaration": 794, + "src": "469:10:7", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "469:10:2" + "src": "469:10:7" } ], "name": "upgrade", "nodeType": "FunctionDefinition", "parameters": { - "id": 1002, + "id": 818, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1001, + "id": 817, "name": "new_address", "nodeType": "VariableDeclaration", - "scope": 1019, - "src": "425:19:2", + "scope": 835, + "src": "425:19:7", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1327,10 +1335,10 @@ "typeString": "address" }, "typeName": { - "id": 1000, + "id": 816, "name": "address", "nodeType": "ElementaryTypeName", - "src": "425:7:2", + "src": "425:7:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1340,58 +1348,52 @@ "visibility": "internal" } ], - "src": "424:21:2" + "src": "424:21:7" }, "payable": false, "returnParameters": { - "id": 1005, + "id": 821, "nodeType": "ParameterList", "parameters": [], - "src": "484:0:2" + "src": "484:0:7" }, - "scope": 1020, - "src": "408:195:2", + "scope": 836, + "src": "408:195:7", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 1021, - "src": "25:580:2" + "scope": 837, + "src": "25:580:7" } ], - "src": "0:606:2" + "src": "0:606:7" }, "compiler": { "name": "solc", - "version": "0.4.19+commit.c4cbbb05.Emscripten.clang" + "version": "0.4.23+commit.124ca40d.Emscripten.clang" }, "networks": { "4": { "events": {}, "links": {}, - "address": "0x8130ece7b262aa6e6a63a6d05b115247ba35a9ec", - "transactionHash": "0xdac98c9134a0828ac6bcf5a69d4d4154e890f197bdad53924cfdeaef1d29d363" + "address": "0xcf171a1fe7e24ac529ec0436cd51543469488a30", + "transactionHash": "0x52b1aad2d523bc57e2729516009b2dc46c58b5287c72ca9fa2faf949ad3ed32a" }, "42": { "events": {}, "links": {}, - "address": "0xa31ae2d8f41b3b5a5a748c88a3dcec0640582182", - "transactionHash": "0x9f7a4b1f8709150b7efd2c2a4b31708410f3f3ad0f938d67bcef3c52d1033672" + "address": "0x304f68cf0ca47b08d6bbf23c6f82d92bacf5378e", + "transactionHash": "0xa1edbc493e7f59db46fe904a775189a9fcdca9efabeea55db94f09fd64d37461" }, - "1525342778744": { + "1525950336085": { "events": {}, "links": {}, - "address": "0xced15a6a3e7f4f182667bf7dd3e0403b8229a97b", - "transactionHash": "0x8efec3bf60df6831ec5c77ceec27654c94b84005dfee1cb7dfae8d51c847ca93" - }, - "1525789101965": { - "events": {}, - "links": {}, - "address": "0x9cafa36304f4ce89fadc9894820e8a7684cabe02", - "transactionHash": "0xa757776d7b9eac962d1c4e89161441d296a8153da49efa8ee43d0202d894df5d" + "address": "0xb97a46b50b9e38d540e9701d3d4afe71a65c09df", + "transactionHash": "0x137111f15934455430bea53bd8a6721561285af6a431f174f090257877635ab6" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-08T14:18:44.026Z" + "updatedAt": "2018-05-10T11:07:04.707Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/Module.json b/safe-contracts/build/contracts/Module.json new file mode 100644 index 0000000000..1b56ca3c5a --- /dev/null +++ b/safe-contracts/build/contracts/Module.json @@ -0,0 +1,1142 @@ +{ + "contractName": "Module", + "abi": [ + { + "constant": true, + "inputs": [], + "name": "manager", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_masterCopy", + "type": "address" + } + ], + "name": "changeMasterCopy", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b50610202806100206000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063481c6a75146100515780637de7edef146100a8575b600080fd5b34801561005d57600080fd5b506100666100eb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156100b457600080fd5b506100e9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610111565b005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561016d57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561019357600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505600a165627a7a723058205587c1deb461488a054c78f3ba1b33c37dd5867b187b7fa9302f88a7d5f542d50029", + "deployedBytecode": "0x60806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063481c6a75146100515780637de7edef146100a8575b600080fd5b34801561005d57600080fd5b506100666100eb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156100b457600080fd5b506100e9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610111565b005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561016d57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561019357600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505600a165627a7a723058205587c1deb461488a054c78f3ba1b33c37dd5867b187b7fa9302f88a7d5f542d50029", + "sourceMap": "225:437:8:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;225:437:8;;;;;;;", + "deployedSourceMap": "225:437:8:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;262:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;262:28:8;;;;;;;;;;;;;;;;;;;;;;;;;;;626:208:6;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:208:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;262:28:8;;;;;;;;;;;;;:::o;626:208:6:-;359:7:8;;;;;;;;;;;337:30;;:10;:30;;;329:39;;;;;;;;791:1:6;776:11;:16;;;;768:25;;;;;;;;816:11;803:10;;:24;;;;;;;;;;;;;;;;;;626:208;:::o", + "source": "pragma solidity 0.4.23;\nimport \"./MasterCopy.sol\";\nimport \"./ModuleManager.sol\";\n\n\n/// @title Module - Base class for modules.\n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract Module is MasterCopy {\n\n ModuleManager public manager;\n\n modifier authorized() {\n require(msg.sender == address(manager));\n _;\n }\n\n function setManager()\n internal\n {\n // manager can only be 0 at initalization of contract.\n // Check ensures that setup function can only be called once.\n require(address(manager) == 0);\n manager = ModuleManager(msg.sender);\n }\n}\n", + "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", + "ast": { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", + "exportedSymbols": { + "Module": [ + 877 + ] + }, + "id": 878, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 838, + "literals": [ + "solidity", + "0.4", + ".23" + ], + "nodeType": "PragmaDirective", + "src": "0:23:8" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/MasterCopy.sol", + "file": "./MasterCopy.sol", + "id": 839, + "nodeType": "ImportDirective", + "scope": 878, + "sourceUnit": 780, + "src": "24:26:8", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ModuleManager.sol", + "file": "./ModuleManager.sol", + "id": 840, + "nodeType": "ImportDirective", + "scope": 878, + "sourceUnit": 1143, + "src": "51:29:8", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 841, + "name": "MasterCopy", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 779, + "src": "244:10:8", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MasterCopy_$779", + "typeString": "contract MasterCopy" + } + }, + "id": 842, + "nodeType": "InheritanceSpecifier", + "src": "244:10:8" + } + ], + "contractDependencies": [ + 779, + 1559 + ], + "contractKind": "contract", + "documentation": "@title Module - Base class for modules.\n @author Stefan George - \n @author Richard Meissner - ", + "fullyImplemented": true, + "id": 877, + "linearizedBaseContracts": [ + 877, + 779, + 1559 + ], + "name": "Module", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 844, + "name": "manager", + "nodeType": "VariableDeclaration", + "scope": 877, + "src": "262:28:8", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ModuleManager_$1142", + "typeString": "contract ModuleManager" + }, + "typeName": { + "contractScope": null, + "id": 843, + "name": "ModuleManager", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1142, + "src": "262:13:8", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ModuleManager_$1142", + "typeString": "contract ModuleManager" + } + }, + "value": null, + "visibility": "public" + }, + { + "body": { + "id": 856, + "nodeType": "Block", + "src": "319:67:8", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 852, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 847, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2465, + "src": "337:3:8", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 848, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "337:10:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 850, + "name": "manager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 844, + "src": "359:7:8", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ModuleManager_$1142", + "typeString": "contract ModuleManager" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ModuleManager_$1142", + "typeString": "contract ModuleManager" + } + ], + "id": 849, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "351:7:8", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 851, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "351:16:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "337:30:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 846, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "329:7:8", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 853, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "329:39:8", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 854, + "nodeType": "ExpressionStatement", + "src": "329:39:8" + }, + { + "id": 855, + "nodeType": "PlaceholderStatement", + "src": "378:1:8" + } + ] + }, + "documentation": null, + "id": 857, + "name": "authorized", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 845, + "nodeType": "ParameterList", + "parameters": [], + "src": "316:2:8" + }, + "src": "297:89:8", + "visibility": "internal" + }, + { + "body": { + "id": 875, + "nodeType": "Block", + "src": "435:225:8", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 865, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 862, + "name": "manager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 844, + "src": "594:7:8", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ModuleManager_$1142", + "typeString": "contract ModuleManager" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ModuleManager_$1142", + "typeString": "contract ModuleManager" + } + ], + "id": 861, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "586:7:8", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 863, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "586:16:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 864, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "606:1:8", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "586:21:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 860, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "578:7:8", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 866, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "578:30:8", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 867, + "nodeType": "ExpressionStatement", + "src": "578:30:8" + }, + { + "expression": { + "argumentTypes": null, + "id": 873, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 868, + "name": "manager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 844, + "src": "618:7:8", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ModuleManager_$1142", + "typeString": "contract ModuleManager" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 870, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2465, + "src": "642:3:8", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 871, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "642:10:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 869, + "name": "ModuleManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1142, + "src": "628:13:8", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ModuleManager_$1142_$", + "typeString": "type(contract ModuleManager)" + } + }, + "id": 872, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "628:25:8", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ModuleManager_$1142", + "typeString": "contract ModuleManager" + } + }, + "src": "618:35:8", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ModuleManager_$1142", + "typeString": "contract ModuleManager" + } + }, + "id": 874, + "nodeType": "ExpressionStatement", + "src": "618:35:8" + } + ] + }, + "documentation": null, + "id": 876, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "setManager", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 858, + "nodeType": "ParameterList", + "parameters": [], + "src": "411:2:8" + }, + "payable": false, + "returnParameters": { + "id": 859, + "nodeType": "ParameterList", + "parameters": [], + "src": "435:0:8" + }, + "scope": 877, + "src": "392:268:8", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 878, + "src": "225:437:8" + } + ], + "src": "0:663:8" + }, + "legacyAST": { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", + "exportedSymbols": { + "Module": [ + 877 + ] + }, + "id": 878, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 838, + "literals": [ + "solidity", + "0.4", + ".23" + ], + "nodeType": "PragmaDirective", + "src": "0:23:8" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/MasterCopy.sol", + "file": "./MasterCopy.sol", + "id": 839, + "nodeType": "ImportDirective", + "scope": 878, + "sourceUnit": 780, + "src": "24:26:8", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ModuleManager.sol", + "file": "./ModuleManager.sol", + "id": 840, + "nodeType": "ImportDirective", + "scope": 878, + "sourceUnit": 1143, + "src": "51:29:8", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 841, + "name": "MasterCopy", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 779, + "src": "244:10:8", + "typeDescriptions": { + "typeIdentifier": "t_contract$_MasterCopy_$779", + "typeString": "contract MasterCopy" + } + }, + "id": 842, + "nodeType": "InheritanceSpecifier", + "src": "244:10:8" + } + ], + "contractDependencies": [ + 779, + 1559 + ], + "contractKind": "contract", + "documentation": "@title Module - Base class for modules.\n @author Stefan George - \n @author Richard Meissner - ", + "fullyImplemented": true, + "id": 877, + "linearizedBaseContracts": [ + 877, + 779, + 1559 + ], + "name": "Module", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 844, + "name": "manager", + "nodeType": "VariableDeclaration", + "scope": 877, + "src": "262:28:8", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ModuleManager_$1142", + "typeString": "contract ModuleManager" + }, + "typeName": { + "contractScope": null, + "id": 843, + "name": "ModuleManager", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1142, + "src": "262:13:8", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ModuleManager_$1142", + "typeString": "contract ModuleManager" + } + }, + "value": null, + "visibility": "public" + }, + { + "body": { + "id": 856, + "nodeType": "Block", + "src": "319:67:8", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 852, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 847, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2465, + "src": "337:3:8", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 848, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "337:10:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 850, + "name": "manager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 844, + "src": "359:7:8", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ModuleManager_$1142", + "typeString": "contract ModuleManager" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ModuleManager_$1142", + "typeString": "contract ModuleManager" + } + ], + "id": 849, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "351:7:8", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 851, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "351:16:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "337:30:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 846, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "329:7:8", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 853, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "329:39:8", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 854, + "nodeType": "ExpressionStatement", + "src": "329:39:8" + }, + { + "id": 855, + "nodeType": "PlaceholderStatement", + "src": "378:1:8" + } + ] + }, + "documentation": null, + "id": 857, + "name": "authorized", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 845, + "nodeType": "ParameterList", + "parameters": [], + "src": "316:2:8" + }, + "src": "297:89:8", + "visibility": "internal" + }, + { + "body": { + "id": 875, + "nodeType": "Block", + "src": "435:225:8", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 865, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 862, + "name": "manager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 844, + "src": "594:7:8", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ModuleManager_$1142", + "typeString": "contract ModuleManager" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ModuleManager_$1142", + "typeString": "contract ModuleManager" + } + ], + "id": 861, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "586:7:8", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 863, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "586:16:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 864, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "606:1:8", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "586:21:8", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 860, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "578:7:8", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 866, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "578:30:8", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 867, + "nodeType": "ExpressionStatement", + "src": "578:30:8" + }, + { + "expression": { + "argumentTypes": null, + "id": 873, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 868, + "name": "manager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 844, + "src": "618:7:8", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ModuleManager_$1142", + "typeString": "contract ModuleManager" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 870, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2465, + "src": "642:3:8", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 871, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "642:10:8", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 869, + "name": "ModuleManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1142, + "src": "628:13:8", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ModuleManager_$1142_$", + "typeString": "type(contract ModuleManager)" + } + }, + "id": 872, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "628:25:8", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ModuleManager_$1142", + "typeString": "contract ModuleManager" + } + }, + "src": "618:35:8", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ModuleManager_$1142", + "typeString": "contract ModuleManager" + } + }, + "id": 874, + "nodeType": "ExpressionStatement", + "src": "618:35:8" + } + ] + }, + "documentation": null, + "id": 876, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "setManager", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 858, + "nodeType": "ParameterList", + "parameters": [], + "src": "411:2:8" + }, + "payable": false, + "returnParameters": { + "id": 859, + "nodeType": "ParameterList", + "parameters": [], + "src": "435:0:8" + }, + "scope": 877, + "src": "392:268:8", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 878, + "src": "225:437:8" + } + ], + "src": "0:663:8" + }, + "compiler": { + "name": "solc", + "version": "0.4.23+commit.124ca40d.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "2.0.0", + "updatedAt": "2018-05-10T10:43:07.898Z" +} \ No newline at end of file diff --git a/safe-contracts/build/contracts/ModuleManager.json b/safe-contracts/build/contracts/ModuleManager.json new file mode 100644 index 0000000000..04b6de49a5 --- /dev/null +++ b/safe-contracts/build/contracts/ModuleManager.json @@ -0,0 +1,7202 @@ +{ + "contractName": "ModuleManager", + "abi": [ + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "address" + } + ], + "name": "isModule", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "uint256" + } + ], + "name": "modules", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "NAME", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "VERSION", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "payable": true, + "stateMutability": "payable", + "type": "fallback" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "newContract", + "type": "address" + } + ], + "name": "ContractCreation", + "type": "event" + }, + { + "constant": false, + "inputs": [ + { + "name": "module", + "type": "address" + } + ], + "name": "addModule", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "moduleIndex", + "type": "uint256" + }, + { + "name": "module", + "type": "address" + } + ], + "name": "removeModule", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "to", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + }, + { + "name": "data", + "type": "bytes" + }, + { + "name": "operation", + "type": "uint8" + } + ], + "name": "executeModule", + "outputs": [ + { + "name": "success", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getModules", + "outputs": [ + { + "name": "", + "type": "address[]" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b50610ae8806100206000396000f30060806040526004361061008e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680631ed86f191461009057806342f6e389146100d35780637c6401d31461012e57806381b2248a1461017b578063a3f4df7e146101e8578063b021640a14610278578063b2494df314610330578063ffa1ad741461039c575b005b34801561009c57600080fd5b506100d1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061042c565b005b3480156100df57600080fd5b50610114600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506105a5565b604051808215151515815260200191505060405180910390f35b34801561013a57600080fd5b5061017960048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506105c5565b005b34801561018757600080fd5b506101a66004803603810190808035906020019092919050505061077d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101f457600080fd5b506101fd6107bb565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561023d578082015181840152602081019050610222565b50505050905090810190601f16801561026a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561028457600080fd5b50610316600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff1690602001909291905050506107f4565b604051808215151515815260200191505060405180910390f35b34801561033c57600080fd5b50610345610865565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561038857808201518184015260208101905061036d565b505050509050019250505060405180910390f35b3480156103a857600080fd5b506103b16108f3565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103f15780820151818401526020810190506103d6565b50505050905090810190601f16801561041e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561046657600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561048c57600080fd5b600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156104e557600080fd5b60008190806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60016020528060005260406000206000915054906101000a900460ff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156105ff57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008381548110151561062557fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561067257600080fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060006001600080549050038154811015156106e157fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660008381548110151561071b57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054809190600190036107789190610a6b565b505050565b60008181548110151561078c57fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6040805190810160405280600e81526020017f4d6f64756c65204d616e6167657200000000000000000000000000000000000081525081565b6000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561084e57600080fd5b61085b858585855a61092c565b9050949350505050565b606060008054806020026020016040519081016040528092919081815260200182805480156108e957602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161089f575b5050505050905090565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000806000600281111561093c57fe5b84600281111561094857fe5b14156109615761095a87878786610a29565b9150610a1f565b6001600281111561096e57fe5b84600281111561097a57fe5b14156109925761098b878685610a42565b9150610a1e565b61099b85610a59565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f09050919050565b815481835581811115610a9257818360005260206000209182019101610a919190610a97565b5b505050565b610ab991905b80821115610ab5576000816000905550600101610a9d565b5090565b905600a165627a7a723058206fc1cadae78bd8d092ed47582dfc37039722fb9d1a82eee418f0f5e3f5cbe86a0029", + "deployedBytecode": "0x60806040526004361061008e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680631ed86f191461009057806342f6e389146100d35780637c6401d31461012e57806381b2248a1461017b578063a3f4df7e146101e8578063b021640a14610278578063b2494df314610330578063ffa1ad741461039c575b005b34801561009c57600080fd5b506100d1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061042c565b005b3480156100df57600080fd5b50610114600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506105a5565b604051808215151515815260200191505060405180910390f35b34801561013a57600080fd5b5061017960048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506105c5565b005b34801561018757600080fd5b506101a66004803603810190808035906020019092919050505061077d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101f457600080fd5b506101fd6107bb565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561023d578082015181840152602081019050610222565b50505050905090810190601f16801561026a5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561028457600080fd5b50610316600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff1690602001909291905050506107f4565b604051808215151515815260200191505060405180910390f35b34801561033c57600080fd5b50610345610865565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561038857808201518184015260208101905061036d565b505050509050019250505060405180910390f35b3480156103a857600080fd5b506103b16108f3565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103f15780820151818401526020810190506103d6565b50505050905090810190601f16801561041e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561046657600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561048c57600080fd5b600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156104e557600080fd5b60008190806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505060018060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60016020528060005260406000206000915054906101000a900460ff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156105ff57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008381548110151561062557fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561067257600080fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060006001600080549050038154811015156106e157fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660008381548110151561071b57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054809190600190036107789190610a6b565b505050565b60008181548110151561078c57fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6040805190810160405280600e81526020017f4d6f64756c65204d616e6167657200000000000000000000000000000000000081525081565b6000600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561084e57600080fd5b61085b858585855a61092c565b9050949350505050565b606060008054806020026020016040519081016040528092919081815260200182805480156108e957602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161089f575b5050505050905090565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000806000600281111561093c57fe5b84600281111561094857fe5b14156109615761095a87878786610a29565b9150610a1f565b6001600281111561096e57fe5b84600281111561097a57fe5b14156109925761098b878685610a42565b9150610a1e565b61099b85610a59565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f09050919050565b815481835581811115610a9257818360005260206000209182019101610a919190610a97565b5b505050565b610ab991905b80821115610ab5576000816000905550600101610a9d565b5090565b905600a165627a7a723058206fc1cadae78bd8d092ed47582dfc37039722fb9d1a82eee418f0f5e3f5cbe86a0029", + "sourceMap": "303:4090:9:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;303:4090:9;;;;;;;", + "deployedSourceMap": "303:4090:9:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1166:300;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1166:300:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;599:41;;8:9:-1;5:2;;;30:1;27;20:12;5:2;599:41:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1722:336;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1722:336:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;500:23;;8:9:-1;5:2;;;30:1;27;20:12;5:2;500:23:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;401:46;;8:9:-1;5:2;;;30:1;27;20:12;5:2;401:46:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;401:46:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2394:361;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2394:361:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4279:112;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4279:112:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;4279:112:9;;;;;;;;;;;;;;;;;453:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;453:40:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;453:40:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1166:300;244:4:14;222:27;;:10;:27;;;214:36;;;;;;;;1317:1:9;1306:6;1298:20;;;;1290:29;;;;;;;;1379:8;:16;1388:6;1379:16;;;;;;;;;;;;;;;;;;;;;;;;;1378:17;1370:26;;;;;;;;1406:7;1419:6;1406:20;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;1406:20:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1455:4;1436:8;:16;1445:6;1436:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;1166:300;:::o;599:41::-;;;;;;;;;;;;;;;;;;;;;;:::o;1722:336::-;244:4:14;222:27;;:10;:27;;;214:36;;;;;;;;1924:6:9;1900:30;;:7;1908:11;1900:20;;;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;1892:39;;;;;;;;1960:5;1941:8;:16;1950:6;1941:16;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;1998:7;2023:1;2006:7;:14;;;;:18;1998:27;;;;;;;;;;;;;;;;;;;;;;;;;;;1975:7;1983:11;1975:20;;;;;;;;;;;;;;;;;;:50;;;;;;;;;;;;;;;;;;2035:7;:16;;;;;;;;;;;;:::i;:::-;;1722:336;;:::o;500:23::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;401:46::-;;;;;;;;;;;;;;;;;;;;:::o;2394:361::-;2514:12;2599:8;:20;2608:10;2599:20;;;;;;;;;;;;;;;;;;;;;;;;;2591:29;;;;;;;;2702:46;2710:2;2714:5;2721:4;2727:9;2738;2702:7;:46::i;:::-;2692:56;;2394:361;;;;;;:::o;4279:112::-;4346:8;4377:7;4370:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4279:112;:::o;453:40::-;;;;;;;;;;;;;;;;;;;;:::o;2761:548::-;2892:12;3163:19;2937;2924:32;;;;;;;;:9;:32;;;;;;;;;2920:383;;;2980:35;2992:2;2996:5;3003:4;3009:5;2980:11;:35::i;:::-;2970:45;;2920:383;;;3047:27;3034:40;;;;;;;;:9;:40;;;;;;;;;3030:273;;;3098:36;3118:2;3122:4;3128:5;3098:19;:36::i;:::-;3088:46;;3030:273;;;3185:19;3199:4;3185:13;:19::i;:::-;3163:41;;3243:1;3228:11;:16;;;;3218:26;;3263:29;3280:11;3263:29;;;;;;;;;;;;;;;;;;;;;;3030:273;2920:383;2761:548;;;;;;;;:::o;3315:309::-;3424:12;3606:1;3603;3596:4;3590:11;3583:4;3577;3573:15;3566:5;3562:2;3555:5;3550:58;3539:69;;3525:93;;;;;;:::o;3630:303::-;3732:12;3915:1;3912;3905:4;3899:11;3892:4;3886;3882:15;3878:2;3871:5;3858:59;3847:70;;3833:94;;;;;:::o;3939:261::-;4008:19;4178:4;4172:11;4165:4;4159;4155:15;4152:1;4145:39;4130:54;;4116:78;;;:::o;303:4090::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", + "source": "pragma solidity 0.4.23;\nimport \"./Module.sol\";\nimport \"./MasterCopy.sol\";\nimport \"./Enum.sol\";\n\n\n/// @title Module Manager - A contract that manages modules that can execute transactions via this contract\n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract ModuleManager is SelfAuthorized {\n\n event ContractCreation(address newContract);\n\n string public constant NAME = \"Module Manager\";\n string public constant VERSION = \"0.0.1\";\n\n Module[] public modules;\n\n // isModule mapping allows to check if a module was whitelisted.\n mapping (address => bool) public isModule;\n\n /// @dev Fallback function accepts Ether transactions.\n function ()\n external\n payable\n {\n\n }\n\n function setupModules(address to, bytes data)\n internal\n {\n if (to != 0)\n // Setup has to complete successfully or transaction fails.\n require(executeDelegateCall(to, data, gasleft()));\n }\n\n /// @dev Allows to add a module to the whitelist.\n /// This can only be done via a Safe transaction.\n /// @param module Module to be whitelisted.\n function addModule(Module module)\n public\n authorized\n {\n // Module address cannot be null.\n require(address(module) != 0);\n // Module cannot be added twice.\n require(!isModule[module]);\n modules.push(module);\n isModule[module] = true;\n }\n\n /// @dev Allows to remove a module from the whitelist.\n /// This can only be done via a Safe transaction.\n /// @param moduleIndex Array index position of module to be removed from whitelist.\n /// @param module Module to be removed.\n function removeModule(uint256 moduleIndex, Module module)\n public\n authorized\n {\n // Validate module address corresponds to module index.\n require(modules[moduleIndex] == module);\n isModule[module] = false;\n modules[moduleIndex] = modules[modules.length - 1];\n modules.length--;\n }\n\n /// @dev Allows a Module to execute a Safe transaction without any further confirmations.\n /// @param to Destination address of module transaction.\n /// @param value Ether value of module transaction.\n /// @param data Data payload of module transaction.\n /// @param operation Operation type of module transaction.\n function executeModule(address to, uint256 value, bytes data, Enum.Operation operation)\n public\n returns (bool success)\n {\n // Only whitelisted modules are allowed.\n require(isModule[msg.sender]);\n // Execute transaction without further confirmations.\n success = execute(to, value, data, operation, gasleft());\n }\n\n function execute(address to, uint256 value, bytes data, Enum.Operation operation, uint256 txGas)\n internal\n returns (bool success)\n {\n if (operation == Enum.Operation.Call)\n success = executeCall(to, value, data, txGas);\n else if (operation == Enum.Operation.DelegateCall)\n success = executeDelegateCall(to, data, txGas);\n else {\n address newContract = executeCreate(data);\n success = newContract != 0;\n emit ContractCreation(newContract);\n }\n }\n\n function executeCall(address to, uint256 value, bytes data, uint256 txGas)\n internal\n returns (bool success)\n {\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n success := call(txGas, to, value, add(data, 0x20), mload(data), 0, 0)\n }\n }\n\n function executeDelegateCall(address to, bytes data, uint256 txGas)\n internal\n returns (bool success)\n {\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n success := delegatecall(txGas, to, add(data, 0x20), mload(data), 0, 0)\n }\n }\n\n function executeCreate(bytes data)\n internal\n returns (address newContract)\n {\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n newContract := create(0, add(data, 0x20), mload(data))\n }\n }\n\n /// @dev Returns array of modules.\n /// @return Array of modules.\n function getModules()\n public\n view\n returns (Module[])\n {\n return modules;\n }\n}\n", + "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ModuleManager.sol", + "ast": { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ModuleManager.sol", + "exportedSymbols": { + "ModuleManager": [ + 1142 + ] + }, + "id": 1143, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 879, + "literals": [ + "solidity", + "0.4", + ".23" + ], + "nodeType": "PragmaDirective", + "src": "0:23:9" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", + "file": "./Module.sol", + "id": 880, + "nodeType": "ImportDirective", + "scope": 1143, + "sourceUnit": 878, + "src": "24:22:9", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/MasterCopy.sol", + "file": "./MasterCopy.sol", + "id": 881, + "nodeType": "ImportDirective", + "scope": 1143, + "sourceUnit": 780, + "src": "47:26:9", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Enum.sol", + "file": "./Enum.sol", + "id": 882, + "nodeType": "ImportDirective", + "scope": 1143, + "sourceUnit": 31, + "src": "74:20:9", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 883, + "name": "SelfAuthorized", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1559, + "src": "329:14:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SelfAuthorized_$1559", + "typeString": "contract SelfAuthorized" + } + }, + "id": 884, + "nodeType": "InheritanceSpecifier", + "src": "329:14:9" + } + ], + "contractDependencies": [ + 1559 + ], + "contractKind": "contract", + "documentation": "@title Module Manager - A contract that manages modules that can execute transactions via this contract\n @author Stefan George - \n @author Richard Meissner - ", + "fullyImplemented": true, + "id": 1142, + "linearizedBaseContracts": [ + 1142, + 1559 + ], + "name": "ModuleManager", + "nodeType": "ContractDefinition", + "nodes": [ + { + "anonymous": false, + "documentation": null, + "id": 888, + "name": "ContractCreation", + "nodeType": "EventDefinition", + "parameters": { + "id": 887, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 886, + "indexed": false, + "name": "newContract", + "nodeType": "VariableDeclaration", + "scope": 888, + "src": "374:19:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 885, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "374:7:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "373:21:9" + }, + "src": "351:44:9" + }, + { + "constant": true, + "id": 891, + "name": "NAME", + "nodeType": "VariableDeclaration", + "scope": 1142, + "src": "401:46:9", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory", + "typeString": "string" + }, + "typeName": { + "id": 889, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "401:6:9", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "4d6f64756c65204d616e61676572", + "id": 890, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "431:16:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_12aaa44a1bae367a1e1d9881f5d80283afded6373c2a1ca586db420944084efb", + "typeString": "literal_string \"Module Manager\"" + }, + "value": "Module Manager" + }, + "visibility": "public" + }, + { + "constant": true, + "id": 894, + "name": "VERSION", + "nodeType": "VariableDeclaration", + "scope": 1142, + "src": "453:40:9", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory", + "typeString": "string" + }, + "typeName": { + "id": 892, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "453:6:9", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "302e302e31", + "id": 893, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "486:7:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", + "typeString": "literal_string \"0.0.1\"" + }, + "value": "0.0.1" + }, + "visibility": "public" + }, + { + "constant": false, + "id": 897, + "name": "modules", + "nodeType": "VariableDeclaration", + "scope": 1142, + "src": "500:23:9", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_Module_$877_$dyn_storage", + "typeString": "contract Module[]" + }, + "typeName": { + "baseType": { + "contractScope": null, + "id": 895, + "name": "Module", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 877, + "src": "500:6:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$877", + "typeString": "contract Module" + } + }, + "id": 896, + "length": null, + "nodeType": "ArrayTypeName", + "src": "500:8:9", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_Module_$877_$dyn_storage_ptr", + "typeString": "contract Module[]" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 901, + "name": "isModule", + "nodeType": "VariableDeclaration", + "scope": 1142, + "src": "599:41:9", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "typeName": { + "id": 900, + "keyType": { + "id": 898, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "608:7:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "599:25:9", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "valueType": { + "id": 899, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "619:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "value": null, + "visibility": "public" + }, + { + "body": { + "id": 904, + "nodeType": "Block", + "src": "755:8:9", + "statements": [] + }, + "documentation": "@dev Fallback function accepts Ether transactions.", + "id": 905, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 902, + "nodeType": "ParameterList", + "parameters": [], + "src": "715:2:9" + }, + "payable": true, + "returnParameters": { + "id": 903, + "nodeType": "ParameterList", + "parameters": [], + "src": "755:0:9" + }, + "scope": 1142, + "src": "706:57:9", + "stateMutability": "payable", + "superFunction": null, + "visibility": "external" + }, + { + "body": { + "id": 925, + "nodeType": "Block", + "src": "836:163:9", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 914, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 912, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 907, + "src": "850:2:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 913, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "856:1:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "850:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 924, + "nodeType": "IfStatement", + "src": "846:146:9", + "trueBody": { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 917, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 907, + "src": "971:2:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 918, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 909, + "src": "975:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 919, + "name": "gasleft", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2458, + "src": "981:7:9", + "typeDescriptions": { + "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 920, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "981:9:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 916, + "name": "executeDelegateCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1123, + "src": "951:19:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,bytes memory,uint256) returns (bool)" + } + }, + "id": 921, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "951:40:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 915, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "943:7:9", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 922, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "943:49:9", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 923, + "nodeType": "ExpressionStatement", + "src": "943:49:9" + } + } + ] + }, + "documentation": null, + "id": 926, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "setupModules", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 910, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 907, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 926, + "src": "791:10:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 906, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "791:7:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 909, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 926, + "src": "803:10:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 908, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "803:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "790:24:9" + }, + "payable": false, + "returnParameters": { + "id": 911, + "nodeType": "ParameterList", + "parameters": [], + "src": "836:0:9" + }, + "scope": 1142, + "src": "769:230:9", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 960, + "nodeType": "Block", + "src": "1238:228:9", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 938, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 935, + "name": "module", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 928, + "src": "1306:6:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$877", + "typeString": "contract Module" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Module_$877", + "typeString": "contract Module" + } + ], + "id": 934, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1298:7:9", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 936, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1298:15:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 937, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1317:1:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1298:20:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 933, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "1290:7:9", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 939, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1290:29:9", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 940, + "nodeType": "ExpressionStatement", + "src": "1290:29:9" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 945, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "1378:17:9", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 942, + "name": "isModule", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 901, + "src": "1379:8:9", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 944, + "indexExpression": { + "argumentTypes": null, + "id": 943, + "name": "module", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 928, + "src": "1388:6:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$877", + "typeString": "contract Module" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1379:16:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 941, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "1370:7:9", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 946, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1370:26:9", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 947, + "nodeType": "ExpressionStatement", + "src": "1370:26:9" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 951, + "name": "module", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 928, + "src": "1419:6:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$877", + "typeString": "contract Module" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Module_$877", + "typeString": "contract Module" + } + ], + "expression": { + "argumentTypes": null, + "id": 948, + "name": "modules", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 897, + "src": "1406:7:9", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_Module_$877_$dyn_storage", + "typeString": "contract Module[] storage ref" + } + }, + "id": 950, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "push", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1406:12:9", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypush_nonpayable$_t_contract$_Module_$877_$returns$_t_uint256_$", + "typeString": "function (contract Module) returns (uint256)" + } + }, + "id": 952, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1406:20:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 953, + "nodeType": "ExpressionStatement", + "src": "1406:20:9" + }, + { + "expression": { + "argumentTypes": null, + "id": 958, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 954, + "name": "isModule", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 901, + "src": "1436:8:9", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 956, + "indexExpression": { + "argumentTypes": null, + "id": 955, + "name": "module", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 928, + "src": "1445:6:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$877", + "typeString": "contract Module" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1436:16:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 957, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1455:4:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "1436:23:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 959, + "nodeType": "ExpressionStatement", + "src": "1436:23:9" + } + ] + }, + "documentation": "@dev Allows to add a module to the whitelist.\n This can only be done via a Safe transaction.\n @param module Module to be whitelisted.", + "id": 961, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 931, + "modifierName": { + "argumentTypes": null, + "id": 930, + "name": "authorized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1558, + "src": "1223:10:9", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "1223:10:9" + } + ], + "name": "addModule", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 929, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 928, + "name": "module", + "nodeType": "VariableDeclaration", + "scope": 961, + "src": "1185:13:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$877", + "typeString": "contract Module" + }, + "typeName": { + "contractScope": null, + "id": 927, + "name": "Module", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 877, + "src": "1185:6:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$877", + "typeString": "contract Module" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1184:15:9" + }, + "payable": false, + "returnParameters": { + "id": 932, + "nodeType": "ParameterList", + "parameters": [], + "src": "1238:0:9" + }, + "scope": 1142, + "src": "1166:300:9", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1000, + "nodeType": "Block", + "src": "1818:240:9", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_contract$_Module_$877", + "typeString": "contract Module" + }, + "id": 975, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 971, + "name": "modules", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 897, + "src": "1900:7:9", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_Module_$877_$dyn_storage", + "typeString": "contract Module[] storage ref" + } + }, + "id": 973, + "indexExpression": { + "argumentTypes": null, + "id": 972, + "name": "moduleIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 963, + "src": "1908:11:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1900:20:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$877", + "typeString": "contract Module" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 974, + "name": "module", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 965, + "src": "1924:6:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$877", + "typeString": "contract Module" + } + }, + "src": "1900:30:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 970, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "1892:7:9", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 976, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1892:39:9", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 977, + "nodeType": "ExpressionStatement", + "src": "1892:39:9" + }, + { + "expression": { + "argumentTypes": null, + "id": 982, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 978, + "name": "isModule", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 901, + "src": "1941:8:9", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 980, + "indexExpression": { + "argumentTypes": null, + "id": 979, + "name": "module", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 965, + "src": "1950:6:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$877", + "typeString": "contract Module" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1941:16:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 981, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1960:5:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "1941:24:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 983, + "nodeType": "ExpressionStatement", + "src": "1941:24:9" + }, + { + "expression": { + "argumentTypes": null, + "id": 993, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 984, + "name": "modules", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 897, + "src": "1975:7:9", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_Module_$877_$dyn_storage", + "typeString": "contract Module[] storage ref" + } + }, + "id": 986, + "indexExpression": { + "argumentTypes": null, + "id": 985, + "name": "moduleIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 963, + "src": "1983:11:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1975:20:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$877", + "typeString": "contract Module" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 987, + "name": "modules", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 897, + "src": "1998:7:9", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_Module_$877_$dyn_storage", + "typeString": "contract Module[] storage ref" + } + }, + "id": 992, + "indexExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 991, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 988, + "name": "modules", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 897, + "src": "2006:7:9", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_Module_$877_$dyn_storage", + "typeString": "contract Module[] storage ref" + } + }, + "id": 989, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2006:14:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 990, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2023:1:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "2006:18:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1998:27:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$877", + "typeString": "contract Module" + } + }, + "src": "1975:50:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$877", + "typeString": "contract Module" + } + }, + "id": 994, + "nodeType": "ExpressionStatement", + "src": "1975:50:9" + }, + { + "expression": { + "argumentTypes": null, + "id": 998, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "--", + "prefix": false, + "src": "2035:16:9", + "subExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 995, + "name": "modules", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 897, + "src": "2035:7:9", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_Module_$877_$dyn_storage", + "typeString": "contract Module[] storage ref" + } + }, + "id": 997, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2035:14:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 999, + "nodeType": "ExpressionStatement", + "src": "2035:16:9" + } + ] + }, + "documentation": "@dev Allows to remove a module from the whitelist.\n This can only be done via a Safe transaction.\n @param moduleIndex Array index position of module to be removed from whitelist.\n @param module Module to be removed.", + "id": 1001, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 968, + "modifierName": { + "argumentTypes": null, + "id": 967, + "name": "authorized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1558, + "src": "1803:10:9", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "1803:10:9" + } + ], + "name": "removeModule", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 966, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 963, + "name": "moduleIndex", + "nodeType": "VariableDeclaration", + "scope": 1001, + "src": "1744:19:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 962, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1744:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 965, + "name": "module", + "nodeType": "VariableDeclaration", + "scope": 1001, + "src": "1765:13:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$877", + "typeString": "contract Module" + }, + "typeName": { + "contractScope": null, + "id": 964, + "name": "Module", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 877, + "src": "1765:6:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$877", + "typeString": "contract Module" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1743:36:9" + }, + "payable": false, + "returnParameters": { + "id": 969, + "nodeType": "ParameterList", + "parameters": [], + "src": "1818:0:9" + }, + "scope": 1142, + "src": "1722:336:9", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1032, + "nodeType": "Block", + "src": "2532:223:9", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1015, + "name": "isModule", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 901, + "src": "2599:8:9", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1018, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1016, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2465, + "src": "2608:3:9", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1017, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2608:10:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2599:20:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1014, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "2591:7:9", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1019, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2591:29:9", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1020, + "nodeType": "ExpressionStatement", + "src": "2591:29:9" + }, + { + "expression": { + "argumentTypes": null, + "id": 1030, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1021, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1012, + "src": "2692:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1023, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1003, + "src": "2710:2:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1024, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1005, + "src": "2714:5:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1025, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1007, + "src": "2721:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 1026, + "name": "operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1009, + "src": "2727:9:9", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1027, + "name": "gasleft", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2458, + "src": "2738:7:9", + "typeDescriptions": { + "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 1028, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2738:9:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1022, + "name": "execute", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1095, + "src": "2702:7:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) returns (bool)" + } + }, + "id": 1029, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2702:46:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "2692:56:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1031, + "nodeType": "ExpressionStatement", + "src": "2692:56:9" + } + ] + }, + "documentation": "@dev Allows a Module to execute a Safe transaction without any further confirmations.\n @param to Destination address of module transaction.\n @param value Ether value of module transaction.\n @param data Data payload of module transaction.\n @param operation Operation type of module transaction.", + "id": 1033, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "executeModule", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1010, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1003, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 1033, + "src": "2417:10:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1002, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2417:7:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1005, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 1033, + "src": "2429:13:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1004, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2429:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1007, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 1033, + "src": "2444:10:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1006, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2444:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1009, + "name": "operation", + "nodeType": "VariableDeclaration", + "scope": 1033, + "src": "2456:24:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + }, + "typeName": { + "contractScope": null, + "id": 1008, + "name": "Enum.Operation", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 29, + "src": "2456:14:9", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2416:65:9" + }, + "payable": false, + "returnParameters": { + "id": 1013, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1012, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 1033, + "src": "2514:12:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1011, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2514:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2513:14:9" + }, + "scope": 1142, + "src": "2394:361:9", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1094, + "nodeType": "Block", + "src": "2910:399:9", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + }, + "id": 1052, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1048, + "name": "operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1041, + "src": "2924:9:9", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1049, + "name": "Enum", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 30, + "src": "2937:4:9", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Enum_$30_$", + "typeString": "type(contract Enum)" + } + }, + "id": 1050, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "Operation", + "nodeType": "MemberAccess", + "referencedDeclaration": 29, + "src": "2937:14:9", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_Operation_$29_$", + "typeString": "type(enum Enum.Operation)" + } + }, + "id": 1051, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Call", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2937:19:9", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + }, + "src": "2924:32:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + }, + "id": 1066, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1062, + "name": "operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1041, + "src": "3034:9:9", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1063, + "name": "Enum", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 30, + "src": "3047:4:9", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Enum_$30_$", + "typeString": "type(contract Enum)" + } + }, + "id": 1064, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "Operation", + "nodeType": "MemberAccess", + "referencedDeclaration": 29, + "src": "3047:14:9", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_Operation_$29_$", + "typeString": "type(enum Enum.Operation)" + } + }, + "id": 1065, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "DelegateCall", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3047:27:9", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + }, + "src": "3034:40:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 1091, + "nodeType": "Block", + "src": "3149:154:9", + "statements": [ + { + "assignments": [ + 1076 + ], + "declarations": [ + { + "constant": false, + "id": 1076, + "name": "newContract", + "nodeType": "VariableDeclaration", + "scope": 1095, + "src": "3163:19:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1075, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3163:7:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1080, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1078, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1039, + "src": "3199:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 1077, + "name": "executeCreate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1132, + "src": "3185:13:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$_t_address_$", + "typeString": "function (bytes memory) returns (address)" + } + }, + "id": 1079, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3185:19:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3163:41:9" + }, + { + "expression": { + "argumentTypes": null, + "id": 1085, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1081, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1046, + "src": "3218:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1084, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1082, + "name": "newContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1076, + "src": "3228:11:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1083, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3243:1:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3228:16:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3218:26:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1086, + "nodeType": "ExpressionStatement", + "src": "3218:26:9" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1088, + "name": "newContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1076, + "src": "3280:11:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1087, + "name": "ContractCreation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 888, + "src": "3263:16:9", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 1089, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3263:29:9", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1090, + "nodeType": "EmitStatement", + "src": "3258:34:9" + } + ] + }, + "id": 1092, + "nodeType": "IfStatement", + "src": "3030:273:9", + "trueBody": { + "expression": { + "argumentTypes": null, + "id": 1073, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1067, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1046, + "src": "3088:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1069, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1035, + "src": "3118:2:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1070, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1039, + "src": "3122:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 1071, + "name": "txGas", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1043, + "src": "3128:5:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1068, + "name": "executeDelegateCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1123, + "src": "3098:19:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,bytes memory,uint256) returns (bool)" + } + }, + "id": 1072, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3098:36:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3088:46:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1074, + "nodeType": "ExpressionStatement", + "src": "3088:46:9" + } + }, + "id": 1093, + "nodeType": "IfStatement", + "src": "2920:383:9", + "trueBody": { + "expression": { + "argumentTypes": null, + "id": 1060, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1053, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1046, + "src": "2970:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1055, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1035, + "src": "2992:2:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1056, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1037, + "src": "2996:5:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1057, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1039, + "src": "3003:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 1058, + "name": "txGas", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1043, + "src": "3009:5:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1054, + "name": "executeCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1110, + "src": "2980:11:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256,bytes memory,uint256) returns (bool)" + } + }, + "id": 1059, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2980:35:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "2970:45:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1061, + "nodeType": "ExpressionStatement", + "src": "2970:45:9" + } + } + ] + }, + "documentation": null, + "id": 1095, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "execute", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1044, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1035, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 1095, + "src": "2778:10:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1034, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2778:7:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1037, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 1095, + "src": "2790:13:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1036, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2790:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1039, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 1095, + "src": "2805:10:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1038, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2805:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1041, + "name": "operation", + "nodeType": "VariableDeclaration", + "scope": 1095, + "src": "2817:24:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + }, + "typeName": { + "contractScope": null, + "id": 1040, + "name": "Enum.Operation", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 29, + "src": "2817:14:9", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1043, + "name": "txGas", + "nodeType": "VariableDeclaration", + "scope": 1095, + "src": "2843:13:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1042, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2843:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2777:80:9" + }, + "payable": false, + "returnParameters": { + "id": 1047, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1046, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 1095, + "src": "2892:12:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1045, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2892:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2891:14:9" + }, + "scope": 1142, + "src": "2761:548:9", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 1109, + "nodeType": "Block", + "src": "3442:182:9", + "statements": [ + { + "externalReferences": [ + { + "data": { + "declaration": 1101, + "isOffset": false, + "isSlot": false, + "src": "3596:4:9", + "valueSize": 1 + } + }, + { + "data": { + "declaration": 1101, + "isOffset": false, + "isSlot": false, + "src": "3577:4:9", + "valueSize": 1 + } + }, + { + "success": { + "declaration": 1106, + "isOffset": false, + "isSlot": false, + "src": "3539:7:9", + "valueSize": 1 + } + }, + { + "txGas": { + "declaration": 1103, + "isOffset": false, + "isSlot": false, + "src": "3555:5:9", + "valueSize": 1 + } + }, + { + "to": { + "declaration": 1097, + "isOffset": false, + "isSlot": false, + "src": "3562:2:9", + "valueSize": 1 + } + }, + { + "value": { + "declaration": 1099, + "isOffset": false, + "isSlot": false, + "src": "3566:5:9", + "valueSize": 1 + } + } + ], + "id": 1108, + "nodeType": "InlineAssembly", + "operations": "{\n success := call(txGas, to, value, add(data, 0x20), mload(data), 0, 0)\n}", + "src": "3516:108:9" + } + ] + }, + "documentation": null, + "id": 1110, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "executeCall", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1104, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1097, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 1110, + "src": "3336:10:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1096, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3336:7:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1099, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 1110, + "src": "3348:13:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1098, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3348:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1101, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 1110, + "src": "3363:10:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1100, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3363:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1103, + "name": "txGas", + "nodeType": "VariableDeclaration", + "scope": 1110, + "src": "3375:13:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1102, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3375:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3335:54:9" + }, + "payable": false, + "returnParameters": { + "id": 1107, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1106, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 1110, + "src": "3424:12:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1105, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3424:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3423:14:9" + }, + "scope": 1142, + "src": "3315:309:9", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 1122, + "nodeType": "Block", + "src": "3750:183:9", + "statements": [ + { + "externalReferences": [ + { + "data": { + "declaration": 1114, + "isOffset": false, + "isSlot": false, + "src": "3905:4:9", + "valueSize": 1 + } + }, + { + "data": { + "declaration": 1114, + "isOffset": false, + "isSlot": false, + "src": "3886:4:9", + "valueSize": 1 + } + }, + { + "success": { + "declaration": 1119, + "isOffset": false, + "isSlot": false, + "src": "3847:7:9", + "valueSize": 1 + } + }, + { + "txGas": { + "declaration": 1116, + "isOffset": false, + "isSlot": false, + "src": "3871:5:9", + "valueSize": 1 + } + }, + { + "to": { + "declaration": 1112, + "isOffset": false, + "isSlot": false, + "src": "3878:2:9", + "valueSize": 1 + } + } + ], + "id": 1121, + "nodeType": "InlineAssembly", + "operations": "{\n success := delegatecall(txGas, to, add(data, 0x20), mload(data), 0, 0)\n}", + "src": "3824:109:9" + } + ] + }, + "documentation": null, + "id": 1123, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "executeDelegateCall", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1117, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1112, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 1123, + "src": "3659:10:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1111, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3659:7:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1114, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 1123, + "src": "3671:10:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1113, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3671:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1116, + "name": "txGas", + "nodeType": "VariableDeclaration", + "scope": 1123, + "src": "3683:13:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1115, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3683:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3658:39:9" + }, + "payable": false, + "returnParameters": { + "id": 1120, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1119, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 1123, + "src": "3732:12:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1118, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3732:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3731:14:9" + }, + "scope": 1142, + "src": "3630:303:9", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 1131, + "nodeType": "Block", + "src": "4033:167:9", + "statements": [ + { + "externalReferences": [ + { + "newContract": { + "declaration": 1128, + "isOffset": false, + "isSlot": false, + "src": "4130:11:9", + "valueSize": 1 + } + }, + { + "data": { + "declaration": 1125, + "isOffset": false, + "isSlot": false, + "src": "4159:4:9", + "valueSize": 1 + } + }, + { + "data": { + "declaration": 1125, + "isOffset": false, + "isSlot": false, + "src": "4178:4:9", + "valueSize": 1 + } + } + ], + "id": 1130, + "nodeType": "InlineAssembly", + "operations": "{\n newContract := create(0, add(data, 0x20), mload(data))\n}", + "src": "4107:93:9" + } + ] + }, + "documentation": null, + "id": 1132, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "executeCreate", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1126, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1125, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 1132, + "src": "3962:10:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1124, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3962:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3961:12:9" + }, + "payable": false, + "returnParameters": { + "id": 1129, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1128, + "name": "newContract", + "nodeType": "VariableDeclaration", + "scope": 1132, + "src": "4008:19:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1127, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4008:7:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4007:21:9" + }, + "scope": 1142, + "src": "3939:261:9", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 1140, + "nodeType": "Block", + "src": "4360:31:9", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1138, + "name": "modules", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 897, + "src": "4377:7:9", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_Module_$877_$dyn_storage", + "typeString": "contract Module[] storage ref" + } + }, + "functionReturnParameters": 1137, + "id": 1139, + "nodeType": "Return", + "src": "4370:14:9" + } + ] + }, + "documentation": "@dev Returns array of modules.\n @return Array of modules.", + "id": 1141, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "getModules", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1133, + "nodeType": "ParameterList", + "parameters": [], + "src": "4298:2:9" + }, + "payable": false, + "returnParameters": { + "id": 1137, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1136, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1141, + "src": "4346:8:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_Module_$877_$dyn_memory_ptr", + "typeString": "contract Module[]" + }, + "typeName": { + "baseType": { + "contractScope": null, + "id": 1134, + "name": "Module", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 877, + "src": "4346:6:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$877", + "typeString": "contract Module" + } + }, + "id": 1135, + "length": null, + "nodeType": "ArrayTypeName", + "src": "4346:8:9", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_Module_$877_$dyn_storage_ptr", + "typeString": "contract Module[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4345:10:9" + }, + "scope": 1142, + "src": "4279:112:9", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 1143, + "src": "303:4090:9" + } + ], + "src": "0:4394:9" + }, + "legacyAST": { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ModuleManager.sol", + "exportedSymbols": { + "ModuleManager": [ + 1142 + ] + }, + "id": 1143, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 879, + "literals": [ + "solidity", + "0.4", + ".23" + ], + "nodeType": "PragmaDirective", + "src": "0:23:9" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", + "file": "./Module.sol", + "id": 880, + "nodeType": "ImportDirective", + "scope": 1143, + "sourceUnit": 878, + "src": "24:22:9", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/MasterCopy.sol", + "file": "./MasterCopy.sol", + "id": 881, + "nodeType": "ImportDirective", + "scope": 1143, + "sourceUnit": 780, + "src": "47:26:9", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Enum.sol", + "file": "./Enum.sol", + "id": 882, + "nodeType": "ImportDirective", + "scope": 1143, + "sourceUnit": 31, + "src": "74:20:9", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 883, + "name": "SelfAuthorized", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1559, + "src": "329:14:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SelfAuthorized_$1559", + "typeString": "contract SelfAuthorized" + } + }, + "id": 884, + "nodeType": "InheritanceSpecifier", + "src": "329:14:9" + } + ], + "contractDependencies": [ + 1559 + ], + "contractKind": "contract", + "documentation": "@title Module Manager - A contract that manages modules that can execute transactions via this contract\n @author Stefan George - \n @author Richard Meissner - ", + "fullyImplemented": true, + "id": 1142, + "linearizedBaseContracts": [ + 1142, + 1559 + ], + "name": "ModuleManager", + "nodeType": "ContractDefinition", + "nodes": [ + { + "anonymous": false, + "documentation": null, + "id": 888, + "name": "ContractCreation", + "nodeType": "EventDefinition", + "parameters": { + "id": 887, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 886, + "indexed": false, + "name": "newContract", + "nodeType": "VariableDeclaration", + "scope": 888, + "src": "374:19:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 885, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "374:7:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "373:21:9" + }, + "src": "351:44:9" + }, + { + "constant": true, + "id": 891, + "name": "NAME", + "nodeType": "VariableDeclaration", + "scope": 1142, + "src": "401:46:9", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory", + "typeString": "string" + }, + "typeName": { + "id": 889, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "401:6:9", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "4d6f64756c65204d616e61676572", + "id": 890, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "431:16:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_12aaa44a1bae367a1e1d9881f5d80283afded6373c2a1ca586db420944084efb", + "typeString": "literal_string \"Module Manager\"" + }, + "value": "Module Manager" + }, + "visibility": "public" + }, + { + "constant": true, + "id": 894, + "name": "VERSION", + "nodeType": "VariableDeclaration", + "scope": 1142, + "src": "453:40:9", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory", + "typeString": "string" + }, + "typeName": { + "id": 892, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "453:6:9", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "302e302e31", + "id": 893, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "486:7:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", + "typeString": "literal_string \"0.0.1\"" + }, + "value": "0.0.1" + }, + "visibility": "public" + }, + { + "constant": false, + "id": 897, + "name": "modules", + "nodeType": "VariableDeclaration", + "scope": 1142, + "src": "500:23:9", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_Module_$877_$dyn_storage", + "typeString": "contract Module[]" + }, + "typeName": { + "baseType": { + "contractScope": null, + "id": 895, + "name": "Module", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 877, + "src": "500:6:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$877", + "typeString": "contract Module" + } + }, + "id": 896, + "length": null, + "nodeType": "ArrayTypeName", + "src": "500:8:9", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_Module_$877_$dyn_storage_ptr", + "typeString": "contract Module[]" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 901, + "name": "isModule", + "nodeType": "VariableDeclaration", + "scope": 1142, + "src": "599:41:9", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "typeName": { + "id": 900, + "keyType": { + "id": 898, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "608:7:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "599:25:9", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "valueType": { + "id": 899, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "619:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "value": null, + "visibility": "public" + }, + { + "body": { + "id": 904, + "nodeType": "Block", + "src": "755:8:9", + "statements": [] + }, + "documentation": "@dev Fallback function accepts Ether transactions.", + "id": 905, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 902, + "nodeType": "ParameterList", + "parameters": [], + "src": "715:2:9" + }, + "payable": true, + "returnParameters": { + "id": 903, + "nodeType": "ParameterList", + "parameters": [], + "src": "755:0:9" + }, + "scope": 1142, + "src": "706:57:9", + "stateMutability": "payable", + "superFunction": null, + "visibility": "external" + }, + { + "body": { + "id": 925, + "nodeType": "Block", + "src": "836:163:9", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 914, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 912, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 907, + "src": "850:2:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 913, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "856:1:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "850:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 924, + "nodeType": "IfStatement", + "src": "846:146:9", + "trueBody": { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 917, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 907, + "src": "971:2:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 918, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 909, + "src": "975:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 919, + "name": "gasleft", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2458, + "src": "981:7:9", + "typeDescriptions": { + "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 920, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "981:9:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 916, + "name": "executeDelegateCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1123, + "src": "951:19:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,bytes memory,uint256) returns (bool)" + } + }, + "id": 921, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "951:40:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 915, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "943:7:9", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 922, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "943:49:9", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 923, + "nodeType": "ExpressionStatement", + "src": "943:49:9" + } + } + ] + }, + "documentation": null, + "id": 926, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "setupModules", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 910, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 907, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 926, + "src": "791:10:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 906, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "791:7:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 909, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 926, + "src": "803:10:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 908, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "803:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "790:24:9" + }, + "payable": false, + "returnParameters": { + "id": 911, + "nodeType": "ParameterList", + "parameters": [], + "src": "836:0:9" + }, + "scope": 1142, + "src": "769:230:9", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 960, + "nodeType": "Block", + "src": "1238:228:9", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 938, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 935, + "name": "module", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 928, + "src": "1306:6:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$877", + "typeString": "contract Module" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Module_$877", + "typeString": "contract Module" + } + ], + "id": 934, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1298:7:9", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 936, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1298:15:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 937, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1317:1:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1298:20:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 933, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "1290:7:9", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 939, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1290:29:9", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 940, + "nodeType": "ExpressionStatement", + "src": "1290:29:9" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 945, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "1378:17:9", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 942, + "name": "isModule", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 901, + "src": "1379:8:9", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 944, + "indexExpression": { + "argumentTypes": null, + "id": 943, + "name": "module", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 928, + "src": "1388:6:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$877", + "typeString": "contract Module" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1379:16:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 941, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "1370:7:9", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 946, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1370:26:9", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 947, + "nodeType": "ExpressionStatement", + "src": "1370:26:9" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 951, + "name": "module", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 928, + "src": "1419:6:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$877", + "typeString": "contract Module" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Module_$877", + "typeString": "contract Module" + } + ], + "expression": { + "argumentTypes": null, + "id": 948, + "name": "modules", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 897, + "src": "1406:7:9", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_Module_$877_$dyn_storage", + "typeString": "contract Module[] storage ref" + } + }, + "id": 950, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "push", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1406:12:9", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypush_nonpayable$_t_contract$_Module_$877_$returns$_t_uint256_$", + "typeString": "function (contract Module) returns (uint256)" + } + }, + "id": 952, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1406:20:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 953, + "nodeType": "ExpressionStatement", + "src": "1406:20:9" + }, + { + "expression": { + "argumentTypes": null, + "id": 958, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 954, + "name": "isModule", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 901, + "src": "1436:8:9", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 956, + "indexExpression": { + "argumentTypes": null, + "id": 955, + "name": "module", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 928, + "src": "1445:6:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$877", + "typeString": "contract Module" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1436:16:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 957, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1455:4:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "1436:23:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 959, + "nodeType": "ExpressionStatement", + "src": "1436:23:9" + } + ] + }, + "documentation": "@dev Allows to add a module to the whitelist.\n This can only be done via a Safe transaction.\n @param module Module to be whitelisted.", + "id": 961, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 931, + "modifierName": { + "argumentTypes": null, + "id": 930, + "name": "authorized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1558, + "src": "1223:10:9", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "1223:10:9" + } + ], + "name": "addModule", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 929, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 928, + "name": "module", + "nodeType": "VariableDeclaration", + "scope": 961, + "src": "1185:13:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$877", + "typeString": "contract Module" + }, + "typeName": { + "contractScope": null, + "id": 927, + "name": "Module", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 877, + "src": "1185:6:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$877", + "typeString": "contract Module" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1184:15:9" + }, + "payable": false, + "returnParameters": { + "id": 932, + "nodeType": "ParameterList", + "parameters": [], + "src": "1238:0:9" + }, + "scope": 1142, + "src": "1166:300:9", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1000, + "nodeType": "Block", + "src": "1818:240:9", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_contract$_Module_$877", + "typeString": "contract Module" + }, + "id": 975, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 971, + "name": "modules", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 897, + "src": "1900:7:9", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_Module_$877_$dyn_storage", + "typeString": "contract Module[] storage ref" + } + }, + "id": 973, + "indexExpression": { + "argumentTypes": null, + "id": 972, + "name": "moduleIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 963, + "src": "1908:11:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1900:20:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$877", + "typeString": "contract Module" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 974, + "name": "module", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 965, + "src": "1924:6:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$877", + "typeString": "contract Module" + } + }, + "src": "1900:30:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 970, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "1892:7:9", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 976, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1892:39:9", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 977, + "nodeType": "ExpressionStatement", + "src": "1892:39:9" + }, + { + "expression": { + "argumentTypes": null, + "id": 982, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 978, + "name": "isModule", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 901, + "src": "1941:8:9", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 980, + "indexExpression": { + "argumentTypes": null, + "id": 979, + "name": "module", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 965, + "src": "1950:6:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$877", + "typeString": "contract Module" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1941:16:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 981, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1960:5:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "1941:24:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 983, + "nodeType": "ExpressionStatement", + "src": "1941:24:9" + }, + { + "expression": { + "argumentTypes": null, + "id": 993, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 984, + "name": "modules", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 897, + "src": "1975:7:9", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_Module_$877_$dyn_storage", + "typeString": "contract Module[] storage ref" + } + }, + "id": 986, + "indexExpression": { + "argumentTypes": null, + "id": 985, + "name": "moduleIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 963, + "src": "1983:11:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1975:20:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$877", + "typeString": "contract Module" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 987, + "name": "modules", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 897, + "src": "1998:7:9", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_Module_$877_$dyn_storage", + "typeString": "contract Module[] storage ref" + } + }, + "id": 992, + "indexExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 991, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 988, + "name": "modules", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 897, + "src": "2006:7:9", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_Module_$877_$dyn_storage", + "typeString": "contract Module[] storage ref" + } + }, + "id": 989, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2006:14:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 990, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2023:1:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "2006:18:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1998:27:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$877", + "typeString": "contract Module" + } + }, + "src": "1975:50:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$877", + "typeString": "contract Module" + } + }, + "id": 994, + "nodeType": "ExpressionStatement", + "src": "1975:50:9" + }, + { + "expression": { + "argumentTypes": null, + "id": 998, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "--", + "prefix": false, + "src": "2035:16:9", + "subExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 995, + "name": "modules", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 897, + "src": "2035:7:9", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_Module_$877_$dyn_storage", + "typeString": "contract Module[] storage ref" + } + }, + "id": 997, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2035:14:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 999, + "nodeType": "ExpressionStatement", + "src": "2035:16:9" + } + ] + }, + "documentation": "@dev Allows to remove a module from the whitelist.\n This can only be done via a Safe transaction.\n @param moduleIndex Array index position of module to be removed from whitelist.\n @param module Module to be removed.", + "id": 1001, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 968, + "modifierName": { + "argumentTypes": null, + "id": 967, + "name": "authorized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1558, + "src": "1803:10:9", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "1803:10:9" + } + ], + "name": "removeModule", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 966, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 963, + "name": "moduleIndex", + "nodeType": "VariableDeclaration", + "scope": 1001, + "src": "1744:19:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 962, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1744:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 965, + "name": "module", + "nodeType": "VariableDeclaration", + "scope": 1001, + "src": "1765:13:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$877", + "typeString": "contract Module" + }, + "typeName": { + "contractScope": null, + "id": 964, + "name": "Module", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 877, + "src": "1765:6:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$877", + "typeString": "contract Module" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1743:36:9" + }, + "payable": false, + "returnParameters": { + "id": 969, + "nodeType": "ParameterList", + "parameters": [], + "src": "1818:0:9" + }, + "scope": 1142, + "src": "1722:336:9", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1032, + "nodeType": "Block", + "src": "2532:223:9", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1015, + "name": "isModule", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 901, + "src": "2599:8:9", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1018, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1016, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2465, + "src": "2608:3:9", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1017, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2608:10:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2599:20:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1014, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "2591:7:9", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1019, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2591:29:9", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1020, + "nodeType": "ExpressionStatement", + "src": "2591:29:9" + }, + { + "expression": { + "argumentTypes": null, + "id": 1030, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1021, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1012, + "src": "2692:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1023, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1003, + "src": "2710:2:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1024, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1005, + "src": "2714:5:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1025, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1007, + "src": "2721:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 1026, + "name": "operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1009, + "src": "2727:9:9", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + }, + { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1027, + "name": "gasleft", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2458, + "src": "2738:7:9", + "typeDescriptions": { + "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 1028, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2738:9:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1022, + "name": "execute", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1095, + "src": "2702:7:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) returns (bool)" + } + }, + "id": 1029, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2702:46:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "2692:56:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1031, + "nodeType": "ExpressionStatement", + "src": "2692:56:9" + } + ] + }, + "documentation": "@dev Allows a Module to execute a Safe transaction without any further confirmations.\n @param to Destination address of module transaction.\n @param value Ether value of module transaction.\n @param data Data payload of module transaction.\n @param operation Operation type of module transaction.", + "id": 1033, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "executeModule", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1010, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1003, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 1033, + "src": "2417:10:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1002, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2417:7:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1005, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 1033, + "src": "2429:13:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1004, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2429:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1007, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 1033, + "src": "2444:10:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1006, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2444:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1009, + "name": "operation", + "nodeType": "VariableDeclaration", + "scope": 1033, + "src": "2456:24:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + }, + "typeName": { + "contractScope": null, + "id": 1008, + "name": "Enum.Operation", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 29, + "src": "2456:14:9", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2416:65:9" + }, + "payable": false, + "returnParameters": { + "id": 1013, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1012, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 1033, + "src": "2514:12:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1011, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2514:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2513:14:9" + }, + "scope": 1142, + "src": "2394:361:9", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1094, + "nodeType": "Block", + "src": "2910:399:9", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + }, + "id": 1052, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1048, + "name": "operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1041, + "src": "2924:9:9", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1049, + "name": "Enum", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 30, + "src": "2937:4:9", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Enum_$30_$", + "typeString": "type(contract Enum)" + } + }, + "id": 1050, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "Operation", + "nodeType": "MemberAccess", + "referencedDeclaration": 29, + "src": "2937:14:9", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_Operation_$29_$", + "typeString": "type(enum Enum.Operation)" + } + }, + "id": 1051, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Call", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2937:19:9", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + }, + "src": "2924:32:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + }, + "id": 1066, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1062, + "name": "operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1041, + "src": "3034:9:9", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1063, + "name": "Enum", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 30, + "src": "3047:4:9", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Enum_$30_$", + "typeString": "type(contract Enum)" + } + }, + "id": 1064, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "Operation", + "nodeType": "MemberAccess", + "referencedDeclaration": 29, + "src": "3047:14:9", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_Operation_$29_$", + "typeString": "type(enum Enum.Operation)" + } + }, + "id": 1065, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "DelegateCall", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3047:27:9", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + }, + "src": "3034:40:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 1091, + "nodeType": "Block", + "src": "3149:154:9", + "statements": [ + { + "assignments": [ + 1076 + ], + "declarations": [ + { + "constant": false, + "id": 1076, + "name": "newContract", + "nodeType": "VariableDeclaration", + "scope": 1095, + "src": "3163:19:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1075, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3163:7:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1080, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1078, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1039, + "src": "3199:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 1077, + "name": "executeCreate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1132, + "src": "3185:13:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$_t_address_$", + "typeString": "function (bytes memory) returns (address)" + } + }, + "id": 1079, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3185:19:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "3163:41:9" + }, + { + "expression": { + "argumentTypes": null, + "id": 1085, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1081, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1046, + "src": "3218:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1084, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1082, + "name": "newContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1076, + "src": "3228:11:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1083, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3243:1:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3228:16:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3218:26:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1086, + "nodeType": "ExpressionStatement", + "src": "3218:26:9" + }, + { + "eventCall": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1088, + "name": "newContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1076, + "src": "3280:11:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1087, + "name": "ContractCreation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 888, + "src": "3263:16:9", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 1089, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3263:29:9", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1090, + "nodeType": "EmitStatement", + "src": "3258:34:9" + } + ] + }, + "id": 1092, + "nodeType": "IfStatement", + "src": "3030:273:9", + "trueBody": { + "expression": { + "argumentTypes": null, + "id": 1073, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1067, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1046, + "src": "3088:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1069, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1035, + "src": "3118:2:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1070, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1039, + "src": "3122:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 1071, + "name": "txGas", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1043, + "src": "3128:5:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1068, + "name": "executeDelegateCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1123, + "src": "3098:19:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,bytes memory,uint256) returns (bool)" + } + }, + "id": 1072, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3098:36:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "3088:46:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1074, + "nodeType": "ExpressionStatement", + "src": "3088:46:9" + } + }, + "id": 1093, + "nodeType": "IfStatement", + "src": "2920:383:9", + "trueBody": { + "expression": { + "argumentTypes": null, + "id": 1060, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1053, + "name": "success", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1046, + "src": "2970:7:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1055, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1035, + "src": "2992:2:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1056, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1037, + "src": "2996:5:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 1057, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1039, + "src": "3003:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 1058, + "name": "txGas", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1043, + "src": "3009:5:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1054, + "name": "executeCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1110, + "src": "2980:11:9", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256,bytes memory,uint256) returns (bool)" + } + }, + "id": 1059, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2980:35:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "2970:45:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1061, + "nodeType": "ExpressionStatement", + "src": "2970:45:9" + } + } + ] + }, + "documentation": null, + "id": 1095, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "execute", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1044, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1035, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 1095, + "src": "2778:10:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1034, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2778:7:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1037, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 1095, + "src": "2790:13:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1036, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2790:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1039, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 1095, + "src": "2805:10:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1038, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2805:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1041, + "name": "operation", + "nodeType": "VariableDeclaration", + "scope": 1095, + "src": "2817:24:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + }, + "typeName": { + "contractScope": null, + "id": 1040, + "name": "Enum.Operation", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 29, + "src": "2817:14:9", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1043, + "name": "txGas", + "nodeType": "VariableDeclaration", + "scope": 1095, + "src": "2843:13:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1042, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2843:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2777:80:9" + }, + "payable": false, + "returnParameters": { + "id": 1047, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1046, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 1095, + "src": "2892:12:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1045, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "2892:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2891:14:9" + }, + "scope": 1142, + "src": "2761:548:9", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 1109, + "nodeType": "Block", + "src": "3442:182:9", + "statements": [ + { + "externalReferences": [ + { + "data": { + "declaration": 1101, + "isOffset": false, + "isSlot": false, + "src": "3596:4:9", + "valueSize": 1 + } + }, + { + "data": { + "declaration": 1101, + "isOffset": false, + "isSlot": false, + "src": "3577:4:9", + "valueSize": 1 + } + }, + { + "success": { + "declaration": 1106, + "isOffset": false, + "isSlot": false, + "src": "3539:7:9", + "valueSize": 1 + } + }, + { + "txGas": { + "declaration": 1103, + "isOffset": false, + "isSlot": false, + "src": "3555:5:9", + "valueSize": 1 + } + }, + { + "to": { + "declaration": 1097, + "isOffset": false, + "isSlot": false, + "src": "3562:2:9", + "valueSize": 1 + } + }, + { + "value": { + "declaration": 1099, + "isOffset": false, + "isSlot": false, + "src": "3566:5:9", + "valueSize": 1 + } + } + ], + "id": 1108, + "nodeType": "InlineAssembly", + "operations": "{\n success := call(txGas, to, value, add(data, 0x20), mload(data), 0, 0)\n}", + "src": "3516:108:9" + } + ] + }, + "documentation": null, + "id": 1110, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "executeCall", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1104, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1097, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 1110, + "src": "3336:10:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1096, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3336:7:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1099, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 1110, + "src": "3348:13:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1098, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3348:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1101, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 1110, + "src": "3363:10:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1100, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3363:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1103, + "name": "txGas", + "nodeType": "VariableDeclaration", + "scope": 1110, + "src": "3375:13:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1102, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3375:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3335:54:9" + }, + "payable": false, + "returnParameters": { + "id": 1107, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1106, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 1110, + "src": "3424:12:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1105, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3424:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3423:14:9" + }, + "scope": 1142, + "src": "3315:309:9", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 1122, + "nodeType": "Block", + "src": "3750:183:9", + "statements": [ + { + "externalReferences": [ + { + "data": { + "declaration": 1114, + "isOffset": false, + "isSlot": false, + "src": "3905:4:9", + "valueSize": 1 + } + }, + { + "data": { + "declaration": 1114, + "isOffset": false, + "isSlot": false, + "src": "3886:4:9", + "valueSize": 1 + } + }, + { + "success": { + "declaration": 1119, + "isOffset": false, + "isSlot": false, + "src": "3847:7:9", + "valueSize": 1 + } + }, + { + "txGas": { + "declaration": 1116, + "isOffset": false, + "isSlot": false, + "src": "3871:5:9", + "valueSize": 1 + } + }, + { + "to": { + "declaration": 1112, + "isOffset": false, + "isSlot": false, + "src": "3878:2:9", + "valueSize": 1 + } + } + ], + "id": 1121, + "nodeType": "InlineAssembly", + "operations": "{\n success := delegatecall(txGas, to, add(data, 0x20), mload(data), 0, 0)\n}", + "src": "3824:109:9" + } + ] + }, + "documentation": null, + "id": 1123, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "executeDelegateCall", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1117, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1112, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 1123, + "src": "3659:10:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1111, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3659:7:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1114, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 1123, + "src": "3671:10:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1113, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3671:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1116, + "name": "txGas", + "nodeType": "VariableDeclaration", + "scope": 1123, + "src": "3683:13:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1115, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3683:7:9", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3658:39:9" + }, + "payable": false, + "returnParameters": { + "id": 1120, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1119, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 1123, + "src": "3732:12:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1118, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3732:4:9", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3731:14:9" + }, + "scope": 1142, + "src": "3630:303:9", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 1131, + "nodeType": "Block", + "src": "4033:167:9", + "statements": [ + { + "externalReferences": [ + { + "newContract": { + "declaration": 1128, + "isOffset": false, + "isSlot": false, + "src": "4130:11:9", + "valueSize": 1 + } + }, + { + "data": { + "declaration": 1125, + "isOffset": false, + "isSlot": false, + "src": "4159:4:9", + "valueSize": 1 + } + }, + { + "data": { + "declaration": 1125, + "isOffset": false, + "isSlot": false, + "src": "4178:4:9", + "valueSize": 1 + } + } + ], + "id": 1130, + "nodeType": "InlineAssembly", + "operations": "{\n newContract := create(0, add(data, 0x20), mload(data))\n}", + "src": "4107:93:9" + } + ] + }, + "documentation": null, + "id": 1132, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "executeCreate", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1126, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1125, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 1132, + "src": "3962:10:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1124, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3962:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3961:12:9" + }, + "payable": false, + "returnParameters": { + "id": 1129, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1128, + "name": "newContract", + "nodeType": "VariableDeclaration", + "scope": 1132, + "src": "4008:19:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1127, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4008:7:9", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4007:21:9" + }, + "scope": 1142, + "src": "3939:261:9", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 1140, + "nodeType": "Block", + "src": "4360:31:9", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1138, + "name": "modules", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 897, + "src": "4377:7:9", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_Module_$877_$dyn_storage", + "typeString": "contract Module[] storage ref" + } + }, + "functionReturnParameters": 1137, + "id": 1139, + "nodeType": "Return", + "src": "4370:14:9" + } + ] + }, + "documentation": "@dev Returns array of modules.\n @return Array of modules.", + "id": 1141, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "getModules", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1133, + "nodeType": "ParameterList", + "parameters": [], + "src": "4298:2:9" + }, + "payable": false, + "returnParameters": { + "id": 1137, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1136, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1141, + "src": "4346:8:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_Module_$877_$dyn_memory_ptr", + "typeString": "contract Module[]" + }, + "typeName": { + "baseType": { + "contractScope": null, + "id": 1134, + "name": "Module", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 877, + "src": "4346:6:9", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$877", + "typeString": "contract Module" + } + }, + "id": 1135, + "length": null, + "nodeType": "ArrayTypeName", + "src": "4346:8:9", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_Module_$877_$dyn_storage_ptr", + "typeString": "contract Module[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4345:10:9" + }, + "scope": 1142, + "src": "4279:112:9", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 1143, + "src": "303:4090:9" + } + ], + "src": "0:4394:9" + }, + "compiler": { + "name": "solc", + "version": "0.4.23+commit.124ca40d.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "2.0.0", + "updatedAt": "2018-05-10T10:43:07.898Z" +} \ No newline at end of file diff --git a/safe-contracts/build/contracts/MultiSend.json b/safe-contracts/build/contracts/MultiSend.json index e7c98caa04..73a181b042 100644 --- a/safe-contracts/build/contracts/MultiSend.json +++ b/safe-contracts/build/contracts/MultiSend.json @@ -16,31 +16,31 @@ "type": "function" } ], - "bytecode": "0x6060604052341561000f57600080fd5b6101278061001e6000396000f300606060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680638d80ff0a146044575b600080fd5b3415604e57600080fd5b609c600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050609e565b005b805160205b8181101560f65780830151602082018401516060830185015160808401860160008083838688600019f16000811460d85760dd565b600080fd5b50602080602084010402608001850194505050505060a3565b5050505600a165627a7a723058207fe7130b5215c2b7fb5987a9e0c21a2085684d930840ac75e4e7c62730c93cfc0029", - "deployedBytecode": "0x606060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680638d80ff0a146044575b600080fd5b3415604e57600080fd5b609c600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050609e565b005b805160205b8181101560f65780830151602082018401516060830185015160808401860160008083838688600019f16000811460d85760dd565b600080fd5b50602080602084010402608001850194505050505060a3565b5050505600a165627a7a723058207fe7130b5215c2b7fb5987a9e0c21a2085684d930840ac75e4e7c62730c93cfc0029", - "sourceMap": "253:1012:9:-;;;;;;;;;;;;;;;;;", - "deployedSourceMap": "253:1012:9:-;;;;;;;;;;;;;;;;;;;;;;;;593:670;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;704:12;698:5;739:4;756:491;770:6;767:1;764:2;756:491;;;834:1;820:12;816:3;810:5;898:4;895:1;891:3;877:12;873:3;867:5;971:4;968:1;964:3;950:12;946:3;940:5;1032:4;1029:1;1025:3;1011:12;1007:3;1107:1;1104;1092:10;1086:4;1079:5;1075:2;1071:1;1067:3;1062:4;1131:1;1126:23;;;;1055:94;;1126:23;1145:1;1142;1135:6;1055:94;;1226:4;1219;1212;1200:10;1196:3;1192;1188;1182:4;1178:3;1175:1;1171:3;1166:67;;782:465;;;;756:491;;;670:587;;;:::o", - "source": "pragma solidity 0.4.19;\n\n\n/// @title Multi Send - Allows to batch multiple transactions into one.\n/// @author Nick Dodson - \n/// @author Gonçalo Sá - \n/// @author Stefan George - \ncontract MultiSend {\n\n /// @dev Sends multiple transactions and reverts all if one fails.\n /// @param transactions Encoded transactions. Each transaction is encoded as\n /// a tuple(address,uint256,bytes). The bytes of all\n /// encoded transactions are concatenated to form the input.\n function multiSend(bytes transactions)\n public\n {\n assembly {\n let length := mload(transactions)\n let i := 0x20\n for { } lt(i, length) { } {\n let to := mload(add(transactions, i))\n let value := mload(add(transactions, add(i, 0x20)))\n let dataLength := mload(add(transactions, add(i, 0x60)))\n let data := add(transactions, add(i, 0x80))\n switch call(not(0), to, value, data, dataLength, 0, 0)\n case 0 { revert(0, 0) }\n i := add(i, add(0x80, mul(div(add(dataLength, 0x20), 0x20), 0x20)))\n }\n }\n }\n}\n", + "bytecode": "0x608060405234801561001057600080fd5b5061013a806100206000396000f300608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680638d80ff0a14610046575b600080fd5b34801561005257600080fd5b506100ad600480360381019080803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506100af565b005b805160205b8181101561010957808301516020820184015160608301850151608084018601600080838386885af1600081146100ea576100ef565b600080fd5b5060208060208401040260800185019450505050506100b4565b5050505600a165627a7a7230582085c54bc0284c5004bee6b973aad924e63fe6628856cdf34c1eedabe70b1787fb0029", + "deployedBytecode": "0x608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680638d80ff0a14610046575b600080fd5b34801561005257600080fd5b506100ad600480360381019080803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506100af565b005b805160205b8181101561010957808301516020820184015160608301850151608084018601600080838386885af1600081146100ea576100ef565b600080fd5b5060208060208401040260800185019450505050506100b4565b5050505600a165627a7a7230582085c54bc0284c5004bee6b973aad924e63fe6628856cdf34c1eedabe70b1787fb0029", + "sourceMap": "253:1073:16:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;253:1073:16;;;;;;;", + "deployedSourceMap": "253:1073:16:-;;;;;;;;;;;;;;;;;;;;;;;;593:731;;8:9:-1;5:2;;;30:1;27;20:12;5:2;593:731:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;768:12;762:19;803:4;820:488;834:6;831:1;828:13;820:488;;;898:1;884:12;880:20;874:27;962:4;959:1;955:12;941;937:31;931:38;1035:4;1032:1;1028:12;1014;1010:31;1004:38;1096:4;1093:1;1089:12;1075;1071:31;1168:1;1165;1153:10;1147:4;1140:5;1136:2;1131:3;1126:44;1192:1;1187:23;;;;1119:91;;1187:23;1206:1;1203;1196:12;1119:91;;1287:4;1280;1273;1261:10;1257:21;1253:32;1249:43;1243:4;1239:54;1236:1;1232:62;1227:67;;846:462;;;;820:488;;;734:584;;;:::o", + "source": "pragma solidity 0.4.23;\n\n\n/// @title Multi Send - Allows to batch multiple transactions into one.\n/// @author Nick Dodson - \n/// @author Gonçalo Sá - \n/// @author Stefan George - \ncontract MultiSend {\n\n /// @dev Sends multiple transactions and reverts all if one fails.\n /// @param transactions Encoded transactions. Each transaction is encoded as\n /// a tuple(address,uint256,bytes). The bytes of all\n /// encoded transactions are concatenated to form the input.\n function multiSend(bytes transactions)\n public\n {\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n let length := mload(transactions)\n let i := 0x20\n for { } lt(i, length) { } {\n let to := mload(add(transactions, i))\n let value := mload(add(transactions, add(i, 0x20)))\n let dataLength := mload(add(transactions, add(i, 0x60)))\n let data := add(transactions, add(i, 0x80))\n switch call(gas, to, value, data, dataLength, 0, 0)\n case 0 { revert(0, 0) }\n i := add(i, add(0x80, mul(div(add(dataLength, 0x20), 0x20), 0x20)))\n }\n }\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/libraries/MultiSend.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/libraries/MultiSend.sol", "exportedSymbols": { "MultiSend": [ - 2016 + 1614 ] }, - "id": 2017, + "id": 1615, "nodeType": "SourceUnit", "nodes": [ { - "id": 2008, + "id": 1606, "literals": [ "solidity", "0.4", - ".19" + ".23" ], "nodeType": "PragmaDirective", - "src": "0:23:9" + "src": "0:23:16" }, { "baseContracts": [], @@ -48,75 +48,76 @@ "contractKind": "contract", "documentation": "@title Multi Send - Allows to batch multiple transactions into one.\n @author Nick Dodson - \n @author Gonçalo Sá - \n @author Stefan George - ", "fullyImplemented": true, - "id": 2016, + "id": 1614, "linearizedBaseContracts": [ - 2016 + 1614 ], "name": "MultiSend", "nodeType": "ContractDefinition", "nodes": [ { "body": { - "id": 2014, + "id": 1612, "nodeType": "Block", - "src": "651:612:9", + "src": "651:673:16", "statements": [ { "externalReferences": [ { "transactions": { - "declaration": 2010, + "declaration": 1608, "isOffset": false, "isSlot": false, - "src": "704:12:9", + "src": "768:12:16", "valueSize": 1 } }, { "transactions": { - "declaration": 2010, + "declaration": 1608, "isOffset": false, "isSlot": false, - "src": "820:12:9", + "src": "884:12:16", "valueSize": 1 } }, { "transactions": { - "declaration": 2010, + "declaration": 1608, "isOffset": false, "isSlot": false, - "src": "877:12:9", + "src": "941:12:16", "valueSize": 1 } }, { "transactions": { - "declaration": 2010, + "declaration": 1608, "isOffset": false, "isSlot": false, - "src": "950:12:9", + "src": "1014:12:16", "valueSize": 1 } }, { "transactions": { - "declaration": 2010, + "declaration": 1608, "isOffset": false, "isSlot": false, - "src": "1011:12:9", + "src": "1075:12:16", "valueSize": 1 } } ], - "id": 2013, + "id": 1611, "nodeType": "InlineAssembly", - "operations": "{\n let length := mload(transactions)\n let i := 0x20\n for {\n }\n lt(i, length)\n {\n }\n {\n let to := mload(add(transactions, i))\n let value := mload(add(transactions, add(i, 0x20)))\n let dataLength := mload(add(transactions, add(i, 0x60)))\n let data := add(transactions, add(i, 0x80))\n switch call(not(0), to, value, data, dataLength, 0, 0)\n case 0 {\n revert(0, 0)\n }\n i := add(i, add(0x80, mul(div(add(dataLength, 0x20), 0x20), 0x20)))\n }\n}", - "src": "661:602:9" + "operations": "{\n let length := mload(transactions)\n let i := 0x20\n for {\n }\n lt(i, length)\n {\n }\n {\n let to := mload(add(transactions, i))\n let value := mload(add(transactions, add(i, 0x20)))\n let dataLength := mload(add(transactions, add(i, 0x60)))\n let data := add(transactions, add(i, 0x80))\n switch call(gas(), to, value, data, dataLength, 0, 0)\n case 0 {\n revert(0, 0)\n }\n i := add(i, add(0x80, mul(div(add(dataLength, 0x20), 0x20), 0x20)))\n }\n}", + "src": "725:599:16" } ] }, - "id": 2015, + "documentation": "@dev Sends multiple transactions and reverts all if one fails.\n @param transactions Encoded transactions. Each transaction is encoded as\n a tuple(address,uint256,bytes). The bytes of all\n encoded transactions are concatenated to form the input.", + "id": 1613, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -124,77 +125,77 @@ "name": "multiSend", "nodeType": "FunctionDefinition", "parameters": { - "id": 2011, + "id": 1609, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2010, + "id": 1608, "name": "transactions", "nodeType": "VariableDeclaration", - "scope": 2015, - "src": "612:18:9", + "scope": 1613, + "src": "612:18:16", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" + "typeString": "bytes" }, "typeName": { - "id": 2009, + "id": 1607, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "612:5:9", + "src": "612:5:16", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" + "typeString": "bytes" } }, "value": null, "visibility": "internal" } ], - "src": "611:20:9" + "src": "611:20:16" }, "payable": false, "returnParameters": { - "id": 2012, + "id": 1610, "nodeType": "ParameterList", "parameters": [], - "src": "651:0:9" + "src": "651:0:16" }, - "scope": 2016, - "src": "593:670:9", + "scope": 1614, + "src": "593:731:16", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 2017, - "src": "253:1012:9" + "scope": 1615, + "src": "253:1073:16" } ], - "src": "0:1266:9" + "src": "0:1327:16" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/libraries/MultiSend.sol", "exportedSymbols": { "MultiSend": [ - 2016 + 1614 ] }, - "id": 2017, + "id": 1615, "nodeType": "SourceUnit", "nodes": [ { - "id": 2008, + "id": 1606, "literals": [ "solidity", "0.4", - ".19" + ".23" ], "nodeType": "PragmaDirective", - "src": "0:23:9" + "src": "0:23:16" }, { "baseContracts": [], @@ -202,75 +203,76 @@ "contractKind": "contract", "documentation": "@title Multi Send - Allows to batch multiple transactions into one.\n @author Nick Dodson - \n @author Gonçalo Sá - \n @author Stefan George - ", "fullyImplemented": true, - "id": 2016, + "id": 1614, "linearizedBaseContracts": [ - 2016 + 1614 ], "name": "MultiSend", "nodeType": "ContractDefinition", "nodes": [ { "body": { - "id": 2014, + "id": 1612, "nodeType": "Block", - "src": "651:612:9", + "src": "651:673:16", "statements": [ { "externalReferences": [ { "transactions": { - "declaration": 2010, + "declaration": 1608, "isOffset": false, "isSlot": false, - "src": "704:12:9", + "src": "768:12:16", "valueSize": 1 } }, { "transactions": { - "declaration": 2010, + "declaration": 1608, "isOffset": false, "isSlot": false, - "src": "820:12:9", + "src": "884:12:16", "valueSize": 1 } }, { "transactions": { - "declaration": 2010, + "declaration": 1608, "isOffset": false, "isSlot": false, - "src": "877:12:9", + "src": "941:12:16", "valueSize": 1 } }, { "transactions": { - "declaration": 2010, + "declaration": 1608, "isOffset": false, "isSlot": false, - "src": "950:12:9", + "src": "1014:12:16", "valueSize": 1 } }, { "transactions": { - "declaration": 2010, + "declaration": 1608, "isOffset": false, "isSlot": false, - "src": "1011:12:9", + "src": "1075:12:16", "valueSize": 1 } } ], - "id": 2013, + "id": 1611, "nodeType": "InlineAssembly", - "operations": "{\n let length := mload(transactions)\n let i := 0x20\n for {\n }\n lt(i, length)\n {\n }\n {\n let to := mload(add(transactions, i))\n let value := mload(add(transactions, add(i, 0x20)))\n let dataLength := mload(add(transactions, add(i, 0x60)))\n let data := add(transactions, add(i, 0x80))\n switch call(not(0), to, value, data, dataLength, 0, 0)\n case 0 {\n revert(0, 0)\n }\n i := add(i, add(0x80, mul(div(add(dataLength, 0x20), 0x20), 0x20)))\n }\n}", - "src": "661:602:9" + "operations": "{\n let length := mload(transactions)\n let i := 0x20\n for {\n }\n lt(i, length)\n {\n }\n {\n let to := mload(add(transactions, i))\n let value := mload(add(transactions, add(i, 0x20)))\n let dataLength := mload(add(transactions, add(i, 0x60)))\n let data := add(transactions, add(i, 0x80))\n switch call(gas(), to, value, data, dataLength, 0, 0)\n case 0 {\n revert(0, 0)\n }\n i := add(i, add(0x80, mul(div(add(dataLength, 0x20), 0x20), 0x20)))\n }\n}", + "src": "725:599:16" } ] }, - "id": 2015, + "documentation": "@dev Sends multiple transactions and reverts all if one fails.\n @param transactions Encoded transactions. Each transaction is encoded as\n a tuple(address,uint256,bytes). The bytes of all\n encoded transactions are concatenated to form the input.", + "id": 1613, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -278,88 +280,76 @@ "name": "multiSend", "nodeType": "FunctionDefinition", "parameters": { - "id": 2011, + "id": 1609, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2010, + "id": 1608, "name": "transactions", "nodeType": "VariableDeclaration", - "scope": 2015, - "src": "612:18:9", + "scope": 1613, + "src": "612:18:16", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" + "typeString": "bytes" }, "typeName": { - "id": 2009, + "id": 1607, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "612:5:9", + "src": "612:5:16", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" + "typeString": "bytes" } }, "value": null, "visibility": "internal" } ], - "src": "611:20:9" + "src": "611:20:16" }, "payable": false, "returnParameters": { - "id": 2012, + "id": 1610, "nodeType": "ParameterList", "parameters": [], - "src": "651:0:9" + "src": "651:0:16" }, - "scope": 2016, - "src": "593:670:9", + "scope": 1614, + "src": "593:731:16", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 2017, - "src": "253:1012:9" + "scope": 1615, + "src": "253:1073:16" } ], - "src": "0:1266:9" + "src": "0:1327:16" }, "compiler": { "name": "solc", - "version": "0.4.19+commit.c4cbbb05.Emscripten.clang" + "version": "0.4.23+commit.124ca40d.Emscripten.clang" }, "networks": { "4": { "events": {}, "links": {}, - "address": "0xb42ea77ed35188c3d9f478ede1883c7fc3889bf4", - "transactionHash": "0x49884b2c77b96bd8fab92acb25cb6c1d31322f8d8a5285168b629d02ff0942df" + "address": "0x0bcf053aec288e75a338486b27d1340b11a5a818", + "transactionHash": "0x670d0ace2ffca0389ecff0dd2fb54fee15d237e652e7e67a06586187d00e3f2a" }, - "42": { + "1525950336085": { "events": {}, "links": {}, - "address": "0xa64866921fa040d96080a66327b57d3659aa3cb2", - "transactionHash": "0x0976055636f5f47833e456b68bbd3bd73497c17c1b51072795ee7ca472c7a1ee" - }, - "1525342778744": { - "events": {}, - "links": {}, - "address": "0x1751f194e16ab8cc857b37bbbca9b796b182691b", - "transactionHash": "0xf406441274f4472d909145b4145733064edd26a8ef0c5cd1b00d19a481cec4fd" - }, - "1525789101965": { - "events": {}, - "links": {}, - "address": "0x1e2dee6ce961ee356fd4382bf3e34e9b7f3876ce", - "transactionHash": "0x03595ae31f80fbcd00b5c0e5c51593841fe78041c8750420decf364f0f3d724c" + "address": "0xa4604b882b2c10ce381c4e61ad9ac72ab32f350f", + "transactionHash": "0xf4586ae05ae02801de1759128e43658bb0439e622a5ba84ad6bb4b652d641f4f" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-08T14:18:44.025Z" + "updatedAt": "2018-05-10T11:07:04.706Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/MultiSendStruct.json b/safe-contracts/build/contracts/MultiSendStruct.json index 58264cc55e..d70c025192 100644 --- a/safe-contracts/build/contracts/MultiSendStruct.json +++ b/safe-contracts/build/contracts/MultiSendStruct.json @@ -30,41 +30,41 @@ "type": "function" } ], - "bytecode": "0x6060604052341561000f57600080fd5b6104338061001e6000396000f300606060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632f6fda4a14610046575b600080fd5b341561005157600080fd5b61006660046100619036906102d1565b610068565b005b60006100726100e8565b600091505b82518210156100c957828281518110151561008e57fe5b9060200190602002015190506100b18160000151826020015183604001516100ce565b15156100bc57600080fd5b8180600101925050610077565b505050565b60008060008351602085018688600019f190509392505050565b606060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001610120610126565b81525090565b602060405190810160405280600081525090565b600061014682356103c0565b905092915050565b600082601f8301126000811461016357610168565b600080fd5b50813561017c6101778261035a565b610324565b9150818183526020840193506020810190508360005b838110156101c257813586016101a88882610233565b845260208401935060208301925050600181019050610192565b5050505092915050565b600082601f830112600081146101e1576101e6565b600080fd5b5081356101fa6101f58261038b565b610324565b915080825260208301602083018583830111600181146102195761021e565b600080fd5b5061022a8382846103ea565b50505092915050565b6000606082840312600181146102485761024d565b600080fd5b506102586060610324565b905060006102688482850161013a565b600083015250602061027c848285016102bd565b602083015250604082013567ffffffffffffffff81116001811461029f576102a4565b600080fd5b506102b1848285016101cc565b60408301525092915050565b60006102c982356103e0565b905092915050565b6000602082840312600181146102e6576102eb565b600080fd5b50600082013567ffffffffffffffff8111600181146103095761030e565b600080fd5b5061031b8482850161014e565b91505092915050565b6000604051905081810181811067ffffffffffffffff8211176001811461034a5761034f565b600080fd5b508060405250919050565b600067ffffffffffffffff82116001811461037457610379565b600080fd5b50602082029050602081019050919050565b600067ffffffffffffffff8211600181146103a5576103aa565b600080fd5b50601f19601f8301169050602081019050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b828183376000838301525050505600a265627a7a72305820484c17df168e13c63e6cab3910c3609158f4993315f595b990932cc0a3f27c726c6578706572696d656e74616cf50037", - "deployedBytecode": "0x606060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632f6fda4a14610046575b600080fd5b341561005157600080fd5b61006660046100619036906102d1565b610068565b005b60006100726100e8565b600091505b82518210156100c957828281518110151561008e57fe5b9060200190602002015190506100b18160000151826020015183604001516100ce565b15156100bc57600080fd5b8180600101925050610077565b505050565b60008060008351602085018688600019f190509392505050565b606060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001610120610126565b81525090565b602060405190810160405280600081525090565b600061014682356103c0565b905092915050565b600082601f8301126000811461016357610168565b600080fd5b50813561017c6101778261035a565b610324565b9150818183526020840193506020810190508360005b838110156101c257813586016101a88882610233565b845260208401935060208301925050600181019050610192565b5050505092915050565b600082601f830112600081146101e1576101e6565b600080fd5b5081356101fa6101f58261038b565b610324565b915080825260208301602083018583830111600181146102195761021e565b600080fd5b5061022a8382846103ea565b50505092915050565b6000606082840312600181146102485761024d565b600080fd5b506102586060610324565b905060006102688482850161013a565b600083015250602061027c848285016102bd565b602083015250604082013567ffffffffffffffff81116001811461029f576102a4565b600080fd5b506102b1848285016101cc565b60408301525092915050565b60006102c982356103e0565b905092915050565b6000602082840312600181146102e6576102eb565b600080fd5b50600082013567ffffffffffffffff8111600181146103095761030e565b600080fd5b5061031b8482850161014e565b91505092915050565b6000604051905081810181811067ffffffffffffffff8211176001811461034a5761034f565b600080fd5b508060405250919050565b600067ffffffffffffffff82116001811461037457610379565b600080fd5b50602082029050602081019050919050565b600067ffffffffffffffff8211600181146103a5576103aa565b600080fd5b50601f19601f8301169050602081019050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b828183376000838301525050505600a265627a7a72305820484c17df168e13c63e6cab3910c3609158f4993315f595b990932cc0a3f27c726c6578706572696d656e74616cf50037", - "sourceMap": "339:772:10:-;;;;;;;;;;;;;;;;;", - "deployedSourceMap": "339:772:10:-;;;;;;;;;;;;;;;;;;;;;;;;581:291;;;;;;;;;;;;;;;;;;;;;;;661:9;720:30;;:::i;:::-;673:1;661:13;;657:209;680:12;:19;676:1;:23;657:209;;;753:12;766:1;753:15;;;;;;;;;;;;;;;;;;720:48;;790:64;802:11;:14;;;818:11;:17;;;837:11;:16;;;790:11;:64::i;:::-;782:73;;;;;;;;701:3;;;;;;;657:209;;;581:291;;;:::o;878:231::-;972:12;1091:1;1088;1081:4;1075:5;1068:4;1062;1058:3;1051:5;1047:2;1043:1;1039:3;1034:4;1023:70;;1009:94;;;;;:::o;339:772::-;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;5:118:-1:-;;72:46;110:6;97:12;72:46;;;63:55;;57:66;;;;;175:756;;314:3;307:4;299:6;295:3;291;324:1;319:23;;;;284:58;;319:23;338:1;335;328:6;284:58;;375:6;362:12;397:105;412:89;494:6;412:89;;;397:105;;;388:114;;519:5;544:6;537:5;530:6;574:4;566:6;562:3;552:27;;596:4;591:3;587;580:21;;649:6;682:1;667:258;692:6;689:1;686:2;667:258;;;775:3;762:12;754:6;750:3;799:62;857:3;845:10;799:62;;;794:3;787:6;885:4;880:3;876;869:21;;913:4;908:3;904;897:21;;724:201;714:1;711;707:3;702:14;;667:258;;;671:14;277:654;;;;;;;;940:446;;1034:3;1027:4;1019:6;1015:3;1011;1044:1;1039:23;;;;1004:58;;1039:23;1058:1;1055;1048:6;1004:58;;1095:6;1082:12;1117:60;1132:44;1169:6;1132:44;;;1117:60;;;1108:69;;1197:6;1190:5;1183:6;1233:4;1225:6;1221:3;1266:4;1259:5;1255:3;1305;1296:6;1291:3;1287;1284:2;1315:1;1310:23;;;;1277:56;;1310:23;1329:1;1326;1319:6;1277:56;;1339:41;1373:6;1368:3;1363;1339:41;;;997:389;;;;;;;;1435:722;;1553:4;1541:9;1536:3;1532;1528;1564:1;1559:23;;;;1521:61;;1559:23;1578:1;1575;1568:6;1521:61;;1596:20;1611:4;1596:20;;;1587:29;;1664:1;1695:49;1740:3;1731:6;1720:9;1716:3;1695:49;;;1689:3;1682:5;1678:3;1671:6;1626:130;1807:2;1840:49;1885:3;1876:6;1865:9;1861:3;1840:49;;;1833:4;1826:5;1822:3;1815:6;1766:135;1979:2;1968:9;1964:3;1951:12;2007:18;1999:6;1996:2;2032:1;2027:23;;;;1989:61;;2027:23;2046:1;2043;2036:6;1989:61;;2081:54;2131:3;2122:6;2111:9;2107:3;2081:54;;;2074:4;2067:5;2063:3;2056:6;1911:236;1515:642;;;;;2164:118;;2231:46;2269:6;2256:12;2231:46;;;2222:55;;2216:66;;;;;2289:449;;2447:2;2435:9;2426:7;2422:3;2418;2456:1;2451:23;;;;2411:63;;2451:23;2470:1;2467;2460:6;2411:63;;2533:1;2522:9;2518:3;2505:12;2560:18;2552:6;2549:2;2585:1;2580:23;;;;2542:61;;2580:23;2599:1;2596;2589:6;2542:61;;2619:103;2714:7;2705:6;2694:9;2690:3;2619:103;;;2609:113;;2484:244;2405:333;;;;;2745:267;;2807:2;2801:5;2791:19;;2845:4;2837:6;2833:3;2948:6;2936:10;2933:2;2912:18;2900:10;2897:2;2894;2962:1;2957:23;;;;2887:93;;2957:23;2976:1;2973;2966:6;2887:93;;2996:10;2992:2;2985:6;2785:227;;;;;3019:294;;3207:18;3199:6;3196:2;3232:1;3227:23;;;;3189:61;;3227:23;3246:1;3243;3236:6;3189:61;;3275:4;3267:6;3263:3;3255:25;;3303:4;3297;3293:3;3285:23;;3126:187;;;;3320:265;;3463:18;3455:6;3452:2;3488:1;3483:23;;;;3445:61;;3483:23;3502:1;3499;3492:6;3445:61;;3546:4;3542:3;3535:4;3527:6;3523:3;3519;3511:41;;3575:4;3569;3565:3;3557:23;;3382:203;;;;3592:128;;3672:42;3665:5;3661:3;3650:65;;3644:76;;;;3727:79;;3796:5;3785:16;;3779:27;;;;3814:145;3895:6;3890:3;3885;3872:12;3951:1;3942:6;3937:3;3933;3926:6;3865:94;;;", - "source": "pragma solidity ^0.4.19;\npragma experimental ABIEncoderV2;\n\n\n/// @title Multi Send - Allows to batch multiple transactions into one.\n/// @author Nick Dodson - \n/// @author Gonçalo Sá - \n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract MultiSendStruct {\n\n struct Transaction {\n address to;\n uint256 value;\n bytes data;\n }\n\n /// @dev Sends multiple transactions and reverts all if one fails.\n /// @param transactions Encoded transactions.\n function multiSend(Transaction[] transactions)\n public\n {\n for(uint256 i = 0; i < transactions.length; i++) {\n Transaction memory transaction = transactions[i];\n require(executeCall(transaction.to, transaction.value, transaction.data));\n }\n }\n\n function executeCall(address to, uint256 value, bytes data)\n internal\n returns (bool success)\n {\n assembly {\n success := call(not(0), to, value, add(data, 0x20), mload(data), 0, 0)\n }\n }\n}\n", + "bytecode": "0x608060405234801561001057600080fd5b506103c6806100206000396000f300608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632f6fda4a14610046575b600080fd5b34801561005257600080fd5b5061006d60048036036100689190810190610291565b61006f565b005b60006100796100ed565b600091505b82518210156100d057828281518110151561009557fe5b9060200190602002015190506100b88160000151826020015183604001516100d5565b15156100c357600080fd5b818060010192505061007e565b505050565b600080600083516020850186885af190509392505050565b606060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001606081525090565b60006101318235610353565b905092915050565b600082601f830112151561014c57600080fd5b813561015f61015a826102ff565b6102d2565b9150818183526020840193506020810190508360005b838110156101a5578135860161018b8882610205565b845260208401935060208301925050600181019050610175565b5050505092915050565b600082601f83011215156101c257600080fd5b81356101d56101d082610327565b6102d2565b915080825260208301602083018583830111156101f157600080fd5b6101fc83828461037d565b50505092915050565b60006060828403121561021757600080fd5b61022160606102d2565b9050600061023184828501610125565b60008301525060206102458482850161027d565b602083015250604082013567ffffffffffffffff81111561026557600080fd5b610271848285016101af565b60408301525092915050565b60006102898235610373565b905092915050565b6000602082840312156102a357600080fd5b600082013567ffffffffffffffff8111156102bd57600080fd5b6102c984828501610139565b91505092915050565b6000604051905081810181811067ffffffffffffffff821117156102f557600080fd5b8060405250919050565b600067ffffffffffffffff82111561031657600080fd5b602082029050602081019050919050565b600067ffffffffffffffff82111561033e57600080fd5b601f19601f8301169050602081019050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b828183376000838301525050505600a265627a7a7230582005384089695c7c77816220e122b3c45435a664207e3c979cd8b6653c05e379236c6578706572696d656e74616cf50037", + "deployedBytecode": "0x608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632f6fda4a14610046575b600080fd5b34801561005257600080fd5b5061006d60048036036100689190810190610291565b61006f565b005b60006100796100ed565b600091505b82518210156100d057828281518110151561009557fe5b9060200190602002015190506100b88160000151826020015183604001516100d5565b15156100c357600080fd5b818060010192505061007e565b505050565b600080600083516020850186885af190509392505050565b606060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001606081525090565b60006101318235610353565b905092915050565b600082601f830112151561014c57600080fd5b813561015f61015a826102ff565b6102d2565b9150818183526020840193506020810190508360005b838110156101a5578135860161018b8882610205565b845260208401935060208301925050600181019050610175565b5050505092915050565b600082601f83011215156101c257600080fd5b81356101d56101d082610327565b6102d2565b915080825260208301602083018583830111156101f157600080fd5b6101fc83828461037d565b50505092915050565b60006060828403121561021757600080fd5b61022160606102d2565b9050600061023184828501610125565b60008301525060206102458482850161027d565b602083015250604082013567ffffffffffffffff81111561026557600080fd5b610271848285016101af565b60408301525092915050565b60006102898235610373565b905092915050565b6000602082840312156102a357600080fd5b600082013567ffffffffffffffff8111156102bd57600080fd5b6102c984828501610139565b91505092915050565b6000604051905081810181811067ffffffffffffffff821117156102f557600080fd5b8060405250919050565b600067ffffffffffffffff82111561031657600080fd5b602082029050602081019050919050565b600067ffffffffffffffff82111561033e57600080fd5b601f19601f8301169050602081019050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b828183376000838301525050505600a265627a7a7230582005384089695c7c77816220e122b3c45435a664207e3c979cd8b6653c05e379236c6578706572696d656e74616cf50037", + "sourceMap": "339:839:17:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;339:839:17;;;;;;;", + "deployedSourceMap": "339:839:17:-;;;;;;;;;;;;;;;;;;;;;;;;587:291;;8:9:-1;5:2;;;30:1;27;20:12;5:2;587:291:17;;;;;;;;;;;;;;;;;;;;667:9;726:30;;:::i;:::-;679:1;667:13;;663:209;686:12;:19;682:1;:23;663:209;;;759:12;772:1;759:15;;;;;;;;;;;;;;;;;;726:48;;796:64;808:11;:14;;;824:11;:17;;;843:11;:16;;;796:11;:64::i;:::-;788:73;;;;;;;;707:3;;;;;;;663:209;;;587:291;;;:::o;884:292::-;978:12;1158:1;1155;1148:4;1142:11;1135:4;1129;1125:15;1118:5;1114:2;1109:3;1104:56;1093:67;;1079:91;;;;;:::o;339:839::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5:118:-1:-;;72:46;110:6;97:20;72:46;;;63:55;;57:66;;;;;175:753;;317:3;310:4;302:6;298:17;294:27;287:35;284:2;;;335:1;332;325:12;284:2;372:6;359:20;394:105;409:89;491:6;409:89;;;394:105;;;385:114;;516:5;541:6;534:5;527:21;571:4;563:6;559:17;549:27;;593:4;588:3;584:14;577:21;;646:6;679:1;664:258;689:6;686:1;683:13;664:258;;;772:3;759:17;751:6;747:30;796:62;854:3;842:10;796:62;;;791:3;784:75;882:4;877:3;873:14;866:21;;910:4;905:3;901:14;894:21;;721:201;711:1;708;704:9;699:14;;664:258;;;668:14;277:651;;;;;;;;937:432;;1034:3;1027:4;1019:6;1015:17;1011:27;1004:35;1001:2;;;1052:1;1049;1042:12;1001:2;1089:6;1076:20;1111:60;1126:44;1163:6;1126:44;;;1111:60;;;1102:69;;1191:6;1184:5;1177:21;1227:4;1219:6;1215:17;1260:4;1253:5;1249:16;1295:3;1286:6;1281:3;1277:16;1274:25;1271:2;;;1312:1;1309;1302:12;1271:2;1322:41;1356:6;1351:3;1346;1322:41;;;994:375;;;;;;;;1418:700;;1532:4;1520:9;1515:3;1511:19;1507:30;1504:2;;;1550:1;1547;1540:12;1504:2;1568:20;1583:4;1568:20;;;1559:29;;1636:1;1667:49;1712:3;1703:6;1692:9;1688:22;1667:49;;;1661:3;1654:5;1650:15;1643:74;1598:130;1779:2;1812:49;1857:3;1848:6;1837:9;1833:22;1812:49;;;1805:4;1798:5;1794:16;1787:75;1738:135;1951:2;1940:9;1936:18;1923:32;1975:18;1967:6;1964:30;1961:2;;;2007:1;2004;1997:12;1961:2;2042:54;2092:3;2083:6;2072:9;2068:22;2042:54;;;2035:4;2028:5;2024:16;2017:80;1883:225;1498:620;;;;;2125:118;;2192:46;2230:6;2217:20;2192:46;;;2183:55;;2177:66;;;;;2250:427;;2404:2;2392:9;2383:7;2379:23;2375:32;2372:2;;;2420:1;2417;2410:12;2372:2;2483:1;2472:9;2468:17;2455:31;2506:18;2498:6;2495:30;2492:2;;;2538:1;2535;2528:12;2492:2;2558:103;2653:7;2644:6;2633:9;2629:22;2558:103;;;2548:113;;2434:233;2366:311;;;;;2684:256;;2746:2;2740:9;2730:19;;2784:4;2776:6;2772:17;2883:6;2871:10;2868:22;2847:18;2835:10;2832:34;2829:62;2826:2;;;2904:1;2901;2894:12;2826:2;2924:10;2920:2;2913:22;2724:216;;;;;2947:283;;3131:18;3123:6;3120:30;3117:2;;;3163:1;3160;3153:12;3117:2;3192:4;3184:6;3180:17;3172:25;;3220:4;3214;3210:15;3202:23;;3054:176;;;;3237:254;;3376:18;3368:6;3365:30;3362:2;;;3408:1;3405;3398:12;3362:2;3452:4;3448:9;3441:4;3433:6;3429:17;3425:33;3417:41;;3481:4;3475;3471:15;3463:23;;3299:192;;;;3498:128;;3578:42;3571:5;3567:54;3556:65;;3550:76;;;;3633:79;;3702:5;3691:16;;3685:27;;;;3720:145;3801:6;3796:3;3791;3778:30;3857:1;3848:6;3843:3;3839:16;3832:27;3771:94;;;", + "source": "pragma solidity ^0.4.23;\npragma experimental ABIEncoderV2;\n\n\n/// @title Multi Send - Allows to batch multiple transactions into one.\n/// @author Nick Dodson - \n/// @author Gonçalo Sá - \n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract MultiSendStruct {\n\n struct Transaction {\n address to;\n uint256 value;\n bytes data;\n }\n\n /// @dev Sends multiple transactions and reverts all if one fails.\n /// @param transactions Encoded transactions.\n function multiSend(Transaction[] transactions)\n public\n {\n for(uint256 i = 0; i < transactions.length; i++) {\n Transaction memory transaction = transactions[i];\n require(executeCall(transaction.to, transaction.value, transaction.data));\n }\n }\n\n function executeCall(address to, uint256 value, bytes data)\n internal\n returns (bool success)\n {\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n success := call(gas, to, value, add(data, 0x20), mload(data), 0, 0)\n }\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/libraries/MultiSendStruct.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/libraries/MultiSendStruct.sol", "exportedSymbols": { "MultiSendStruct": [ - 2077 + 1675 ] }, - "id": 2078, + "id": 1676, "nodeType": "SourceUnit", "nodes": [ { - "id": 2018, + "id": 1616, "literals": [ "solidity", "^", "0.4", - ".19" + ".23" ], "nodeType": "PragmaDirective", - "src": "0:24:10" + "src": "0:24:17" }, { - "id": 2019, + "id": 1617, "literals": [ "experimental", "ABIEncoderV2" ], "nodeType": "PragmaDirective", - "src": "25:33:10" + "src": "25:33:17" }, { "baseContracts": [], @@ -72,24 +72,24 @@ "contractKind": "contract", "documentation": "@title Multi Send - Allows to batch multiple transactions into one.\n @author Nick Dodson - \n @author Gonçalo Sá - \n @author Stefan George - \n @author Richard Meissner - ", "fullyImplemented": true, - "id": 2077, + "id": 1675, "linearizedBaseContracts": [ - 2077 + 1675 ], "name": "MultiSendStruct", "nodeType": "ContractDefinition", "nodes": [ { "canonicalName": "MultiSendStruct.Transaction", - "id": 2026, + "id": 1624, "members": [ { "constant": false, - "id": 2021, + "id": 1619, "name": "to", "nodeType": "VariableDeclaration", - "scope": 2026, - "src": "398:10:10", + "scope": 1624, + "src": "400:10:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -97,10 +97,10 @@ "typeString": "address" }, "typeName": { - "id": 2020, + "id": 1618, "name": "address", "nodeType": "ElementaryTypeName", - "src": "398:7:10", + "src": "400:7:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -111,11 +111,11 @@ }, { "constant": false, - "id": 2023, + "id": 1621, "name": "value", "nodeType": "VariableDeclaration", - "scope": 2026, - "src": "416:13:10", + "scope": 1624, + "src": "420:13:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -123,10 +123,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2022, + "id": 1620, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "416:7:10", + "src": "420:7:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -137,25 +137,25 @@ }, { "constant": false, - "id": 2025, + "id": 1623, "name": "data", "nodeType": "VariableDeclaration", - "scope": 2026, - "src": "437:10:10", + "scope": 1624, + "src": "443:10:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" + "typeString": "bytes" }, "typeName": { - "id": 2024, + "id": 1622, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "437:5:10", + "src": "443:5:17", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" + "typeString": "bytes" } }, "value": null, @@ -164,81 +164,81 @@ ], "name": "Transaction", "nodeType": "StructDefinition", - "scope": 2077, - "src": "371:83:10", + "scope": 1675, + "src": "371:89:17", "visibility": "public" }, { "body": { - "id": 2062, + "id": 1660, "nodeType": "Block", - "src": "647:225:10", + "src": "653:225:17", "statements": [ { "body": { - "id": 2060, + "id": 1658, "nodeType": "Block", - "src": "706:160:10", + "src": "712:160:17", "statements": [ { "assignments": [ - 2044 + 1642 ], "declarations": [ { "constant": false, - "id": 2044, + "id": 1642, "name": "transaction", "nodeType": "VariableDeclaration", - "scope": 2063, - "src": "720:30:10", + "scope": 1661, + "src": "726:30:17", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$2026_memory_ptr", - "typeString": "struct MultiSendStruct.Transaction memory" + "typeIdentifier": "t_struct$_Transaction_$1624_memory_ptr", + "typeString": "struct MultiSendStruct.Transaction" }, "typeName": { "contractScope": null, - "id": 2043, + "id": 1641, "name": "Transaction", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 2026, - "src": "720:11:10", + "referencedDeclaration": 1624, + "src": "726:11:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$2026_storage_ptr", - "typeString": "struct MultiSendStruct.Transaction storage pointer" + "typeIdentifier": "t_struct$_Transaction_$1624_storage_ptr", + "typeString": "struct MultiSendStruct.Transaction" } }, "value": null, "visibility": "internal" } ], - "id": 2048, + "id": 1646, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2045, + "id": 1643, "name": "transactions", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2029, - "src": "753:12:10", + "referencedDeclaration": 1627, + "src": "759:12:17", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Transaction_$2026_memory_$dyn_memory_ptr", + "typeIdentifier": "t_array$_t_struct$_Transaction_$1624_memory_$dyn_memory_ptr", "typeString": "struct MultiSendStruct.Transaction memory[] memory" } }, - "id": 2047, + "id": 1645, "indexExpression": { "argumentTypes": null, - "id": 2046, + "id": 1644, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2033, - "src": "766:1:10", + "referencedDeclaration": 1631, + "src": "772:1:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -249,14 +249,14 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "753:15:10", + "src": "759:15:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$2026_memory", + "typeIdentifier": "t_struct$_Transaction_$1624_memory", "typeString": "struct MultiSendStruct.Transaction memory" } }, "nodeType": "VariableDeclarationStatement", - "src": "720:48:10" + "src": "726:48:17" }, { "expression": { @@ -269,26 +269,26 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2051, + "id": 1649, "name": "transaction", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2044, - "src": "802:11:10", + "referencedDeclaration": 1642, + "src": "808:11:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$2026_memory_ptr", + "typeIdentifier": "t_struct$_Transaction_$1624_memory_ptr", "typeString": "struct MultiSendStruct.Transaction memory" } }, - "id": 2052, + "id": 1650, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "to", "nodeType": "MemberAccess", - "referencedDeclaration": 2021, - "src": "802:14:10", + "referencedDeclaration": 1619, + "src": "808:14:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -298,26 +298,26 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2053, + "id": 1651, "name": "transaction", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2044, - "src": "818:11:10", + "referencedDeclaration": 1642, + "src": "824:11:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$2026_memory_ptr", + "typeIdentifier": "t_struct$_Transaction_$1624_memory_ptr", "typeString": "struct MultiSendStruct.Transaction memory" } }, - "id": 2054, + "id": 1652, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "value", "nodeType": "MemberAccess", - "referencedDeclaration": 2023, - "src": "818:17:10", + "referencedDeclaration": 1621, + "src": "824:17:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -327,26 +327,26 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2055, + "id": 1653, "name": "transaction", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2044, - "src": "837:11:10", + "referencedDeclaration": 1642, + "src": "843:11:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$2026_memory_ptr", + "typeIdentifier": "t_struct$_Transaction_$1624_memory_ptr", "typeString": "struct MultiSendStruct.Transaction memory" } }, - "id": 2056, + "id": 1654, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "data", "nodeType": "MemberAccess", - "referencedDeclaration": 2025, - "src": "837:16:10", + "referencedDeclaration": 1623, + "src": "843:16:17", "typeDescriptions": { "typeIdentifier": "t_bytes_memory", "typeString": "bytes memory" @@ -368,18 +368,18 @@ "typeString": "bytes memory" } ], - "id": 2050, + "id": 1648, "name": "executeCall", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2076, - "src": "790:11:10", + "referencedDeclaration": 1674, + "src": "796:11:17", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory) returns (bool)" } }, - "id": 2057, + "id": 1655, "isConstant": false, "isLValue": false, "isPure": false, @@ -387,7 +387,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "790:64:10", + "src": "796:64:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -401,18 +401,21 @@ "typeString": "bool" } ], - "id": 2049, + "id": 1647, "name": "require", "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "782:7:10", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "788:7:17", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 2058, + "id": 1656, "isConstant": false, "isLValue": false, "isPure": false, @@ -420,15 +423,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "782:73:10", + "src": "788:73:17", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2059, + "id": 1657, "nodeType": "ExpressionStatement", - "src": "782:73:10" + "src": "788:73:17" } ] }, @@ -438,19 +441,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 2039, + "id": 1637, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2036, + "id": 1634, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2033, - "src": "676:1:10", + "referencedDeclaration": 1631, + "src": "682:1:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -462,18 +465,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2037, + "id": 1635, "name": "transactions", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2029, - "src": "680:12:10", + "referencedDeclaration": 1627, + "src": "686:12:17", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Transaction_$2026_memory_$dyn_memory_ptr", + "typeIdentifier": "t_array$_t_struct$_Transaction_$1624_memory_$dyn_memory_ptr", "typeString": "struct MultiSendStruct.Transaction memory[] memory" } }, - "id": 2038, + "id": 1636, "isConstant": false, "isLValue": false, "isPure": false, @@ -481,31 +484,31 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "680:19:10", + "src": "686:19:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "676:23:10", + "src": "682:23:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2061, + "id": 1659, "initializationExpression": { "assignments": [ - 2033 + 1631 ], "declarations": [ { "constant": false, - "id": 2033, + "id": 1631, "name": "i", "nodeType": "VariableDeclaration", - "scope": 2063, - "src": "661:9:10", + "scope": 1661, + "src": "667:9:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -513,10 +516,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2032, + "id": 1630, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "661:7:10", + "src": "667:7:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -526,18 +529,18 @@ "visibility": "internal" } ], - "id": 2035, + "id": 1633, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 2034, + "id": 1632, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "673:1:10", + "src": "679:1:17", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -546,12 +549,12 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "661:13:10" + "src": "667:13:17" }, "loopExpression": { "expression": { "argumentTypes": null, - "id": 2041, + "id": 1639, "isConstant": false, "isLValue": false, "isPure": false, @@ -559,15 +562,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "701:3:10", + "src": "707:3:17", "subExpression": { "argumentTypes": null, - "id": 2040, + "id": 1638, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2033, - "src": "701:1:10", + "referencedDeclaration": 1631, + "src": "707:1:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -578,16 +581,17 @@ "typeString": "uint256" } }, - "id": 2042, + "id": 1640, "nodeType": "ExpressionStatement", - "src": "701:3:10" + "src": "707:3:17" }, "nodeType": "ForStatement", - "src": "657:209:10" + "src": "663:209:17" } ] }, - "id": 2063, + "documentation": "@dev Sends multiple transactions and reverts all if one fails.\n @param transactions Encoded transactions.", + "id": 1661, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -595,125 +599,126 @@ "name": "multiSend", "nodeType": "FunctionDefinition", "parameters": { - "id": 2030, + "id": 1628, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2029, + "id": 1627, "name": "transactions", "nodeType": "VariableDeclaration", - "scope": 2063, - "src": "600:26:10", + "scope": 1661, + "src": "606:26:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Transaction_$2026_memory_$dyn_memory_ptr", - "typeString": "struct MultiSendStruct.Transaction memory[] memory" + "typeIdentifier": "t_array$_t_struct$_Transaction_$1624_memory_$dyn_memory_ptr", + "typeString": "struct MultiSendStruct.Transaction[]" }, "typeName": { "baseType": { "contractScope": null, - "id": 2027, + "id": 1625, "name": "Transaction", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 2026, - "src": "600:11:10", + "referencedDeclaration": 1624, + "src": "606:11:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$2026_storage_ptr", - "typeString": "struct MultiSendStruct.Transaction storage pointer" + "typeIdentifier": "t_struct$_Transaction_$1624_storage_ptr", + "typeString": "struct MultiSendStruct.Transaction" } }, - "id": 2028, + "id": 1626, "length": null, "nodeType": "ArrayTypeName", - "src": "600:13:10", + "src": "606:13:17", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Transaction_$2026_storage_$dyn_storage_ptr", - "typeString": "struct MultiSendStruct.Transaction storage ref[] storage pointer" + "typeIdentifier": "t_array$_t_struct$_Transaction_$1624_storage_$dyn_storage_ptr", + "typeString": "struct MultiSendStruct.Transaction[]" } }, "value": null, "visibility": "internal" } ], - "src": "599:28:10" + "src": "605:28:17" }, "payable": false, "returnParameters": { - "id": 2031, + "id": 1629, "nodeType": "ParameterList", "parameters": [], - "src": "647:0:10" + "src": "653:0:17" }, - "scope": 2077, - "src": "581:291:10", + "scope": 1675, + "src": "587:291:17", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2075, + "id": 1673, "nodeType": "Block", - "src": "990:119:10", + "src": "996:180:17", "statements": [ { "externalReferences": [ { "data": { - "declaration": 2069, + "declaration": 1667, "isOffset": false, "isSlot": false, - "src": "1062:4:10", + "src": "1148:4:17", "valueSize": 1 } }, { "data": { - "declaration": 2069, + "declaration": 1667, "isOffset": false, "isSlot": false, - "src": "1081:4:10", + "src": "1129:4:17", "valueSize": 1 } }, { "success": { - "declaration": 2072, + "declaration": 1670, "isOffset": false, "isSlot": false, - "src": "1023:7:10", + "src": "1093:7:17", "valueSize": 1 } }, { "to": { - "declaration": 2065, + "declaration": 1663, "isOffset": false, "isSlot": false, - "src": "1047:2:10", + "src": "1114:2:17", "valueSize": 1 } }, { "value": { - "declaration": 2067, + "declaration": 1665, "isOffset": false, "isSlot": false, - "src": "1051:5:10", + "src": "1118:5:17", "valueSize": 1 } } ], - "id": 2074, + "id": 1672, "nodeType": "InlineAssembly", - "operations": "{\n success := call(not(0), to, value, add(data, 0x20), mload(data), 0, 0)\n}", - "src": "1000:109:10" + "operations": "{\n success := call(gas(), to, value, add(data, 0x20), mload(data), 0, 0)\n}", + "src": "1070:106:17" } ] }, - "id": 2076, + "documentation": null, + "id": 1674, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -721,16 +726,16 @@ "name": "executeCall", "nodeType": "FunctionDefinition", "parameters": { - "id": 2070, + "id": 1668, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2065, + "id": 1663, "name": "to", "nodeType": "VariableDeclaration", - "scope": 2076, - "src": "899:10:10", + "scope": 1674, + "src": "905:10:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -738,10 +743,10 @@ "typeString": "address" }, "typeName": { - "id": 2064, + "id": 1662, "name": "address", "nodeType": "ElementaryTypeName", - "src": "899:7:10", + "src": "905:7:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -752,11 +757,11 @@ }, { "constant": false, - "id": 2067, + "id": 1665, "name": "value", "nodeType": "VariableDeclaration", - "scope": 2076, - "src": "911:13:10", + "scope": 1674, + "src": "917:13:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -764,10 +769,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2066, + "id": 1664, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "911:7:10", + "src": "917:7:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -778,45 +783,45 @@ }, { "constant": false, - "id": 2069, + "id": 1667, "name": "data", "nodeType": "VariableDeclaration", - "scope": 2076, - "src": "926:10:10", + "scope": 1674, + "src": "932:10:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" + "typeString": "bytes" }, "typeName": { - "id": 2068, + "id": 1666, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "926:5:10", + "src": "932:5:17", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" + "typeString": "bytes" } }, "value": null, "visibility": "internal" } ], - "src": "898:39:10" + "src": "904:39:17" }, "payable": false, "returnParameters": { - "id": 2073, + "id": 1671, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2072, + "id": 1670, "name": "success", "nodeType": "VariableDeclaration", - "scope": 2076, - "src": "972:12:10", + "scope": 1674, + "src": "978:12:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -824,10 +829,10 @@ "typeString": "bool" }, "typeName": { - "id": 2071, + "id": 1669, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "972:4:10", + "src": "978:4:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -837,50 +842,50 @@ "visibility": "internal" } ], - "src": "971:14:10" + "src": "977:14:17" }, - "scope": 2077, - "src": "878:231:10", + "scope": 1675, + "src": "884:292:17", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" } ], - "scope": 2078, - "src": "339:772:10" + "scope": 1676, + "src": "339:839:17" } ], - "src": "0:1112:10" + "src": "0:1179:17" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/libraries/MultiSendStruct.sol", "exportedSymbols": { "MultiSendStruct": [ - 2077 + 1675 ] }, - "id": 2078, + "id": 1676, "nodeType": "SourceUnit", "nodes": [ { - "id": 2018, + "id": 1616, "literals": [ "solidity", "^", "0.4", - ".19" + ".23" ], "nodeType": "PragmaDirective", - "src": "0:24:10" + "src": "0:24:17" }, { - "id": 2019, + "id": 1617, "literals": [ "experimental", "ABIEncoderV2" ], "nodeType": "PragmaDirective", - "src": "25:33:10" + "src": "25:33:17" }, { "baseContracts": [], @@ -888,24 +893,24 @@ "contractKind": "contract", "documentation": "@title Multi Send - Allows to batch multiple transactions into one.\n @author Nick Dodson - \n @author Gonçalo Sá - \n @author Stefan George - \n @author Richard Meissner - ", "fullyImplemented": true, - "id": 2077, + "id": 1675, "linearizedBaseContracts": [ - 2077 + 1675 ], "name": "MultiSendStruct", "nodeType": "ContractDefinition", "nodes": [ { "canonicalName": "MultiSendStruct.Transaction", - "id": 2026, + "id": 1624, "members": [ { "constant": false, - "id": 2021, + "id": 1619, "name": "to", "nodeType": "VariableDeclaration", - "scope": 2026, - "src": "398:10:10", + "scope": 1624, + "src": "400:10:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -913,10 +918,10 @@ "typeString": "address" }, "typeName": { - "id": 2020, + "id": 1618, "name": "address", "nodeType": "ElementaryTypeName", - "src": "398:7:10", + "src": "400:7:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -927,11 +932,11 @@ }, { "constant": false, - "id": 2023, + "id": 1621, "name": "value", "nodeType": "VariableDeclaration", - "scope": 2026, - "src": "416:13:10", + "scope": 1624, + "src": "420:13:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -939,10 +944,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2022, + "id": 1620, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "416:7:10", + "src": "420:7:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -953,25 +958,25 @@ }, { "constant": false, - "id": 2025, + "id": 1623, "name": "data", "nodeType": "VariableDeclaration", - "scope": 2026, - "src": "437:10:10", + "scope": 1624, + "src": "443:10:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" + "typeString": "bytes" }, "typeName": { - "id": 2024, + "id": 1622, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "437:5:10", + "src": "443:5:17", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" + "typeString": "bytes" } }, "value": null, @@ -980,81 +985,81 @@ ], "name": "Transaction", "nodeType": "StructDefinition", - "scope": 2077, - "src": "371:83:10", + "scope": 1675, + "src": "371:89:17", "visibility": "public" }, { "body": { - "id": 2062, + "id": 1660, "nodeType": "Block", - "src": "647:225:10", + "src": "653:225:17", "statements": [ { "body": { - "id": 2060, + "id": 1658, "nodeType": "Block", - "src": "706:160:10", + "src": "712:160:17", "statements": [ { "assignments": [ - 2044 + 1642 ], "declarations": [ { "constant": false, - "id": 2044, + "id": 1642, "name": "transaction", "nodeType": "VariableDeclaration", - "scope": 2063, - "src": "720:30:10", + "scope": 1661, + "src": "726:30:17", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$2026_memory_ptr", - "typeString": "struct MultiSendStruct.Transaction memory" + "typeIdentifier": "t_struct$_Transaction_$1624_memory_ptr", + "typeString": "struct MultiSendStruct.Transaction" }, "typeName": { "contractScope": null, - "id": 2043, + "id": 1641, "name": "Transaction", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 2026, - "src": "720:11:10", + "referencedDeclaration": 1624, + "src": "726:11:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$2026_storage_ptr", - "typeString": "struct MultiSendStruct.Transaction storage pointer" + "typeIdentifier": "t_struct$_Transaction_$1624_storage_ptr", + "typeString": "struct MultiSendStruct.Transaction" } }, "value": null, "visibility": "internal" } ], - "id": 2048, + "id": 1646, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2045, + "id": 1643, "name": "transactions", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2029, - "src": "753:12:10", + "referencedDeclaration": 1627, + "src": "759:12:17", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Transaction_$2026_memory_$dyn_memory_ptr", + "typeIdentifier": "t_array$_t_struct$_Transaction_$1624_memory_$dyn_memory_ptr", "typeString": "struct MultiSendStruct.Transaction memory[] memory" } }, - "id": 2047, + "id": 1645, "indexExpression": { "argumentTypes": null, - "id": 2046, + "id": 1644, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2033, - "src": "766:1:10", + "referencedDeclaration": 1631, + "src": "772:1:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1065,14 +1070,14 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "753:15:10", + "src": "759:15:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$2026_memory", + "typeIdentifier": "t_struct$_Transaction_$1624_memory", "typeString": "struct MultiSendStruct.Transaction memory" } }, "nodeType": "VariableDeclarationStatement", - "src": "720:48:10" + "src": "726:48:17" }, { "expression": { @@ -1085,26 +1090,26 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2051, + "id": 1649, "name": "transaction", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2044, - "src": "802:11:10", + "referencedDeclaration": 1642, + "src": "808:11:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$2026_memory_ptr", + "typeIdentifier": "t_struct$_Transaction_$1624_memory_ptr", "typeString": "struct MultiSendStruct.Transaction memory" } }, - "id": 2052, + "id": 1650, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "to", "nodeType": "MemberAccess", - "referencedDeclaration": 2021, - "src": "802:14:10", + "referencedDeclaration": 1619, + "src": "808:14:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1114,26 +1119,26 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2053, + "id": 1651, "name": "transaction", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2044, - "src": "818:11:10", + "referencedDeclaration": 1642, + "src": "824:11:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$2026_memory_ptr", + "typeIdentifier": "t_struct$_Transaction_$1624_memory_ptr", "typeString": "struct MultiSendStruct.Transaction memory" } }, - "id": 2054, + "id": 1652, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "value", "nodeType": "MemberAccess", - "referencedDeclaration": 2023, - "src": "818:17:10", + "referencedDeclaration": 1621, + "src": "824:17:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1143,26 +1148,26 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2055, + "id": 1653, "name": "transaction", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2044, - "src": "837:11:10", + "referencedDeclaration": 1642, + "src": "843:11:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$2026_memory_ptr", + "typeIdentifier": "t_struct$_Transaction_$1624_memory_ptr", "typeString": "struct MultiSendStruct.Transaction memory" } }, - "id": 2056, + "id": 1654, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "data", "nodeType": "MemberAccess", - "referencedDeclaration": 2025, - "src": "837:16:10", + "referencedDeclaration": 1623, + "src": "843:16:17", "typeDescriptions": { "typeIdentifier": "t_bytes_memory", "typeString": "bytes memory" @@ -1184,18 +1189,18 @@ "typeString": "bytes memory" } ], - "id": 2050, + "id": 1648, "name": "executeCall", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2076, - "src": "790:11:10", + "referencedDeclaration": 1674, + "src": "796:11:17", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory) returns (bool)" } }, - "id": 2057, + "id": 1655, "isConstant": false, "isLValue": false, "isPure": false, @@ -1203,7 +1208,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "790:64:10", + "src": "796:64:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1217,18 +1222,21 @@ "typeString": "bool" } ], - "id": 2049, + "id": 1647, "name": "require", "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "782:7:10", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "788:7:17", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 2058, + "id": 1656, "isConstant": false, "isLValue": false, "isPure": false, @@ -1236,15 +1244,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "782:73:10", + "src": "788:73:17", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2059, + "id": 1657, "nodeType": "ExpressionStatement", - "src": "782:73:10" + "src": "788:73:17" } ] }, @@ -1254,19 +1262,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 2039, + "id": 1637, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2036, + "id": 1634, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2033, - "src": "676:1:10", + "referencedDeclaration": 1631, + "src": "682:1:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1278,18 +1286,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2037, + "id": 1635, "name": "transactions", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2029, - "src": "680:12:10", + "referencedDeclaration": 1627, + "src": "686:12:17", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Transaction_$2026_memory_$dyn_memory_ptr", + "typeIdentifier": "t_array$_t_struct$_Transaction_$1624_memory_$dyn_memory_ptr", "typeString": "struct MultiSendStruct.Transaction memory[] memory" } }, - "id": 2038, + "id": 1636, "isConstant": false, "isLValue": false, "isPure": false, @@ -1297,31 +1305,31 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "680:19:10", + "src": "686:19:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "676:23:10", + "src": "682:23:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2061, + "id": 1659, "initializationExpression": { "assignments": [ - 2033 + 1631 ], "declarations": [ { "constant": false, - "id": 2033, + "id": 1631, "name": "i", "nodeType": "VariableDeclaration", - "scope": 2063, - "src": "661:9:10", + "scope": 1661, + "src": "667:9:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1329,10 +1337,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2032, + "id": 1630, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "661:7:10", + "src": "667:7:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1342,18 +1350,18 @@ "visibility": "internal" } ], - "id": 2035, + "id": 1633, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 2034, + "id": 1632, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "673:1:10", + "src": "679:1:17", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1362,12 +1370,12 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "661:13:10" + "src": "667:13:17" }, "loopExpression": { "expression": { "argumentTypes": null, - "id": 2041, + "id": 1639, "isConstant": false, "isLValue": false, "isPure": false, @@ -1375,15 +1383,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "701:3:10", + "src": "707:3:17", "subExpression": { "argumentTypes": null, - "id": 2040, + "id": 1638, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2033, - "src": "701:1:10", + "referencedDeclaration": 1631, + "src": "707:1:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1394,16 +1402,17 @@ "typeString": "uint256" } }, - "id": 2042, + "id": 1640, "nodeType": "ExpressionStatement", - "src": "701:3:10" + "src": "707:3:17" }, "nodeType": "ForStatement", - "src": "657:209:10" + "src": "663:209:17" } ] }, - "id": 2063, + "documentation": "@dev Sends multiple transactions and reverts all if one fails.\n @param transactions Encoded transactions.", + "id": 1661, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -1411,125 +1420,126 @@ "name": "multiSend", "nodeType": "FunctionDefinition", "parameters": { - "id": 2030, + "id": 1628, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2029, + "id": 1627, "name": "transactions", "nodeType": "VariableDeclaration", - "scope": 2063, - "src": "600:26:10", + "scope": 1661, + "src": "606:26:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Transaction_$2026_memory_$dyn_memory_ptr", - "typeString": "struct MultiSendStruct.Transaction memory[] memory" + "typeIdentifier": "t_array$_t_struct$_Transaction_$1624_memory_$dyn_memory_ptr", + "typeString": "struct MultiSendStruct.Transaction[]" }, "typeName": { "baseType": { "contractScope": null, - "id": 2027, + "id": 1625, "name": "Transaction", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 2026, - "src": "600:11:10", + "referencedDeclaration": 1624, + "src": "606:11:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$2026_storage_ptr", - "typeString": "struct MultiSendStruct.Transaction storage pointer" + "typeIdentifier": "t_struct$_Transaction_$1624_storage_ptr", + "typeString": "struct MultiSendStruct.Transaction" } }, - "id": 2028, + "id": 1626, "length": null, "nodeType": "ArrayTypeName", - "src": "600:13:10", + "src": "606:13:17", "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Transaction_$2026_storage_$dyn_storage_ptr", - "typeString": "struct MultiSendStruct.Transaction storage ref[] storage pointer" + "typeIdentifier": "t_array$_t_struct$_Transaction_$1624_storage_$dyn_storage_ptr", + "typeString": "struct MultiSendStruct.Transaction[]" } }, "value": null, "visibility": "internal" } ], - "src": "599:28:10" + "src": "605:28:17" }, "payable": false, "returnParameters": { - "id": 2031, + "id": 1629, "nodeType": "ParameterList", "parameters": [], - "src": "647:0:10" + "src": "653:0:17" }, - "scope": 2077, - "src": "581:291:10", + "scope": 1675, + "src": "587:291:17", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2075, + "id": 1673, "nodeType": "Block", - "src": "990:119:10", + "src": "996:180:17", "statements": [ { "externalReferences": [ { "data": { - "declaration": 2069, + "declaration": 1667, "isOffset": false, "isSlot": false, - "src": "1062:4:10", + "src": "1148:4:17", "valueSize": 1 } }, { "data": { - "declaration": 2069, + "declaration": 1667, "isOffset": false, "isSlot": false, - "src": "1081:4:10", + "src": "1129:4:17", "valueSize": 1 } }, { "success": { - "declaration": 2072, + "declaration": 1670, "isOffset": false, "isSlot": false, - "src": "1023:7:10", + "src": "1093:7:17", "valueSize": 1 } }, { "to": { - "declaration": 2065, + "declaration": 1663, "isOffset": false, "isSlot": false, - "src": "1047:2:10", + "src": "1114:2:17", "valueSize": 1 } }, { "value": { - "declaration": 2067, + "declaration": 1665, "isOffset": false, "isSlot": false, - "src": "1051:5:10", + "src": "1118:5:17", "valueSize": 1 } } ], - "id": 2074, + "id": 1672, "nodeType": "InlineAssembly", - "operations": "{\n success := call(not(0), to, value, add(data, 0x20), mload(data), 0, 0)\n}", - "src": "1000:109:10" + "operations": "{\n success := call(gas(), to, value, add(data, 0x20), mload(data), 0, 0)\n}", + "src": "1070:106:17" } ] }, - "id": 2076, + "documentation": null, + "id": 1674, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -1537,16 +1547,16 @@ "name": "executeCall", "nodeType": "FunctionDefinition", "parameters": { - "id": 2070, + "id": 1668, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2065, + "id": 1663, "name": "to", "nodeType": "VariableDeclaration", - "scope": 2076, - "src": "899:10:10", + "scope": 1674, + "src": "905:10:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1554,10 +1564,10 @@ "typeString": "address" }, "typeName": { - "id": 2064, + "id": 1662, "name": "address", "nodeType": "ElementaryTypeName", - "src": "899:7:10", + "src": "905:7:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1568,11 +1578,11 @@ }, { "constant": false, - "id": 2067, + "id": 1665, "name": "value", "nodeType": "VariableDeclaration", - "scope": 2076, - "src": "911:13:10", + "scope": 1674, + "src": "917:13:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1580,10 +1590,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2066, + "id": 1664, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "911:7:10", + "src": "917:7:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1594,45 +1604,45 @@ }, { "constant": false, - "id": 2069, + "id": 1667, "name": "data", "nodeType": "VariableDeclaration", - "scope": 2076, - "src": "926:10:10", + "scope": 1674, + "src": "932:10:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" + "typeString": "bytes" }, "typeName": { - "id": 2068, + "id": 1666, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "926:5:10", + "src": "932:5:17", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" + "typeString": "bytes" } }, "value": null, "visibility": "internal" } ], - "src": "898:39:10" + "src": "904:39:17" }, "payable": false, "returnParameters": { - "id": 2073, + "id": 1671, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2072, + "id": 1670, "name": "success", "nodeType": "VariableDeclaration", - "scope": 2076, - "src": "972:12:10", + "scope": 1674, + "src": "978:12:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1640,10 +1650,10 @@ "typeString": "bool" }, "typeName": { - "id": 2071, + "id": 1669, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "972:4:10", + "src": "978:4:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1653,26 +1663,26 @@ "visibility": "internal" } ], - "src": "971:14:10" + "src": "977:14:17" }, - "scope": 2077, - "src": "878:231:10", + "scope": 1675, + "src": "884:292:17", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" } ], - "scope": 2078, - "src": "339:772:10" + "scope": 1676, + "src": "339:839:17" } ], - "src": "0:1112:10" + "src": "0:1179:17" }, "compiler": { "name": "solc", - "version": "0.4.19+commit.c4cbbb05.Emscripten.clang" + "version": "0.4.23+commit.124ca40d.Emscripten.clang" }, "networks": {}, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-04T10:42:18.395Z" + "updatedAt": "2018-05-10T10:43:07.902Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/OwnerManager.json b/safe-contracts/build/contracts/OwnerManager.json new file mode 100644 index 0000000000..e7f4bd9077 --- /dev/null +++ b/safe-contracts/build/contracts/OwnerManager.json @@ -0,0 +1,7844 @@ +{ + "contractName": "OwnerManager", + "abi": [ + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "uint256" + } + ], + "name": "owners", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "owner", + "type": "address" + }, + { + "name": "_threshold", + "type": "uint8" + } + ], + "name": "addOwner", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "ownerIndex", + "type": "uint256" + }, + { + "name": "owner", + "type": "address" + }, + { + "name": "_threshold", + "type": "uint8" + } + ], + "name": "removeOwner", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "oldOwnerIndex", + "type": "uint256" + }, + { + "name": "oldOwner", + "type": "address" + }, + { + "name": "newOwner", + "type": "address" + } + ], + "name": "replaceOwner", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_threshold", + "type": "uint8" + } + ], + "name": "changeThreshold", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "threshold", + "outputs": [ + { + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "owner", + "type": "address" + } + ], + "name": "isOwner", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getOwners", + "outputs": [ + { + "name": "", + "type": "address[]" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b50610b4e806100206000396000f30060806040526004361061008e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063025e7c27146100935780630e5229b0146101005780632f54bf6e1461015057806342cde4e8146101ab57806354e99c6e146101dc578063842b954e14610249578063a0e67e2b146102a3578063b7f3358d1461030f575b600080fd5b34801561009f57600080fd5b506100be6004803603810190808035906020019092919050505061033f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561010c57600080fd5b5061014e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff16906020019092919050505061037d565b005b34801561015c57600080fd5b50610191600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610520565b604051808215151515815260200191505060405180910390f35b3480156101b757600080fd5b506101c0610576565b604051808260ff1660ff16815260200191505060405180910390f35b3480156101e857600080fd5b5061024760048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061058d565b005b34801561025557600080fd5b506102a160048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506107c6565b005b3480156102af57600080fd5b506102b86109c1565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156102fb5780820151818401526020810190506102e0565b505050509050019250505060405180910390f35b34801561031b57600080fd5b5061033d600480360381019080803560ff169060200190929190505050610a4f565b005b60008181548110151561034e57fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156103b757600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff16141515156103dd57600080fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561043657600080fd5b60008290806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506001600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508060ff16600160009054906101000a900460ff1660ff1614151561051c5761051b81610a4f565b5b5050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600160009054906101000a900460ff16905090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156105c757600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156105ed57600080fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561064657600080fd5b8173ffffffffffffffffffffffffffffffffffffffff1660008481548110151561066c57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156106b957600080fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508060008481548110151561077957fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561080057600080fd5b8060ff166001600080549050031015151561081a57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff1660008481548110151561084057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561088d57600080fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060006001600080549050038154811015156108fc57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660008481548110151561093657fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054809190600190036109939190610ad1565b508060ff16600160009054906101000a900460ff1660ff161415156109bc576109bb81610a4f565b5b505050565b60606000805480602002602001604051908101604052809291908181526020018280548015610a4557602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116109fb575b5050505050905090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610a8957600080fd5b6000805490508160ff1611151515610aa057600080fd5b60018160ff1610151515610ab357600080fd5b80600160006101000a81548160ff021916908360ff16021790555050565b815481835581811115610af857818360005260206000209182019101610af79190610afd565b5b505050565b610b1f91905b80821115610b1b576000816000905550600101610b03565b5090565b905600a165627a7a72305820e78155e74b906f83eb64e436f45d07ae88b2195944595ca816ddbec6abb1ecb90029", + "deployedBytecode": "0x60806040526004361061008e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063025e7c27146100935780630e5229b0146101005780632f54bf6e1461015057806342cde4e8146101ab57806354e99c6e146101dc578063842b954e14610249578063a0e67e2b146102a3578063b7f3358d1461030f575b600080fd5b34801561009f57600080fd5b506100be6004803603810190808035906020019092919050505061033f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561010c57600080fd5b5061014e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff16906020019092919050505061037d565b005b34801561015c57600080fd5b50610191600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610520565b604051808215151515815260200191505060405180910390f35b3480156101b757600080fd5b506101c0610576565b604051808260ff1660ff16815260200191505060405180910390f35b3480156101e857600080fd5b5061024760048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061058d565b005b34801561025557600080fd5b506102a160048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506107c6565b005b3480156102af57600080fd5b506102b86109c1565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156102fb5780820151818401526020810190506102e0565b505050509050019250505060405180910390f35b34801561031b57600080fd5b5061033d600480360381019080803560ff169060200190929190505050610a4f565b005b60008181548110151561034e57fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156103b757600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff16141515156103dd57600080fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561043657600080fd5b60008290806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506001600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508060ff16600160009054906101000a900460ff1660ff1614151561051c5761051b81610a4f565b5b5050565b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600160009054906101000a900460ff16905090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156105c757600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156105ed57600080fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561064657600080fd5b8173ffffffffffffffffffffffffffffffffffffffff1660008481548110151561066c57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156106b957600080fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508060008481548110151561077957fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561080057600080fd5b8060ff166001600080549050031015151561081a57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff1660008481548110151561084057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561088d57600080fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060006001600080549050038154811015156108fc57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660008481548110151561093657fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054809190600190036109939190610ad1565b508060ff16600160009054906101000a900460ff1660ff161415156109bc576109bb81610a4f565b5b505050565b60606000805480602002602001604051908101604052809291908181526020018280548015610a4557602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116109fb575b5050505050905090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610a8957600080fd5b6000805490508160ff1611151515610aa057600080fd5b60018160ff1610151515610ab357600080fd5b80600160006101000a81548160ff021916908360ff16021790555050565b815481835581811115610af857818360005260206000209182019101610af79190610afd565b5b505050565b610b1f91905b80821115610b1b576000816000905550600101610b03565b5090565b905600a165627a7a72305820e78155e74b906f83eb64e436f45d07ae88b2195944595ca816ddbec6abb1ecb90029", + "sourceMap": "240:4632:10:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;240:4632:10;;;;;;;", + "deployedSourceMap": "240:4632:10:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;287:23;;8:9:-1;5:2;;;30:1;27;20:12;5:2;287:23:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1737:431;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1737:431:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4552:125;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4552:125:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4436:110;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4436:110:10;;;;;;;;;;;;;;;;;;;;;;;;;;;3419:501;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3419:501:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2499:599;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2499:599:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4759:111;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4759:111:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;4759:111:10;;;;;;;;;;;;;;;;;4109:321;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4109:321:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;287:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1737:431::-;244:4:14;222:27;;:10;:27;;;214:36;;;;;;;;1894:1:10;1885:5;:10;;;;1877:19;;;;;;;;1955:7;:14;1963:5;1955:14;;;;;;;;;;;;;;;;;;;;;;;;;1954:15;1946:24;;;;;;;;1980:6;1992:5;1980:18;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;1980:18:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2025:4;2008:7;:14;2016:5;2008:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;2110:10;2097:23;;:9;;;;;;;;;;;:23;;;;2093:68;;;2134:27;2150:10;2134:15;:27::i;:::-;2093:68;1737:431;;:::o;4552:125::-;4629:4;4656:7;:14;4664:5;4656:14;;;;;;;;;;;;;;;;;;;;;;;;;4649:21;;4552:125;;;:::o;4436:110::-;4502:5;4530:9;;;;;;;;;;;4523:16;;4436:110;:::o;3419:501::-;244:4:14;222:27;;:10;:27;;;214:36;;;;;;;;3609:1:10;3597:8;:13;;;;3589:22;;;;;;;;3670:7;:17;3678:8;3670:17;;;;;;;;;;;;;;;;;;;;;;;;;3669:18;3661:27;;;;;;;;3793:8;3768:33;;:6;3775:13;3768:21;;;;;;;;;;;;;;;;;;;;;;;;;;;:33;;;3760:42;;;;;;;;3832:5;3812:7;:17;3820:8;3812:17;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;3867:4;3847:7;:17;3855:8;3847:17;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;3905:8;3881:6;3888:13;3881:21;;;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;3419:501;;;:::o;2499:599::-;244:4:14;222:27;;:10;:27;;;214:36;;;;;;;;2727:10:10;2706:31;;2722:1;2706:6;:13;;;;:17;:31;;2698:40;;;;;;;;2840:5;2818:27;;:6;2825:10;2818:18;;;;;;;;;;;;;;;;;;;;;;;;;;;:27;;;2810:36;;;;;;;;2873:5;2856:7;:14;2864:5;2856:14;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;2909:6;2932:1;2916:6;:13;;;;:17;2909:25;;;;;;;;;;;;;;;;;;;;;;;;;;;2888:6;2895:10;2888:18;;;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;2944:6;:15;;;;;;;;;;;;:::i;:::-;;3040:10;3027:23;;:9;;;;;;;;;;;:23;;;;3023:68;;;3064:27;3080:10;3064:15;:27::i;:::-;3023:68;2499:599;;;:::o;4759:111::-;4825:9;4857:6;4850:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4759:111;:::o;4109:321::-;244:4:14;222:27;;:10;:27;;;214:36;;;;;;;;4291:6:10;:13;;;;4277:10;:27;;;;4269:36;;;;;;;;4389:1;4375:10;:15;;;;4367:24;;;;;;;;4413:10;4401:9;;:22;;;;;;;;;;;;;;;;;;4109:321;:::o;240:4632::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", + "source": "pragma solidity 0.4.23;\nimport \"./SelfAuthorized.sol\";\n\n/// @title OwnerManager - Manages a set of owners and a threshold to perform actions.\n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract OwnerManager is SelfAuthorized {\n\n address[] public owners;\n uint8 public threshold;\n\n // isOwner mapping allows to check if an address is a Safe owner.\n mapping (address => bool) public isOwner;\n\n /// @dev Setup function sets initial storage of contract.\n /// @param _owners List of Safe owners.\n /// @param _threshold Number of required confirmations for a Safe transaction.\n function setupOwners(address[] _owners, uint8 _threshold)\n internal\n {\n // Threshold can only be 0 at initialization.\n // Check ensures that setup function can only be called once.\n require(threshold == 0);\n // Validate that threshold is smaller than number of added owners.\n require(_threshold <= _owners.length);\n // There has to be at least one Safe owner.\n require(_threshold >= 1);\n // Initializing Safe owners.\n for (uint256 i = 0; i < _owners.length; i++) {\n // Owner address cannot be null.\n address owner = _owners[i];\n require(owner != 0);\n // No duplicate owners allowed.\n require(!isOwner[owner]);\n isOwner[owner] = true;\n }\n owners = _owners;\n threshold = _threshold;\n }\n\n /// @dev Allows to add a new owner to the Safe and update the threshold at the same time.\n /// This can only be done via a Safe transaction.\n /// @param owner New owner address.\n /// @param _threshold New threshold.\n function addOwner(address owner, uint8 _threshold)\n public\n authorized\n {\n // Owner address cannot be null.\n require(owner != 0);\n // No duplicate owners allowed.\n require(!isOwner[owner]);\n owners.push(owner);\n isOwner[owner] = true;\n // Change threshold if threshold was changed.\n if (threshold != _threshold)\n changeThreshold(_threshold);\n }\n\n /// @dev Allows to remove an owner from the Safe and update the threshold at the same time.\n /// This can only be done via a Safe transaction.\n /// @param ownerIndex Array index position of owner address to be removed.\n /// @param owner Owner address to be removed.\n /// @param _threshold New threshold.\n function removeOwner(uint256 ownerIndex, address owner, uint8 _threshold)\n public\n authorized\n {\n // Only allow to remove an owner, if threshold can still be reached.\n require(owners.length - 1 >= _threshold);\n // Validate owner address corresponds to owner index.\n require(owners[ownerIndex] == owner);\n isOwner[owner] = false;\n owners[ownerIndex] = owners[owners.length - 1];\n owners.length--;\n // Change threshold if threshold was changed.\n if (threshold != _threshold)\n changeThreshold(_threshold);\n }\n\n /// @dev Allows to replace an owner from the Safe with another address.\n /// This can only be done via a Safe transaction.\n /// @param oldOwnerIndex Array index position of owner address to be replaced.\n /// @param oldOwner Owner address to be replaced.\n /// @param newOwner New owner address.\n function replaceOwner(uint256 oldOwnerIndex, address oldOwner, address newOwner)\n public\n authorized\n {\n // Owner address cannot be null.\n require(newOwner != 0);\n // No duplicate owners allowed.\n require(!isOwner[newOwner]);\n // Validate owner address corresponds to owner index.\n require(owners[oldOwnerIndex] == oldOwner);\n isOwner[oldOwner] = false;\n isOwner[newOwner] = true;\n owners[oldOwnerIndex] = newOwner;\n }\n\n /// @dev Allows to update the number of required confirmations by Safe owners.\n /// This can only be done via a Safe transaction.\n /// @param _threshold New threshold.\n function changeThreshold(uint8 _threshold)\n public\n authorized\n {\n // Validate that threshold is smaller than number of owners.\n require(_threshold <= owners.length);\n // There has to be at least one Safe owner.\n require(_threshold >= 1);\n threshold = _threshold;\n }\n\n function threshold()\n public\n view\n returns (uint8)\n {\n return threshold;\n }\n\n function isOwner(address owner)\n public\n view\n returns (bool)\n {\n return isOwner[owner];\n }\n\n /// @dev Returns array of owners.\n /// @return Array of Safe owners.\n function getOwners()\n public\n view\n returns (address[])\n {\n return owners;\n }\n}\n", + "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", + "ast": { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", + "exportedSymbols": { + "OwnerManager": [ + 1438 + ] + }, + "id": 1439, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1144, + "literals": [ + "solidity", + "0.4", + ".23" + ], + "nodeType": "PragmaDirective", + "src": "0:23:10" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/SelfAuthorized.sol", + "file": "./SelfAuthorized.sol", + "id": 1145, + "nodeType": "ImportDirective", + "scope": 1439, + "sourceUnit": 1560, + "src": "24:30:10", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 1146, + "name": "SelfAuthorized", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1559, + "src": "265:14:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SelfAuthorized_$1559", + "typeString": "contract SelfAuthorized" + } + }, + "id": 1147, + "nodeType": "InheritanceSpecifier", + "src": "265:14:10" + } + ], + "contractDependencies": [ + 1559 + ], + "contractKind": "contract", + "documentation": "@title OwnerManager - Manages a set of owners and a threshold to perform actions.\n @author Stefan George - \n @author Richard Meissner - ", + "fullyImplemented": true, + "id": 1438, + "linearizedBaseContracts": [ + 1438, + 1559 + ], + "name": "OwnerManager", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 1150, + "name": "owners", + "nodeType": "VariableDeclaration", + "scope": 1438, + "src": "287:23:10", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 1148, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "287:7:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1149, + "length": null, + "nodeType": "ArrayTypeName", + "src": "287:9:10", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 1152, + "name": "threshold", + "nodeType": "VariableDeclaration", + "scope": 1438, + "src": "316:22:10", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 1151, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "316:5:10", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 1156, + "name": "isOwner", + "nodeType": "VariableDeclaration", + "scope": 1438, + "src": "415:40:10", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "typeName": { + "id": 1155, + "keyType": { + "id": 1153, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "424:7:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "415:25:10", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "valueType": { + "id": 1154, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "435:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "value": null, + "visibility": "public" + }, + { + "body": { + "id": 1229, + "nodeType": "Block", + "src": "730:767:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 1167, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1165, + "name": "threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1152 + ], + "referencedDeclaration": 1152, + "src": "872:9:10", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1166, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "885:1:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "872:14:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1164, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "864:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1168, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "864:23:10", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1169, + "nodeType": "ExpressionStatement", + "src": "864:23:10" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1174, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1171, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1161, + "src": "980:10:10", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1172, + "name": "_owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1159, + "src": "994:7:10", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 1173, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "994:14:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "980:28:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1170, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "972:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1175, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "972:37:10", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1176, + "nodeType": "ExpressionStatement", + "src": "972:37:10" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 1180, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1178, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1161, + "src": "1079:10:10", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 1179, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1093:1:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "1079:15:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1177, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "1071:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1181, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1071:24:10", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1182, + "nodeType": "ExpressionStatement", + "src": "1071:24:10" + }, + { + "body": { + "id": 1219, + "nodeType": "Block", + "src": "1187:246:10", + "statements": [ + { + "assignments": [ + 1195 + ], + "declarations": [ + { + "constant": false, + "id": 1195, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 1230, + "src": "1246:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1194, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1246:7:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1199, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1196, + "name": "_owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1159, + "src": "1262:7:10", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 1198, + "indexExpression": { + "argumentTypes": null, + "id": 1197, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1184, + "src": "1270:1:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1262:10:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1246:26:10" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1203, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1201, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1195, + "src": "1294:5:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1202, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1303:1:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1294:10:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1200, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "1286:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1204, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1286:19:10", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1205, + "nodeType": "ExpressionStatement", + "src": "1286:19:10" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1210, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "1371:15:10", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1207, + "name": "isOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1156 + ], + "referencedDeclaration": 1156, + "src": "1372:7:10", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1209, + "indexExpression": { + "argumentTypes": null, + "id": 1208, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1195, + "src": "1380:5:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1372:14:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1206, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "1363:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1211, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1363:24:10", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1212, + "nodeType": "ExpressionStatement", + "src": "1363:24:10" + }, + { + "expression": { + "argumentTypes": null, + "id": 1217, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1213, + "name": "isOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1156 + ], + "referencedDeclaration": 1156, + "src": "1401:7:10", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1215, + "indexExpression": { + "argumentTypes": null, + "id": 1214, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1195, + "src": "1409:5:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1401:14:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1216, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1418:4:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "1401:21:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1218, + "nodeType": "ExpressionStatement", + "src": "1401:21:10" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1190, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1187, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1184, + "src": "1162:1:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1188, + "name": "_owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1159, + "src": "1166:7:10", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 1189, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1166:14:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1162:18:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1220, + "initializationExpression": { + "assignments": [ + 1184 + ], + "declarations": [ + { + "constant": false, + "id": 1184, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 1230, + "src": "1147:9:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1183, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1147:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1186, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 1185, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1159:1:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "1147:13:10" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 1192, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "1182:3:10", + "subExpression": { + "argumentTypes": null, + "id": 1191, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1184, + "src": "1182:1:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1193, + "nodeType": "ExpressionStatement", + "src": "1182:3:10" + }, + "nodeType": "ForStatement", + "src": "1142:291:10" + }, + { + "expression": { + "argumentTypes": null, + "id": 1223, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1221, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1150, + "src": "1442:6:10", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1222, + "name": "_owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1159, + "src": "1451:7:10", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "src": "1442:16:10", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 1224, + "nodeType": "ExpressionStatement", + "src": "1442:16:10" + }, + { + "expression": { + "argumentTypes": null, + "id": 1227, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1225, + "name": "threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1152 + ], + "referencedDeclaration": 1152, + "src": "1468:9:10", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1226, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1161, + "src": "1480:10:10", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "1468:22:10", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 1228, + "nodeType": "ExpressionStatement", + "src": "1468:22:10" + } + ] + }, + "documentation": "@dev Setup function sets initial storage of contract.\n @param _owners List of Safe owners.\n @param _threshold Number of required confirmations for a Safe transaction.", + "id": 1230, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "setupOwners", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1162, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1159, + "name": "_owners", + "nodeType": "VariableDeclaration", + "scope": 1230, + "src": "672:17:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 1157, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "672:7:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1158, + "length": null, + "nodeType": "ArrayTypeName", + "src": "672:9:10", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1161, + "name": "_threshold", + "nodeType": "VariableDeclaration", + "scope": 1230, + "src": "691:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 1160, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "691:5:10", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "671:37:10" + }, + "payable": false, + "returnParameters": { + "id": 1163, + "nodeType": "ParameterList", + "parameters": [], + "src": "730:0:10" + }, + "scope": 1438, + "src": "651:846:10", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 1272, + "nodeType": "Block", + "src": "1826:342:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1242, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1240, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1232, + "src": "1885:5:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1241, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1894:1:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1885:10:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1239, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "1877:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1243, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1877:19:10", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1244, + "nodeType": "ExpressionStatement", + "src": "1877:19:10" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1249, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "1954:15:10", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1246, + "name": "isOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1156 + ], + "referencedDeclaration": 1156, + "src": "1955:7:10", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1248, + "indexExpression": { + "argumentTypes": null, + "id": 1247, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1232, + "src": "1963:5:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1955:14:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1245, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "1946:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1250, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1946:24:10", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1251, + "nodeType": "ExpressionStatement", + "src": "1946:24:10" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1255, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1232, + "src": "1992:5:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 1252, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1150, + "src": "1980:6:10", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 1254, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "push", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1980:11:10", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypush_nonpayable$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) returns (uint256)" + } + }, + "id": 1256, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1980:18:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1257, + "nodeType": "ExpressionStatement", + "src": "1980:18:10" + }, + { + "expression": { + "argumentTypes": null, + "id": 1262, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1258, + "name": "isOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1156 + ], + "referencedDeclaration": 1156, + "src": "2008:7:10", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1260, + "indexExpression": { + "argumentTypes": null, + "id": 1259, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1232, + "src": "2016:5:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2008:14:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1261, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2025:4:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "2008:21:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1263, + "nodeType": "ExpressionStatement", + "src": "2008:21:10" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 1266, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1264, + "name": "threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1152 + ], + "referencedDeclaration": 1152, + "src": "2097:9:10", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "id": 1265, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1234, + "src": "2110:10:10", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "2097:23:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1271, + "nodeType": "IfStatement", + "src": "2093:68:10", + "trueBody": { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1268, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1234, + "src": "2150:10:10", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "id": 1267, + "name": "changeThreshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1408, + "src": "2134:15:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$returns$__$", + "typeString": "function (uint8)" + } + }, + "id": 1269, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2134:27:10", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1270, + "nodeType": "ExpressionStatement", + "src": "2134:27:10" + } + } + ] + }, + "documentation": "@dev Allows to add a new owner to the Safe and update the threshold at the same time.\n This can only be done via a Safe transaction.\n @param owner New owner address.\n @param _threshold New threshold.", + "id": 1273, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 1237, + "modifierName": { + "argumentTypes": null, + "id": 1236, + "name": "authorized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1558, + "src": "1811:10:10", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "1811:10:10" + } + ], + "name": "addOwner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1235, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1232, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 1273, + "src": "1755:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1231, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1755:7:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1234, + "name": "_threshold", + "nodeType": "VariableDeclaration", + "scope": 1273, + "src": "1770:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 1233, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1770:5:10", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1754:33:10" + }, + "payable": false, + "returnParameters": { + "id": 1238, + "nodeType": "ParameterList", + "parameters": [], + "src": "1826:0:10" + }, + "scope": 1438, + "src": "1737:431:10", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1331, + "nodeType": "Block", + "src": "2611:487:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1290, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1288, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1285, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1150, + "src": "2706:6:10", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 1286, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2706:13:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 1287, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2722:1:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "2706:17:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 1289, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1279, + "src": "2727:10:10", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "2706:31:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1284, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "2698:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1291, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2698:40:10", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1292, + "nodeType": "ExpressionStatement", + "src": "2698:40:10" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1298, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1294, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1150, + "src": "2818:6:10", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 1296, + "indexExpression": { + "argumentTypes": null, + "id": 1295, + "name": "ownerIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1275, + "src": "2825:10:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2818:18:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 1297, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1277, + "src": "2840:5:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2818:27:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1293, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "2810:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1299, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2810:36:10", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1300, + "nodeType": "ExpressionStatement", + "src": "2810:36:10" + }, + { + "expression": { + "argumentTypes": null, + "id": 1305, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1301, + "name": "isOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1156 + ], + "referencedDeclaration": 1156, + "src": "2856:7:10", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1303, + "indexExpression": { + "argumentTypes": null, + "id": 1302, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1277, + "src": "2864:5:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2856:14:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 1304, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2873:5:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "2856:22:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1306, + "nodeType": "ExpressionStatement", + "src": "2856:22:10" + }, + { + "expression": { + "argumentTypes": null, + "id": 1316, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1307, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1150, + "src": "2888:6:10", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 1309, + "indexExpression": { + "argumentTypes": null, + "id": 1308, + "name": "ownerIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1275, + "src": "2895:10:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2888:18:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1310, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1150, + "src": "2909:6:10", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 1315, + "indexExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1314, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1311, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1150, + "src": "2916:6:10", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 1312, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2916:13:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 1313, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2932:1:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "2916:17:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2909:25:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2888:46:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1317, + "nodeType": "ExpressionStatement", + "src": "2888:46:10" + }, + { + "expression": { + "argumentTypes": null, + "id": 1321, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "--", + "prefix": false, + "src": "2944:15:10", + "subExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1318, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1150, + "src": "2944:6:10", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 1320, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2944:13:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1322, + "nodeType": "ExpressionStatement", + "src": "2944:15:10" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 1325, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1323, + "name": "threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1152 + ], + "referencedDeclaration": 1152, + "src": "3027:9:10", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "id": 1324, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1279, + "src": "3040:10:10", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "3027:23:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1330, + "nodeType": "IfStatement", + "src": "3023:68:10", + "trueBody": { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1327, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1279, + "src": "3080:10:10", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "id": 1326, + "name": "changeThreshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1408, + "src": "3064:15:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$returns$__$", + "typeString": "function (uint8)" + } + }, + "id": 1328, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3064:27:10", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1329, + "nodeType": "ExpressionStatement", + "src": "3064:27:10" + } + } + ] + }, + "documentation": "@dev Allows to remove an owner from the Safe and update the threshold at the same time.\n This can only be done via a Safe transaction.\n @param ownerIndex Array index position of owner address to be removed.\n @param owner Owner address to be removed.\n @param _threshold New threshold.", + "id": 1332, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 1282, + "modifierName": { + "argumentTypes": null, + "id": 1281, + "name": "authorized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1558, + "src": "2596:10:10", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "2596:10:10" + } + ], + "name": "removeOwner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1280, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1275, + "name": "ownerIndex", + "nodeType": "VariableDeclaration", + "scope": 1332, + "src": "2520:18:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1274, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2520:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1277, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 1332, + "src": "2540:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1276, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2540:7:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1279, + "name": "_threshold", + "nodeType": "VariableDeclaration", + "scope": 1332, + "src": "2555:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 1278, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "2555:5:10", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2519:53:10" + }, + "payable": false, + "returnParameters": { + "id": 1283, + "nodeType": "ParameterList", + "parameters": [], + "src": "2611:0:10" + }, + "scope": 1438, + "src": "2499:599:10", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1382, + "nodeType": "Block", + "src": "3538:382:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1346, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1344, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1338, + "src": "3597:8:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1345, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3609:1:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3597:13:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1343, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "3589:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1347, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3589:22:10", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1348, + "nodeType": "ExpressionStatement", + "src": "3589:22:10" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1353, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "3669:18:10", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1350, + "name": "isOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1156 + ], + "referencedDeclaration": 1156, + "src": "3670:7:10", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1352, + "indexExpression": { + "argumentTypes": null, + "id": 1351, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1338, + "src": "3678:8:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3670:17:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1349, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "3661:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1354, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3661:27:10", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1355, + "nodeType": "ExpressionStatement", + "src": "3661:27:10" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1361, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1357, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1150, + "src": "3768:6:10", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 1359, + "indexExpression": { + "argumentTypes": null, + "id": 1358, + "name": "oldOwnerIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1334, + "src": "3775:13:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3768:21:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 1360, + "name": "oldOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1336, + "src": "3793:8:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3768:33:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1356, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "3760:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1362, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3760:42:10", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1363, + "nodeType": "ExpressionStatement", + "src": "3760:42:10" + }, + { + "expression": { + "argumentTypes": null, + "id": 1368, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1364, + "name": "isOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1156 + ], + "referencedDeclaration": 1156, + "src": "3812:7:10", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1366, + "indexExpression": { + "argumentTypes": null, + "id": 1365, + "name": "oldOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1336, + "src": "3820:8:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3812:17:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 1367, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3832:5:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "3812:25:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1369, + "nodeType": "ExpressionStatement", + "src": "3812:25:10" + }, + { + "expression": { + "argumentTypes": null, + "id": 1374, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1370, + "name": "isOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1156 + ], + "referencedDeclaration": 1156, + "src": "3847:7:10", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1372, + "indexExpression": { + "argumentTypes": null, + "id": 1371, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1338, + "src": "3855:8:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3847:17:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1373, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3867:4:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "3847:24:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1375, + "nodeType": "ExpressionStatement", + "src": "3847:24:10" + }, + { + "expression": { + "argumentTypes": null, + "id": 1380, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1376, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1150, + "src": "3881:6:10", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 1378, + "indexExpression": { + "argumentTypes": null, + "id": 1377, + "name": "oldOwnerIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1334, + "src": "3888:13:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3881:21:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1379, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1338, + "src": "3905:8:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3881:32:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1381, + "nodeType": "ExpressionStatement", + "src": "3881:32:10" + } + ] + }, + "documentation": "@dev Allows to replace an owner from the Safe with another address.\n This can only be done via a Safe transaction.\n @param oldOwnerIndex Array index position of owner address to be replaced.\n @param oldOwner Owner address to be replaced.\n @param newOwner New owner address.", + "id": 1383, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 1341, + "modifierName": { + "argumentTypes": null, + "id": 1340, + "name": "authorized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1558, + "src": "3523:10:10", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "3523:10:10" + } + ], + "name": "replaceOwner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1339, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1334, + "name": "oldOwnerIndex", + "nodeType": "VariableDeclaration", + "scope": 1383, + "src": "3441:21:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1333, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3441:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1336, + "name": "oldOwner", + "nodeType": "VariableDeclaration", + "scope": 1383, + "src": "3464:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1335, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3464:7:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1338, + "name": "newOwner", + "nodeType": "VariableDeclaration", + "scope": 1383, + "src": "3482:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1337, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3482:7:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3440:59:10" + }, + "payable": false, + "returnParameters": { + "id": 1342, + "nodeType": "ParameterList", + "parameters": [], + "src": "3538:0:10" + }, + "scope": 1438, + "src": "3419:501:10", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1407, + "nodeType": "Block", + "src": "4190:240:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1394, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1391, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1385, + "src": "4277:10:10", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1392, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1150, + "src": "4291:6:10", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 1393, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4291:13:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4277:27:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1390, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "4269:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1395, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4269:36:10", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1396, + "nodeType": "ExpressionStatement", + "src": "4269:36:10" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 1400, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1398, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1385, + "src": "4375:10:10", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 1399, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4389:1:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "4375:15:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1397, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "4367:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1401, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4367:24:10", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1402, + "nodeType": "ExpressionStatement", + "src": "4367:24:10" + }, + { + "expression": { + "argumentTypes": null, + "id": 1405, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1403, + "name": "threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1152 + ], + "referencedDeclaration": 1152, + "src": "4401:9:10", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1404, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1385, + "src": "4413:10:10", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "4401:22:10", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 1406, + "nodeType": "ExpressionStatement", + "src": "4401:22:10" + } + ] + }, + "documentation": "@dev Allows to update the number of required confirmations by Safe owners.\n This can only be done via a Safe transaction.\n @param _threshold New threshold.", + "id": 1408, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 1388, + "modifierName": { + "argumentTypes": null, + "id": 1387, + "name": "authorized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1558, + "src": "4175:10:10", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "4175:10:10" + } + ], + "name": "changeThreshold", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1386, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1385, + "name": "_threshold", + "nodeType": "VariableDeclaration", + "scope": 1408, + "src": "4134:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 1384, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "4134:5:10", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4133:18:10" + }, + "payable": false, + "returnParameters": { + "id": 1389, + "nodeType": "ParameterList", + "parameters": [], + "src": "4190:0:10" + }, + "scope": 1438, + "src": "4109:321:10", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1415, + "nodeType": "Block", + "src": "4513:33:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1413, + "name": "threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1152 + ], + "referencedDeclaration": 1152, + "src": "4530:9:10", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "functionReturnParameters": 1412, + "id": 1414, + "nodeType": "Return", + "src": "4523:16:10" + } + ] + }, + "documentation": null, + "id": 1416, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "threshold", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1409, + "nodeType": "ParameterList", + "parameters": [], + "src": "4454:2:10" + }, + "payable": false, + "returnParameters": { + "id": 1412, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1411, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1416, + "src": "4502:5:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 1410, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "4502:5:10", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4501:7:10" + }, + "scope": 1438, + "src": "4436:110:10", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1427, + "nodeType": "Block", + "src": "4639:38:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1423, + "name": "isOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1156 + ], + "referencedDeclaration": 1156, + "src": "4656:7:10", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1425, + "indexExpression": { + "argumentTypes": null, + "id": 1424, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1418, + "src": "4664:5:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4656:14:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 1422, + "id": 1426, + "nodeType": "Return", + "src": "4649:21:10" + } + ] + }, + "documentation": null, + "id": 1428, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "isOwner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1419, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1418, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 1428, + "src": "4569:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1417, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4569:7:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4568:15:10" + }, + "payable": false, + "returnParameters": { + "id": 1422, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1421, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1428, + "src": "4629:4:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1420, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4629:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4628:6:10" + }, + "scope": 1438, + "src": "4552:125:10", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1436, + "nodeType": "Block", + "src": "4840:30:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1434, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1150, + "src": "4857:6:10", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "functionReturnParameters": 1433, + "id": 1435, + "nodeType": "Return", + "src": "4850:13:10" + } + ] + }, + "documentation": "@dev Returns array of owners.\n @return Array of Safe owners.", + "id": 1437, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "getOwners", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1429, + "nodeType": "ParameterList", + "parameters": [], + "src": "4777:2:10" + }, + "payable": false, + "returnParameters": { + "id": 1433, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1432, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1437, + "src": "4825:9:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 1430, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4825:7:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1431, + "length": null, + "nodeType": "ArrayTypeName", + "src": "4825:9:10", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4824:11:10" + }, + "scope": 1438, + "src": "4759:111:10", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 1439, + "src": "240:4632:10" + } + ], + "src": "0:4873:10" + }, + "legacyAST": { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", + "exportedSymbols": { + "OwnerManager": [ + 1438 + ] + }, + "id": 1439, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1144, + "literals": [ + "solidity", + "0.4", + ".23" + ], + "nodeType": "PragmaDirective", + "src": "0:23:10" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/SelfAuthorized.sol", + "file": "./SelfAuthorized.sol", + "id": 1145, + "nodeType": "ImportDirective", + "scope": 1439, + "sourceUnit": 1560, + "src": "24:30:10", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 1146, + "name": "SelfAuthorized", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1559, + "src": "265:14:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SelfAuthorized_$1559", + "typeString": "contract SelfAuthorized" + } + }, + "id": 1147, + "nodeType": "InheritanceSpecifier", + "src": "265:14:10" + } + ], + "contractDependencies": [ + 1559 + ], + "contractKind": "contract", + "documentation": "@title OwnerManager - Manages a set of owners and a threshold to perform actions.\n @author Stefan George - \n @author Richard Meissner - ", + "fullyImplemented": true, + "id": 1438, + "linearizedBaseContracts": [ + 1438, + 1559 + ], + "name": "OwnerManager", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 1150, + "name": "owners", + "nodeType": "VariableDeclaration", + "scope": 1438, + "src": "287:23:10", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 1148, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "287:7:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1149, + "length": null, + "nodeType": "ArrayTypeName", + "src": "287:9:10", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 1152, + "name": "threshold", + "nodeType": "VariableDeclaration", + "scope": 1438, + "src": "316:22:10", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 1151, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "316:5:10", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 1156, + "name": "isOwner", + "nodeType": "VariableDeclaration", + "scope": 1438, + "src": "415:40:10", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "typeName": { + "id": 1155, + "keyType": { + "id": 1153, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "424:7:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "415:25:10", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "valueType": { + "id": 1154, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "435:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "value": null, + "visibility": "public" + }, + { + "body": { + "id": 1229, + "nodeType": "Block", + "src": "730:767:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 1167, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1165, + "name": "threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1152 + ], + "referencedDeclaration": 1152, + "src": "872:9:10", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1166, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "885:1:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "872:14:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1164, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "864:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1168, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "864:23:10", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1169, + "nodeType": "ExpressionStatement", + "src": "864:23:10" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1174, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1171, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1161, + "src": "980:10:10", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1172, + "name": "_owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1159, + "src": "994:7:10", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 1173, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "994:14:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "980:28:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1170, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "972:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1175, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "972:37:10", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1176, + "nodeType": "ExpressionStatement", + "src": "972:37:10" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 1180, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1178, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1161, + "src": "1079:10:10", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 1179, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1093:1:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "1079:15:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1177, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "1071:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1181, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1071:24:10", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1182, + "nodeType": "ExpressionStatement", + "src": "1071:24:10" + }, + { + "body": { + "id": 1219, + "nodeType": "Block", + "src": "1187:246:10", + "statements": [ + { + "assignments": [ + 1195 + ], + "declarations": [ + { + "constant": false, + "id": 1195, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 1230, + "src": "1246:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1194, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1246:7:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1199, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1196, + "name": "_owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1159, + "src": "1262:7:10", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 1198, + "indexExpression": { + "argumentTypes": null, + "id": 1197, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1184, + "src": "1270:1:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1262:10:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1246:26:10" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1203, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1201, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1195, + "src": "1294:5:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1202, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1303:1:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1294:10:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1200, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "1286:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1204, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1286:19:10", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1205, + "nodeType": "ExpressionStatement", + "src": "1286:19:10" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1210, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "1371:15:10", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1207, + "name": "isOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1156 + ], + "referencedDeclaration": 1156, + "src": "1372:7:10", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1209, + "indexExpression": { + "argumentTypes": null, + "id": 1208, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1195, + "src": "1380:5:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1372:14:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1206, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "1363:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1211, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1363:24:10", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1212, + "nodeType": "ExpressionStatement", + "src": "1363:24:10" + }, + { + "expression": { + "argumentTypes": null, + "id": 1217, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1213, + "name": "isOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1156 + ], + "referencedDeclaration": 1156, + "src": "1401:7:10", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1215, + "indexExpression": { + "argumentTypes": null, + "id": 1214, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1195, + "src": "1409:5:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1401:14:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1216, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1418:4:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "1401:21:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1218, + "nodeType": "ExpressionStatement", + "src": "1401:21:10" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1190, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1187, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1184, + "src": "1162:1:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1188, + "name": "_owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1159, + "src": "1166:7:10", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 1189, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1166:14:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1162:18:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1220, + "initializationExpression": { + "assignments": [ + 1184 + ], + "declarations": [ + { + "constant": false, + "id": 1184, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 1230, + "src": "1147:9:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1183, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1147:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1186, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 1185, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1159:1:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "1147:13:10" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 1192, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "1182:3:10", + "subExpression": { + "argumentTypes": null, + "id": 1191, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1184, + "src": "1182:1:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1193, + "nodeType": "ExpressionStatement", + "src": "1182:3:10" + }, + "nodeType": "ForStatement", + "src": "1142:291:10" + }, + { + "expression": { + "argumentTypes": null, + "id": 1223, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1221, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1150, + "src": "1442:6:10", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1222, + "name": "_owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1159, + "src": "1451:7:10", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "src": "1442:16:10", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 1224, + "nodeType": "ExpressionStatement", + "src": "1442:16:10" + }, + { + "expression": { + "argumentTypes": null, + "id": 1227, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1225, + "name": "threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1152 + ], + "referencedDeclaration": 1152, + "src": "1468:9:10", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1226, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1161, + "src": "1480:10:10", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "1468:22:10", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 1228, + "nodeType": "ExpressionStatement", + "src": "1468:22:10" + } + ] + }, + "documentation": "@dev Setup function sets initial storage of contract.\n @param _owners List of Safe owners.\n @param _threshold Number of required confirmations for a Safe transaction.", + "id": 1230, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "setupOwners", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1162, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1159, + "name": "_owners", + "nodeType": "VariableDeclaration", + "scope": 1230, + "src": "672:17:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 1157, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "672:7:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1158, + "length": null, + "nodeType": "ArrayTypeName", + "src": "672:9:10", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1161, + "name": "_threshold", + "nodeType": "VariableDeclaration", + "scope": 1230, + "src": "691:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 1160, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "691:5:10", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "671:37:10" + }, + "payable": false, + "returnParameters": { + "id": 1163, + "nodeType": "ParameterList", + "parameters": [], + "src": "730:0:10" + }, + "scope": 1438, + "src": "651:846:10", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 1272, + "nodeType": "Block", + "src": "1826:342:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1242, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1240, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1232, + "src": "1885:5:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1241, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1894:1:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1885:10:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1239, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "1877:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1243, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1877:19:10", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1244, + "nodeType": "ExpressionStatement", + "src": "1877:19:10" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1249, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "1954:15:10", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1246, + "name": "isOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1156 + ], + "referencedDeclaration": 1156, + "src": "1955:7:10", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1248, + "indexExpression": { + "argumentTypes": null, + "id": 1247, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1232, + "src": "1963:5:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1955:14:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1245, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "1946:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1250, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1946:24:10", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1251, + "nodeType": "ExpressionStatement", + "src": "1946:24:10" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1255, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1232, + "src": "1992:5:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 1252, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1150, + "src": "1980:6:10", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 1254, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "push", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1980:11:10", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypush_nonpayable$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) returns (uint256)" + } + }, + "id": 1256, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1980:18:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1257, + "nodeType": "ExpressionStatement", + "src": "1980:18:10" + }, + { + "expression": { + "argumentTypes": null, + "id": 1262, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1258, + "name": "isOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1156 + ], + "referencedDeclaration": 1156, + "src": "2008:7:10", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1260, + "indexExpression": { + "argumentTypes": null, + "id": 1259, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1232, + "src": "2016:5:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2008:14:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1261, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2025:4:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "2008:21:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1263, + "nodeType": "ExpressionStatement", + "src": "2008:21:10" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 1266, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1264, + "name": "threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1152 + ], + "referencedDeclaration": 1152, + "src": "2097:9:10", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "id": 1265, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1234, + "src": "2110:10:10", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "2097:23:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1271, + "nodeType": "IfStatement", + "src": "2093:68:10", + "trueBody": { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1268, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1234, + "src": "2150:10:10", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "id": 1267, + "name": "changeThreshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1408, + "src": "2134:15:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$returns$__$", + "typeString": "function (uint8)" + } + }, + "id": 1269, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2134:27:10", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1270, + "nodeType": "ExpressionStatement", + "src": "2134:27:10" + } + } + ] + }, + "documentation": "@dev Allows to add a new owner to the Safe and update the threshold at the same time.\n This can only be done via a Safe transaction.\n @param owner New owner address.\n @param _threshold New threshold.", + "id": 1273, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 1237, + "modifierName": { + "argumentTypes": null, + "id": 1236, + "name": "authorized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1558, + "src": "1811:10:10", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "1811:10:10" + } + ], + "name": "addOwner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1235, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1232, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 1273, + "src": "1755:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1231, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1755:7:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1234, + "name": "_threshold", + "nodeType": "VariableDeclaration", + "scope": 1273, + "src": "1770:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 1233, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1770:5:10", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1754:33:10" + }, + "payable": false, + "returnParameters": { + "id": 1238, + "nodeType": "ParameterList", + "parameters": [], + "src": "1826:0:10" + }, + "scope": 1438, + "src": "1737:431:10", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1331, + "nodeType": "Block", + "src": "2611:487:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1290, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1288, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1285, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1150, + "src": "2706:6:10", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 1286, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2706:13:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 1287, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2722:1:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "2706:17:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 1289, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1279, + "src": "2727:10:10", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "2706:31:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1284, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "2698:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1291, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2698:40:10", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1292, + "nodeType": "ExpressionStatement", + "src": "2698:40:10" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1298, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1294, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1150, + "src": "2818:6:10", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 1296, + "indexExpression": { + "argumentTypes": null, + "id": 1295, + "name": "ownerIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1275, + "src": "2825:10:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2818:18:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 1297, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1277, + "src": "2840:5:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2818:27:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1293, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "2810:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1299, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2810:36:10", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1300, + "nodeType": "ExpressionStatement", + "src": "2810:36:10" + }, + { + "expression": { + "argumentTypes": null, + "id": 1305, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1301, + "name": "isOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1156 + ], + "referencedDeclaration": 1156, + "src": "2856:7:10", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1303, + "indexExpression": { + "argumentTypes": null, + "id": 1302, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1277, + "src": "2864:5:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2856:14:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 1304, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2873:5:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "2856:22:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1306, + "nodeType": "ExpressionStatement", + "src": "2856:22:10" + }, + { + "expression": { + "argumentTypes": null, + "id": 1316, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1307, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1150, + "src": "2888:6:10", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 1309, + "indexExpression": { + "argumentTypes": null, + "id": 1308, + "name": "ownerIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1275, + "src": "2895:10:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2888:18:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1310, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1150, + "src": "2909:6:10", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 1315, + "indexExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1314, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1311, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1150, + "src": "2916:6:10", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 1312, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2916:13:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 1313, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2932:1:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "2916:17:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2909:25:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2888:46:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1317, + "nodeType": "ExpressionStatement", + "src": "2888:46:10" + }, + { + "expression": { + "argumentTypes": null, + "id": 1321, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "--", + "prefix": false, + "src": "2944:15:10", + "subExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1318, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1150, + "src": "2944:6:10", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 1320, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2944:13:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1322, + "nodeType": "ExpressionStatement", + "src": "2944:15:10" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 1325, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1323, + "name": "threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1152 + ], + "referencedDeclaration": 1152, + "src": "3027:9:10", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "id": 1324, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1279, + "src": "3040:10:10", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "3027:23:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1330, + "nodeType": "IfStatement", + "src": "3023:68:10", + "trueBody": { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1327, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1279, + "src": "3080:10:10", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "id": 1326, + "name": "changeThreshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1408, + "src": "3064:15:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$returns$__$", + "typeString": "function (uint8)" + } + }, + "id": 1328, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3064:27:10", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1329, + "nodeType": "ExpressionStatement", + "src": "3064:27:10" + } + } + ] + }, + "documentation": "@dev Allows to remove an owner from the Safe and update the threshold at the same time.\n This can only be done via a Safe transaction.\n @param ownerIndex Array index position of owner address to be removed.\n @param owner Owner address to be removed.\n @param _threshold New threshold.", + "id": 1332, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 1282, + "modifierName": { + "argumentTypes": null, + "id": 1281, + "name": "authorized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1558, + "src": "2596:10:10", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "2596:10:10" + } + ], + "name": "removeOwner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1280, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1275, + "name": "ownerIndex", + "nodeType": "VariableDeclaration", + "scope": 1332, + "src": "2520:18:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1274, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2520:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1277, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 1332, + "src": "2540:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1276, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2540:7:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1279, + "name": "_threshold", + "nodeType": "VariableDeclaration", + "scope": 1332, + "src": "2555:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 1278, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "2555:5:10", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2519:53:10" + }, + "payable": false, + "returnParameters": { + "id": 1283, + "nodeType": "ParameterList", + "parameters": [], + "src": "2611:0:10" + }, + "scope": 1438, + "src": "2499:599:10", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1382, + "nodeType": "Block", + "src": "3538:382:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1346, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1344, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1338, + "src": "3597:8:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1345, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3609:1:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3597:13:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1343, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "3589:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1347, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3589:22:10", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1348, + "nodeType": "ExpressionStatement", + "src": "3589:22:10" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1353, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "3669:18:10", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1350, + "name": "isOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1156 + ], + "referencedDeclaration": 1156, + "src": "3670:7:10", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1352, + "indexExpression": { + "argumentTypes": null, + "id": 1351, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1338, + "src": "3678:8:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3670:17:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1349, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "3661:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1354, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3661:27:10", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1355, + "nodeType": "ExpressionStatement", + "src": "3661:27:10" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1361, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1357, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1150, + "src": "3768:6:10", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 1359, + "indexExpression": { + "argumentTypes": null, + "id": 1358, + "name": "oldOwnerIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1334, + "src": "3775:13:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3768:21:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 1360, + "name": "oldOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1336, + "src": "3793:8:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3768:33:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1356, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "3760:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1362, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3760:42:10", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1363, + "nodeType": "ExpressionStatement", + "src": "3760:42:10" + }, + { + "expression": { + "argumentTypes": null, + "id": 1368, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1364, + "name": "isOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1156 + ], + "referencedDeclaration": 1156, + "src": "3812:7:10", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1366, + "indexExpression": { + "argumentTypes": null, + "id": 1365, + "name": "oldOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1336, + "src": "3820:8:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3812:17:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 1367, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3832:5:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "3812:25:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1369, + "nodeType": "ExpressionStatement", + "src": "3812:25:10" + }, + { + "expression": { + "argumentTypes": null, + "id": 1374, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1370, + "name": "isOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1156 + ], + "referencedDeclaration": 1156, + "src": "3847:7:10", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1372, + "indexExpression": { + "argumentTypes": null, + "id": 1371, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1338, + "src": "3855:8:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3847:17:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1373, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3867:4:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "3847:24:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 1375, + "nodeType": "ExpressionStatement", + "src": "3847:24:10" + }, + { + "expression": { + "argumentTypes": null, + "id": 1380, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1376, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1150, + "src": "3881:6:10", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 1378, + "indexExpression": { + "argumentTypes": null, + "id": 1377, + "name": "oldOwnerIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1334, + "src": "3888:13:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "3881:21:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1379, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1338, + "src": "3905:8:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "3881:32:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1381, + "nodeType": "ExpressionStatement", + "src": "3881:32:10" + } + ] + }, + "documentation": "@dev Allows to replace an owner from the Safe with another address.\n This can only be done via a Safe transaction.\n @param oldOwnerIndex Array index position of owner address to be replaced.\n @param oldOwner Owner address to be replaced.\n @param newOwner New owner address.", + "id": 1383, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 1341, + "modifierName": { + "argumentTypes": null, + "id": 1340, + "name": "authorized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1558, + "src": "3523:10:10", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "3523:10:10" + } + ], + "name": "replaceOwner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1339, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1334, + "name": "oldOwnerIndex", + "nodeType": "VariableDeclaration", + "scope": 1383, + "src": "3441:21:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1333, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3441:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1336, + "name": "oldOwner", + "nodeType": "VariableDeclaration", + "scope": 1383, + "src": "3464:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1335, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3464:7:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1338, + "name": "newOwner", + "nodeType": "VariableDeclaration", + "scope": 1383, + "src": "3482:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1337, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3482:7:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3440:59:10" + }, + "payable": false, + "returnParameters": { + "id": 1342, + "nodeType": "ParameterList", + "parameters": [], + "src": "3538:0:10" + }, + "scope": 1438, + "src": "3419:501:10", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1407, + "nodeType": "Block", + "src": "4190:240:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1394, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1391, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1385, + "src": "4277:10:10", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1392, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1150, + "src": "4291:6:10", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 1393, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4291:13:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4277:27:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1390, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "4269:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1395, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4269:36:10", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1396, + "nodeType": "ExpressionStatement", + "src": "4269:36:10" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 1400, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1398, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1385, + "src": "4375:10:10", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 1399, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4389:1:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "4375:15:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1397, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "4367:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1401, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4367:24:10", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1402, + "nodeType": "ExpressionStatement", + "src": "4367:24:10" + }, + { + "expression": { + "argumentTypes": null, + "id": 1405, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1403, + "name": "threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1152 + ], + "referencedDeclaration": 1152, + "src": "4401:9:10", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1404, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1385, + "src": "4413:10:10", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "4401:22:10", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 1406, + "nodeType": "ExpressionStatement", + "src": "4401:22:10" + } + ] + }, + "documentation": "@dev Allows to update the number of required confirmations by Safe owners.\n This can only be done via a Safe transaction.\n @param _threshold New threshold.", + "id": 1408, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 1388, + "modifierName": { + "argumentTypes": null, + "id": 1387, + "name": "authorized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1558, + "src": "4175:10:10", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "4175:10:10" + } + ], + "name": "changeThreshold", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1386, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1385, + "name": "_threshold", + "nodeType": "VariableDeclaration", + "scope": 1408, + "src": "4134:16:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 1384, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "4134:5:10", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4133:18:10" + }, + "payable": false, + "returnParameters": { + "id": 1389, + "nodeType": "ParameterList", + "parameters": [], + "src": "4190:0:10" + }, + "scope": 1438, + "src": "4109:321:10", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1415, + "nodeType": "Block", + "src": "4513:33:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1413, + "name": "threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1152 + ], + "referencedDeclaration": 1152, + "src": "4530:9:10", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "functionReturnParameters": 1412, + "id": 1414, + "nodeType": "Return", + "src": "4523:16:10" + } + ] + }, + "documentation": null, + "id": 1416, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "threshold", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1409, + "nodeType": "ParameterList", + "parameters": [], + "src": "4454:2:10" + }, + "payable": false, + "returnParameters": { + "id": 1412, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1411, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1416, + "src": "4502:5:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 1410, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "4502:5:10", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4501:7:10" + }, + "scope": 1438, + "src": "4436:110:10", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1427, + "nodeType": "Block", + "src": "4639:38:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1423, + "name": "isOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 1156 + ], + "referencedDeclaration": 1156, + "src": "4656:7:10", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 1425, + "indexExpression": { + "argumentTypes": null, + "id": 1424, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1418, + "src": "4664:5:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4656:14:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "functionReturnParameters": 1422, + "id": 1426, + "nodeType": "Return", + "src": "4649:21:10" + } + ] + }, + "documentation": null, + "id": 1428, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "isOwner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1419, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1418, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 1428, + "src": "4569:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1417, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4569:7:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4568:15:10" + }, + "payable": false, + "returnParameters": { + "id": 1422, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1421, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1428, + "src": "4629:4:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1420, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "4629:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4628:6:10" + }, + "scope": 1438, + "src": "4552:125:10", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1436, + "nodeType": "Block", + "src": "4840:30:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1434, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1150, + "src": "4857:6:10", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "functionReturnParameters": 1433, + "id": 1435, + "nodeType": "Return", + "src": "4850:13:10" + } + ] + }, + "documentation": "@dev Returns array of owners.\n @return Array of Safe owners.", + "id": 1437, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "getOwners", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1429, + "nodeType": "ParameterList", + "parameters": [], + "src": "4777:2:10" + }, + "payable": false, + "returnParameters": { + "id": 1433, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1432, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1437, + "src": "4825:9:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 1430, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4825:7:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1431, + "length": null, + "nodeType": "ArrayTypeName", + "src": "4825:9:10", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4824:11:10" + }, + "scope": 1438, + "src": "4759:111:10", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 1439, + "src": "240:4632:10" + } + ], + "src": "0:4873:10" + }, + "compiler": { + "name": "solc", + "version": "0.4.23+commit.124ca40d.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "2.0.0", + "updatedAt": "2018-05-10T10:43:07.899Z" +} \ No newline at end of file diff --git a/safe-contracts/build/contracts/PayingProxy.json b/safe-contracts/build/contracts/PayingProxy.json new file mode 100644 index 0000000000..4c74b5b87d --- /dev/null +++ b/safe-contracts/build/contracts/PayingProxy.json @@ -0,0 +1,738 @@ +{ + "contractName": "PayingProxy", + "abi": [ + { + "constant": true, + "inputs": [], + "name": "proxyType", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "implementation", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "name": "_masterCopy", + "type": "address" + }, + { + "name": "initializer", + "type": "bytes" + }, + { + "name": "funder", + "type": "address" + }, + { + "name": "amount", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "payable": true, + "stateMutability": "payable", + "type": "fallback" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b506040516102d13803806102d18339810180604052810190808051906020019092919080518201929190602001805190602001909291908051906020019092919050505083838160008173ffffffffffffffffffffffffffffffffffffffff161415151561007d57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505060008151111561010a5773ffffffffffffffffffffffffffffffffffffffff60005416600080835160208501846127105a03f46040513d6000823e6000821415610106573d81fd5b5050505b50508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610152573d6000803e3d6000fd5b505050505061016b806101666000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461008b5780635c60da1b146100b6575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e6000811415610086573d6000fd5b3d6000f35b34801561009757600080fd5b506100a061010d565b6040518082815260200191505060405180910390f35b3480156100c257600080fd5b506100cb610116565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006002905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a723058204a5e06b82db5d9aabe30490b09e6366d2451ec220560baef426b0510057dd99b0029", + "deployedBytecode": "0x60806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461008b5780635c60da1b146100b6575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e6000811415610086573d6000fd5b3d6000f35b34801561009757600080fd5b506100a061010d565b6040518082815260200191505060405180910390f35b3480156100c257600080fd5b506100cb610116565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006002905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a723058204a5e06b82db5d9aabe30490b09e6366d2451ec220560baef426b0510057dd99b0029", + "sourceMap": "414:457:11:-;;;675:194;8:9:-1;5:2;;;30:1;27;20:12;5:2;675:194:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;784:11;797;668::0;593:1:12;578:11;:16;;;;570:25;;;;;;;;618:11;605:10;;:24;;;;;;;;;;;;;;;;;;508:128;735:1:0;714:11;:18;:22;710:519;;;879:42;875:1;869:8;865:57;1043:1;1040;1026:11;1020:18;1013:4;1000:11;996:22;984:10;976:5;971:3;967:15;954:91;1079:4;1073:11;1124:14;1121:1;1116:3;1101:38;1171:1;1162:7;1159:14;1156:2;;;1188:14;1183:3;1176:27;1156:2;829:390;;;;610:625;;839:6:11;:15;;:23;855:6;839:23;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;839:23:11;675:194;;;;414:457;;;;;;", + "deployedSourceMap": "414:457:11:-;;;;;;;;;;;;;;;;;;;;;;;;;;915:42:12;911:1;905:8;901:57;990:14;987:1;984;971:34;1085:1;1082;1066:14;1063:1;1051:10;1046:3;1033:54;1121:16;1118:1;1115;1100:38;1166:1;1157:7;1154:14;1151:2;;;1181:16;1178:1;1171:27;1151:2;1223:16;1220:1;1213:27;1386:104;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1386:104:12;;;;;;;;;;;;;;;;;;;;;;;1262:118;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1262:118:12;;;;;;;;;;;;;;;;;;;;;;;;;;;1386:104;1452:7;1482:1;1475:8;;1386:104;:::o;1262:118::-;1333:7;1363:10;;;;;;;;;;;1356:17;;1262:118;:::o", + "source": "pragma solidity 0.4.23;\nimport \"./DelegateConstructorProxy.sol\";\n\n/// @title Paying Proxy - Generic proxy contract allows to execute all transactions applying the code of a master contract. It is possible to send along initialization data with the constructor. And sends funds after creation to a specified account.\n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract PayingProxy is DelegateConstructorProxy {\n\n /// @dev Constructor function sets address of master copy contract.\n /// @param _masterCopy Master copy address.\n /// @param initializer Data used for a delegate call to initialize the contract.\n constructor(address _masterCopy, bytes initializer, address funder, uint256 amount) DelegateConstructorProxy(_masterCopy, initializer)\n public\n {\n funder.transfer(amount);\n }\n}\n", + "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/PayingProxy.sol", + "ast": { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/PayingProxy.sol", + "exportedSymbols": { + "PayingProxy": [ + 1466 + ] + }, + "id": 1467, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1440, + "literals": [ + "solidity", + "0.4", + ".23" + ], + "nodeType": "PragmaDirective", + "src": "0:23:11" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/DelegateConstructorProxy.sol", + "file": "./DelegateConstructorProxy.sol", + "id": 1441, + "nodeType": "ImportDirective", + "scope": 1467, + "sourceUnit": 24, + "src": "24:40:11", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 1442, + "name": "DelegateConstructorProxy", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 23, + "src": "438:24:11", + "typeDescriptions": { + "typeIdentifier": "t_contract$_DelegateConstructorProxy_$23", + "typeString": "contract DelegateConstructorProxy" + } + }, + "id": 1443, + "nodeType": "InheritanceSpecifier", + "src": "438:24:11" + } + ], + "contractDependencies": [ + 23, + 1508 + ], + "contractKind": "contract", + "documentation": "@title Paying Proxy - Generic proxy contract allows to execute all transactions applying the code of a master contract. It is possible to send along initialization data with the constructor. And sends funds after creation to a specified account.\n @author Stefan George - \n @author Richard Meissner - ", + "fullyImplemented": true, + "id": 1466, + "linearizedBaseContracts": [ + 1466, + 23, + 1508 + ], + "name": "PayingProxy", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 1464, + "nodeType": "Block", + "src": "829:40:11", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1461, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1451, + "src": "855:6:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1458, + "name": "funder", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1449, + "src": "839:6:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1460, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "839:15:11", + "typeDescriptions": { + "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 1462, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "839:23:11", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1463, + "nodeType": "ExpressionStatement", + "src": "839:23:11" + } + ] + }, + "documentation": "@dev Constructor function sets address of master copy contract.\n @param _masterCopy Master copy address.\n @param initializer Data used for a delegate call to initialize the contract.", + "id": 1465, + "implemented": true, + "isConstructor": true, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 1454, + "name": "_masterCopy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1445, + "src": "784:11:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1455, + "name": "initializer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1447, + "src": "797:11:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "id": 1456, + "modifierName": { + "argumentTypes": null, + "id": 1453, + "name": "DelegateConstructorProxy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 23, + "src": "759:24:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_DelegateConstructorProxy_$23_$", + "typeString": "type(contract DelegateConstructorProxy)" + } + }, + "nodeType": "ModifierInvocation", + "src": "759:50:11" + } + ], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1452, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1445, + "name": "_masterCopy", + "nodeType": "VariableDeclaration", + "scope": 1465, + "src": "687:19:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1444, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "687:7:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1447, + "name": "initializer", + "nodeType": "VariableDeclaration", + "scope": 1465, + "src": "708:17:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1446, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "708:5:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1449, + "name": "funder", + "nodeType": "VariableDeclaration", + "scope": 1465, + "src": "727:14:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1448, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "727:7:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1451, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 1465, + "src": "743:14:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1450, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "743:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "686:72:11" + }, + "payable": false, + "returnParameters": { + "id": 1457, + "nodeType": "ParameterList", + "parameters": [], + "src": "829:0:11" + }, + "scope": 1466, + "src": "675:194:11", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 1467, + "src": "414:457:11" + } + ], + "src": "0:872:11" + }, + "legacyAST": { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/PayingProxy.sol", + "exportedSymbols": { + "PayingProxy": [ + 1466 + ] + }, + "id": 1467, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1440, + "literals": [ + "solidity", + "0.4", + ".23" + ], + "nodeType": "PragmaDirective", + "src": "0:23:11" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/DelegateConstructorProxy.sol", + "file": "./DelegateConstructorProxy.sol", + "id": 1441, + "nodeType": "ImportDirective", + "scope": 1467, + "sourceUnit": 24, + "src": "24:40:11", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 1442, + "name": "DelegateConstructorProxy", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 23, + "src": "438:24:11", + "typeDescriptions": { + "typeIdentifier": "t_contract$_DelegateConstructorProxy_$23", + "typeString": "contract DelegateConstructorProxy" + } + }, + "id": 1443, + "nodeType": "InheritanceSpecifier", + "src": "438:24:11" + } + ], + "contractDependencies": [ + 23, + 1508 + ], + "contractKind": "contract", + "documentation": "@title Paying Proxy - Generic proxy contract allows to execute all transactions applying the code of a master contract. It is possible to send along initialization data with the constructor. And sends funds after creation to a specified account.\n @author Stefan George - \n @author Richard Meissner - ", + "fullyImplemented": true, + "id": 1466, + "linearizedBaseContracts": [ + 1466, + 23, + 1508 + ], + "name": "PayingProxy", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 1464, + "nodeType": "Block", + "src": "829:40:11", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1461, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1451, + "src": "855:6:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1458, + "name": "funder", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1449, + "src": "839:6:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1460, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "839:15:11", + "typeDescriptions": { + "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 1462, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "839:23:11", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1463, + "nodeType": "ExpressionStatement", + "src": "839:23:11" + } + ] + }, + "documentation": "@dev Constructor function sets address of master copy contract.\n @param _masterCopy Master copy address.\n @param initializer Data used for a delegate call to initialize the contract.", + "id": 1465, + "implemented": true, + "isConstructor": true, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": [ + { + "argumentTypes": null, + "id": 1454, + "name": "_masterCopy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1445, + "src": "784:11:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1455, + "name": "initializer", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1447, + "src": "797:11:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "id": 1456, + "modifierName": { + "argumentTypes": null, + "id": 1453, + "name": "DelegateConstructorProxy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 23, + "src": "759:24:11", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_DelegateConstructorProxy_$23_$", + "typeString": "type(contract DelegateConstructorProxy)" + } + }, + "nodeType": "ModifierInvocation", + "src": "759:50:11" + } + ], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1452, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1445, + "name": "_masterCopy", + "nodeType": "VariableDeclaration", + "scope": 1465, + "src": "687:19:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1444, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "687:7:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1447, + "name": "initializer", + "nodeType": "VariableDeclaration", + "scope": 1465, + "src": "708:17:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 1446, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "708:5:11", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1449, + "name": "funder", + "nodeType": "VariableDeclaration", + "scope": 1465, + "src": "727:14:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1448, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "727:7:11", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1451, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 1465, + "src": "743:14:11", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1450, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "743:7:11", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "686:72:11" + }, + "payable": false, + "returnParameters": { + "id": 1457, + "nodeType": "ParameterList", + "parameters": [], + "src": "829:0:11" + }, + "scope": 1466, + "src": "675:194:11", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 1467, + "src": "414:457:11" + } + ], + "src": "0:872:11" + }, + "compiler": { + "name": "solc", + "version": "0.4.23+commit.124ca40d.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "2.0.0", + "updatedAt": "2018-05-10T10:43:07.901Z" +} \ No newline at end of file diff --git a/safe-contracts/build/contracts/Proxy.json b/safe-contracts/build/contracts/Proxy.json index ddba9fa348..02dd71f4f9 100644 --- a/safe-contracts/build/contracts/Proxy.json +++ b/safe-contracts/build/contracts/Proxy.json @@ -16,33 +16,61 @@ "payable": true, "stateMutability": "payable", "type": "fallback" + }, + { + "constant": true, + "inputs": [], + "name": "implementation", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "proxyType", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "pure", + "type": "function" } ], - "bytecode": "0x6060604052341561000f57600080fd5b6040516020806101108339810160405280805190602001909190505060008173ffffffffffffffffffffffffffffffffffffffff161415151561005157600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506070806100a06000396000f300606060405273ffffffffffffffffffffffffffffffffffffffff60005416366000803760008036600084600019f43d6000803e8060008114603f573d6000f35b3d6000fd00a165627a7a72305820daad8330a1c74b6650ef400638bc3fcb59dcd0b0341bff33bbe640bd2ffdaff60029", - "deployedBytecode": "0x606060405273ffffffffffffffffffffffffffffffffffffffff60005416366000803760008036600084600019f43d6000803e8060008114603f573d6000f35b3d6000fd00a165627a7a72305820daad8330a1c74b6650ef400638bc3fcb59dcd0b0341bff33bbe640bd2ffdaff60029", - "sourceMap": "190:887:3:-;;;357:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;445:1;430:11;:16;;;;422:25;;;;;;;;470:11;457:10;;:24;;;;;;;;;;;;;;;;;;357:131;190:887;;;;;;", - "deployedSourceMap": "190:887:3:-;;;703:42;699:1;693:5;689:3;778:12;775:1;772;759:12;876:1;873;857:12;854:1;842:10;838:1;834:3;821:12;912:14;909:1;906;891:14;949:7;974:1;969:38;;;;1040:14;1037:1;1030:6;969:38;988:14;985:1;978:6", - "source": "pragma solidity 0.4.19;\n\n\n/// @title Proxy - Generic proxy contract allows to execute all transactions applying the code of a master contract.\n/// @author Stefan George - \ncontract Proxy {\n\n address masterCopy;\n\n /// @dev Constructor function sets address of master copy contract.\n /// @param _masterCopy Master copy address.\n function Proxy(address _masterCopy)\n public\n {\n require(_masterCopy != 0);\n masterCopy = _masterCopy;\n }\n\n /// @dev Fallback function forwards all transactions and returns all received return data.\n function ()\n external\n payable\n {\n assembly {\n let masterCopy := and(sload(0), 0xffffffffffffffffffffffffffffffffffffffff)\n calldatacopy(0, 0, calldatasize())\n let success := delegatecall(not(0), masterCopy, 0, calldatasize(), 0, 0)\n returndatacopy(0, 0, returndatasize())\n switch success\n case 0 { revert(0, returndatasize()) }\n default { return(0, returndatasize()) }\n }\n }\n}\n", + "bytecode": "0x608060405234801561001057600080fd5b506040516020806102148339810180604052810190808051906020019092919050505060008173ffffffffffffffffffffffffffffffffffffffff161415151561005957600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505061016b806100a96000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461008b5780635c60da1b146100b6575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e6000811415610086573d6000fd5b3d6000f35b34801561009757600080fd5b506100a061010d565b6040518082815260200191505060405180910390f35b3480156100c257600080fd5b506100cb610116565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006002905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a723058209594d3f13f6fbad0d5e33f423014061ae7898100636a8b854618092ea85c15e90029", + "deployedBytecode": "0x60806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461008b5780635c60da1b146100b6575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e6000811415610086573d6000fd5b3d6000f35b34801561009757600080fd5b506100a061010d565b6040518082815260200191505060405180910390f35b3480156100c257600080fd5b506100cb610116565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006002905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a723058209594d3f13f6fbad0d5e33f423014061ae7898100636a8b854618092ea85c15e90029", + "sourceMap": "190:1302:12:-;;;508:128;8:9:-1;5:2;;;30:1;27;20:12;5:2;508:128:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;593:1;578:11;:16;;;;570:25;;;;;;;;618:11;605:10;;:24;;;;;;;;;;;;;;;;;;508:128;190:1302;;;;;;", + "deployedSourceMap": "190:1302:12:-;;;;;;;;;;;;;;;;;;;;;;;;;;915:42;911:1;905:8;901:57;990:14;987:1;984;971:34;1085:1;1082;1066:14;1063:1;1051:10;1046:3;1033:54;1121:16;1118:1;1115;1100:38;1166:1;1157:7;1154:14;1151:2;;;1181:16;1178:1;1171:27;1151:2;1223:16;1220:1;1213:27;1386:104;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1386:104:12;;;;;;;;;;;;;;;;;;;;;;;1262:118;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1262:118:12;;;;;;;;;;;;;;;;;;;;;;;;;;;1386:104;1452:7;1482:1;1475:8;;1386:104;:::o;1262:118::-;1333:7;1363:10;;;;;;;;;;;1356:17;;1262:118;:::o", + "source": "pragma solidity 0.4.23;\n\n\n/// @title Proxy - Generic proxy contract allows to execute all transactions applying the code of a master contract.\n/// @author Stefan George - \ncontract Proxy {\n\n // masterCopy always needs to be first declared variable, to ensure that it is at the same location in the contracts to which calls are delegated.\n address masterCopy;\n\n /// @dev Constructor function sets address of master copy contract.\n /// @param _masterCopy Master copy address.\n constructor(address _masterCopy)\n public\n {\n require(_masterCopy != 0);\n masterCopy = _masterCopy;\n }\n\n /// @dev Fallback function forwards all transactions and returns all received return data.\n function ()\n external\n payable\n {\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n let masterCopy := and(sload(0), 0xffffffffffffffffffffffffffffffffffffffff)\n calldatacopy(0, 0, calldatasize())\n let success := delegatecall(gas, masterCopy, 0, calldatasize(), 0, 0)\n returndatacopy(0, 0, returndatasize())\n if eq(success, 0) { revert(0, returndatasize()) }\n return(0, returndatasize())\n }\n }\n\n function implementation()\n public\n view\n returns (address)\n {\n return masterCopy;\n }\n\n function proxyType()\n public\n pure\n returns (uint256)\n {\n return 2;\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Proxy.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Proxy.sol", "exportedSymbols": { "Proxy": [ - 1046 + 1508 ] }, - "id": 1047, + "id": 1509, "nodeType": "SourceUnit", "nodes": [ { - "id": 1022, + "id": 1468, "literals": [ "solidity", "0.4", - ".19" + ".23" ], "nodeType": "PragmaDirective", - "src": "0:23:3" + "src": "0:23:12" }, { "baseContracts": [], @@ -50,20 +78,20 @@ "contractKind": "contract", "documentation": "@title Proxy - Generic proxy contract allows to execute all transactions applying the code of a master contract.\n @author Stefan George - ", "fullyImplemented": true, - "id": 1046, + "id": 1508, "linearizedBaseContracts": [ - 1046 + 1508 ], "name": "Proxy", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, - "id": 1024, + "id": 1470, "name": "masterCopy", "nodeType": "VariableDeclaration", - "scope": 1046, - "src": "212:18:3", + "scope": 1508, + "src": "363:18:12", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -71,10 +99,10 @@ "typeString": "address" }, "typeName": { - "id": 1023, + "id": 1469, "name": "address", "nodeType": "ElementaryTypeName", - "src": "212:7:3", + "src": "363:7:12", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -85,9 +113,9 @@ }, { "body": { - "id": 1039, + "id": 1485, "nodeType": "Block", - "src": "412:76:3", + "src": "560:76:12", "statements": [ { "expression": { @@ -99,19 +127,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1032, + "id": 1478, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1030, + "id": 1476, "name": "_masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1026, - "src": "430:11:3", + "referencedDeclaration": 1472, + "src": "578:11:12", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -122,14 +150,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1031, + "id": 1477, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "445:1:3", + "src": "593:1:12", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -137,7 +165,7 @@ }, "value": "0" }, - "src": "430:16:3", + "src": "578:16:12", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -151,18 +179,21 @@ "typeString": "bool" } ], - "id": 1029, + "id": 1475, "name": "require", "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "422:7:3", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "570:7:12", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1033, + "id": 1479, "isConstant": false, "isLValue": false, "isPure": false, @@ -170,32 +201,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "422:25:3", + "src": "570:25:12", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1034, + "id": 1480, "nodeType": "ExpressionStatement", - "src": "422:25:3" + "src": "570:25:12" }, { "expression": { "argumentTypes": null, - "id": 1037, + "id": 1483, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1035, + "id": 1481, "name": "masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1024, - "src": "457:10:3", + "referencedDeclaration": 1470, + "src": "605:10:12", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -205,47 +236,48 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1036, + "id": 1482, "name": "_masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1026, - "src": "470:11:3", + "referencedDeclaration": 1472, + "src": "618:11:12", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "457:24:3", + "src": "605:24:12", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1038, + "id": 1484, "nodeType": "ExpressionStatement", - "src": "457:24:3" + "src": "605:24:12" } ] }, - "id": 1040, + "documentation": "@dev Constructor function sets address of master copy contract.\n @param _masterCopy Master copy address.", + "id": 1486, "implemented": true, "isConstructor": true, "isDeclaredConst": false, "modifiers": [], - "name": "Proxy", + "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 1027, + "id": 1473, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1026, + "id": 1472, "name": "_masterCopy", "nodeType": "VariableDeclaration", - "scope": 1040, - "src": "372:19:3", + "scope": 1486, + "src": "520:19:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -253,10 +285,10 @@ "typeString": "address" }, "typeName": { - "id": 1025, + "id": 1471, "name": "address", "nodeType": "ElementaryTypeName", - "src": "372:7:3", + "src": "520:7:12", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -266,37 +298,38 @@ "visibility": "internal" } ], - "src": "371:21:3" + "src": "519:21:12" }, "payable": false, "returnParameters": { - "id": 1028, + "id": 1474, "nodeType": "ParameterList", "parameters": [], - "src": "412:0:3" + "src": "560:0:12" }, - "scope": 1046, - "src": "357:131:3", + "scope": 1508, + "src": "508:128:12", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1044, + "id": 1490, "nodeType": "Block", - "src": "638:437:3", + "src": "786:470:12", "statements": [ { "externalReferences": [], - "id": 1043, + "id": 1489, "nodeType": "InlineAssembly", - "operations": "{\n let masterCopy := and(sload(0), 0xffffffffffffffffffffffffffffffffffffffff)\n calldatacopy(0, 0, calldatasize())\n let success := delegatecall(not(0), masterCopy, 0, calldatasize(), 0, 0)\n returndatacopy(0, 0, returndatasize())\n switch success\n case 0 {\n revert(0, returndatasize())\n }\n default {\n return(0, returndatasize())\n }\n}", - "src": "648:427:3" + "operations": "{\n let masterCopy := and(sload(0), 0xffffffffffffffffffffffffffffffffffffffff)\n calldatacopy(0, 0, calldatasize())\n let success := delegatecall(gas(), masterCopy, 0, calldatasize(), 0, 0)\n returndatacopy(0, 0, returndatasize())\n if eq(success, 0)\n {\n revert(0, returndatasize())\n }\n return(0, returndatasize())\n}", + "src": "860:396:12" } ] }, - "id": 1045, + "documentation": "@dev Fallback function forwards all transactions and returns all received return data.", + "id": 1491, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -304,50 +337,217 @@ "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 1041, + "id": 1487, "nodeType": "ParameterList", "parameters": [], - "src": "598:2:3" + "src": "746:2:12" }, "payable": true, "returnParameters": { - "id": 1042, + "id": 1488, "nodeType": "ParameterList", "parameters": [], - "src": "638:0:3" + "src": "786:0:12" }, - "scope": 1046, - "src": "589:486:3", + "scope": 1508, + "src": "737:519:12", "stateMutability": "payable", "superFunction": null, "visibility": "external" + }, + { + "body": { + "id": 1498, + "nodeType": "Block", + "src": "1346:34:12", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1496, + "name": "masterCopy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1470, + "src": "1363:10:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 1495, + "id": 1497, + "nodeType": "Return", + "src": "1356:17:12" + } + ] + }, + "documentation": null, + "id": 1499, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "implementation", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1492, + "nodeType": "ParameterList", + "parameters": [], + "src": "1285:2:12" + }, + "payable": false, + "returnParameters": { + "id": 1495, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1494, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1499, + "src": "1333:7:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1493, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1333:7:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1332:9:12" + }, + "scope": 1508, + "src": "1262:118:12", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1506, + "nodeType": "Block", + "src": "1465:25:12", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "32", + "id": 1504, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1482:1:12", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "functionReturnParameters": 1503, + "id": 1505, + "nodeType": "Return", + "src": "1475:8:12" + } + ] + }, + "documentation": null, + "id": 1507, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "proxyType", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1500, + "nodeType": "ParameterList", + "parameters": [], + "src": "1404:2:12" + }, + "payable": false, + "returnParameters": { + "id": 1503, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1502, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1507, + "src": "1452:7:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1501, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1452:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1451:9:12" + }, + "scope": 1508, + "src": "1386:104:12", + "stateMutability": "pure", + "superFunction": null, + "visibility": "public" } ], - "scope": 1047, - "src": "190:887:3" + "scope": 1509, + "src": "190:1302:12" } ], - "src": "0:1078:3" + "src": "0:1493:12" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Proxy.sol", "exportedSymbols": { "Proxy": [ - 1046 + 1508 ] }, - "id": 1047, + "id": 1509, "nodeType": "SourceUnit", "nodes": [ { - "id": 1022, + "id": 1468, "literals": [ "solidity", "0.4", - ".19" + ".23" ], "nodeType": "PragmaDirective", - "src": "0:23:3" + "src": "0:23:12" }, { "baseContracts": [], @@ -355,20 +555,20 @@ "contractKind": "contract", "documentation": "@title Proxy - Generic proxy contract allows to execute all transactions applying the code of a master contract.\n @author Stefan George - ", "fullyImplemented": true, - "id": 1046, + "id": 1508, "linearizedBaseContracts": [ - 1046 + 1508 ], "name": "Proxy", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, - "id": 1024, + "id": 1470, "name": "masterCopy", "nodeType": "VariableDeclaration", - "scope": 1046, - "src": "212:18:3", + "scope": 1508, + "src": "363:18:12", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -376,10 +576,10 @@ "typeString": "address" }, "typeName": { - "id": 1023, + "id": 1469, "name": "address", "nodeType": "ElementaryTypeName", - "src": "212:7:3", + "src": "363:7:12", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -390,9 +590,9 @@ }, { "body": { - "id": 1039, + "id": 1485, "nodeType": "Block", - "src": "412:76:3", + "src": "560:76:12", "statements": [ { "expression": { @@ -404,19 +604,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1032, + "id": 1478, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1030, + "id": 1476, "name": "_masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1026, - "src": "430:11:3", + "referencedDeclaration": 1472, + "src": "578:11:12", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -427,14 +627,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1031, + "id": 1477, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "445:1:3", + "src": "593:1:12", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -442,7 +642,7 @@ }, "value": "0" }, - "src": "430:16:3", + "src": "578:16:12", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -456,18 +656,21 @@ "typeString": "bool" } ], - "id": 1029, + "id": 1475, "name": "require", "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "422:7:3", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "570:7:12", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1033, + "id": 1479, "isConstant": false, "isLValue": false, "isPure": false, @@ -475,32 +678,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "422:25:3", + "src": "570:25:12", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1034, + "id": 1480, "nodeType": "ExpressionStatement", - "src": "422:25:3" + "src": "570:25:12" }, { "expression": { "argumentTypes": null, - "id": 1037, + "id": 1483, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1035, + "id": 1481, "name": "masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1024, - "src": "457:10:3", + "referencedDeclaration": 1470, + "src": "605:10:12", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -510,47 +713,48 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1036, + "id": 1482, "name": "_masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1026, - "src": "470:11:3", + "referencedDeclaration": 1472, + "src": "618:11:12", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "457:24:3", + "src": "605:24:12", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1038, + "id": 1484, "nodeType": "ExpressionStatement", - "src": "457:24:3" + "src": "605:24:12" } ] }, - "id": 1040, + "documentation": "@dev Constructor function sets address of master copy contract.\n @param _masterCopy Master copy address.", + "id": 1486, "implemented": true, "isConstructor": true, "isDeclaredConst": false, "modifiers": [], - "name": "Proxy", + "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 1027, + "id": 1473, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1026, + "id": 1472, "name": "_masterCopy", "nodeType": "VariableDeclaration", - "scope": 1040, - "src": "372:19:3", + "scope": 1486, + "src": "520:19:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -558,10 +762,10 @@ "typeString": "address" }, "typeName": { - "id": 1025, + "id": 1471, "name": "address", "nodeType": "ElementaryTypeName", - "src": "372:7:3", + "src": "520:7:12", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -571,37 +775,38 @@ "visibility": "internal" } ], - "src": "371:21:3" + "src": "519:21:12" }, "payable": false, "returnParameters": { - "id": 1028, + "id": 1474, "nodeType": "ParameterList", "parameters": [], - "src": "412:0:3" + "src": "560:0:12" }, - "scope": 1046, - "src": "357:131:3", + "scope": 1508, + "src": "508:128:12", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1044, + "id": 1490, "nodeType": "Block", - "src": "638:437:3", + "src": "786:470:12", "statements": [ { "externalReferences": [], - "id": 1043, + "id": 1489, "nodeType": "InlineAssembly", - "operations": "{\n let masterCopy := and(sload(0), 0xffffffffffffffffffffffffffffffffffffffff)\n calldatacopy(0, 0, calldatasize())\n let success := delegatecall(not(0), masterCopy, 0, calldatasize(), 0, 0)\n returndatacopy(0, 0, returndatasize())\n switch success\n case 0 {\n revert(0, returndatasize())\n }\n default {\n return(0, returndatasize())\n }\n}", - "src": "648:427:3" + "operations": "{\n let masterCopy := and(sload(0), 0xffffffffffffffffffffffffffffffffffffffff)\n calldatacopy(0, 0, calldatasize())\n let success := delegatecall(gas(), masterCopy, 0, calldatasize(), 0, 0)\n returndatacopy(0, 0, returndatasize())\n if eq(success, 0)\n {\n revert(0, returndatasize())\n }\n return(0, returndatasize())\n}", + "src": "860:396:12" } ] }, - "id": 1045, + "documentation": "@dev Fallback function forwards all transactions and returns all received return data.", + "id": 1491, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -609,36 +814,203 @@ "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 1041, + "id": 1487, "nodeType": "ParameterList", "parameters": [], - "src": "598:2:3" + "src": "746:2:12" }, "payable": true, "returnParameters": { - "id": 1042, + "id": 1488, "nodeType": "ParameterList", "parameters": [], - "src": "638:0:3" + "src": "786:0:12" }, - "scope": 1046, - "src": "589:486:3", + "scope": 1508, + "src": "737:519:12", "stateMutability": "payable", "superFunction": null, "visibility": "external" + }, + { + "body": { + "id": 1498, + "nodeType": "Block", + "src": "1346:34:12", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1496, + "name": "masterCopy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1470, + "src": "1363:10:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "functionReturnParameters": 1495, + "id": 1497, + "nodeType": "Return", + "src": "1356:17:12" + } + ] + }, + "documentation": null, + "id": 1499, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "implementation", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1492, + "nodeType": "ParameterList", + "parameters": [], + "src": "1285:2:12" + }, + "payable": false, + "returnParameters": { + "id": 1495, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1494, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1499, + "src": "1333:7:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1493, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1333:7:12", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1332:9:12" + }, + "scope": 1508, + "src": "1262:118:12", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1506, + "nodeType": "Block", + "src": "1465:25:12", + "statements": [ + { + "expression": { + "argumentTypes": null, + "hexValue": "32", + "id": 1504, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1482:1:12", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "functionReturnParameters": 1503, + "id": 1505, + "nodeType": "Return", + "src": "1475:8:12" + } + ] + }, + "documentation": null, + "id": 1507, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "proxyType", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1500, + "nodeType": "ParameterList", + "parameters": [], + "src": "1404:2:12" + }, + "payable": false, + "returnParameters": { + "id": 1503, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1502, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 1507, + "src": "1452:7:12", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1501, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1452:7:12", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1451:9:12" + }, + "scope": 1508, + "src": "1386:104:12", + "stateMutability": "pure", + "superFunction": null, + "visibility": "public" } ], - "scope": 1047, - "src": "190:887:3" + "scope": 1509, + "src": "190:1302:12" } ], - "src": "0:1078:3" + "src": "0:1493:12" }, "compiler": { "name": "solc", - "version": "0.4.19+commit.c4cbbb05.Emscripten.clang" + "version": "0.4.23+commit.124ca40d.Emscripten.clang" }, "networks": {}, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-04T10:42:18.368Z" + "updatedAt": "2018-05-10T10:43:07.901Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/ProxyFactory.json b/safe-contracts/build/contracts/ProxyFactory.json index ad986eb501..2145226d23 100644 --- a/safe-contracts/build/contracts/ProxyFactory.json +++ b/safe-contracts/build/contracts/ProxyFactory.json @@ -37,90 +37,91 @@ "type": "function" } ], - "bytecode": "0x6060604052341561000f57600080fd5b61033e8061001e6000396000f300606060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806361b69abd14610046575b600080fd5b341561005157600080fd5b6100c0600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050610102565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008261010d6101f2565b808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f080151561015957600080fd5b905060008251111561018957600080835160208501600085600019f16000811461018257610187565b600080fd5b505b7fa38789425dbeee0239e16ff2d2567e31720127fbc6430758c1a4efc6aef29f8081604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a192915050565b604051610110806102038339019056006060604052341561000f57600080fd5b6040516020806101108339810160405280805190602001909190505060008173ffffffffffffffffffffffffffffffffffffffff161415151561005157600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506070806100a06000396000f300606060405273ffffffffffffffffffffffffffffffffffffffff60005416366000803760008036600084600019f43d6000803e8060008114603f573d6000f35b3d6000fd00a165627a7a72305820daad8330a1c74b6650ef400638bc3fcb59dcd0b0341bff33bbe640bd2ffdaff60029a165627a7a7230582016c17d280f9b2d074d821cd6f6e791d8a9100e0da9af1a0cc86af635d90935070029", - "deployedBytecode": "0x606060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806361b69abd14610046575b600080fd5b341561005157600080fd5b6100c0600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050610102565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008261010d6101f2565b808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f080151561015957600080fd5b905060008251111561018957600080835160208501600085600019f16000811461018257610187565b600080fd5b505b7fa38789425dbeee0239e16ff2d2567e31720127fbc6430758c1a4efc6aef29f8081604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a192915050565b604051610110806102038339019056006060604052341561000f57600080fd5b6040516020806101108339810160405280805190602001909190505060008173ffffffffffffffffffffffffffffffffffffffff161415151561005157600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506070806100a06000396000f300606060405273ffffffffffffffffffffffffffffffffffffffff60005416366000803760008036600084600019f43d6000803e8060008114603f573d6000f35b3d6000fd00a165627a7a72305820daad8330a1c74b6650ef400638bc3fcb59dcd0b0341bff33bbe640bd2ffdaff60029a165627a7a7230582016c17d280f9b2d074d821cd6f6e791d8a9100e0da9af1a0cc86af635d90935070029", - "sourceMap": "225:675:4:-;;;;;;;;;;;;;;;;;", - "deployedSourceMap": "225:675:4:-;;;;;;;;;;;;;;;;;;;;;;;;532:366;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;617:11;662:10;652:21;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;644:29;;701:1;687:4;:11;:15;683:201;;;806:1;803;796:4;790:5;783:4;777;773:3;770:1;763:5;759:1;755:3;750:4;830:1;825:23;;;;743:105;;825:23;844:1;841;834:6;743:105;;725:137;871:20;885:5;871:20;;;;;;;;;;;;;;;;;;;;;;532:366;;;;:::o;225:675::-;;;;;;;;;;:::o", - "source": "pragma solidity 0.4.19;\nimport \"./Proxy.sol\";\n\n\n/// @title Proxy Factory - Allows to create new proxy contact and execute a message call to the new proxy within one transaction.\n/// @author Stefan George - \ncontract ProxyFactory {\n\n event ProxyCreation(Proxy proxy);\n\n /// @dev Allows to create new proxy contact and execute a message call to the new proxy within one transaction.\n /// @param masterCopy Address of master copy.\n /// @param data Payload for message call sent to new proxy contract.\n function createProxy(address masterCopy, bytes data)\n public\n returns (Proxy proxy)\n {\n proxy = new Proxy(masterCopy);\n if (data.length > 0)\n assembly {\n switch call(not(0), proxy, 0, add(data, 0x20), mload(data), 0, 0)\n case 0 { revert(0, 0) }\n }\n ProxyCreation(proxy);\n }\n}\n", + "bytecode": "0x608060405234801561001057600080fd5b5061044e806100206000396000f300608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806361b69abd14610046575b600080fd5b34801561005257600080fd5b506100cd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061010f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008261011a6101fe565b808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f08015801561016c573d6000803e3d6000fd5b5090506000825111156101955760008060008451602086016000865af1141561019457600080fd5b5b7fa38789425dbeee0239e16ff2d2567e31720127fbc6430758c1a4efc6aef29f8081604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a192915050565b6040516102148061020f833901905600608060405234801561001057600080fd5b506040516020806102148339810180604052810190808051906020019092919050505060008173ffffffffffffffffffffffffffffffffffffffff161415151561005957600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505061016b806100a96000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461008b5780635c60da1b146100b6575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e6000811415610086573d6000fd5b3d6000f35b34801561009757600080fd5b506100a061010d565b6040518082815260200191505060405180910390f35b3480156100c257600080fd5b506100cb610116565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006002905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a723058209594d3f13f6fbad0d5e33f423014061ae7898100636a8b854618092ea85c15e90029a165627a7a7230582048e6ac6bd11856ae7c073d3f3d327f3e04a2dff35dfbcf223c8a425cba2fa6a10029", + "deployedBytecode": "0x608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806361b69abd14610046575b600080fd5b34801561005257600080fd5b506100cd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061010f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008261011a6101fe565b808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f08015801561016c573d6000803e3d6000fd5b5090506000825111156101955760008060008451602086016000865af1141561019457600080fd5b5b7fa38789425dbeee0239e16ff2d2567e31720127fbc6430758c1a4efc6aef29f8081604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a192915050565b6040516102148061020f833901905600608060405234801561001057600080fd5b506040516020806102148339810180604052810190808051906020019092919050505060008173ffffffffffffffffffffffffffffffffffffffff161415151561005957600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505061016b806100a96000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461008b5780635c60da1b146100b6575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e6000811415610086573d6000fd5b3d6000f35b34801561009757600080fd5b506100a061010d565b6040518082815260200191505060405180910390f35b3480156100c257600080fd5b506100cb610116565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006002905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a723058209594d3f13f6fbad0d5e33f423014061ae7898100636a8b854618092ea85c15e90029a165627a7a7230582048e6ac6bd11856ae7c073d3f3d327f3e04a2dff35dfbcf223c8a425cba2fa6a10029", + "sourceMap": "225:725:13:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;225:725:13;;;;;;;", + "deployedSourceMap": "225:725:13:-;;;;;;;;;;;;;;;;;;;;;;;;532:416;;8:9:-1;5:2;;;30:1;27;20:12;5:2;532:416:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;617:11;662:10;652:21;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;652:21:13;644:29;;701:1;687:4;:11;:15;683:237;;;874:1;870;867;860:4;854:11;847:4;841;837:15;834:1;827:5;822:3;817:55;814:62;811:2;;;889:1;886;879:12;811:2;793:114;921:20;935:5;921:20;;;;;;;;;;;;;;;;;;;;;;532:416;;;;:::o;225:725::-;;;;;;;;;;:::o", + "source": "pragma solidity 0.4.23;\nimport \"./Proxy.sol\";\n\n\n/// @title Proxy Factory - Allows to create new proxy contact and execute a message call to the new proxy within one transaction.\n/// @author Stefan George - \ncontract ProxyFactory {\n\n event ProxyCreation(Proxy proxy);\n\n /// @dev Allows to create new proxy contact and execute a message call to the new proxy within one transaction.\n /// @param masterCopy Address of master copy.\n /// @param data Payload for message call sent to new proxy contract.\n function createProxy(address masterCopy, bytes data)\n public\n returns (Proxy proxy)\n {\n proxy = new Proxy(masterCopy);\n if (data.length > 0)\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n if eq(call(gas, proxy, 0, add(data, 0x20), mload(data), 0, 0), 0) { revert(0, 0) }\n }\n emit ProxyCreation(proxy);\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ProxyFactory.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ProxyFactory.sol", "exportedSymbols": { "ProxyFactory": [ - 1081 + 1543 ] }, - "id": 1082, + "id": 1544, "nodeType": "SourceUnit", "nodes": [ { - "id": 1048, + "id": 1510, "literals": [ "solidity", "0.4", - ".19" + ".23" ], "nodeType": "PragmaDirective", - "src": "0:23:4" + "src": "0:23:13" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Proxy.sol", "file": "./Proxy.sol", - "id": 1049, + "id": 1511, "nodeType": "ImportDirective", - "scope": 1082, - "sourceUnit": 1047, - "src": "24:21:4", + "scope": 1544, + "sourceUnit": 1509, + "src": "24:21:13", "symbolAliases": [], "unitAlias": "" }, { "baseContracts": [], "contractDependencies": [ - 1046 + 1508 ], "contractKind": "contract", "documentation": "@title Proxy Factory - Allows to create new proxy contact and execute a message call to the new proxy within one transaction.\n @author Stefan George - ", "fullyImplemented": true, - "id": 1081, + "id": 1543, "linearizedBaseContracts": [ - 1081 + 1543 ], "name": "ProxyFactory", "nodeType": "ContractDefinition", "nodes": [ { "anonymous": false, - "id": 1053, + "documentation": null, + "id": 1515, "name": "ProxyCreation", "nodeType": "EventDefinition", "parameters": { - "id": 1052, + "id": 1514, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1051, + "id": 1513, "indexed": false, "name": "proxy", "nodeType": "VariableDeclaration", - "scope": 1053, - "src": "274:11:4", + "scope": 1515, + "src": "274:11:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1046", + "typeIdentifier": "t_contract$_Proxy_$1508", "typeString": "contract Proxy" }, "typeName": { "contractScope": null, - "id": 1050, + "id": 1512, "name": "Proxy", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1046, - "src": "274:5:4", + "referencedDeclaration": 1508, + "src": "274:5:13", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1046", + "typeIdentifier": "t_contract$_Proxy_$1508", "typeString": "contract Proxy" } }, @@ -128,34 +129,34 @@ "visibility": "internal" } ], - "src": "273:13:4" + "src": "273:13:13" }, - "src": "254:33:4" + "src": "254:33:13" }, { "body": { - "id": 1079, + "id": 1541, "nodeType": "Block", - "src": "634:264:4", + "src": "634:314:13", "statements": [ { "expression": { "argumentTypes": null, - "id": 1067, + "id": 1529, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1062, + "id": 1524, "name": "proxy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1060, - "src": "644:5:4", + "referencedDeclaration": 1522, + "src": "644:5:13", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1046", + "typeIdentifier": "t_contract$_Proxy_$1508", "typeString": "contract Proxy" } }, @@ -166,12 +167,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1065, + "id": 1527, "name": "masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1055, - "src": "662:10:4", + "referencedDeclaration": 1517, + "src": "662:10:13", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -185,31 +186,31 @@ "typeString": "address" } ], - "id": 1064, + "id": 1526, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "NewExpression", - "src": "652:9:4", + "src": "652:9:13", "typeDescriptions": { - "typeIdentifier": "t_function_creation_nonpayable$_t_address_$returns$_t_contract$_Proxy_$1046_$", + "typeIdentifier": "t_function_creation_nonpayable$_t_address_$returns$_t_contract$_Proxy_$1508_$", "typeString": "function (address) returns (contract Proxy)" }, "typeName": { "contractScope": null, - "id": 1063, + "id": 1525, "name": "Proxy", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1046, - "src": "656:5:4", + "referencedDeclaration": 1508, + "src": "656:5:13", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1046", + "typeIdentifier": "t_contract$_Proxy_$1508", "typeString": "contract Proxy" } } }, - "id": 1066, + "id": 1528, "isConstant": false, "isLValue": false, "isPure": false, @@ -217,21 +218,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "652:21:4", + "src": "652:21:13", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1046", + "typeIdentifier": "t_contract$_Proxy_$1508", "typeString": "contract Proxy" } }, - "src": "644:29:4", + "src": "644:29:13", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1046", + "typeIdentifier": "t_contract$_Proxy_$1508", "typeString": "contract Proxy" } }, - "id": 1068, + "id": 1530, "nodeType": "ExpressionStatement", - "src": "644:29:4" + "src": "644:29:13" }, { "condition": { @@ -240,7 +241,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1072, + "id": 1534, "isConstant": false, "isLValue": false, "isPure": false, @@ -249,18 +250,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1069, + "id": 1531, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1057, - "src": "687:4:4", + "referencedDeclaration": 1519, + "src": "687:4:13", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, - "id": 1070, + "id": 1532, "isConstant": false, "isLValue": false, "isPure": false, @@ -268,7 +269,7 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "687:11:4", + "src": "687:11:13", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -279,14 +280,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1071, + "id": 1533, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "701:1:4", + "src": "701:1:13", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -294,66 +295,66 @@ }, "value": "0" }, - "src": "687:15:4", + "src": "687:15:13", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 1074, + "id": 1536, "nodeType": "IfStatement", - "src": "683:201:4", + "src": "683:237:13", "trueBody": { "externalReferences": [ { "data": { - "declaration": 1057, + "declaration": 1519, "isOffset": false, "isSlot": false, - "src": "777:4:4", + "src": "860:4:13", "valueSize": 1 } }, { - "data": { - "declaration": 1057, + "proxy": { + "declaration": 1522, "isOffset": false, "isSlot": false, - "src": "796:4:4", + "src": "827:5:13", "valueSize": 1 } }, { - "proxy": { - "declaration": 1060, + "data": { + "declaration": 1519, "isOffset": false, "isSlot": false, - "src": "763:5:4", + "src": "841:4:13", "valueSize": 1 } } ], - "id": 1073, + "id": 1535, "nodeType": "InlineAssembly", - "operations": "{\n switch call(not(0), proxy, 0, add(data, 0x20), mload(data), 0, 0)\n case 0 {\n revert(0, 0)\n }\n}", - "src": "716:168:4" + "operations": "{\n if eq(call(gas(), proxy, 0, add(data, 0x20), mload(data), 0, 0), 0)\n {\n revert(0, 0)\n }\n}", + "src": "784:136:13" } }, { - "expression": { + "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 1076, + "id": 1538, "name": "proxy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1060, - "src": "885:5:4", + "referencedDeclaration": 1522, + "src": "935:5:13", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1046", + "typeIdentifier": "t_contract$_Proxy_$1508", "typeString": "contract Proxy" } } @@ -361,22 +362,22 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_Proxy_$1046", + "typeIdentifier": "t_contract$_Proxy_$1508", "typeString": "contract Proxy" } ], - "id": 1075, + "id": 1537, "name": "ProxyCreation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1053, - "src": "871:13:4", + "referencedDeclaration": 1515, + "src": "921:13:13", "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_contract$_Proxy_$1046_$returns$__$", + "typeIdentifier": "t_function_event_nonpayable$_t_contract$_Proxy_$1508_$returns$__$", "typeString": "function (contract Proxy)" } }, - "id": 1077, + "id": 1539, "isConstant": false, "isLValue": false, "isPure": false, @@ -384,19 +385,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "871:20:4", + "src": "921:20:13", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1078, - "nodeType": "ExpressionStatement", - "src": "871:20:4" + "id": 1540, + "nodeType": "EmitStatement", + "src": "916:25:13" } ] }, - "id": 1080, + "documentation": "@dev Allows to create new proxy contact and execute a message call to the new proxy within one transaction.\n @param masterCopy Address of master copy.\n @param data Payload for message call sent to new proxy contract.", + "id": 1542, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -404,16 +406,16 @@ "name": "createProxy", "nodeType": "FunctionDefinition", "parameters": { - "id": 1058, + "id": 1520, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1055, + "id": 1517, "name": "masterCopy", "nodeType": "VariableDeclaration", - "scope": 1080, - "src": "553:18:4", + "scope": 1542, + "src": "553:18:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -421,10 +423,10 @@ "typeString": "address" }, "typeName": { - "id": 1054, + "id": 1516, "name": "address", "nodeType": "ElementaryTypeName", - "src": "553:7:4", + "src": "553:7:13", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -435,60 +437,60 @@ }, { "constant": false, - "id": 1057, + "id": 1519, "name": "data", "nodeType": "VariableDeclaration", - "scope": 1080, - "src": "573:10:4", + "scope": 1542, + "src": "573:10:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" + "typeString": "bytes" }, "typeName": { - "id": 1056, + "id": 1518, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "573:5:4", + "src": "573:5:13", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" + "typeString": "bytes" } }, "value": null, "visibility": "internal" } ], - "src": "552:32:4" + "src": "552:32:13" }, "payable": false, "returnParameters": { - "id": 1061, + "id": 1523, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1060, + "id": 1522, "name": "proxy", "nodeType": "VariableDeclaration", - "scope": 1080, - "src": "617:11:4", + "scope": 1542, + "src": "617:11:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1046", + "typeIdentifier": "t_contract$_Proxy_$1508", "typeString": "contract Proxy" }, "typeName": { "contractScope": null, - "id": 1059, + "id": 1521, "name": "Proxy", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1046, - "src": "617:5:4", + "referencedDeclaration": 1508, + "src": "617:5:13", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1046", + "typeIdentifier": "t_contract$_Proxy_$1508", "typeString": "contract Proxy" } }, @@ -496,99 +498,100 @@ "visibility": "internal" } ], - "src": "616:13:4" + "src": "616:13:13" }, - "scope": 1081, - "src": "532:366:4", + "scope": 1543, + "src": "532:416:13", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 1082, - "src": "225:675:4" + "scope": 1544, + "src": "225:725:13" } ], - "src": "0:901:4" + "src": "0:951:13" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ProxyFactory.sol", "exportedSymbols": { "ProxyFactory": [ - 1081 + 1543 ] }, - "id": 1082, + "id": 1544, "nodeType": "SourceUnit", "nodes": [ { - "id": 1048, + "id": 1510, "literals": [ "solidity", "0.4", - ".19" + ".23" ], "nodeType": "PragmaDirective", - "src": "0:23:4" + "src": "0:23:13" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Proxy.sol", "file": "./Proxy.sol", - "id": 1049, + "id": 1511, "nodeType": "ImportDirective", - "scope": 1082, - "sourceUnit": 1047, - "src": "24:21:4", + "scope": 1544, + "sourceUnit": 1509, + "src": "24:21:13", "symbolAliases": [], "unitAlias": "" }, { "baseContracts": [], "contractDependencies": [ - 1046 + 1508 ], "contractKind": "contract", "documentation": "@title Proxy Factory - Allows to create new proxy contact and execute a message call to the new proxy within one transaction.\n @author Stefan George - ", "fullyImplemented": true, - "id": 1081, + "id": 1543, "linearizedBaseContracts": [ - 1081 + 1543 ], "name": "ProxyFactory", "nodeType": "ContractDefinition", "nodes": [ { "anonymous": false, - "id": 1053, + "documentation": null, + "id": 1515, "name": "ProxyCreation", "nodeType": "EventDefinition", "parameters": { - "id": 1052, + "id": 1514, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1051, + "id": 1513, "indexed": false, "name": "proxy", "nodeType": "VariableDeclaration", - "scope": 1053, - "src": "274:11:4", + "scope": 1515, + "src": "274:11:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1046", + "typeIdentifier": "t_contract$_Proxy_$1508", "typeString": "contract Proxy" }, "typeName": { "contractScope": null, - "id": 1050, + "id": 1512, "name": "Proxy", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1046, - "src": "274:5:4", + "referencedDeclaration": 1508, + "src": "274:5:13", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1046", + "typeIdentifier": "t_contract$_Proxy_$1508", "typeString": "contract Proxy" } }, @@ -596,34 +599,34 @@ "visibility": "internal" } ], - "src": "273:13:4" + "src": "273:13:13" }, - "src": "254:33:4" + "src": "254:33:13" }, { "body": { - "id": 1079, + "id": 1541, "nodeType": "Block", - "src": "634:264:4", + "src": "634:314:13", "statements": [ { "expression": { "argumentTypes": null, - "id": 1067, + "id": 1529, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1062, + "id": 1524, "name": "proxy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1060, - "src": "644:5:4", + "referencedDeclaration": 1522, + "src": "644:5:13", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1046", + "typeIdentifier": "t_contract$_Proxy_$1508", "typeString": "contract Proxy" } }, @@ -634,12 +637,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1065, + "id": 1527, "name": "masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1055, - "src": "662:10:4", + "referencedDeclaration": 1517, + "src": "662:10:13", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -653,31 +656,31 @@ "typeString": "address" } ], - "id": 1064, + "id": 1526, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "NewExpression", - "src": "652:9:4", + "src": "652:9:13", "typeDescriptions": { - "typeIdentifier": "t_function_creation_nonpayable$_t_address_$returns$_t_contract$_Proxy_$1046_$", + "typeIdentifier": "t_function_creation_nonpayable$_t_address_$returns$_t_contract$_Proxy_$1508_$", "typeString": "function (address) returns (contract Proxy)" }, "typeName": { "contractScope": null, - "id": 1063, + "id": 1525, "name": "Proxy", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1046, - "src": "656:5:4", + "referencedDeclaration": 1508, + "src": "656:5:13", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1046", + "typeIdentifier": "t_contract$_Proxy_$1508", "typeString": "contract Proxy" } } }, - "id": 1066, + "id": 1528, "isConstant": false, "isLValue": false, "isPure": false, @@ -685,21 +688,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "652:21:4", + "src": "652:21:13", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1046", + "typeIdentifier": "t_contract$_Proxy_$1508", "typeString": "contract Proxy" } }, - "src": "644:29:4", + "src": "644:29:13", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1046", + "typeIdentifier": "t_contract$_Proxy_$1508", "typeString": "contract Proxy" } }, - "id": 1068, + "id": 1530, "nodeType": "ExpressionStatement", - "src": "644:29:4" + "src": "644:29:13" }, { "condition": { @@ -708,7 +711,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1072, + "id": 1534, "isConstant": false, "isLValue": false, "isPure": false, @@ -717,18 +720,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1069, + "id": 1531, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1057, - "src": "687:4:4", + "referencedDeclaration": 1519, + "src": "687:4:13", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, - "id": 1070, + "id": 1532, "isConstant": false, "isLValue": false, "isPure": false, @@ -736,7 +739,7 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "687:11:4", + "src": "687:11:13", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -747,14 +750,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1071, + "id": 1533, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "701:1:4", + "src": "701:1:13", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -762,66 +765,66 @@ }, "value": "0" }, - "src": "687:15:4", + "src": "687:15:13", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 1074, + "id": 1536, "nodeType": "IfStatement", - "src": "683:201:4", + "src": "683:237:13", "trueBody": { "externalReferences": [ { "data": { - "declaration": 1057, + "declaration": 1519, "isOffset": false, "isSlot": false, - "src": "777:4:4", + "src": "860:4:13", "valueSize": 1 } }, { - "data": { - "declaration": 1057, + "proxy": { + "declaration": 1522, "isOffset": false, "isSlot": false, - "src": "796:4:4", + "src": "827:5:13", "valueSize": 1 } }, { - "proxy": { - "declaration": 1060, + "data": { + "declaration": 1519, "isOffset": false, "isSlot": false, - "src": "763:5:4", + "src": "841:4:13", "valueSize": 1 } } ], - "id": 1073, + "id": 1535, "nodeType": "InlineAssembly", - "operations": "{\n switch call(not(0), proxy, 0, add(data, 0x20), mload(data), 0, 0)\n case 0 {\n revert(0, 0)\n }\n}", - "src": "716:168:4" + "operations": "{\n if eq(call(gas(), proxy, 0, add(data, 0x20), mload(data), 0, 0), 0)\n {\n revert(0, 0)\n }\n}", + "src": "784:136:13" } }, { - "expression": { + "eventCall": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 1076, + "id": 1538, "name": "proxy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1060, - "src": "885:5:4", + "referencedDeclaration": 1522, + "src": "935:5:13", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1046", + "typeIdentifier": "t_contract$_Proxy_$1508", "typeString": "contract Proxy" } } @@ -829,22 +832,22 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_Proxy_$1046", + "typeIdentifier": "t_contract$_Proxy_$1508", "typeString": "contract Proxy" } ], - "id": 1075, + "id": 1537, "name": "ProxyCreation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1053, - "src": "871:13:4", + "referencedDeclaration": 1515, + "src": "921:13:13", "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_contract$_Proxy_$1046_$returns$__$", + "typeIdentifier": "t_function_event_nonpayable$_t_contract$_Proxy_$1508_$returns$__$", "typeString": "function (contract Proxy)" } }, - "id": 1077, + "id": 1539, "isConstant": false, "isLValue": false, "isPure": false, @@ -852,19 +855,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "871:20:4", + "src": "921:20:13", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1078, - "nodeType": "ExpressionStatement", - "src": "871:20:4" + "id": 1540, + "nodeType": "EmitStatement", + "src": "916:25:13" } ] }, - "id": 1080, + "documentation": "@dev Allows to create new proxy contact and execute a message call to the new proxy within one transaction.\n @param masterCopy Address of master copy.\n @param data Payload for message call sent to new proxy contract.", + "id": 1542, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -872,16 +876,16 @@ "name": "createProxy", "nodeType": "FunctionDefinition", "parameters": { - "id": 1058, + "id": 1520, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1055, + "id": 1517, "name": "masterCopy", "nodeType": "VariableDeclaration", - "scope": 1080, - "src": "553:18:4", + "scope": 1542, + "src": "553:18:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -889,10 +893,10 @@ "typeString": "address" }, "typeName": { - "id": 1054, + "id": 1516, "name": "address", "nodeType": "ElementaryTypeName", - "src": "553:7:4", + "src": "553:7:13", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -903,60 +907,60 @@ }, { "constant": false, - "id": 1057, + "id": 1519, "name": "data", "nodeType": "VariableDeclaration", - "scope": 1080, - "src": "573:10:4", + "scope": 1542, + "src": "573:10:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" + "typeString": "bytes" }, "typeName": { - "id": 1056, + "id": 1518, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "573:5:4", + "src": "573:5:13", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" + "typeString": "bytes" } }, "value": null, "visibility": "internal" } ], - "src": "552:32:4" + "src": "552:32:13" }, "payable": false, "returnParameters": { - "id": 1061, + "id": 1523, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1060, + "id": 1522, "name": "proxy", "nodeType": "VariableDeclaration", - "scope": 1080, - "src": "617:11:4", + "scope": 1542, + "src": "617:11:13", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1046", + "typeIdentifier": "t_contract$_Proxy_$1508", "typeString": "contract Proxy" }, "typeName": { "contractScope": null, - "id": 1059, + "id": 1521, "name": "Proxy", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1046, - "src": "617:5:4", + "referencedDeclaration": 1508, + "src": "617:5:13", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1046", + "typeIdentifier": "t_contract$_Proxy_$1508", "typeString": "contract Proxy" } }, @@ -964,51 +968,39 @@ "visibility": "internal" } ], - "src": "616:13:4" + "src": "616:13:13" }, - "scope": 1081, - "src": "532:366:4", + "scope": 1543, + "src": "532:416:13", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 1082, - "src": "225:675:4" + "scope": 1544, + "src": "225:725:13" } ], - "src": "0:901:4" + "src": "0:951:13" }, "compiler": { "name": "solc", - "version": "0.4.19+commit.c4cbbb05.Emscripten.clang" + "version": "0.4.23+commit.124ca40d.Emscripten.clang" }, "networks": { "4": { "events": {}, "links": {}, - "address": "0x28442b8a4c6ffbe02fa75a1d1524b7c38ef79194", - "transactionHash": "0xc0e9f6268bb1b4e75e1683d0d93175523c18a23ef01bf660f6332d54ca03ad92" - }, - "42": { - "events": {}, - "links": {}, - "address": "0x53294c9c8def7e613c5bc68ac232125c0a60bef7", - "transactionHash": "0x641afc57ac89b6f66587df51dda6b602bf35fc0feef170b48e8a047729eb8784" - }, - "1525342778744": { - "events": {}, - "links": {}, - "address": "0xba6fb7147e7586b483610639adf7ad72ca52bb0f", - "transactionHash": "0x9eef5bbd728a1a1add6215268dd534fda491d32af43574c029fefa98eb798e03" + "address": "0xdc7a0c8475e99fa755e935ffbe04b84ead9aadc7", + "transactionHash": "0xd1d3b32e56f0533181f582cabad03ce3e98dd1083b31baff076d9e53d1143e15" }, - "1525789101965": { + "1525950336085": { "events": {}, "links": {}, - "address": "0x6fc8a87bf7e3499f14c21396b773cc92adb7d1e6", - "transactionHash": "0x70d96a3ae7424f041f6d56773e5500d9eecc075b3ec5b9fb63ee06b91354965c" + "address": "0x7686eac12d94e3c0bdfe0a00ec759f89fbd115f7", + "transactionHash": "0x5b47c779cfd719a97f218a56d99b64b2c5b382549f3375822d5afed010cdb9c5" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-08T14:18:44.019Z" + "updatedAt": "2018-05-10T11:07:04.678Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/SelfAuthorized.json b/safe-contracts/build/contracts/SelfAuthorized.json new file mode 100644 index 0000000000..17b31a20c0 --- /dev/null +++ b/safe-contracts/build/contracts/SelfAuthorized.json @@ -0,0 +1,435 @@ +{ + "contractName": "SelfAuthorized", + "abi": [], + "bytecode": "0x6080604052348015600f57600080fd5b50603580601d6000396000f3006080604052600080fd00a165627a7a72305820c359a8a0df732b4d3e100e43277411dee19c572529edb454cbf1fa9ee91508150029", + "deployedBytecode": "0x6080604052600080fd00a165627a7a72305820c359a8a0df732b4d3e100e43277411dee19c572529edb454cbf1fa9ee91508150029", + "sourceMap": "152:118:14:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;152:118:14;;;;;;;", + "deployedSourceMap": "152:118:14:-;;;;;", + "source": "pragma solidity 0.4.23;\n\n\n/// @title SelfAuthorized - authorizes current contract to perform actions\n/// @author Richard Meissner - \ncontract SelfAuthorized {\n modifier authorized() {\n require(msg.sender == address(this));\n _;\n }\n}\n", + "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/SelfAuthorized.sol", + "ast": { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/SelfAuthorized.sol", + "exportedSymbols": { + "SelfAuthorized": [ + 1559 + ] + }, + "id": 1560, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1545, + "literals": [ + "solidity", + "0.4", + ".23" + ], + "nodeType": "PragmaDirective", + "src": "0:23:14" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": "@title SelfAuthorized - authorizes current contract to perform actions\n @author Richard Meissner - ", + "fullyImplemented": true, + "id": 1559, + "linearizedBaseContracts": [ + 1559 + ], + "name": "SelfAuthorized", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 1557, + "nodeType": "Block", + "src": "204:64:14", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1553, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1548, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2465, + "src": "222:3:14", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1549, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "222:10:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1551, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2484, + "src": "244:4:14", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SelfAuthorized_$1559", + "typeString": "contract SelfAuthorized" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_SelfAuthorized_$1559", + "typeString": "contract SelfAuthorized" + } + ], + "id": 1550, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "236:7:14", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1552, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "236:13:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "222:27:14", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1547, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "214:7:14", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1554, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "214:36:14", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1555, + "nodeType": "ExpressionStatement", + "src": "214:36:14" + }, + { + "id": 1556, + "nodeType": "PlaceholderStatement", + "src": "260:1:14" + } + ] + }, + "documentation": null, + "id": 1558, + "name": "authorized", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 1546, + "nodeType": "ParameterList", + "parameters": [], + "src": "201:2:14" + }, + "src": "182:86:14", + "visibility": "internal" + } + ], + "scope": 1560, + "src": "152:118:14" + } + ], + "src": "0:271:14" + }, + "legacyAST": { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/SelfAuthorized.sol", + "exportedSymbols": { + "SelfAuthorized": [ + 1559 + ] + }, + "id": 1560, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1545, + "literals": [ + "solidity", + "0.4", + ".23" + ], + "nodeType": "PragmaDirective", + "src": "0:23:14" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": "@title SelfAuthorized - authorizes current contract to perform actions\n @author Richard Meissner - ", + "fullyImplemented": true, + "id": 1559, + "linearizedBaseContracts": [ + 1559 + ], + "name": "SelfAuthorized", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 1557, + "nodeType": "Block", + "src": "204:64:14", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1553, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1548, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2465, + "src": "222:3:14", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1549, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "222:10:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1551, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2484, + "src": "244:4:14", + "typeDescriptions": { + "typeIdentifier": "t_contract$_SelfAuthorized_$1559", + "typeString": "contract SelfAuthorized" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_SelfAuthorized_$1559", + "typeString": "contract SelfAuthorized" + } + ], + "id": 1550, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "236:7:14", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1552, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "236:13:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "222:27:14", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1547, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "214:7:14", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1554, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "214:36:14", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1555, + "nodeType": "ExpressionStatement", + "src": "214:36:14" + }, + { + "id": 1556, + "nodeType": "PlaceholderStatement", + "src": "260:1:14" + } + ] + }, + "documentation": null, + "id": 1558, + "name": "authorized", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 1546, + "nodeType": "ParameterList", + "parameters": [], + "src": "201:2:14" + }, + "src": "182:86:14", + "visibility": "internal" + } + ], + "scope": 1560, + "src": "152:118:14" + } + ], + "src": "0:271:14" + }, + "compiler": { + "name": "solc", + "version": "0.4.23+commit.124ca40d.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "2.0.0", + "updatedAt": "2018-05-10T10:43:07.901Z" +} \ No newline at end of file diff --git a/safe-contracts/build/contracts/SocialRecoveryModule.json b/safe-contracts/build/contracts/SocialRecoveryModule.json new file mode 100644 index 0000000000..84be143d69 --- /dev/null +++ b/safe-contracts/build/contracts/SocialRecoveryModule.json @@ -0,0 +1,6965 @@ +{ + "contractName": "SocialRecoveryModule", + "abi": [ + { + "constant": true, + "inputs": [], + "name": "REPLACE_OWNER_FUNCTION_IDENTIFIER", + "outputs": [ + { + "name": "", + "type": "bytes4" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "threshold", + "outputs": [ + { + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "manager", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "address" + } + ], + "name": "isFriend", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_masterCopy", + "type": "address" + } + ], + "name": "changeMasterCopy", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "NAME", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "bytes32" + }, + { + "name": "", + "type": "address" + } + ], + "name": "isConfirmed", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "uint256" + } + ], + "name": "friends", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "bytes32" + } + ], + "name": "isExecuted", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "VERSION", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_friends", + "type": "address[]" + }, + { + "name": "_threshold", + "type": "uint8" + } + ], + "name": "setup", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "dataHash", + "type": "bytes32" + } + ], + "name": "confirmTransaction", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "data", + "type": "bytes" + } + ], + "name": "recoverAccess", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "dataHash", + "type": "bytes32" + } + ], + "name": "isConfirmedByRequiredFriends", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "data", + "type": "bytes" + } + ], + "name": "getDataHash", + "outputs": [ + { + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b50611131806100206000396000f3006080604052600436106100db576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806336749c1a146100e05780633cf5b3091461014957806342cde4e8146101bc578063481c6a75146101ed57806368125a1b1461024457806379716e431461029f5780637de7edef146102d05780639ca89d0d14610313578063a3f4df7e1461035c578063ae68b056146103ec578063b79ffaff14610471578063ce146828146104da578063d2740c7614610547578063e52cb36a146105b0578063ffa1ad74146105f9575b600080fd5b3480156100ec57600080fd5b506100f5610689565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b34801561015557600080fd5b506101ba60048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff1690602001909291905050506106ad565b005b3480156101c857600080fd5b506101d1610822565b604051808260ff1660ff16815260200191505060405180910390f35b3480156101f957600080fd5b50610202610835565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561025057600080fd5b50610285600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061085b565b604051808215151515815260200191505060405180910390f35b3480156102ab57600080fd5b506102ce600480360381019080803560001916906020019092919050505061087b565b005b3480156102dc57600080fd5b50610311600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061097c565b005b34801561031f57600080fd5b506103426004803603810190808035600019169060200190929190505050610a41565b604051808215151515815260200191505060405180910390f35b34801561036857600080fd5b50610371610b40565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103b1578082015181840152602081019050610396565b50505050905090810190601f1680156103de5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103f857600080fd5b50610453600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610b79565b60405180826000191660001916815260200191505060405180910390f35b34801561047d57600080fd5b506104c06004803603810190808035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610be5565b604051808215151515815260200191505060405180910390f35b3480156104e657600080fd5b5061050560048036038101908080359060200190929190505050610c14565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561055357600080fd5b506105ae600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610c52565b005b3480156105bc57600080fd5b506105df6004803603810190808035600019169060200190929190505050610f55565b604051808215151515815260200191505060405180910390f35b34801561060557600080fd5b5061060e610f75565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561064e578082015181840152602081019050610633565b50505050905090810190601f16801561067b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b7f54e99c6e0000000000000000000000000000000000000000000000000000000081565b60008083518360ff16111515156106c357600080fd5b60028360ff16101515156106d657600080fd5b6106de610fae565b600091505b83518210156107ea5783828151811015156106fa57fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff161415151561072c57600080fd5b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561078557600080fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555081806001019250506106e3565b8360029080519060200190610800929190611038565b5082600160146101000a81548160ff021916908360ff16021790555050505050565b600160149054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60036020528060005260406000206000915054906101000a900460ff1681565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156108d357600080fd5b60046000826000191660001916815260200190815260200160002060009054906101000a900460ff1615151561090857600080fd5b600160056000836000191660001916815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156109d857600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156109fe57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060008090505b600280549050811015610b34576005600085600019166000191681526020019081526020016000206000600283815481101515610a8357fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610b045781806001019250505b600160149054906101000a900460ff1660ff16821415610b275760019250610b39565b8080600101915050610a4a565b600092505b5050919050565b6040805190810160405280601681526020017f536f6369616c205265636f76657279204d6f64756c650000000000000000000081525081565b6000816040518082805190602001908083835b602083101515610bb15780518252602082019150602081019050602083039250610b8c565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209050919050565b60056020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b600281815481101515610c2357fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610cad57600080fd5b602083015191507f54e99c6e000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141515610d2057600080fd5b610d2983610b79565b905060046000826000191660001916815260200190815260200160002060009054906101000a900460ff16151515610d6057600080fd5b610d6981610a41565b1515610d7457600080fd5b600160046000836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b021640a600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660008660006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001836002811115610e8557fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b83811015610ec5578082015181840152602081019050610eaa565b50505050905090810190601f168015610ef25780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610f1457600080fd5b505af1158015610f28573d6000803e3d6000fd5b505050506040513d6020811015610f3e57600080fd5b810190808051906020019092919050505050505050565b60046020528060005260406000206000915054906101000a900460ff1681565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610ff557600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b8280548282559060005260206000209081019282156110b1579160200282015b828111156110b05782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190611058565b5b5090506110be91906110c2565b5090565b61110291905b808211156110fe57600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055506001016110c8565b5090565b905600a165627a7a72305820d0d4a797e7a772df46dc5c07d636325879d9fe91e9fe0a658f50ee02e27f0c8e0029", + "deployedBytecode": "0x6080604052600436106100db576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806336749c1a146100e05780633cf5b3091461014957806342cde4e8146101bc578063481c6a75146101ed57806368125a1b1461024457806379716e431461029f5780637de7edef146102d05780639ca89d0d14610313578063a3f4df7e1461035c578063ae68b056146103ec578063b79ffaff14610471578063ce146828146104da578063d2740c7614610547578063e52cb36a146105b0578063ffa1ad74146105f9575b600080fd5b3480156100ec57600080fd5b506100f5610689565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b34801561015557600080fd5b506101ba60048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff1690602001909291905050506106ad565b005b3480156101c857600080fd5b506101d1610822565b604051808260ff1660ff16815260200191505060405180910390f35b3480156101f957600080fd5b50610202610835565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561025057600080fd5b50610285600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061085b565b604051808215151515815260200191505060405180910390f35b3480156102ab57600080fd5b506102ce600480360381019080803560001916906020019092919050505061087b565b005b3480156102dc57600080fd5b50610311600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061097c565b005b34801561031f57600080fd5b506103426004803603810190808035600019169060200190929190505050610a41565b604051808215151515815260200191505060405180910390f35b34801561036857600080fd5b50610371610b40565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103b1578082015181840152602081019050610396565b50505050905090810190601f1680156103de5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103f857600080fd5b50610453600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610b79565b60405180826000191660001916815260200191505060405180910390f35b34801561047d57600080fd5b506104c06004803603810190808035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610be5565b604051808215151515815260200191505060405180910390f35b3480156104e657600080fd5b5061050560048036038101908080359060200190929190505050610c14565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561055357600080fd5b506105ae600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610c52565b005b3480156105bc57600080fd5b506105df6004803603810190808035600019169060200190929190505050610f55565b604051808215151515815260200191505060405180910390f35b34801561060557600080fd5b5061060e610f75565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561064e578082015181840152602081019050610633565b50505050905090810190601f16801561067b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b7f54e99c6e0000000000000000000000000000000000000000000000000000000081565b60008083518360ff16111515156106c357600080fd5b60028360ff16101515156106d657600080fd5b6106de610fae565b600091505b83518210156107ea5783828151811015156106fa57fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff161415151561072c57600080fd5b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561078557600080fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555081806001019250506106e3565b8360029080519060200190610800929190611038565b5082600160146101000a81548160ff021916908360ff16021790555050505050565b600160149054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60036020528060005260406000206000915054906101000a900460ff1681565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156108d357600080fd5b60046000826000191660001916815260200190815260200160002060009054906101000a900460ff1615151561090857600080fd5b600160056000836000191660001916815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156109d857600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156109fe57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060008090505b600280549050811015610b34576005600085600019166000191681526020019081526020016000206000600283815481101515610a8357fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610b045781806001019250505b600160149054906101000a900460ff1660ff16821415610b275760019250610b39565b8080600101915050610a4a565b600092505b5050919050565b6040805190810160405280601681526020017f536f6369616c205265636f76657279204d6f64756c650000000000000000000081525081565b6000816040518082805190602001908083835b602083101515610bb15780518252602082019150602081019050602083039250610b8c565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209050919050565b60056020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b600281815481101515610c2357fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610cad57600080fd5b602083015191507f54e99c6e000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141515610d2057600080fd5b610d2983610b79565b905060046000826000191660001916815260200190815260200160002060009054906101000a900460ff16151515610d6057600080fd5b610d6981610a41565b1515610d7457600080fd5b600160046000836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b021640a600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660008660006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001836002811115610e8557fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b83811015610ec5578082015181840152602081019050610eaa565b50505050905090810190601f168015610ef25780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610f1457600080fd5b505af1158015610f28573d6000803e3d6000fd5b505050506040513d6020811015610f3e57600080fd5b810190808051906020019092919050505050505050565b60046020528060005260406000206000915054906101000a900460ff1681565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610ff557600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b8280548282559060005260206000209081019282156110b1579160200282015b828111156110b05782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190611058565b5b5090506110be91906110c2565b5090565b61110291905b808211156110fe57600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055506001016110c8565b5090565b905600a165627a7a72305820d0d4a797e7a772df46dc5c07d636325879d9fe91e9fe0a658f50ee02e27f0c8e0029", + "sourceMap": "306:3521:20:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;306:3521:20;;;;;;;", + "deployedSourceMap": "306:3521:20:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;459:72;;8:9:-1;5:2;;;30:1;27;20:12;5:2;459:72:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1253:494;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1253:494:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;538:22;;8:9:-1;5:2;;;30:1;27;20:12;5:2;538:22:20;;;;;;;;;;;;;;;;;;;;;;;;;;;262:28:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;262:28:8;;;;;;;;;;;;;;;;;;;;;;;;;;;661:41:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;661:41:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1860:181;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1860:181:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;626:208:6;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:208:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;3161:405:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3161:405:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;353:54;;8:9:-1;5:2;;;30:1;27;20:12;5:2;353:54:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;353:54:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3695:130;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3695:130:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;905:65;;8:9:-1;5:2;;;30:1;27;20:12;5:2;905:65:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;566:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;566:24:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2245:755;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2245:755:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;770:43;;8:9:-1;5:2;;;30:1;27;20:12;5:2;770:43:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;413:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;413:40:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;413:40:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;459:72;;;:::o;1253:494::-;1476:9;1531:14;1357:8;:15;1343:10;:29;;;;1335:38;;;;;;;;1405:1;1391:10;:15;;;;1383:24;;;;;;;;1417:12;:10;:12::i;:::-;1488:1;1476:13;;1471:210;1495:8;:15;1491:1;:19;1471:210;;;1548:8;1557:1;1548:11;;;;;;;;;;;;;;;;;;1531:28;;1591:1;1581:6;:11;;;;1573:20;;;;;;;;1616:8;:16;1625:6;1616:16;;;;;;;;;;;;;;;;;;;;;;;;;1615:17;1607:26;;;;;;;;1666:4;1647:8;:16;1656:6;1647:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;1512:3;;;;;;;1471:210;;;1700:8;1690:7;:18;;;;;;;;;;;;:::i;:::-;;1730:10;1718:9;;:22;;;;;;;;;;;;;;;;;;1253:494;;;;:::o;538:22::-;;;;;;;;;;;;;:::o;262:28:8:-;;;;;;;;;;;;;:::o;661:41:20:-;;;;;;;;;;;;;;;;;;;;;;:::o;1860:181::-;1017:8;:20;1026:10;1017:20;;;;;;;;;;;;;;;;;;;;;;;;;1009:29;;;;;;;;1963:10;:20;1974:8;1963:20;;;;;;;;;;;;;;;;;;;;;;;;;;;1962:21;1954:30;;;;;;;;2030:4;1994:11;:21;2006:8;1994:21;;;;;;;;;;;;;;;;;:33;2016:10;1994:33;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;1860:181;:::o;626:208:6:-;359:7:8;;;;;;;;;;;337:30;;:10;:30;;;329:39;;;;;;;;791:1:6;776:11;:16;;;;768:25;;;;;;;;816:11;803:10;;:24;;;;;;;;;;;;;;;;;;626:208;:::o;3161:405:20:-;3262:4;3282:25;3322:9;3334:1;3322:13;;3317:221;3341:7;:14;;;;3337:1;:18;3317:221;;;3380:11;:21;3392:8;3380:21;;;;;;;;;;;;;;;;;:33;3402:7;3410:1;3402:10;;;;;;;;;;;;;;;;;;;;;;;;;;;3380:33;;;;;;;;;;;;;;;;;;;;;;;;;3376:74;;;3431:19;;;;;;;3376:74;3489:9;;;;;;;;;;;3468:30;;:17;:30;3464:63;;;3523:4;3516:11;;;;3464:63;3357:3;;;;;;;3317:221;;;3554:5;3547:12;;3161:405;;;;;;:::o;353:54::-;;;;;;;;;;;;;;;;;;;;:::o;3695:130::-;3773:7;3813:4;3803:15;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;3803:15:20;;;;;;;;;;;;;;;;3796:22;;3695:130;;;:::o;905:65::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;566:24::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2245:755::-;2485:25;2744:16;2381:8;:20;2390:10;2381:20;;;;;;;;;;;;;;;;;;;;;;;;;2373:29;;;;;;;;2645:4;2639;2635:15;2629:22;2607:44;;2700:33;2678:55;;;:18;:55;;;;2670:64;;;;;;;;2763:17;2775:4;2763:11;:17::i;:::-;2744:36;;2799:10;:20;2810:8;2799:20;;;;;;;;;;;;;;;;;;;;;;;;;;;2798:21;2790:30;;;;;;;;2838:38;2867:8;2838:28;:38::i;:::-;2830:47;;;;;;;;2910:4;2887:10;:20;2898:8;2887:20;;;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;2924:7;;;;;;;;;;;:21;;;2954:7;;;;;;;;;;;2964:1;2967:4;2973:19;2924:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;2924:69:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2924:69:20;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2924:69:20;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2924:69:20;;;;;;;;;;;;;;;;;2245:755;;;:::o;770:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;413:40::-;;;;;;;;;;;;;;;;;;;;:::o;392:268:8:-;606:1;594:7;;;;;;;;;;;586:21;;;578:30;;;;;;;;642:10;618:7;;:35;;;;;;;;;;;;;;;;;;392:268::o;306:3521:20:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", + "source": "pragma solidity 0.4.23;\nimport \"../Enum.sol\";\nimport \"../Module.sol\";\nimport \"../ModuleManager.sol\";\nimport \"../OwnerManager.sol\";\n\n\n/// @title Social Recovery Module - Allows to replace an owner without Safe confirmations if friends approve the replacement.\n/// @author Stefan George - \ncontract SocialRecoveryModule is Module {\n\n string public constant NAME = \"Social Recovery Module\";\n string public constant VERSION = \"0.0.1\";\n bytes4 public constant REPLACE_OWNER_FUNCTION_IDENTIFIER = hex\"54e99c6e\";\n\n uint8 public threshold;\n address[] public friends;\n\n // isFriend mapping maps friend's address to friend status.\n mapping (address => bool) public isFriend;\n // isExecuted mapping maps data hash to execution status.\n mapping (bytes32 => bool) public isExecuted;\n // isConfirmed mapping maps data hash to friend's address to confirmation status.\n mapping (bytes32 => mapping (address => bool)) public isConfirmed;\n\n modifier onlyFriend() {\n require(isFriend[msg.sender]);\n _;\n }\n\n /// @dev Setup function sets initial storage of contract.\n /// @param _friends List of friends' addresses.\n /// @param _threshold Required number of friends to confirm replacement.\n function setup(address[] _friends, uint8 _threshold)\n public\n {\n require(_threshold <= _friends.length);\n require(_threshold >= 2);\n setManager();\n // Set allowed friends.\n for (uint256 i = 0; i < _friends.length; i++) {\n address friend = _friends[i];\n require(friend != 0);\n require(!isFriend[friend]);\n isFriend[friend] = true;\n }\n friends = _friends;\n threshold = _threshold;\n }\n\n /// @dev Allows a friend to confirm a Safe transaction.\n /// @param dataHash Safe transaction hash.\n function confirmTransaction(bytes32 dataHash)\n public\n onlyFriend\n {\n require(!isExecuted[dataHash]);\n isConfirmed[dataHash][msg.sender] = true;\n }\n\n /// @dev Returns if Safe transaction is a valid owner replacement transaction.\n /// @param data Encoded owner replacement transaction.\n /// @return Returns if transaction can be executed.\n function recoverAccess(bytes data)\n public\n {\n // Only friends are allowed to execute the replacement.\n require(isFriend[msg.sender]);\n // Validate that transaction is a owner replacement transaction.\n bytes4 functionIdentifier;\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n functionIdentifier := mload(add(data, 0x20))\n }\n require(functionIdentifier == REPLACE_OWNER_FUNCTION_IDENTIFIER);\n bytes32 dataHash = getDataHash(data);\n require(!isExecuted[dataHash]);\n require(isConfirmedByRequiredFriends(dataHash));\n isExecuted[dataHash] = true;\n manager.executeModule(address(manager), 0, data, Enum.Operation.Call);\n }\n\n /// @dev Returns if Safe transaction is a valid owner replacement transaction.\n /// @param dataHash Data hash.\n /// @return Confirmation status.\n function isConfirmedByRequiredFriends(bytes32 dataHash)\n public\n view\n returns (bool)\n {\n uint256 confirmationCount;\n for (uint256 i = 0; i < friends.length; i++) {\n if (isConfirmed[dataHash][friends[i]])\n confirmationCount++;\n if (confirmationCount == threshold)\n return true;\n }\n return false;\n }\n\n /// @dev Returns hash of data encoding owner replacement.\n /// @param data Data payload.\n /// @return Data hash.\n function getDataHash(bytes data)\n public\n view\n returns (bytes32)\n {\n return keccak256(data);\n }\n}\n", + "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/SocialRecoveryModule.sol", + "ast": { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/SocialRecoveryModule.sol", + "exportedSymbols": { + "SocialRecoveryModule": [ + 2304 + ] + }, + "id": 2305, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2047, + "literals": [ + "solidity", + "0.4", + ".23" + ], + "nodeType": "PragmaDirective", + "src": "0:23:20" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Enum.sol", + "file": "../Enum.sol", + "id": 2048, + "nodeType": "ImportDirective", + "scope": 2305, + "sourceUnit": 31, + "src": "24:21:20", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", + "file": "../Module.sol", + "id": 2049, + "nodeType": "ImportDirective", + "scope": 2305, + "sourceUnit": 878, + "src": "46:23:20", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ModuleManager.sol", + "file": "../ModuleManager.sol", + "id": 2050, + "nodeType": "ImportDirective", + "scope": 2305, + "sourceUnit": 1143, + "src": "70:30:20", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", + "file": "../OwnerManager.sol", + "id": 2051, + "nodeType": "ImportDirective", + "scope": 2305, + "sourceUnit": 1439, + "src": "101:29:20", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 2052, + "name": "Module", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 877, + "src": "339:6:20", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$877", + "typeString": "contract Module" + } + }, + "id": 2053, + "nodeType": "InheritanceSpecifier", + "src": "339:6:20" + } + ], + "contractDependencies": [ + 779, + 877, + 1559 + ], + "contractKind": "contract", + "documentation": "@title Social Recovery Module - Allows to replace an owner without Safe confirmations if friends approve the replacement.\n @author Stefan George - ", + "fullyImplemented": true, + "id": 2304, + "linearizedBaseContracts": [ + 2304, + 877, + 779, + 1559 + ], + "name": "SocialRecoveryModule", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "id": 2056, + "name": "NAME", + "nodeType": "VariableDeclaration", + "scope": 2304, + "src": "353:54:20", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory", + "typeString": "string" + }, + "typeName": { + "id": 2054, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "353:6:20", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "536f6369616c205265636f76657279204d6f64756c65", + "id": 2055, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "383:24:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_8f499aea563eae5544b16c9123d6c7c8537a7d9dd86296aa60c65de194207230", + "typeString": "literal_string \"Social Recovery Module\"" + }, + "value": "Social Recovery Module" + }, + "visibility": "public" + }, + { + "constant": true, + "id": 2059, + "name": "VERSION", + "nodeType": "VariableDeclaration", + "scope": 2304, + "src": "413:40:20", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory", + "typeString": "string" + }, + "typeName": { + "id": 2057, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "413:6:20", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "302e302e31", + "id": 2058, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "446:7:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", + "typeString": "literal_string \"0.0.1\"" + }, + "value": "0.0.1" + }, + "visibility": "public" + }, + { + "constant": true, + "id": 2062, + "name": "REPLACE_OWNER_FUNCTION_IDENTIFIER", + "nodeType": "VariableDeclaration", + "scope": 2304, + "src": "459:72:20", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 2060, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "459:6:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "54e99c6e", + "id": 2061, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "518:13:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c9d777df93ed5e148240dbbfbc0215def5044b10739d563ea8310789d1317911", + "typeString": "literal_string (contains invalid UTF-8 sequence at position 4)" + }, + "value": null + }, + "visibility": "public" + }, + { + "constant": false, + "id": 2064, + "name": "threshold", + "nodeType": "VariableDeclaration", + "scope": 2304, + "src": "538:22:20", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 2063, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "538:5:20", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 2067, + "name": "friends", + "nodeType": "VariableDeclaration", + "scope": 2304, + "src": "566:24:20", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 2065, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "566:7:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2066, + "length": null, + "nodeType": "ArrayTypeName", + "src": "566:9:20", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 2071, + "name": "isFriend", + "nodeType": "VariableDeclaration", + "scope": 2304, + "src": "661:41:20", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "typeName": { + "id": 2070, + "keyType": { + "id": 2068, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "670:7:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "661:25:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "valueType": { + "id": 2069, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "681:4:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 2075, + "name": "isExecuted", + "nodeType": "VariableDeclaration", + "scope": 2304, + "src": "770:43:20", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + }, + "typeName": { + "id": 2074, + "keyType": { + "id": 2072, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "779:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Mapping", + "src": "770:25:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + }, + "valueType": { + "id": 2073, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "790:4:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 2081, + "name": "isConfirmed", + "nodeType": "VariableDeclaration", + "scope": 2304, + "src": "905:65:20", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(bytes32 => mapping(address => bool))" + }, + "typeName": { + "id": 2080, + "keyType": { + "id": 2076, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "914:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Mapping", + "src": "905:46:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(bytes32 => mapping(address => bool))" + }, + "valueType": { + "id": 2079, + "keyType": { + "id": 2077, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "934:7:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "925:25:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "valueType": { + "id": 2078, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "945:4:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + } + }, + "value": null, + "visibility": "public" + }, + { + "body": { + "id": 2091, + "nodeType": "Block", + "src": "999:57:20", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2084, + "name": "isFriend", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2071, + "src": "1017:8:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 2087, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2085, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2465, + "src": "1026:3:20", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2086, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1026:10:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1017:20:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2083, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "1009:7:20", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2088, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1009:29:20", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2089, + "nodeType": "ExpressionStatement", + "src": "1009:29:20" + }, + { + "id": 2090, + "nodeType": "PlaceholderStatement", + "src": "1048:1:20" + } + ] + }, + "documentation": null, + "id": 2092, + "name": "onlyFriend", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 2082, + "nodeType": "ParameterList", + "parameters": [], + "src": "996:2:20" + }, + "src": "977:79:20", + "visibility": "internal" + }, + { + "body": { + "id": 2162, + "nodeType": "Block", + "src": "1325:422:20", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2104, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2101, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2097, + "src": "1343:10:20", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2102, + "name": "_friends", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2095, + "src": "1357:8:20", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 2103, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1357:15:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1343:29:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2100, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "1335:7:20", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2105, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1335:38:20", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2106, + "nodeType": "ExpressionStatement", + "src": "1335:38:20" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 2110, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2108, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2097, + "src": "1391:10:20", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 2109, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1405:1:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "1391:15:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2107, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "1383:7:20", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2111, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1383:24:20", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2112, + "nodeType": "ExpressionStatement", + "src": "1383:24:20" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2113, + "name": "setManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 876, + "src": "1417:10:20", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 2114, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1417:12:20", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2115, + "nodeType": "ExpressionStatement", + "src": "1417:12:20" + }, + { + "body": { + "id": 2152, + "nodeType": "Block", + "src": "1517:164:20", + "statements": [ + { + "assignments": [ + 2128 + ], + "declarations": [ + { + "constant": false, + "id": 2128, + "name": "friend", + "nodeType": "VariableDeclaration", + "scope": 2163, + "src": "1531:14:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2127, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1531:7:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2132, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2129, + "name": "_friends", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2095, + "src": "1548:8:20", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 2131, + "indexExpression": { + "argumentTypes": null, + "id": 2130, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2117, + "src": "1557:1:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1548:11:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1531:28:20" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2136, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2134, + "name": "friend", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2128, + "src": "1581:6:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2135, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1591:1:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1581:11:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2133, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "1573:7:20", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2137, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1573:20:20", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2138, + "nodeType": "ExpressionStatement", + "src": "1573:20:20" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2143, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "1615:17:20", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2140, + "name": "isFriend", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2071, + "src": "1616:8:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 2142, + "indexExpression": { + "argumentTypes": null, + "id": 2141, + "name": "friend", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2128, + "src": "1625:6:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1616:16:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2139, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "1607:7:20", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2144, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1607:26:20", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2145, + "nodeType": "ExpressionStatement", + "src": "1607:26:20" + }, + { + "expression": { + "argumentTypes": null, + "id": 2150, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2146, + "name": "isFriend", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2071, + "src": "1647:8:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 2148, + "indexExpression": { + "argumentTypes": null, + "id": 2147, + "name": "friend", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2128, + "src": "1656:6:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1647:16:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 2149, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1666:4:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "1647:23:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2151, + "nodeType": "ExpressionStatement", + "src": "1647:23:20" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2123, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2120, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2117, + "src": "1491:1:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2121, + "name": "_friends", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2095, + "src": "1495:8:20", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 2122, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1495:15:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1491:19:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2153, + "initializationExpression": { + "assignments": [ + 2117 + ], + "declarations": [ + { + "constant": false, + "id": 2117, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 2163, + "src": "1476:9:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2116, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1476:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2119, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 2118, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1488:1:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "1476:13:20" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 2125, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "1512:3:20", + "subExpression": { + "argumentTypes": null, + "id": 2124, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2117, + "src": "1512:1:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2126, + "nodeType": "ExpressionStatement", + "src": "1512:3:20" + }, + "nodeType": "ForStatement", + "src": "1471:210:20" + }, + { + "expression": { + "argumentTypes": null, + "id": 2156, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2154, + "name": "friends", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2067, + "src": "1690:7:20", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 2155, + "name": "_friends", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2095, + "src": "1700:8:20", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "src": "1690:18:20", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 2157, + "nodeType": "ExpressionStatement", + "src": "1690:18:20" + }, + { + "expression": { + "argumentTypes": null, + "id": 2160, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2158, + "name": "threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2064, + "src": "1718:9:20", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 2159, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2097, + "src": "1730:10:20", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "1718:22:20", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 2161, + "nodeType": "ExpressionStatement", + "src": "1718:22:20" + } + ] + }, + "documentation": "@dev Setup function sets initial storage of contract.\n @param _friends List of friends' addresses.\n @param _threshold Required number of friends to confirm replacement.", + "id": 2163, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "setup", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2098, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2095, + "name": "_friends", + "nodeType": "VariableDeclaration", + "scope": 2163, + "src": "1268:18:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 2093, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1268:7:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2094, + "length": null, + "nodeType": "ArrayTypeName", + "src": "1268:9:20", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2097, + "name": "_threshold", + "nodeType": "VariableDeclaration", + "scope": 2163, + "src": "1288:16:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 2096, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1288:5:20", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1267:38:20" + }, + "payable": false, + "returnParameters": { + "id": 2099, + "nodeType": "ParameterList", + "parameters": [], + "src": "1325:0:20" + }, + "scope": 2304, + "src": "1253:494:20", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2186, + "nodeType": "Block", + "src": "1944:97:20", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2174, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "1962:21:20", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2171, + "name": "isExecuted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2075, + "src": "1963:10:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + } + }, + "id": 2173, + "indexExpression": { + "argumentTypes": null, + "id": 2172, + "name": "dataHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2165, + "src": "1974:8:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1963:20:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2170, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "1954:7:20", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2175, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1954:30:20", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2176, + "nodeType": "ExpressionStatement", + "src": "1954:30:20" + }, + { + "expression": { + "argumentTypes": null, + "id": 2184, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2177, + "name": "isConfirmed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2081, + "src": "1994:11:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(bytes32 => mapping(address => bool))" + } + }, + "id": 2181, + "indexExpression": { + "argumentTypes": null, + "id": 2178, + "name": "dataHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2165, + "src": "2006:8:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1994:21:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 2182, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2179, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2465, + "src": "2016:3:20", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2180, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2016:10:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1994:33:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 2183, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2030:4:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "1994:40:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2185, + "nodeType": "ExpressionStatement", + "src": "1994:40:20" + } + ] + }, + "documentation": "@dev Allows a friend to confirm a Safe transaction.\n @param dataHash Safe transaction hash.", + "id": 2187, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 2168, + "modifierName": { + "argumentTypes": null, + "id": 2167, + "name": "onlyFriend", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "1929:10:20", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "1929:10:20" + } + ], + "name": "confirmTransaction", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2166, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2165, + "name": "dataHash", + "nodeType": "VariableDeclaration", + "scope": 2187, + "src": "1888:16:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2164, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1888:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1887:18:20" + }, + "payable": false, + "returnParameters": { + "id": 2169, + "nodeType": "ParameterList", + "parameters": [], + "src": "1944:0:20" + }, + "scope": 2304, + "src": "1860:181:20", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2247, + "nodeType": "Block", + "src": "2299:701:20", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2193, + "name": "isFriend", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2071, + "src": "2381:8:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 2196, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2194, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2465, + "src": "2390:3:20", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2195, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2390:10:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2381:20:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2192, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "2373:7:20", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2197, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2373:29:20", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2198, + "nodeType": "ExpressionStatement", + "src": "2373:29:20" + }, + { + "assignments": [], + "declarations": [ + { + "constant": false, + "id": 2200, + "name": "functionIdentifier", + "nodeType": "VariableDeclaration", + "scope": 2248, + "src": "2485:25:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 2199, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "2485:6:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2201, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "2485:25:20" + }, + { + "externalReferences": [ + { + "functionIdentifier": { + "declaration": 2200, + "isOffset": false, + "isSlot": false, + "src": "2607:18:20", + "valueSize": 1 + } + }, + { + "data": { + "declaration": 2189, + "isOffset": false, + "isSlot": false, + "src": "2639:4:20", + "valueSize": 1 + } + } + ], + "id": 2202, + "nodeType": "InlineAssembly", + "operations": "{\n functionIdentifier := mload(add(data, 0x20))\n}", + "src": "2584:93:20" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 2206, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2204, + "name": "functionIdentifier", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2200, + "src": "2678:18:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 2205, + "name": "REPLACE_OWNER_FUNCTION_IDENTIFIER", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2062, + "src": "2700:33:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "src": "2678:55:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2203, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "2670:7:20", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2207, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2670:64:20", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2208, + "nodeType": "ExpressionStatement", + "src": "2670:64:20" + }, + { + "assignments": [ + 2210 + ], + "declarations": [ + { + "constant": false, + "id": 2210, + "name": "dataHash", + "nodeType": "VariableDeclaration", + "scope": 2248, + "src": "2744:16:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2209, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2744:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2214, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2212, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2189, + "src": "2775:4:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 2211, + "name": "getDataHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2303, + "src": "2763:11:20", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) view returns (bytes32)" + } + }, + "id": 2213, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2763:17:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2744:36:20" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2219, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "2798:21:20", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2216, + "name": "isExecuted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2075, + "src": "2799:10:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + } + }, + "id": 2218, + "indexExpression": { + "argumentTypes": null, + "id": 2217, + "name": "dataHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2210, + "src": "2810:8:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2799:20:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2215, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "2790:7:20", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2220, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2790:30:20", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2221, + "nodeType": "ExpressionStatement", + "src": "2790:30:20" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2224, + "name": "dataHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2210, + "src": "2867:8:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2223, + "name": "isConfirmedByRequiredFriends", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2291, + "src": "2838:28:20", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (bytes32) view returns (bool)" + } + }, + "id": 2225, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2838:38:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2222, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "2830:7:20", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2226, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2830:47:20", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2227, + "nodeType": "ExpressionStatement", + "src": "2830:47:20" + }, + { + "expression": { + "argumentTypes": null, + "id": 2232, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2228, + "name": "isExecuted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2075, + "src": "2887:10:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + } + }, + "id": 2230, + "indexExpression": { + "argumentTypes": null, + "id": 2229, + "name": "dataHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2210, + "src": "2898:8:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2887:20:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 2231, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2910:4:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "2887:27:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2233, + "nodeType": "ExpressionStatement", + "src": "2887:27:20" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2238, + "name": "manager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 844, + "src": "2954:7:20", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ModuleManager_$1142", + "typeString": "contract ModuleManager" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ModuleManager_$1142", + "typeString": "contract ModuleManager" + } + ], + "id": 2237, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2946:7:20", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2239, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2946:16:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "hexValue": "30", + "id": 2240, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2964:1:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "argumentTypes": null, + "id": 2241, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2189, + "src": "2967:4:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2242, + "name": "Enum", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 30, + "src": "2973:4:20", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Enum_$30_$", + "typeString": "type(contract Enum)" + } + }, + "id": 2243, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "Operation", + "nodeType": "MemberAccess", + "referencedDeclaration": 29, + "src": "2973:14:20", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_Operation_$29_$", + "typeString": "type(enum Enum.Operation)" + } + }, + "id": 2244, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Call", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2973:19:20", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + ], + "expression": { + "argumentTypes": null, + "id": 2234, + "name": "manager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 844, + "src": "2924:7:20", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ModuleManager_$1142", + "typeString": "contract ModuleManager" + } + }, + "id": 2236, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "executeModule", + "nodeType": "MemberAccess", + "referencedDeclaration": 1033, + "src": "2924:21:20", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$returns$_t_bool_$", + "typeString": "function (address,uint256,bytes memory,enum Enum.Operation) external returns (bool)" + } + }, + "id": 2245, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2924:69:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2246, + "nodeType": "ExpressionStatement", + "src": "2924:69:20" + } + ] + }, + "documentation": "@dev Returns if Safe transaction is a valid owner replacement transaction.\n @param data Encoded owner replacement transaction.\n @return Returns if transaction can be executed.", + "id": 2248, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "recoverAccess", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2190, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2189, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 2248, + "src": "2268:10:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2188, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2268:5:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2267:12:20" + }, + "payable": false, + "returnParameters": { + "id": 2191, + "nodeType": "ParameterList", + "parameters": [], + "src": "2299:0:20" + }, + "scope": 2304, + "src": "2245:755:20", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2290, + "nodeType": "Block", + "src": "3272:294:20", + "statements": [ + { + "assignments": [], + "declarations": [ + { + "constant": false, + "id": 2256, + "name": "confirmationCount", + "nodeType": "VariableDeclaration", + "scope": 2291, + "src": "3282:25:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2255, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3282:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2257, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "3282:25:20" + }, + { + "body": { + "id": 2286, + "nodeType": "Block", + "src": "3362:176:20", + "statements": [ + { + "condition": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2269, + "name": "isConfirmed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2081, + "src": "3380:11:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(bytes32 => mapping(address => bool))" + } + }, + "id": 2271, + "indexExpression": { + "argumentTypes": null, + "id": 2270, + "name": "dataHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2250, + "src": "3392:8:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3380:21:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 2275, + "indexExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2272, + "name": "friends", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2067, + "src": "3402:7:20", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 2274, + "indexExpression": { + "argumentTypes": null, + "id": 2273, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2259, + "src": "3410:1:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3402:10:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3380:33:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 2279, + "nodeType": "IfStatement", + "src": "3376:74:20", + "trueBody": { + "expression": { + "argumentTypes": null, + "id": 2277, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "3431:19:20", + "subExpression": { + "argumentTypes": null, + "id": 2276, + "name": "confirmationCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2256, + "src": "3431:17:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2278, + "nodeType": "ExpressionStatement", + "src": "3431:19:20" + } + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2282, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2280, + "name": "confirmationCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2256, + "src": "3468:17:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 2281, + "name": "threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2064, + "src": "3489:9:20", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "3468:30:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 2285, + "nodeType": "IfStatement", + "src": "3464:63:20", + "trueBody": { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 2283, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3523:4:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 2254, + "id": 2284, + "nodeType": "Return", + "src": "3516:11:20" + } + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2265, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2262, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2259, + "src": "3337:1:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2263, + "name": "friends", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2067, + "src": "3341:7:20", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 2264, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3341:14:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3337:18:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2287, + "initializationExpression": { + "assignments": [ + 2259 + ], + "declarations": [ + { + "constant": false, + "id": 2259, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 2291, + "src": "3322:9:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2258, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3322:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2261, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 2260, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3334:1:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "3322:13:20" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 2267, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "3357:3:20", + "subExpression": { + "argumentTypes": null, + "id": 2266, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2259, + "src": "3357:1:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2268, + "nodeType": "ExpressionStatement", + "src": "3357:3:20" + }, + "nodeType": "ForStatement", + "src": "3317:221:20" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 2288, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3554:5:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 2254, + "id": 2289, + "nodeType": "Return", + "src": "3547:12:20" + } + ] + }, + "documentation": "@dev Returns if Safe transaction is a valid owner replacement transaction.\n @param dataHash Data hash.\n @return Confirmation status.", + "id": 2291, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "isConfirmedByRequiredFriends", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2251, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2250, + "name": "dataHash", + "nodeType": "VariableDeclaration", + "scope": 2291, + "src": "3199:16:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2249, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3199:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3198:18:20" + }, + "payable": false, + "returnParameters": { + "id": 2254, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2253, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2291, + "src": "3262:4:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2252, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3262:4:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3261:6:20" + }, + "scope": 2304, + "src": "3161:405:20", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2302, + "nodeType": "Block", + "src": "3786:39:20", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2299, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2293, + "src": "3813:4:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 2298, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2459, + "src": "3803:9:20", + "typeDescriptions": { + "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", + "typeString": "function () pure returns (bytes32)" + } + }, + "id": 2300, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3803:15:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 2297, + "id": 2301, + "nodeType": "Return", + "src": "3796:22:20" + } + ] + }, + "documentation": "@dev Returns hash of data encoding owner replacement.\n @param data Data payload.\n @return Data hash.", + "id": 2303, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "getDataHash", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2294, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2293, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 2303, + "src": "3716:10:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2292, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3716:5:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3715:12:20" + }, + "payable": false, + "returnParameters": { + "id": 2297, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2296, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2303, + "src": "3773:7:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2295, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3773:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3772:9:20" + }, + "scope": 2304, + "src": "3695:130:20", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 2305, + "src": "306:3521:20" + } + ], + "src": "0:3828:20" + }, + "legacyAST": { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/SocialRecoveryModule.sol", + "exportedSymbols": { + "SocialRecoveryModule": [ + 2304 + ] + }, + "id": 2305, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2047, + "literals": [ + "solidity", + "0.4", + ".23" + ], + "nodeType": "PragmaDirective", + "src": "0:23:20" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Enum.sol", + "file": "../Enum.sol", + "id": 2048, + "nodeType": "ImportDirective", + "scope": 2305, + "sourceUnit": 31, + "src": "24:21:20", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", + "file": "../Module.sol", + "id": 2049, + "nodeType": "ImportDirective", + "scope": 2305, + "sourceUnit": 878, + "src": "46:23:20", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ModuleManager.sol", + "file": "../ModuleManager.sol", + "id": 2050, + "nodeType": "ImportDirective", + "scope": 2305, + "sourceUnit": 1143, + "src": "70:30:20", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", + "file": "../OwnerManager.sol", + "id": 2051, + "nodeType": "ImportDirective", + "scope": 2305, + "sourceUnit": 1439, + "src": "101:29:20", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 2052, + "name": "Module", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 877, + "src": "339:6:20", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$877", + "typeString": "contract Module" + } + }, + "id": 2053, + "nodeType": "InheritanceSpecifier", + "src": "339:6:20" + } + ], + "contractDependencies": [ + 779, + 877, + 1559 + ], + "contractKind": "contract", + "documentation": "@title Social Recovery Module - Allows to replace an owner without Safe confirmations if friends approve the replacement.\n @author Stefan George - ", + "fullyImplemented": true, + "id": 2304, + "linearizedBaseContracts": [ + 2304, + 877, + 779, + 1559 + ], + "name": "SocialRecoveryModule", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "id": 2056, + "name": "NAME", + "nodeType": "VariableDeclaration", + "scope": 2304, + "src": "353:54:20", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory", + "typeString": "string" + }, + "typeName": { + "id": 2054, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "353:6:20", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "536f6369616c205265636f76657279204d6f64756c65", + "id": 2055, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "383:24:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_8f499aea563eae5544b16c9123d6c7c8537a7d9dd86296aa60c65de194207230", + "typeString": "literal_string \"Social Recovery Module\"" + }, + "value": "Social Recovery Module" + }, + "visibility": "public" + }, + { + "constant": true, + "id": 2059, + "name": "VERSION", + "nodeType": "VariableDeclaration", + "scope": 2304, + "src": "413:40:20", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory", + "typeString": "string" + }, + "typeName": { + "id": 2057, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "413:6:20", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "302e302e31", + "id": 2058, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "446:7:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", + "typeString": "literal_string \"0.0.1\"" + }, + "value": "0.0.1" + }, + "visibility": "public" + }, + { + "constant": true, + "id": 2062, + "name": "REPLACE_OWNER_FUNCTION_IDENTIFIER", + "nodeType": "VariableDeclaration", + "scope": 2304, + "src": "459:72:20", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 2060, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "459:6:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "54e99c6e", + "id": 2061, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "518:13:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c9d777df93ed5e148240dbbfbc0215def5044b10739d563ea8310789d1317911", + "typeString": "literal_string (contains invalid UTF-8 sequence at position 4)" + }, + "value": null + }, + "visibility": "public" + }, + { + "constant": false, + "id": 2064, + "name": "threshold", + "nodeType": "VariableDeclaration", + "scope": 2304, + "src": "538:22:20", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 2063, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "538:5:20", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 2067, + "name": "friends", + "nodeType": "VariableDeclaration", + "scope": 2304, + "src": "566:24:20", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 2065, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "566:7:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2066, + "length": null, + "nodeType": "ArrayTypeName", + "src": "566:9:20", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 2071, + "name": "isFriend", + "nodeType": "VariableDeclaration", + "scope": 2304, + "src": "661:41:20", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "typeName": { + "id": 2070, + "keyType": { + "id": 2068, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "670:7:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "661:25:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "valueType": { + "id": 2069, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "681:4:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 2075, + "name": "isExecuted", + "nodeType": "VariableDeclaration", + "scope": 2304, + "src": "770:43:20", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + }, + "typeName": { + "id": 2074, + "keyType": { + "id": 2072, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "779:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Mapping", + "src": "770:25:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + }, + "valueType": { + "id": 2073, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "790:4:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 2081, + "name": "isConfirmed", + "nodeType": "VariableDeclaration", + "scope": 2304, + "src": "905:65:20", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(bytes32 => mapping(address => bool))" + }, + "typeName": { + "id": 2080, + "keyType": { + "id": 2076, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "914:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Mapping", + "src": "905:46:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(bytes32 => mapping(address => bool))" + }, + "valueType": { + "id": 2079, + "keyType": { + "id": 2077, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "934:7:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "925:25:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "valueType": { + "id": 2078, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "945:4:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + } + }, + "value": null, + "visibility": "public" + }, + { + "body": { + "id": 2091, + "nodeType": "Block", + "src": "999:57:20", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2084, + "name": "isFriend", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2071, + "src": "1017:8:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 2087, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2085, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2465, + "src": "1026:3:20", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2086, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1026:10:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1017:20:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2083, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "1009:7:20", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2088, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1009:29:20", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2089, + "nodeType": "ExpressionStatement", + "src": "1009:29:20" + }, + { + "id": 2090, + "nodeType": "PlaceholderStatement", + "src": "1048:1:20" + } + ] + }, + "documentation": null, + "id": 2092, + "name": "onlyFriend", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 2082, + "nodeType": "ParameterList", + "parameters": [], + "src": "996:2:20" + }, + "src": "977:79:20", + "visibility": "internal" + }, + { + "body": { + "id": 2162, + "nodeType": "Block", + "src": "1325:422:20", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2104, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2101, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2097, + "src": "1343:10:20", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2102, + "name": "_friends", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2095, + "src": "1357:8:20", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 2103, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1357:15:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1343:29:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2100, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "1335:7:20", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2105, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1335:38:20", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2106, + "nodeType": "ExpressionStatement", + "src": "1335:38:20" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 2110, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2108, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2097, + "src": "1391:10:20", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "32", + "id": 2109, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1405:1:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_2_by_1", + "typeString": "int_const 2" + }, + "value": "2" + }, + "src": "1391:15:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2107, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "1383:7:20", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2111, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1383:24:20", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2112, + "nodeType": "ExpressionStatement", + "src": "1383:24:20" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2113, + "name": "setManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 876, + "src": "1417:10:20", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 2114, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1417:12:20", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2115, + "nodeType": "ExpressionStatement", + "src": "1417:12:20" + }, + { + "body": { + "id": 2152, + "nodeType": "Block", + "src": "1517:164:20", + "statements": [ + { + "assignments": [ + 2128 + ], + "declarations": [ + { + "constant": false, + "id": 2128, + "name": "friend", + "nodeType": "VariableDeclaration", + "scope": 2163, + "src": "1531:14:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2127, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1531:7:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2132, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2129, + "name": "_friends", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2095, + "src": "1548:8:20", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 2131, + "indexExpression": { + "argumentTypes": null, + "id": 2130, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2117, + "src": "1557:1:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1548:11:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "1531:28:20" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2136, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2134, + "name": "friend", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2128, + "src": "1581:6:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2135, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1591:1:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1581:11:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2133, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "1573:7:20", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2137, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1573:20:20", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2138, + "nodeType": "ExpressionStatement", + "src": "1573:20:20" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2143, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "1615:17:20", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2140, + "name": "isFriend", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2071, + "src": "1616:8:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 2142, + "indexExpression": { + "argumentTypes": null, + "id": 2141, + "name": "friend", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2128, + "src": "1625:6:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1616:16:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2139, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "1607:7:20", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2144, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1607:26:20", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2145, + "nodeType": "ExpressionStatement", + "src": "1607:26:20" + }, + { + "expression": { + "argumentTypes": null, + "id": 2150, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2146, + "name": "isFriend", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2071, + "src": "1647:8:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 2148, + "indexExpression": { + "argumentTypes": null, + "id": 2147, + "name": "friend", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2128, + "src": "1656:6:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1647:16:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 2149, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1666:4:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "1647:23:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2151, + "nodeType": "ExpressionStatement", + "src": "1647:23:20" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2123, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2120, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2117, + "src": "1491:1:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2121, + "name": "_friends", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2095, + "src": "1495:8:20", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 2122, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1495:15:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1491:19:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2153, + "initializationExpression": { + "assignments": [ + 2117 + ], + "declarations": [ + { + "constant": false, + "id": 2117, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 2163, + "src": "1476:9:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2116, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1476:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2119, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 2118, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1488:1:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "1476:13:20" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 2125, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "1512:3:20", + "subExpression": { + "argumentTypes": null, + "id": 2124, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2117, + "src": "1512:1:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2126, + "nodeType": "ExpressionStatement", + "src": "1512:3:20" + }, + "nodeType": "ForStatement", + "src": "1471:210:20" + }, + { + "expression": { + "argumentTypes": null, + "id": 2156, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2154, + "name": "friends", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2067, + "src": "1690:7:20", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 2155, + "name": "_friends", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2095, + "src": "1700:8:20", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "src": "1690:18:20", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 2157, + "nodeType": "ExpressionStatement", + "src": "1690:18:20" + }, + { + "expression": { + "argumentTypes": null, + "id": 2160, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 2158, + "name": "threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2064, + "src": "1718:9:20", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 2159, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2097, + "src": "1730:10:20", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "1718:22:20", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 2161, + "nodeType": "ExpressionStatement", + "src": "1718:22:20" + } + ] + }, + "documentation": "@dev Setup function sets initial storage of contract.\n @param _friends List of friends' addresses.\n @param _threshold Required number of friends to confirm replacement.", + "id": 2163, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "setup", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2098, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2095, + "name": "_friends", + "nodeType": "VariableDeclaration", + "scope": 2163, + "src": "1268:18:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 2093, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1268:7:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2094, + "length": null, + "nodeType": "ArrayTypeName", + "src": "1268:9:20", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2097, + "name": "_threshold", + "nodeType": "VariableDeclaration", + "scope": 2163, + "src": "1288:16:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 2096, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1288:5:20", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1267:38:20" + }, + "payable": false, + "returnParameters": { + "id": 2099, + "nodeType": "ParameterList", + "parameters": [], + "src": "1325:0:20" + }, + "scope": 2304, + "src": "1253:494:20", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2186, + "nodeType": "Block", + "src": "1944:97:20", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2174, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "1962:21:20", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2171, + "name": "isExecuted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2075, + "src": "1963:10:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + } + }, + "id": 2173, + "indexExpression": { + "argumentTypes": null, + "id": 2172, + "name": "dataHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2165, + "src": "1974:8:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1963:20:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2170, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "1954:7:20", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2175, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1954:30:20", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2176, + "nodeType": "ExpressionStatement", + "src": "1954:30:20" + }, + { + "expression": { + "argumentTypes": null, + "id": 2184, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2177, + "name": "isConfirmed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2081, + "src": "1994:11:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(bytes32 => mapping(address => bool))" + } + }, + "id": 2181, + "indexExpression": { + "argumentTypes": null, + "id": 2178, + "name": "dataHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2165, + "src": "2006:8:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1994:21:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 2182, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2179, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2465, + "src": "2016:3:20", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2180, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2016:10:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1994:33:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 2183, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2030:4:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "1994:40:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2185, + "nodeType": "ExpressionStatement", + "src": "1994:40:20" + } + ] + }, + "documentation": "@dev Allows a friend to confirm a Safe transaction.\n @param dataHash Safe transaction hash.", + "id": 2187, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 2168, + "modifierName": { + "argumentTypes": null, + "id": 2167, + "name": "onlyFriend", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "1929:10:20", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "1929:10:20" + } + ], + "name": "confirmTransaction", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2166, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2165, + "name": "dataHash", + "nodeType": "VariableDeclaration", + "scope": 2187, + "src": "1888:16:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2164, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "1888:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1887:18:20" + }, + "payable": false, + "returnParameters": { + "id": 2169, + "nodeType": "ParameterList", + "parameters": [], + "src": "1944:0:20" + }, + "scope": 2304, + "src": "1860:181:20", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2247, + "nodeType": "Block", + "src": "2299:701:20", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2193, + "name": "isFriend", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2071, + "src": "2381:8:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 2196, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2194, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2465, + "src": "2390:3:20", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2195, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2390:10:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2381:20:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2192, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "2373:7:20", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2197, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2373:29:20", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2198, + "nodeType": "ExpressionStatement", + "src": "2373:29:20" + }, + { + "assignments": [], + "declarations": [ + { + "constant": false, + "id": 2200, + "name": "functionIdentifier", + "nodeType": "VariableDeclaration", + "scope": 2248, + "src": "2485:25:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "typeName": { + "id": 2199, + "name": "bytes4", + "nodeType": "ElementaryTypeName", + "src": "2485:6:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2201, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "2485:25:20" + }, + { + "externalReferences": [ + { + "functionIdentifier": { + "declaration": 2200, + "isOffset": false, + "isSlot": false, + "src": "2607:18:20", + "valueSize": 1 + } + }, + { + "data": { + "declaration": 2189, + "isOffset": false, + "isSlot": false, + "src": "2639:4:20", + "valueSize": 1 + } + } + ], + "id": 2202, + "nodeType": "InlineAssembly", + "operations": "{\n functionIdentifier := mload(add(data, 0x20))\n}", + "src": "2584:93:20" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + }, + "id": 2206, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2204, + "name": "functionIdentifier", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2200, + "src": "2678:18:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 2205, + "name": "REPLACE_OWNER_FUNCTION_IDENTIFIER", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2062, + "src": "2700:33:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes4", + "typeString": "bytes4" + } + }, + "src": "2678:55:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2203, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "2670:7:20", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2207, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2670:64:20", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2208, + "nodeType": "ExpressionStatement", + "src": "2670:64:20" + }, + { + "assignments": [ + 2210 + ], + "declarations": [ + { + "constant": false, + "id": 2210, + "name": "dataHash", + "nodeType": "VariableDeclaration", + "scope": 2248, + "src": "2744:16:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2209, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "2744:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2214, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2212, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2189, + "src": "2775:4:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 2211, + "name": "getDataHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2303, + "src": "2763:11:20", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) view returns (bytes32)" + } + }, + "id": 2213, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2763:17:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2744:36:20" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2219, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "2798:21:20", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2216, + "name": "isExecuted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2075, + "src": "2799:10:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + } + }, + "id": 2218, + "indexExpression": { + "argumentTypes": null, + "id": 2217, + "name": "dataHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2210, + "src": "2810:8:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2799:20:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2215, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "2790:7:20", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2220, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2790:30:20", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2221, + "nodeType": "ExpressionStatement", + "src": "2790:30:20" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2224, + "name": "dataHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2210, + "src": "2867:8:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 2223, + "name": "isConfirmedByRequiredFriends", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2291, + "src": "2838:28:20", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$", + "typeString": "function (bytes32) view returns (bool)" + } + }, + "id": 2225, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2838:38:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2222, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "2830:7:20", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2226, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2830:47:20", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2227, + "nodeType": "ExpressionStatement", + "src": "2830:47:20" + }, + { + "expression": { + "argumentTypes": null, + "id": 2232, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2228, + "name": "isExecuted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2075, + "src": "2887:10:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + } + }, + "id": 2230, + "indexExpression": { + "argumentTypes": null, + "id": 2229, + "name": "dataHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2210, + "src": "2898:8:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2887:20:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 2231, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2910:4:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "2887:27:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2233, + "nodeType": "ExpressionStatement", + "src": "2887:27:20" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2238, + "name": "manager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 844, + "src": "2954:7:20", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ModuleManager_$1142", + "typeString": "contract ModuleManager" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ModuleManager_$1142", + "typeString": "contract ModuleManager" + } + ], + "id": 2237, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2946:7:20", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 2239, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2946:16:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "hexValue": "30", + "id": 2240, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2964:1:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "argumentTypes": null, + "id": 2241, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2189, + "src": "2967:4:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2242, + "name": "Enum", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 30, + "src": "2973:4:20", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Enum_$30_$", + "typeString": "type(contract Enum)" + } + }, + "id": 2243, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "Operation", + "nodeType": "MemberAccess", + "referencedDeclaration": 29, + "src": "2973:14:20", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_Operation_$29_$", + "typeString": "type(enum Enum.Operation)" + } + }, + "id": 2244, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Call", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2973:19:20", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + ], + "expression": { + "argumentTypes": null, + "id": 2234, + "name": "manager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 844, + "src": "2924:7:20", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ModuleManager_$1142", + "typeString": "contract ModuleManager" + } + }, + "id": 2236, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "executeModule", + "nodeType": "MemberAccess", + "referencedDeclaration": 1033, + "src": "2924:21:20", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$returns$_t_bool_$", + "typeString": "function (address,uint256,bytes memory,enum Enum.Operation) external returns (bool)" + } + }, + "id": 2245, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2924:69:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2246, + "nodeType": "ExpressionStatement", + "src": "2924:69:20" + } + ] + }, + "documentation": "@dev Returns if Safe transaction is a valid owner replacement transaction.\n @param data Encoded owner replacement transaction.\n @return Returns if transaction can be executed.", + "id": 2248, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "recoverAccess", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2190, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2189, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 2248, + "src": "2268:10:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2188, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2268:5:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2267:12:20" + }, + "payable": false, + "returnParameters": { + "id": 2191, + "nodeType": "ParameterList", + "parameters": [], + "src": "2299:0:20" + }, + "scope": 2304, + "src": "2245:755:20", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2290, + "nodeType": "Block", + "src": "3272:294:20", + "statements": [ + { + "assignments": [], + "declarations": [ + { + "constant": false, + "id": 2256, + "name": "confirmationCount", + "nodeType": "VariableDeclaration", + "scope": 2291, + "src": "3282:25:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2255, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3282:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2257, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "3282:25:20" + }, + { + "body": { + "id": 2286, + "nodeType": "Block", + "src": "3362:176:20", + "statements": [ + { + "condition": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2269, + "name": "isConfirmed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2081, + "src": "3380:11:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", + "typeString": "mapping(bytes32 => mapping(address => bool))" + } + }, + "id": 2271, + "indexExpression": { + "argumentTypes": null, + "id": 2270, + "name": "dataHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2250, + "src": "3392:8:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3380:21:20", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 2275, + "indexExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2272, + "name": "friends", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2067, + "src": "3402:7:20", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 2274, + "indexExpression": { + "argumentTypes": null, + "id": 2273, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2259, + "src": "3410:1:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3402:10:20", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "3380:33:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 2279, + "nodeType": "IfStatement", + "src": "3376:74:20", + "trueBody": { + "expression": { + "argumentTypes": null, + "id": 2277, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "3431:19:20", + "subExpression": { + "argumentTypes": null, + "id": 2276, + "name": "confirmationCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2256, + "src": "3431:17:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2278, + "nodeType": "ExpressionStatement", + "src": "3431:19:20" + } + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2282, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2280, + "name": "confirmationCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2256, + "src": "3468:17:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 2281, + "name": "threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2064, + "src": "3489:9:20", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "3468:30:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 2285, + "nodeType": "IfStatement", + "src": "3464:63:20", + "trueBody": { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 2283, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3523:4:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 2254, + "id": 2284, + "nodeType": "Return", + "src": "3516:11:20" + } + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2265, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2262, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2259, + "src": "3337:1:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2263, + "name": "friends", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2067, + "src": "3341:7:20", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 2264, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3341:14:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3337:18:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2287, + "initializationExpression": { + "assignments": [ + 2259 + ], + "declarations": [ + { + "constant": false, + "id": 2259, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 2291, + "src": "3322:9:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2258, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "3322:7:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2261, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 2260, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3334:1:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "3322:13:20" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 2267, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "3357:3:20", + "subExpression": { + "argumentTypes": null, + "id": 2266, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2259, + "src": "3357:1:20", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2268, + "nodeType": "ExpressionStatement", + "src": "3357:3:20" + }, + "nodeType": "ForStatement", + "src": "3317:221:20" + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 2288, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3554:5:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "functionReturnParameters": 2254, + "id": 2289, + "nodeType": "Return", + "src": "3547:12:20" + } + ] + }, + "documentation": "@dev Returns if Safe transaction is a valid owner replacement transaction.\n @param dataHash Data hash.\n @return Confirmation status.", + "id": 2291, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "isConfirmedByRequiredFriends", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2251, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2250, + "name": "dataHash", + "nodeType": "VariableDeclaration", + "scope": 2291, + "src": "3199:16:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2249, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3199:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3198:18:20" + }, + "payable": false, + "returnParameters": { + "id": 2254, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2253, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2291, + "src": "3262:4:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2252, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "3262:4:20", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3261:6:20" + }, + "scope": 2304, + "src": "3161:405:20", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2302, + "nodeType": "Block", + "src": "3786:39:20", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2299, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2293, + "src": "3813:4:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 2298, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2459, + "src": "3803:9:20", + "typeDescriptions": { + "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", + "typeString": "function () pure returns (bytes32)" + } + }, + "id": 2300, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3803:15:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 2297, + "id": 2301, + "nodeType": "Return", + "src": "3796:22:20" + } + ] + }, + "documentation": "@dev Returns hash of data encoding owner replacement.\n @param data Data payload.\n @return Data hash.", + "id": 2303, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "getDataHash", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2294, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2293, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 2303, + "src": "3716:10:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2292, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "3716:5:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3715:12:20" + }, + "payable": false, + "returnParameters": { + "id": 2297, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2296, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2303, + "src": "3773:7:20", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 2295, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "3773:7:20", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3772:9:20" + }, + "scope": 2304, + "src": "3695:130:20", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 2305, + "src": "306:3521:20" + } + ], + "src": "0:3828:20" + }, + "compiler": { + "name": "solc", + "version": "0.4.23+commit.124ca40d.Emscripten.clang" + }, + "networks": { + "4": { + "events": {}, + "links": {}, + "address": "0x364cfc50a8c4eab27bebbb54aac0f51fb74015d3", + "transactionHash": "0xd31966624227345ccb60fc9f51e315d610071b6418712c5f528a7a64f7c0d103" + }, + "1525950336085": { + "events": {}, + "links": {}, + "address": "0xfe2114e016fa8d92959754f25d4f63f155ad1a6a", + "transactionHash": "0xa514f0c5c6fcab99a16bba503b6ed893935cedfafe2e5c8c825dfc117e1e266d" + } + }, + "schemaVersion": "2.0.0", + "updatedAt": "2018-05-10T11:07:04.698Z" +} \ No newline at end of file diff --git a/safe-contracts/build/contracts/WhitelistModule.json b/safe-contracts/build/contracts/WhitelistModule.json new file mode 100644 index 0000000000..ca9c77e3bb --- /dev/null +++ b/safe-contracts/build/contracts/WhitelistModule.json @@ -0,0 +1,3963 @@ +{ + "contractName": "WhitelistModule", + "abi": [ + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "address" + } + ], + "name": "isWhitelisted", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "manager", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_masterCopy", + "type": "address" + } + ], + "name": "changeMasterCopy", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "NAME", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "VERSION", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "accounts", + "type": "address[]" + } + ], + "name": "setup", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "addToWhitelist", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "account", + "type": "address" + } + ], + "name": "removeFromWhitelist", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "to", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + }, + { + "name": "data", + "type": "bytes" + } + ], + "name": "executeWhitelisted", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x608060405234801561001057600080fd5b50610c6e806100206000396000f300608060405260043610610099576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632f2f3be11461009e5780633af32abf14610149578063481c6a75146101a45780637de7edef146101fb5780638ab1d6811461023e578063a3f4df7e14610281578063bd5b853b14610311578063e43252d714610377578063ffa1ad74146103ba575b600080fd5b3480156100aa57600080fd5b5061012f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061044a565b604051808215151515815260200191505060405180910390f35b34801561015557600080fd5b5061018a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610733565b604051808215151515815260200191505060405180910390f35b3480156101b057600080fd5b506101b9610753565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561020757600080fd5b5061023c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610779565b005b34801561024a57600080fd5b5061027f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061083e565b005b34801561028d57600080fd5b5061029661094d565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102d65780820151818401526020810190506102bb565b50505050905090810190601f1680156103035780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561031d57600080fd5b5061037560048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050610986565b005b34801561038357600080fd5b506103b8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a49565b005b3480156103c657600080fd5b506103cf610b7f565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561040f5780820151818401526020810190506103f4565b50505050905090810190601f16801561043c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561050957600080fd5b505af115801561051d573d6000803e3d6000fd5b505050506040513d602081101561053357600080fd5b8101908080519060200190929190505050151561054f57600080fd5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156105a757600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b021640a85858560006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200183600281111561066157fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b838110156106a1578082015181840152602081019050610686565b50505050905090810190601f1680156106ce5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b1580156106f057600080fd5b505af1158015610704573d6000803e3d6000fd5b505050506040513d602081101561071a57600080fd5b8101908080519060200190929190505050509392505050565b60026020528060005260406000206000915054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156107d557600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156107fb57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561089a57600080fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156108f257600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6040805190810160405280601081526020017f57686974656c697374204d6f64756c650000000000000000000000000000000081525081565b600080610991610bb8565b600091505b8251821015610a445782828151811015156109ad57fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff16141515156109df57600080fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508180600101925050610996565b505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610aa557600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610acb57600080fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610b2457600080fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610bff57600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505600a165627a7a72305820f4f2d74a4d0083ddcd8d51c3cd990d6eafe4fc579299c91a924bd116a364c0d80029", + "deployedBytecode": "0x608060405260043610610099576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632f2f3be11461009e5780633af32abf14610149578063481c6a75146101a45780637de7edef146101fb5780638ab1d6811461023e578063a3f4df7e14610281578063bd5b853b14610311578063e43252d714610377578063ffa1ad74146103ba575b600080fd5b3480156100aa57600080fd5b5061012f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061044a565b604051808215151515815260200191505060405180910390f35b34801561015557600080fd5b5061018a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610733565b604051808215151515815260200191505060405180910390f35b3480156101b057600080fd5b506101b9610753565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561020757600080fd5b5061023c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610779565b005b34801561024a57600080fd5b5061027f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061083e565b005b34801561028d57600080fd5b5061029661094d565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102d65780820151818401526020810190506102bb565b50505050905090810190601f1680156103035780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561031d57600080fd5b5061037560048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050610986565b005b34801561038357600080fd5b506103b8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a49565b005b3480156103c657600080fd5b506103cf610b7f565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561040f5780820151818401526020810190506103f4565b50505050905090810190601f16801561043c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561050957600080fd5b505af115801561051d573d6000803e3d6000fd5b505050506040513d602081101561053357600080fd5b8101908080519060200190929190505050151561054f57600080fd5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156105a757600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b021640a85858560006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200183600281111561066157fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b838110156106a1578082015181840152602081019050610686565b50505050905090810190601f1680156106ce5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b1580156106f057600080fd5b505af1158015610704573d6000803e3d6000fd5b505050506040513d602081101561071a57600080fd5b8101908080519060200190929190505050509392505050565b60026020528060005260406000206000915054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156107d557600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156107fb57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561089a57600080fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156108f257600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6040805190810160405280601081526020017f57686974656c697374204d6f64756c650000000000000000000000000000000081525081565b600080610991610bb8565b600091505b8251821015610a445782828151811015156109ad57fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff16141515156109df57600080fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508180600101925050610996565b505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610aa557600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610acb57600080fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610b2457600080fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610bff57600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505600a165627a7a72305820f4f2d74a4d0083ddcd8d51c3cd990d6eafe4fc579299c91a924bd116a364c0d80029", + "sourceMap": "289:1947:21:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;289:1947:21;;;;;;;", + "deployedSourceMap": "289:1947:21:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1864:370;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1864:370:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;498:46;;8:9:-1;5:2;;;30:1;27;20:12;5:2;498:46:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;262:28:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;262:28:8;;;;;;;;;;;;;;;;;;;;;;;;;;;626:208:6;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:208:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;1438:172:21;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1438:172:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;331:48;;8:9:-1;5:2;;;30:1;27;20:12;5:2;331:48:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;331:48:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;667:270;;8:9:-1;5:2;;;30:1;27;20:12;5:2;667:270:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1086:198;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1086:198:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;385:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;385:40:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;385:40:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1864:370;1963:4;2093:7;;;;;;;;;;;2080:29;;;2110:10;2080:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2080:41:21;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2080:41:21;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2080:41:21;;;;;;;;;;;;;;;;2072:50;;;;;;;;2140:13;:17;2154:2;2140:17;;;;;;;;;;;;;;;;;;;;;;;;;2132:26;;;;;;;;2168:7;;;;;;;;;;;:21;;;2190:2;2194:5;2201:4;2207:19;2168:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;2168:59:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2168:59:21;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2168:59:21;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2168:59:21;;;;;;;;;;;;;;;;;1864:370;;;;;:::o;498:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;262:28:8:-;;;;;;;;;;;;;:::o;626:208:6:-;359:7:8;;;;;;;;;;;337:30;;:10;:30;;;329:39;;;;;;;;791:1:6;776:11;:16;;;;768:25;;;;;;;;816:11;803:10;;:24;;;;;;;;;;;;;;;;;;626:208;:::o;1438:172:21:-;359:7:8;;;;;;;;;;;337:30;;:10;:30;;;329:39;;;;;;;;1540:13:21;:22;1554:7;1540:22;;;;;;;;;;;;;;;;;;;;;;;;;1532:31;;;;;;;;1598:5;1573:13;:22;1587:7;1573:22;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;1438:172;:::o;331:48::-;;;;;;;;;;;;;;;;;;;;:::o;667:270::-;758:9;813:15;731:12;:10;:12::i;:::-;770:1;758:13;;753:178;777:8;:15;773:1;:19;753:178;;;831:8;840:1;831:11;;;;;;;;;;;;;;;;;;813:29;;875:1;864:7;:12;;;;856:21;;;;;;;;916:4;891:13;:22;905:7;891:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;794:3;;;;;;;753:178;;;667:270;;;:::o;1086:198::-;359:7:8;;;;;;;;;;;337:30;;:10;:30;;;329:39;;;;;;;;1194:1:21;1183:7;:12;;;;1175:21;;;;;;;;1215:13;:22;1229:7;1215:22;;;;;;;;;;;;;;;;;;;;;;;;;1214:23;1206:32;;;;;;;;1273:4;1248:13;:22;1262:7;1248:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;1086:198;:::o;385:40::-;;;;;;;;;;;;;;;;;;;;:::o;392:268:8:-;606:1;594:7;;;;;;;;;;;586:21;;;578:30;;;;;;;;642:10;618:7;;:35;;;;;;;;;;;;;;;;;;392:268::o", + "source": "pragma solidity 0.4.23;\nimport \"../Enum.sol\";\nimport \"../Module.sol\";\nimport \"../ModuleManager.sol\";\nimport \"../OwnerManager.sol\";\n\n\n/// @title Whitelist Module - Allows to execute transactions to whitelisted addresses without confirmations.\n/// @author Stefan George - \ncontract WhitelistModule is Module {\n\n string public constant NAME = \"Whitelist Module\";\n string public constant VERSION = \"0.0.1\";\n\n // isWhitelisted mapping maps destination address to boolean.\n mapping (address => bool) public isWhitelisted;\n\n /// @dev Setup function sets initial storage of contract.\n /// @param accounts List of whitelisted accounts.\n function setup(address[] accounts)\n public\n {\n setManager();\n for (uint256 i = 0; i < accounts.length; i++) {\n address account = accounts[i];\n require(account != 0);\n isWhitelisted[account] = true;\n }\n }\n\n /// @dev Allows to add destination to whitelist. This can only be done via a Safe transaction.\n /// @param account Destination address.\n function addToWhitelist(address account)\n public\n authorized\n {\n require(account != 0);\n require(!isWhitelisted[account]);\n isWhitelisted[account] = true;\n }\n\n /// @dev Allows to remove destination from whitelist. This can only be done via a Safe transaction.\n /// @param account Destination address.\n function removeFromWhitelist(address account)\n public\n authorized\n {\n require(isWhitelisted[account]);\n isWhitelisted[account] = false;\n }\n\n /// @dev Returns if Safe transaction is to a whitelisted destination.\n /// @param to Whitelisted destination address.\n /// @param value Not checked.\n /// @param data Not checked.\n /// @return Returns if transaction can be executed.\n function executeWhitelisted(address to, uint256 value, bytes data)\n public\n returns (bool)\n {\n // Only Safe owners are allowed to execute transactions to whitelisted accounts.\n require(OwnerManager(manager).isOwner(msg.sender));\n require(isWhitelisted[to]);\n manager.executeModule(to, value, data, Enum.Operation.Call);\n }\n}\n", + "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/WhitelistModule.sol", + "ast": { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/WhitelistModule.sol", + "exportedSymbols": { + "WhitelistModule": [ + 2450 + ] + }, + "id": 2451, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2306, + "literals": [ + "solidity", + "0.4", + ".23" + ], + "nodeType": "PragmaDirective", + "src": "0:23:21" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Enum.sol", + "file": "../Enum.sol", + "id": 2307, + "nodeType": "ImportDirective", + "scope": 2451, + "sourceUnit": 31, + "src": "24:21:21", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", + "file": "../Module.sol", + "id": 2308, + "nodeType": "ImportDirective", + "scope": 2451, + "sourceUnit": 878, + "src": "46:23:21", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ModuleManager.sol", + "file": "../ModuleManager.sol", + "id": 2309, + "nodeType": "ImportDirective", + "scope": 2451, + "sourceUnit": 1143, + "src": "70:30:21", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", + "file": "../OwnerManager.sol", + "id": 2310, + "nodeType": "ImportDirective", + "scope": 2451, + "sourceUnit": 1439, + "src": "101:29:21", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 2311, + "name": "Module", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 877, + "src": "317:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$877", + "typeString": "contract Module" + } + }, + "id": 2312, + "nodeType": "InheritanceSpecifier", + "src": "317:6:21" + } + ], + "contractDependencies": [ + 779, + 877, + 1559 + ], + "contractKind": "contract", + "documentation": "@title Whitelist Module - Allows to execute transactions to whitelisted addresses without confirmations.\n @author Stefan George - ", + "fullyImplemented": true, + "id": 2450, + "linearizedBaseContracts": [ + 2450, + 877, + 779, + 1559 + ], + "name": "WhitelistModule", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "id": 2315, + "name": "NAME", + "nodeType": "VariableDeclaration", + "scope": 2450, + "src": "331:48:21", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory", + "typeString": "string" + }, + "typeName": { + "id": 2313, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "331:6:21", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "57686974656c697374204d6f64756c65", + "id": 2314, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "361:18:21", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_84d69d03a7c747e8eefe7cc2b9e87b566cfc57cc90e4ed88f03f9c9780b7d4e6", + "typeString": "literal_string \"Whitelist Module\"" + }, + "value": "Whitelist Module" + }, + "visibility": "public" + }, + { + "constant": true, + "id": 2318, + "name": "VERSION", + "nodeType": "VariableDeclaration", + "scope": 2450, + "src": "385:40:21", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory", + "typeString": "string" + }, + "typeName": { + "id": 2316, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "385:6:21", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "302e302e31", + "id": 2317, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "418:7:21", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", + "typeString": "literal_string \"0.0.1\"" + }, + "value": "0.0.1" + }, + "visibility": "public" + }, + { + "constant": false, + "id": 2322, + "name": "isWhitelisted", + "nodeType": "VariableDeclaration", + "scope": 2450, + "src": "498:46:21", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "typeName": { + "id": 2321, + "keyType": { + "id": 2319, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "507:7:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "498:25:21", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "valueType": { + "id": 2320, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "518:4:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "value": null, + "visibility": "public" + }, + { + "body": { + "id": 2362, + "nodeType": "Block", + "src": "721:216:21", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2328, + "name": "setManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 876, + "src": "731:10:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 2329, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "731:12:21", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2330, + "nodeType": "ExpressionStatement", + "src": "731:12:21" + }, + { + "body": { + "id": 2360, + "nodeType": "Block", + "src": "799:132:21", + "statements": [ + { + "assignments": [ + 2343 + ], + "declarations": [ + { + "constant": false, + "id": 2343, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 2363, + "src": "813:15:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2342, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "813:7:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2347, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2344, + "name": "accounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2325, + "src": "831:8:21", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 2346, + "indexExpression": { + "argumentTypes": null, + "id": 2345, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2332, + "src": "840:1:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "831:11:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "813:29:21" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2351, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2349, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2343, + "src": "864:7:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2350, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "875:1:21", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "864:12:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2348, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "856:7:21", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2352, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "856:21:21", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2353, + "nodeType": "ExpressionStatement", + "src": "856:21:21" + }, + { + "expression": { + "argumentTypes": null, + "id": 2358, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2354, + "name": "isWhitelisted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2322, + "src": "891:13:21", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 2356, + "indexExpression": { + "argumentTypes": null, + "id": 2355, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2343, + "src": "905:7:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "891:22:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 2357, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "916:4:21", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "891:29:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2359, + "nodeType": "ExpressionStatement", + "src": "891:29:21" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2338, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2335, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2332, + "src": "773:1:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2336, + "name": "accounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2325, + "src": "777:8:21", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 2337, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "777:15:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "773:19:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2361, + "initializationExpression": { + "assignments": [ + 2332 + ], + "declarations": [ + { + "constant": false, + "id": 2332, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 2363, + "src": "758:9:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2331, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "758:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2334, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 2333, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "770:1:21", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "758:13:21" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 2340, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "794:3:21", + "subExpression": { + "argumentTypes": null, + "id": 2339, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2332, + "src": "794:1:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2341, + "nodeType": "ExpressionStatement", + "src": "794:3:21" + }, + "nodeType": "ForStatement", + "src": "753:178:21" + } + ] + }, + "documentation": "@dev Setup function sets initial storage of contract.\n @param accounts List of whitelisted accounts.", + "id": 2363, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "setup", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2326, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2325, + "name": "accounts", + "nodeType": "VariableDeclaration", + "scope": 2363, + "src": "682:18:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 2323, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "682:7:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2324, + "length": null, + "nodeType": "ArrayTypeName", + "src": "682:9:21", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "681:20:21" + }, + "payable": false, + "returnParameters": { + "id": 2327, + "nodeType": "ParameterList", + "parameters": [], + "src": "721:0:21" + }, + "scope": 2450, + "src": "667:270:21", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2389, + "nodeType": "Block", + "src": "1165:119:21", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2373, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2371, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2365, + "src": "1183:7:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2372, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1194:1:21", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1183:12:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2370, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "1175:7:21", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2374, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1175:21:21", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2375, + "nodeType": "ExpressionStatement", + "src": "1175:21:21" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2380, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "1214:23:21", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2377, + "name": "isWhitelisted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2322, + "src": "1215:13:21", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 2379, + "indexExpression": { + "argumentTypes": null, + "id": 2378, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2365, + "src": "1229:7:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1215:22:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2376, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "1206:7:21", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2381, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1206:32:21", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2382, + "nodeType": "ExpressionStatement", + "src": "1206:32:21" + }, + { + "expression": { + "argumentTypes": null, + "id": 2387, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2383, + "name": "isWhitelisted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2322, + "src": "1248:13:21", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 2385, + "indexExpression": { + "argumentTypes": null, + "id": 2384, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2365, + "src": "1262:7:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1248:22:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 2386, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1273:4:21", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "1248:29:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2388, + "nodeType": "ExpressionStatement", + "src": "1248:29:21" + } + ] + }, + "documentation": "@dev Allows to add destination to whitelist. This can only be done via a Safe transaction.\n @param account Destination address.", + "id": 2390, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 2368, + "modifierName": { + "argumentTypes": null, + "id": 2367, + "name": "authorized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 857, + "src": "1150:10:21", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "1150:10:21" + } + ], + "name": "addToWhitelist", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2366, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2365, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 2390, + "src": "1110:15:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2364, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1110:7:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1109:17:21" + }, + "payable": false, + "returnParameters": { + "id": 2369, + "nodeType": "ParameterList", + "parameters": [], + "src": "1165:0:21" + }, + "scope": 2450, + "src": "1086:198:21", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2409, + "nodeType": "Block", + "src": "1522:88:21", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2398, + "name": "isWhitelisted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2322, + "src": "1540:13:21", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 2400, + "indexExpression": { + "argumentTypes": null, + "id": 2399, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2392, + "src": "1554:7:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1540:22:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2397, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "1532:7:21", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2401, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1532:31:21", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2402, + "nodeType": "ExpressionStatement", + "src": "1532:31:21" + }, + { + "expression": { + "argumentTypes": null, + "id": 2407, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2403, + "name": "isWhitelisted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2322, + "src": "1573:13:21", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 2405, + "indexExpression": { + "argumentTypes": null, + "id": 2404, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2392, + "src": "1587:7:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1573:22:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 2406, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1598:5:21", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "1573:30:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2408, + "nodeType": "ExpressionStatement", + "src": "1573:30:21" + } + ] + }, + "documentation": "@dev Allows to remove destination from whitelist. This can only be done via a Safe transaction.\n @param account Destination address.", + "id": 2410, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 2395, + "modifierName": { + "argumentTypes": null, + "id": 2394, + "name": "authorized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 857, + "src": "1507:10:21", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "1507:10:21" + } + ], + "name": "removeFromWhitelist", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2393, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2392, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 2410, + "src": "1467:15:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2391, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1467:7:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1466:17:21" + }, + "payable": false, + "returnParameters": { + "id": 2396, + "nodeType": "ParameterList", + "parameters": [], + "src": "1522:0:21" + }, + "scope": 2450, + "src": "1438:172:21", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2448, + "nodeType": "Block", + "src": "1973:261:21", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2426, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2465, + "src": "2110:3:21", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2427, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2110:10:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2423, + "name": "manager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 844, + "src": "2093:7:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ModuleManager_$1142", + "typeString": "contract ModuleManager" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ModuleManager_$1142", + "typeString": "contract ModuleManager" + } + ], + "id": 2422, + "name": "OwnerManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1438, + "src": "2080:12:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1438_$", + "typeString": "type(contract OwnerManager)" + } + }, + "id": 2424, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2080:21:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_OwnerManager_$1438", + "typeString": "contract OwnerManager" + } + }, + "id": 2425, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "isOwner", + "nodeType": "MemberAccess", + "referencedDeclaration": 1428, + "src": "2080:29:21", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view external returns (bool)" + } + }, + "id": 2428, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2080:41:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2421, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "2072:7:21", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2429, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2072:50:21", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2430, + "nodeType": "ExpressionStatement", + "src": "2072:50:21" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2432, + "name": "isWhitelisted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2322, + "src": "2140:13:21", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 2434, + "indexExpression": { + "argumentTypes": null, + "id": 2433, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2412, + "src": "2154:2:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2140:17:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2431, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "2132:7:21", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2435, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2132:26:21", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2436, + "nodeType": "ExpressionStatement", + "src": "2132:26:21" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2440, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2412, + "src": "2190:2:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2441, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2414, + "src": "2194:5:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2442, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2416, + "src": "2201:4:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2443, + "name": "Enum", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 30, + "src": "2207:4:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Enum_$30_$", + "typeString": "type(contract Enum)" + } + }, + "id": 2444, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "Operation", + "nodeType": "MemberAccess", + "referencedDeclaration": 29, + "src": "2207:14:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_Operation_$29_$", + "typeString": "type(enum Enum.Operation)" + } + }, + "id": 2445, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Call", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2207:19:21", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + ], + "expression": { + "argumentTypes": null, + "id": 2437, + "name": "manager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 844, + "src": "2168:7:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ModuleManager_$1142", + "typeString": "contract ModuleManager" + } + }, + "id": 2439, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "executeModule", + "nodeType": "MemberAccess", + "referencedDeclaration": 1033, + "src": "2168:21:21", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$returns$_t_bool_$", + "typeString": "function (address,uint256,bytes memory,enum Enum.Operation) external returns (bool)" + } + }, + "id": 2446, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2168:59:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2447, + "nodeType": "ExpressionStatement", + "src": "2168:59:21" + } + ] + }, + "documentation": "@dev Returns if Safe transaction is to a whitelisted destination.\n @param to Whitelisted destination address.\n @param value Not checked.\n @param data Not checked.\n @return Returns if transaction can be executed.", + "id": 2449, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "executeWhitelisted", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2417, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2412, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 2449, + "src": "1892:10:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2411, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1892:7:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2414, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 2449, + "src": "1904:13:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2413, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1904:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2416, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 2449, + "src": "1919:10:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2415, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1919:5:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1891:39:21" + }, + "payable": false, + "returnParameters": { + "id": 2420, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2419, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2449, + "src": "1963:4:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2418, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1963:4:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1962:6:21" + }, + "scope": 2450, + "src": "1864:370:21", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 2451, + "src": "289:1947:21" + } + ], + "src": "0:2237:21" + }, + "legacyAST": { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/WhitelistModule.sol", + "exportedSymbols": { + "WhitelistModule": [ + 2450 + ] + }, + "id": 2451, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2306, + "literals": [ + "solidity", + "0.4", + ".23" + ], + "nodeType": "PragmaDirective", + "src": "0:23:21" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Enum.sol", + "file": "../Enum.sol", + "id": 2307, + "nodeType": "ImportDirective", + "scope": 2451, + "sourceUnit": 31, + "src": "24:21:21", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", + "file": "../Module.sol", + "id": 2308, + "nodeType": "ImportDirective", + "scope": 2451, + "sourceUnit": 878, + "src": "46:23:21", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ModuleManager.sol", + "file": "../ModuleManager.sol", + "id": 2309, + "nodeType": "ImportDirective", + "scope": 2451, + "sourceUnit": 1143, + "src": "70:30:21", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", + "file": "../OwnerManager.sol", + "id": 2310, + "nodeType": "ImportDirective", + "scope": 2451, + "sourceUnit": 1439, + "src": "101:29:21", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [ + { + "arguments": null, + "baseName": { + "contractScope": null, + "id": 2311, + "name": "Module", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 877, + "src": "317:6:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Module_$877", + "typeString": "contract Module" + } + }, + "id": 2312, + "nodeType": "InheritanceSpecifier", + "src": "317:6:21" + } + ], + "contractDependencies": [ + 779, + 877, + 1559 + ], + "contractKind": "contract", + "documentation": "@title Whitelist Module - Allows to execute transactions to whitelisted addresses without confirmations.\n @author Stefan George - ", + "fullyImplemented": true, + "id": 2450, + "linearizedBaseContracts": [ + 2450, + 877, + 779, + 1559 + ], + "name": "WhitelistModule", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": true, + "id": 2315, + "name": "NAME", + "nodeType": "VariableDeclaration", + "scope": 2450, + "src": "331:48:21", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory", + "typeString": "string" + }, + "typeName": { + "id": 2313, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "331:6:21", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "57686974656c697374204d6f64756c65", + "id": 2314, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "361:18:21", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_84d69d03a7c747e8eefe7cc2b9e87b566cfc57cc90e4ed88f03f9c9780b7d4e6", + "typeString": "literal_string \"Whitelist Module\"" + }, + "value": "Whitelist Module" + }, + "visibility": "public" + }, + { + "constant": true, + "id": 2318, + "name": "VERSION", + "nodeType": "VariableDeclaration", + "scope": 2450, + "src": "385:40:21", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory", + "typeString": "string" + }, + "typeName": { + "id": 2316, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "385:6:21", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "302e302e31", + "id": 2317, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "418:7:21", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", + "typeString": "literal_string \"0.0.1\"" + }, + "value": "0.0.1" + }, + "visibility": "public" + }, + { + "constant": false, + "id": 2322, + "name": "isWhitelisted", + "nodeType": "VariableDeclaration", + "scope": 2450, + "src": "498:46:21", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "typeName": { + "id": 2321, + "keyType": { + "id": 2319, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "507:7:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "498:25:21", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "valueType": { + "id": 2320, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "518:4:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "value": null, + "visibility": "public" + }, + { + "body": { + "id": 2362, + "nodeType": "Block", + "src": "721:216:21", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 2328, + "name": "setManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 876, + "src": "731:10:21", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" + } + }, + "id": 2329, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "731:12:21", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2330, + "nodeType": "ExpressionStatement", + "src": "731:12:21" + }, + { + "body": { + "id": 2360, + "nodeType": "Block", + "src": "799:132:21", + "statements": [ + { + "assignments": [ + 2343 + ], + "declarations": [ + { + "constant": false, + "id": 2343, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 2363, + "src": "813:15:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2342, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "813:7:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2347, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2344, + "name": "accounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2325, + "src": "831:8:21", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 2346, + "indexExpression": { + "argumentTypes": null, + "id": 2345, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2332, + "src": "840:1:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "831:11:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "813:29:21" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2351, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2349, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2343, + "src": "864:7:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2350, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "875:1:21", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "864:12:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2348, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "856:7:21", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2352, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "856:21:21", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2353, + "nodeType": "ExpressionStatement", + "src": "856:21:21" + }, + { + "expression": { + "argumentTypes": null, + "id": 2358, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2354, + "name": "isWhitelisted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2322, + "src": "891:13:21", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 2356, + "indexExpression": { + "argumentTypes": null, + "id": 2355, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2343, + "src": "905:7:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "891:22:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 2357, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "916:4:21", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "891:29:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2359, + "nodeType": "ExpressionStatement", + "src": "891:29:21" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2338, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2335, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2332, + "src": "773:1:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2336, + "name": "accounts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2325, + "src": "777:8:21", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 2337, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "777:15:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "773:19:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2361, + "initializationExpression": { + "assignments": [ + 2332 + ], + "declarations": [ + { + "constant": false, + "id": 2332, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 2363, + "src": "758:9:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2331, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "758:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2334, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 2333, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "770:1:21", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "758:13:21" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 2340, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "794:3:21", + "subExpression": { + "argumentTypes": null, + "id": 2339, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2332, + "src": "794:1:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2341, + "nodeType": "ExpressionStatement", + "src": "794:3:21" + }, + "nodeType": "ForStatement", + "src": "753:178:21" + } + ] + }, + "documentation": "@dev Setup function sets initial storage of contract.\n @param accounts List of whitelisted accounts.", + "id": 2363, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "setup", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2326, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2325, + "name": "accounts", + "nodeType": "VariableDeclaration", + "scope": 2363, + "src": "682:18:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 2323, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "682:7:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 2324, + "length": null, + "nodeType": "ArrayTypeName", + "src": "682:9:21", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "681:20:21" + }, + "payable": false, + "returnParameters": { + "id": 2327, + "nodeType": "ParameterList", + "parameters": [], + "src": "721:0:21" + }, + "scope": 2450, + "src": "667:270:21", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2389, + "nodeType": "Block", + "src": "1165:119:21", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 2373, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2371, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2365, + "src": "1183:7:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 2372, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1194:1:21", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "1183:12:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2370, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "1175:7:21", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2374, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1175:21:21", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2375, + "nodeType": "ExpressionStatement", + "src": "1175:21:21" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2380, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "1214:23:21", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2377, + "name": "isWhitelisted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2322, + "src": "1215:13:21", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 2379, + "indexExpression": { + "argumentTypes": null, + "id": 2378, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2365, + "src": "1229:7:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1215:22:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2376, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "1206:7:21", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2381, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1206:32:21", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2382, + "nodeType": "ExpressionStatement", + "src": "1206:32:21" + }, + { + "expression": { + "argumentTypes": null, + "id": 2387, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2383, + "name": "isWhitelisted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2322, + "src": "1248:13:21", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 2385, + "indexExpression": { + "argumentTypes": null, + "id": 2384, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2365, + "src": "1262:7:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1248:22:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 2386, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1273:4:21", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "1248:29:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2388, + "nodeType": "ExpressionStatement", + "src": "1248:29:21" + } + ] + }, + "documentation": "@dev Allows to add destination to whitelist. This can only be done via a Safe transaction.\n @param account Destination address.", + "id": 2390, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 2368, + "modifierName": { + "argumentTypes": null, + "id": 2367, + "name": "authorized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 857, + "src": "1150:10:21", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "1150:10:21" + } + ], + "name": "addToWhitelist", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2366, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2365, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 2390, + "src": "1110:15:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2364, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1110:7:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1109:17:21" + }, + "payable": false, + "returnParameters": { + "id": 2369, + "nodeType": "ParameterList", + "parameters": [], + "src": "1165:0:21" + }, + "scope": 2450, + "src": "1086:198:21", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2409, + "nodeType": "Block", + "src": "1522:88:21", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2398, + "name": "isWhitelisted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2322, + "src": "1540:13:21", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 2400, + "indexExpression": { + "argumentTypes": null, + "id": 2399, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2392, + "src": "1554:7:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1540:22:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2397, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "1532:7:21", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2401, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1532:31:21", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2402, + "nodeType": "ExpressionStatement", + "src": "1532:31:21" + }, + { + "expression": { + "argumentTypes": null, + "id": 2407, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2403, + "name": "isWhitelisted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2322, + "src": "1573:13:21", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 2405, + "indexExpression": { + "argumentTypes": null, + "id": 2404, + "name": "account", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2392, + "src": "1587:7:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "1573:22:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 2406, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1598:5:21", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "1573:30:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2408, + "nodeType": "ExpressionStatement", + "src": "1573:30:21" + } + ] + }, + "documentation": "@dev Allows to remove destination from whitelist. This can only be done via a Safe transaction.\n @param account Destination address.", + "id": 2410, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 2395, + "modifierName": { + "argumentTypes": null, + "id": 2394, + "name": "authorized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 857, + "src": "1507:10:21", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "1507:10:21" + } + ], + "name": "removeFromWhitelist", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2393, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2392, + "name": "account", + "nodeType": "VariableDeclaration", + "scope": 2410, + "src": "1467:15:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2391, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1467:7:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1466:17:21" + }, + "payable": false, + "returnParameters": { + "id": 2396, + "nodeType": "ParameterList", + "parameters": [], + "src": "1522:0:21" + }, + "scope": 2450, + "src": "1438:172:21", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2448, + "nodeType": "Block", + "src": "1973:261:21", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2426, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2465, + "src": "2110:3:21", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 2427, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2110:10:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2423, + "name": "manager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 844, + "src": "2093:7:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ModuleManager_$1142", + "typeString": "contract ModuleManager" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ModuleManager_$1142", + "typeString": "contract ModuleManager" + } + ], + "id": 2422, + "name": "OwnerManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1438, + "src": "2080:12:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1438_$", + "typeString": "type(contract OwnerManager)" + } + }, + "id": 2424, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2080:21:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_OwnerManager_$1438", + "typeString": "contract OwnerManager" + } + }, + "id": 2425, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "isOwner", + "nodeType": "MemberAccess", + "referencedDeclaration": 1428, + "src": "2080:29:21", + "typeDescriptions": { + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view external returns (bool)" + } + }, + "id": 2428, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2080:41:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2421, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "2072:7:21", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2429, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2072:50:21", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2430, + "nodeType": "ExpressionStatement", + "src": "2072:50:21" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2432, + "name": "isWhitelisted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2322, + "src": "2140:13:21", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 2434, + "indexExpression": { + "argumentTypes": null, + "id": 2433, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2412, + "src": "2154:2:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2140:17:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2431, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2468, + 2469 + ], + "referencedDeclaration": 2468, + "src": "2132:7:21", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2435, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2132:26:21", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2436, + "nodeType": "ExpressionStatement", + "src": "2132:26:21" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 2440, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2412, + "src": "2190:2:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2441, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2414, + "src": "2194:5:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2442, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2416, + "src": "2201:4:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2443, + "name": "Enum", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 30, + "src": "2207:4:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Enum_$30_$", + "typeString": "type(contract Enum)" + } + }, + "id": 2444, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "Operation", + "nodeType": "MemberAccess", + "referencedDeclaration": 29, + "src": "2207:14:21", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_Operation_$29_$", + "typeString": "type(enum Enum.Operation)" + } + }, + "id": 2445, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Call", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2207:19:21", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + ], + "expression": { + "argumentTypes": null, + "id": 2437, + "name": "manager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 844, + "src": "2168:7:21", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ModuleManager_$1142", + "typeString": "contract ModuleManager" + } + }, + "id": 2439, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "executeModule", + "nodeType": "MemberAccess", + "referencedDeclaration": 1033, + "src": "2168:21:21", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$returns$_t_bool_$", + "typeString": "function (address,uint256,bytes memory,enum Enum.Operation) external returns (bool)" + } + }, + "id": 2446, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2168:59:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2447, + "nodeType": "ExpressionStatement", + "src": "2168:59:21" + } + ] + }, + "documentation": "@dev Returns if Safe transaction is to a whitelisted destination.\n @param to Whitelisted destination address.\n @param value Not checked.\n @param data Not checked.\n @return Returns if transaction can be executed.", + "id": 2449, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "executeWhitelisted", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2417, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2412, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 2449, + "src": "1892:10:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2411, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1892:7:21", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2414, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 2449, + "src": "1904:13:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2413, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1904:7:21", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2416, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 2449, + "src": "1919:10:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" + }, + "typeName": { + "id": 2415, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1919:5:21", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1891:39:21" + }, + "payable": false, + "returnParameters": { + "id": 2420, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2419, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 2449, + "src": "1963:4:21", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2418, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1963:4:21", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1962:6:21" + }, + "scope": 2450, + "src": "1864:370:21", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 2451, + "src": "289:1947:21" + } + ], + "src": "0:2237:21" + }, + "compiler": { + "name": "solc", + "version": "0.4.23+commit.124ca40d.Emscripten.clang" + }, + "networks": { + "4": { + "events": {}, + "links": {}, + "address": "0x24d0b7e09df660a37cdcf7745a66099ba6f2e304", + "transactionHash": "0xe045ab6835acf1d5eb2146cea094d790127f84db7cd961f44b8e25883567cd75" + }, + "1525950336085": { + "events": {}, + "links": {}, + "address": "0x15fd83fcf27f1726e692389be1b6e03fe7d56bb6", + "transactionHash": "0xc7f84311daf6a72740fe5822cd6007cec3ce1ff6aeaf454559f3e5f36c81cfd8" + } + }, + "schemaVersion": "2.0.0", + "updatedAt": "2018-05-10T11:07:04.695Z" +} \ No newline at end of file diff --git a/safe-contracts/build/contracts/CreateAndAddExtension.json b/safe-contracts/build/contracts/v0/CreateAndAddExtension.json similarity index 100% rename from safe-contracts/build/contracts/CreateAndAddExtension.json rename to safe-contracts/build/contracts/v0/CreateAndAddExtension.json diff --git a/safe-contracts/build/contracts/DailyLimitExtension.json b/safe-contracts/build/contracts/v0/DailyLimitExtension.json similarity index 100% rename from safe-contracts/build/contracts/DailyLimitExtension.json rename to safe-contracts/build/contracts/v0/DailyLimitExtension.json diff --git a/safe-contracts/build/contracts/Extension.json b/safe-contracts/build/contracts/v0/Extension.json similarity index 100% rename from safe-contracts/build/contracts/Extension.json rename to safe-contracts/build/contracts/v0/Extension.json diff --git a/safe-contracts/build/contracts/v0/GnosisSafe.json b/safe-contracts/build/contracts/v0/GnosisSafe.json new file mode 100644 index 0000000000..7b01ffd6b1 --- /dev/null +++ b/safe-contracts/build/contracts/v0/GnosisSafe.json @@ -0,0 +1,25235 @@ +{ + "contractName": "GnosisSafe", + "abi": [ + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "uint256" + } + ], + "name": "owners", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "address" + } + ], + "name": "isOwner", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "threshold", + "outputs": [ + { + "name": "", + "type": "uint8" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "address" + }, + { + "name": "", + "type": "bytes32" + } + ], + "name": "isConfirmed", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "NAME", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "nonce", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "uint256" + } + ], + "name": "extensions", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "", + "type": "address" + } + ], + "name": "isExtension", + "outputs": [ + { + "name": "", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "VERSION", + "outputs": [ + { + "name": "", + "type": "string" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "name": "_owners", + "type": "address[]" + }, + { + "name": "_threshold", + "type": "uint8" + }, + { + "name": "to", + "type": "address" + }, + { + "name": "data", + "type": "bytes" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "payable": true, + "stateMutability": "payable", + "type": "fallback" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "newContract", + "type": "address" + } + ], + "name": "ContractCreation", + "type": "event" + }, + { + "constant": false, + "inputs": [ + { + "name": "_owners", + "type": "address[]" + }, + { + "name": "_threshold", + "type": "uint8" + }, + { + "name": "to", + "type": "address" + }, + { + "name": "data", + "type": "bytes" + } + ], + "name": "setup", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_masterCopy", + "type": "address" + } + ], + "name": "changeMasterCopy", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "owner", + "type": "address" + }, + { + "name": "_threshold", + "type": "uint8" + } + ], + "name": "addOwner", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "ownerIndex", + "type": "uint256" + }, + { + "name": "owner", + "type": "address" + }, + { + "name": "_threshold", + "type": "uint8" + } + ], + "name": "removeOwner", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "oldOwnerIndex", + "type": "uint256" + }, + { + "name": "oldOwner", + "type": "address" + }, + { + "name": "newOwner", + "type": "address" + } + ], + "name": "replaceOwner", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_threshold", + "type": "uint8" + } + ], + "name": "changeThreshold", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "extension", + "type": "address" + } + ], + "name": "addExtension", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "extensionIndex", + "type": "uint256" + }, + { + "name": "extension", + "type": "address" + } + ], + "name": "removeExtension", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "to", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + }, + { + "name": "data", + "type": "bytes" + }, + { + "name": "operation", + "type": "uint8" + }, + { + "name": "_nonce", + "type": "uint256" + } + ], + "name": "confirmTransaction", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "to", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + }, + { + "name": "data", + "type": "bytes" + }, + { + "name": "operation", + "type": "uint8" + }, + { + "name": "v", + "type": "uint8[]" + }, + { + "name": "r", + "type": "bytes32[]" + }, + { + "name": "s", + "type": "bytes32[]" + }, + { + "name": "_owners", + "type": "address[]" + }, + { + "name": "indices", + "type": "uint256[]" + } + ], + "name": "executeTransaction", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "to", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + }, + { + "name": "data", + "type": "bytes" + }, + { + "name": "operation", + "type": "uint8" + }, + { + "name": "extension", + "type": "address" + } + ], + "name": "executeExtension", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "to", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + }, + { + "name": "data", + "type": "bytes" + }, + { + "name": "operation", + "type": "uint8" + }, + { + "name": "_nonce", + "type": "uint256" + } + ], + "name": "getTransactionHash", + "outputs": [ + { + "name": "", + "type": "bytes32" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getOwners", + "outputs": [ + { + "name": "", + "type": "address[]" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "getExtensions", + "outputs": [ + { + "name": "", + "type": "address[]" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "transactionHash", + "type": "bytes32" + } + ], + "name": "getConfirmationCount", + "outputs": [ + { + "name": "confirmationCount", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "transactionHash", + "type": "bytes32" + } + ], + "name": "getConfirmingOwners", + "outputs": [ + { + "name": "confirmingOwners", + "type": "address[]" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x606060405234156200001057600080fd5b60405162002d6738038062002d67833981016040528080518201919060200180519060200190919080519060200190919080518201919050506200006b84848484620000756401000000000262001b33176401000000009004565b5050505062000374565b600080600060149054906101000a900460ff1660ff161415156200009857600080fd5b84518460ff1611151515620000ac57600080fd5b60018460ff1610151515620000c057600080fd5b600090505b8451811015620001fe5760008582815181101515620000e057fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff16141515156200010e57600080fd5b6004600086838151811015156200012157fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156200018057600080fd5b60016004600087848151811015156200019557fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080600101915050620000c5565b8460029080519060200190620002169291906200029f565b5083600060146101000a81548160ff021916908360ff16021790555060008373ffffffffffffffffffffffffffffffffffffffff161415156200028057620002738383620002876401000000000262002698176401000000009004565b15156200027f57600080fd5b5b5050505050565b600080600083516020850186600019f4905092915050565b8280548282559060005260206000209081019282156200031b579160200282015b828111156200031a5782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190620002c0565b5b5090506200032a91906200032e565b5090565b6200037191905b808211156200036d57600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555060010162000335565b5090565b90565b6129e380620003846000396000f300606060405260043610610149576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063025e7c271461014b57806307fa7017146101ae5780630e5229b0146101f0578063113642e514610235578063170ff3e1146102705780632b500041146102a95780632b5b1f821461035f5780632f54bf6e146103f957806342cde4e81461044a57806354e99c6e146104795780637b0519f3146104da5780637de7edef1461053857806383b7db6314610571578063842b954e146105db578063a04222e114610629578063a0e67e2b146106f1578063a3f4df7e1461075b578063affed0e0146107e9578063b6a9002e14610812578063b7f3358d146108c2578063c676920a146108e8578063db85d59c14610964578063f6d3fd86146109c7578063f847ed4814610b98578063ffa1ad7414610be9575b005b341561015657600080fd5b61016c6004808035906020019091905050610c77565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156101b957600080fd5b6101ee600480803590602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cb6565b005b34156101fb57600080fd5b610233600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803560ff16906020019091905050610e71565b005b341561024057600080fd5b61025a600480803560001916906020019091905050611011565b6040518082815260200191505060405180910390f35b341561027b57600080fd5b6102a7600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506110e7565b005b34156102b457600080fd5b610341600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803560ff1690602001909190803590602001909190505061125e565b60405180826000191660001916815260200191505060405180910390f35b341561036a57600080fd5b6103f7600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803560ff1690602001909190803590602001909190505061140b565b005b341561040457600080fd5b610430600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611561565b604051808215151515815260200191505060405180910390f35b341561045557600080fd5b61045d611581565b604051808260ff1660ff16815260200191505060405180910390f35b341561048457600080fd5b6104d8600480803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611594565b005b34156104e557600080fd5b61051e600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035600019169060200190919050506117cf565b604051808215151515815260200191505060405180910390f35b341561054357600080fd5b61056f600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506117fe565b005b341561057c57600080fd5b6105846118a1565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156105c75780820151818401526020810190506105ac565b505050509050019250505060405180910390f35b34156105e657600080fd5b610627600480803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803560ff16906020019091905050611935565b005b341561063457600080fd5b6106ef60048080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190803560ff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611b33565b005b34156106fc57600080fd5b610704611d21565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561074757808201518184015260208101905061072c565b505050509050019250505060405180910390f35b341561076657600080fd5b61076e611db5565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107ae578082015181840152602081019050610793565b50505050905090810190601f1680156107db5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156107f457600080fd5b6107fc611dee565b6040518082815260200191505060405180910390f35b341561081d57600080fd5b6108c0600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803560ff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611df4565b005b34156108cd57600080fd5b6108e6600480803560ff16906020019091905050611fe7565b005b34156108f357600080fd5b61090d600480803560001916906020019091905050612069565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610950578082015181840152602081019050610935565b505050509050019250505060405180910390f35b341561096f57600080fd5b61098560048080359060200190919050506121fd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156109d257600080fd5b610b96600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803560ff16906020019091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190505061223c565b005b3415610ba357600080fd5b610bcf600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061263f565b604051808215151515815260200191505060405180910390f35b3415610bf457600080fd5b610bfc61265f565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610c3c578082015181840152602081019050610c21565b50505050905090810190601f168015610c695780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600281815481101515610c8657fe5b90600052602060002090016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610cf057600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600383815481101515610d1657fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610d6457600080fd5b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506003600160038054905003815481101515610dd357fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600383815481101515610e0e57fe5b906000526020600020900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003805480919060019003610e6c91906127ed565b505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610eab57600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614151515610ed157600080fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610f2a57600080fd5b60028054806001018281610f3e9190612819565b9160005260206000209001600084909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508060ff16600060149054906101000a900460ff1660ff1614151561100d5761100c81611fe7565b5b5050565b600080600090505b6002805490508110156110e1576006600060028381548110151561103957fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000846000191660001916815260200190815260200160002060009054906101000a900460ff16156110d45781806001019250505b8080600101915050611019565b50919050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561112157600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561114757600080fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156111a057600080fd5b600380548060010182816111b49190612845565b9160005260206000209001600083909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600060197f01000000000000000000000000000000000000000000000000000000000000000230878787878760405180887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083835b602083101515611391578051825260208201915060208101905060208303925061136c565b6001836020036101000a0380198251168184511680821785525050505050509050018360028111156113bf57fe5b60ff167f01000000000000000000000000000000000000000000000000000000000000000281526001018281526020019750505050505050506040518091039020905095945050505050565b6000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561146557600080fd5b6114748686868660015461125e565b9050600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000826000191660001916815260200190815260200160002060009054906101000a900460ff161515156114e857600080fd5b6001600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550505050505050565b60046020528060005260406000206000915054906101000a900460ff1681565b600060149054906101000a900460ff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156115ce57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156115f457600080fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561164d57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff1660028481548110151561167357fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156116c157600080fd5b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508060028481548110151561178157fe5b906000526020600020900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b60066020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561183857600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561185e57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6118a9612871565b600380548060200260200160405190810160405280929190818152602001828054801561192b57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116118e1575b5050505050905090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561196f57600080fd5b8060ff166001600280549050031015151561198957600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166002848154811015156119af57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156119fd57600080fd5b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506002600160028054905003815481101515611a6c57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600284815481101515611aa757fe5b906000526020600020900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506002805480919060019003611b059190612885565b508060ff16600060149054906101000a900460ff1660ff16141515611b2e57611b2d81611fe7565b5b505050565b600080600060149054906101000a900460ff1660ff16141515611b5557600080fd5b84518460ff1611151515611b6857600080fd5b60018460ff1610151515611b7b57600080fd5b600090505b8451811015611cb25760008582815181101515611b9957fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1614151515611bc657600080fd5b600460008683815181101515611bd857fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515611c3657600080fd5b6001600460008784815181101515611c4a57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080600101915050611b80565b8460029080519060200190611cc89291906128b1565b5083600060146101000a81548160ff021916908360ff16021790555060008373ffffffffffffffffffffffffffffffffffffffff16141515611d1a57611d0e8383612698565b1515611d1957600080fd5b5b5050505050565b611d2961293b565b6002805480602002602001604051908101604052809291908181526020018280548015611dab57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611d61575b5050505050905090565b6040805190810160405280600b81526020017f476e6f736973205361666500000000000000000000000000000000000000000081525081565b60015481565b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611e4c57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff1663cde09ca933878787876000604051602001526040518663ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001836002811115611f1f57fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b83811015611f5f578082015181840152602081019050611f44565b50505050905090810190601f168015611f8c5780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b1515611fae57600080fd5b6102c65a03f11515611fbf57600080fd5b505050604051805190501515611fd457600080fd5b611fe0858585856126b0565b5050505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561202157600080fd5b6002805490508160ff161115151561203857600080fd5b60018160ff161015151561204b57600080fd5b80600060146101000a81548160ff021916908360ff16021790555050565b61207161293b565b60008061207d84611011565b91508160405180591061208d5750595b9080825280602002602001820160405250925060009150600090505b6002805490508110156121f657600660006002838154811015156120c957fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000856000191660001916815260200190815260200160002060009054906101000a900460ff16156121e95760028181548110151561216a57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683838151811015156121a457fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505081806001019250505b80806001019150506120a9565b5050919050565b60038181548110151561220c57fe5b90600052602060002090016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008060006122538e8e8e8e60015461125e565b94506000935060009050600091505b600060149054906101000a900460ff1660ff16821015612518578086511180156122a25750858181518110151561229557fe5b9060200190602002015182145b156123a15786818151811015156122b557fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480612371575060066000888381518110151561230557fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000866000191660001916815260200190815260200160002060009054906101000a900460ff165b151561237c57600080fd5b868181518110151561238a57fe5b906020019060200201519250600181019050612476565b6001858b8385038151811015156123b457fe5b906020019060200201518b8486038151811015156123ce57fe5b906020019060200201518b8587038151811015156123e857fe5b90602001906020020151604051600081526020016040526000604051602001526040518085600019166000191681526020018460ff1660ff16815260200183600019166000191681526020018260001916600019168152602001945050505050602060405160208103908084039060008661646e5a03f1151561246a57600080fd5b50506020604051035192505b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156124ce57600080fd5b8373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1611151561250857600080fd5b8293508180600101925050612262565b60008751111561261357600091505b865182101561261257868281518110151561253e57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561260557600060066000898581518110151561259057fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000876000191660001916815260200190815260200160002060006101000a81548160ff0219169083151502179055505b8180600101925050612527565b5b6001806000828254019250508190555061262f8e8e8e8e6126b0565b5050505050505050505050505050565b60056020528060005260406000206000915054906101000a900460ff1681565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b600080600083516020850186600019f4905092915050565b60008060028111156126be57fe5b8260028111156126ca57fe5b14156126eb576126db8585856127c1565b15156126e657600080fd5b6127ba565b600160028111156126f857fe5b82600281111561270457fe5b1415612724576127148584612698565b151561271f57600080fd5b6127b9565b61272d836127db565b905060008173ffffffffffffffffffffffffffffffffffffffff161415151561275557600080fd5b7f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5050505050565b60008060008351602085018688600019f190509392505050565b60008151602083016000f09050919050565b81548183558181151161281457818360005260206000209182019101612813919061294f565b5b505050565b8154818355818115116128405781836000526020600020918201910161283f919061294f565b5b505050565b81548183558181151161286c5781836000526020600020918201910161286b919061294f565b5b505050565b602060405190810160405280600081525090565b8154818355818115116128ac578183600052602060002091820191016128ab919061294f565b5b505050565b82805482825590600052602060002090810192821561292a579160200282015b828111156129295782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550916020019190600101906128d1565b5b5090506129379190612974565b5090565b602060405190810160405280600081525090565b61297191905b8082111561296d576000816000905550600101612955565b5090565b90565b6129b491905b808211156129b057600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555060010161297a565b5090565b905600a165627a7a72305820b9309aeae0cb4d289bc66fdd1b641936b903e87d406ff75007e08dd9fd54ff590029", + "deployedBytecode": "0x606060405260043610610149576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063025e7c271461014b57806307fa7017146101ae5780630e5229b0146101f0578063113642e514610235578063170ff3e1146102705780632b500041146102a95780632b5b1f821461035f5780632f54bf6e146103f957806342cde4e81461044a57806354e99c6e146104795780637b0519f3146104da5780637de7edef1461053857806383b7db6314610571578063842b954e146105db578063a04222e114610629578063a0e67e2b146106f1578063a3f4df7e1461075b578063affed0e0146107e9578063b6a9002e14610812578063b7f3358d146108c2578063c676920a146108e8578063db85d59c14610964578063f6d3fd86146109c7578063f847ed4814610b98578063ffa1ad7414610be9575b005b341561015657600080fd5b61016c6004808035906020019091905050610c77565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156101b957600080fd5b6101ee600480803590602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cb6565b005b34156101fb57600080fd5b610233600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803560ff16906020019091905050610e71565b005b341561024057600080fd5b61025a600480803560001916906020019091905050611011565b6040518082815260200191505060405180910390f35b341561027b57600080fd5b6102a7600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506110e7565b005b34156102b457600080fd5b610341600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803560ff1690602001909190803590602001909190505061125e565b60405180826000191660001916815260200191505060405180910390f35b341561036a57600080fd5b6103f7600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803560ff1690602001909190803590602001909190505061140b565b005b341561040457600080fd5b610430600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611561565b604051808215151515815260200191505060405180910390f35b341561045557600080fd5b61045d611581565b604051808260ff1660ff16815260200191505060405180910390f35b341561048457600080fd5b6104d8600480803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611594565b005b34156104e557600080fd5b61051e600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035600019169060200190919050506117cf565b604051808215151515815260200191505060405180910390f35b341561054357600080fd5b61056f600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506117fe565b005b341561057c57600080fd5b6105846118a1565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156105c75780820151818401526020810190506105ac565b505050509050019250505060405180910390f35b34156105e657600080fd5b610627600480803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803560ff16906020019091905050611935565b005b341561063457600080fd5b6106ef60048080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190803560ff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611b33565b005b34156106fc57600080fd5b610704611d21565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561074757808201518184015260208101905061072c565b505050509050019250505060405180910390f35b341561076657600080fd5b61076e611db5565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107ae578082015181840152602081019050610793565b50505050905090810190601f1680156107db5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156107f457600080fd5b6107fc611dee565b6040518082815260200191505060405180910390f35b341561081d57600080fd5b6108c0600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803560ff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611df4565b005b34156108cd57600080fd5b6108e6600480803560ff16906020019091905050611fe7565b005b34156108f357600080fd5b61090d600480803560001916906020019091905050612069565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610950578082015181840152602081019050610935565b505050509050019250505060405180910390f35b341561096f57600080fd5b61098560048080359060200190919050506121fd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156109d257600080fd5b610b96600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803560ff16906020019091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190505061223c565b005b3415610ba357600080fd5b610bcf600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061263f565b604051808215151515815260200191505060405180910390f35b3415610bf457600080fd5b610bfc61265f565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610c3c578082015181840152602081019050610c21565b50505050905090810190601f168015610c695780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600281815481101515610c8657fe5b90600052602060002090016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610cf057600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600383815481101515610d1657fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610d6457600080fd5b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506003600160038054905003815481101515610dd357fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600383815481101515610e0e57fe5b906000526020600020900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003805480919060019003610e6c91906127ed565b505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610eab57600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614151515610ed157600080fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610f2a57600080fd5b60028054806001018281610f3e9190612819565b9160005260206000209001600084909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508060ff16600060149054906101000a900460ff1660ff1614151561100d5761100c81611fe7565b5b5050565b600080600090505b6002805490508110156110e1576006600060028381548110151561103957fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000846000191660001916815260200190815260200160002060009054906101000a900460ff16156110d45781806001019250505b8080600101915050611019565b50919050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561112157600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561114757600080fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156111a057600080fd5b600380548060010182816111b49190612845565b9160005260206000209001600083909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600060197f01000000000000000000000000000000000000000000000000000000000000000230878787878760405180887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083835b602083101515611391578051825260208201915060208101905060208303925061136c565b6001836020036101000a0380198251168184511680821785525050505050509050018360028111156113bf57fe5b60ff167f01000000000000000000000000000000000000000000000000000000000000000281526001018281526020019750505050505050506040518091039020905095945050505050565b6000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561146557600080fd5b6114748686868660015461125e565b9050600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000826000191660001916815260200190815260200160002060009054906101000a900460ff161515156114e857600080fd5b6001600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550505050505050565b60046020528060005260406000206000915054906101000a900460ff1681565b600060149054906101000a900460ff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156115ce57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156115f457600080fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561164d57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff1660028481548110151561167357fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156116c157600080fd5b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508060028481548110151561178157fe5b906000526020600020900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b60066020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561183857600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561185e57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6118a9612871565b600380548060200260200160405190810160405280929190818152602001828054801561192b57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116118e1575b5050505050905090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561196f57600080fd5b8060ff166001600280549050031015151561198957600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166002848154811015156119af57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156119fd57600080fd5b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506002600160028054905003815481101515611a6c57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600284815481101515611aa757fe5b906000526020600020900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506002805480919060019003611b059190612885565b508060ff16600060149054906101000a900460ff1660ff16141515611b2e57611b2d81611fe7565b5b505050565b600080600060149054906101000a900460ff1660ff16141515611b5557600080fd5b84518460ff1611151515611b6857600080fd5b60018460ff1610151515611b7b57600080fd5b600090505b8451811015611cb25760008582815181101515611b9957fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1614151515611bc657600080fd5b600460008683815181101515611bd857fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515611c3657600080fd5b6001600460008784815181101515611c4a57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080600101915050611b80565b8460029080519060200190611cc89291906128b1565b5083600060146101000a81548160ff021916908360ff16021790555060008373ffffffffffffffffffffffffffffffffffffffff16141515611d1a57611d0e8383612698565b1515611d1957600080fd5b5b5050505050565b611d2961293b565b6002805480602002602001604051908101604052809291908181526020018280548015611dab57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611d61575b5050505050905090565b6040805190810160405280600b81526020017f476e6f736973205361666500000000000000000000000000000000000000000081525081565b60015481565b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611e4c57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff1663cde09ca933878787876000604051602001526040518663ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001836002811115611f1f57fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b83811015611f5f578082015181840152602081019050611f44565b50505050905090810190601f168015611f8c5780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b1515611fae57600080fd5b6102c65a03f11515611fbf57600080fd5b505050604051805190501515611fd457600080fd5b611fe0858585856126b0565b5050505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561202157600080fd5b6002805490508160ff161115151561203857600080fd5b60018160ff161015151561204b57600080fd5b80600060146101000a81548160ff021916908360ff16021790555050565b61207161293b565b60008061207d84611011565b91508160405180591061208d5750595b9080825280602002602001820160405250925060009150600090505b6002805490508110156121f657600660006002838154811015156120c957fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000856000191660001916815260200190815260200160002060009054906101000a900460ff16156121e95760028181548110151561216a57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683838151811015156121a457fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505081806001019250505b80806001019150506120a9565b5050919050565b60038181548110151561220c57fe5b90600052602060002090016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008060006122538e8e8e8e60015461125e565b94506000935060009050600091505b600060149054906101000a900460ff1660ff16821015612518578086511180156122a25750858181518110151561229557fe5b9060200190602002015182145b156123a15786818151811015156122b557fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480612371575060066000888381518110151561230557fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000866000191660001916815260200190815260200160002060009054906101000a900460ff165b151561237c57600080fd5b868181518110151561238a57fe5b906020019060200201519250600181019050612476565b6001858b8385038151811015156123b457fe5b906020019060200201518b8486038151811015156123ce57fe5b906020019060200201518b8587038151811015156123e857fe5b90602001906020020151604051600081526020016040526000604051602001526040518085600019166000191681526020018460ff1660ff16815260200183600019166000191681526020018260001916600019168152602001945050505050602060405160208103908084039060008661646e5a03f1151561246a57600080fd5b50506020604051035192505b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156124ce57600080fd5b8373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1611151561250857600080fd5b8293508180600101925050612262565b60008751111561261357600091505b865182101561261257868281518110151561253e57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561260557600060066000898581518110151561259057fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000876000191660001916815260200190815260200160002060006101000a81548160ff0219169083151502179055505b8180600101925050612527565b5b6001806000828254019250508190555061262f8e8e8e8e6126b0565b5050505050505050505050505050565b60056020528060005260406000206000915054906101000a900460ff1681565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b600080600083516020850186600019f4905092915050565b60008060028111156126be57fe5b8260028111156126ca57fe5b14156126eb576126db8585856127c1565b15156126e657600080fd5b6127ba565b600160028111156126f857fe5b82600281111561270457fe5b1415612724576127148584612698565b151561271f57600080fd5b6127b9565b61272d836127db565b905060008173ffffffffffffffffffffffffffffffffffffffff161415151561275557600080fd5b7f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5050505050565b60008060008351602085018688600019f190509392505050565b60008151602083016000f09050919050565b81548183558181151161281457818360005260206000209182019101612813919061294f565b5b505050565b8154818355818115116128405781836000526020600020918201910161283f919061294f565b5b505050565b81548183558181151161286c5781836000526020600020918201910161286b919061294f565b5b505050565b602060405190810160405280600081525090565b8154818355818115116128ac578183600052602060002091820191016128ab919061294f565b5b505050565b82805482825590600052602060002090810192821561292a579160200282015b828111156129295782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550916020019190600101906128d1565b5b5090506129379190612974565b5090565b602060405190810160405280600081525090565b61297191905b8082111561296d576000816000905550600101612955565b5090565b90565b6129b491905b808211156129b057600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555060010161297a565b5090565b905600a165627a7a72305820b9309aeae0cb4d289bc66fdd1b641936b903e87d406ff75007e08dd9fd54ff590029", + "sourceMap": "218:14623:1:-;;;1567:153;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1677:36;1683:7;1692:10;1704:2;1708:4;1677:5;;;;;:36;;;:::i;:::-;1567:153;;;;218:14623;;2039:1141;2550:9;2289:1;2276:9;;;;;;;;;;;:14;;;2268:23;;;;;;;;2397:7;:14;2383:10;:28;;;;2375:37;;;;;;;;2496:1;2482:10;:15;;;;2474:24;;;;;;;;2562:1;2550:13;;2545:266;2569:7;:14;2565:1;:18;2545:266;;;2671:1;2657:7;2665:1;2657:10;;;;;;;;;;;;;;;;;;:15;;;;2649:24;;;;;;;;2740:7;:19;2748:7;2756:1;2748:10;;;;;;;;;;;;;;;;;;2740:19;;;;;;;;;;;;;;;;;;;;;;;;;2739:20;2731:29;;;;;;;;2796:4;2774:7;:19;2782:7;2790:1;2782:10;;;;;;;;;;;;;;;;;;2774:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;2585:3;;;;;;;2545:266;;;2829:7;2820:6;:16;;;;;;;;;;;;:::i;:::-;;2858:10;2846:9;;:22;;;;;;;;;;;;;;;;;;3048:1;3042:2;:7;;;;3038:135;;;3143:29;3163:2;3167:4;3143:19;;;;;:29;;;:::i;:::-;3135:38;;;;;;;;3038:135;2039:1141;;;;;:::o;12356:225::-;12443:12;12563:1;12560;12553:4;12547:5;12540:4;12534;12530:3;12526:2;12522:1;12518:3;12505:12;12494:71;;12480:95;;;;:::o;218:14623::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;", + "deployedSourceMap": "218:14623:1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;472:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7264:384;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3786:431;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13870:290;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6656:336;;;;;;;;;;;;;;;;;;;;;;;;;;;;13076:249;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7979:506;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;607:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;418:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5468:502;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;892:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3326:220;;;;;;;;;;;;;;;;;;;;;;;;;;;;13603:121;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;4548:599:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2039:1141;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13407:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;295:43:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;446:20:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11178:464;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6159:320;;;;;;;;;;;;;;;;;;;;;;;;;;;;14301:538;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;501:29:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9222:1531;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;729:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;344:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;472:23:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7264:384::-;1105:4;1083:27;;:10;:27;;;1075:36;;;;;;;;7490:9;7460:39;;:10;7471:14;7460:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;:39;;;7452:48;;;;;;;;7535:5;7510:11;:22;7522:9;7510:22;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;7579:10;7610:1;7590:10;:17;;;;:21;7579:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;7550:10;7561:14;7550:26;;;;;;;;;;;;;;;;;;;:62;;;;;;;;;;;;;;;;;;7622:10;:19;;;;;;;;;;;;:::i;:::-;;7264:384;;:::o;3786:431::-;1105:4;1083:27;;:10;:27;;;1075:36;;;;;;;;3943:1;3934:5;:10;;;;3926:19;;;;;;;;4004:7;:14;4012:5;4004:14;;;;;;;;;;;;;;;;;;;;;;;;;4003:15;3995:24;;;;;;;;4029:6;:18;;;;;;;;;;;:::i;:::-;;;;;;;;;;4041:5;4029:18;;;;;;;;;;;;;;;;;;;;;;;4074:4;4057:7;:14;4065:5;4057:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;4159:10;4146:23;;:9;;;;;;;;;;;:23;;;;4142:68;;;4183:27;4199:10;4183:15;:27::i;:::-;4142:68;3786:431;;:::o;13870:290::-;13970:22;14013:6;14022:1;14013:10;;14008:146;14029:6;:13;;;;14025:1;:17;14008:146;;;14067:11;:22;14079:6;14086:1;14079:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;14067:22;;;;;;;;;;;;;;;:39;14090:15;14067:39;;;;;;;;;;;;;;;;;;;;;;;;;;;14063:80;;;14124:19;;;;;;;14063:80;14044:3;;;;;;;14008:146;;;13870:290;;;;:::o;6656:336::-;1105:4;1083:27;;:10;:27;;;1075:36;;;;;;;;6822:1;6808:9;6800:23;;;;6792:32;;;;;;;;6887:11;:22;6899:9;6887:22;;;;;;;;;;;;;;;;;;;;;;;;;6886:23;6878:32;;;;;;;;6920:10;:26;;;;;;;;;;;:::i;:::-;;;;;;;;;;6936:9;6920:26;;;;;;;;;;;;;;;;;;;;;;;6981:4;6956:11;:22;6968:9;6956:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;6656:336;:::o;13076:249::-;13225:7;13270:4;13265:10;;13277:4;13283:2;13287:5;13294:4;13300:9;13311:6;13255:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13248:70:1;;13076:249;;;;;;;:::o;7979:506::-;8220:23;8190:7;:19;8198:10;8190:19;;;;;;;;;;;;;;;;;;;;;;;;;8182:28;;;;;;;;8246:53;8265:2;8269:5;8276:4;8282:9;8293:5;;8246:18;:53::i;:::-;8220:79;;8380:11;:23;8392:10;8380:23;;;;;;;;;;;;;;;:40;8404:15;8380:40;;;;;;;;;;;;;;;;;;;;;;;;;;;8379:41;8371:50;;;;;;;;8474:4;8431:11;:23;8443:10;8431:23;;;;;;;;;;;;;;;:40;8455:15;8431:40;;;;;;;;;;;;;;;;;;:47;;;;;;;;;;;;;;;;;;7979:506;;;;;;:::o;607:40::-;;;;;;;;;;;;;;;;;;;;;;:::o;418:22::-;;;;;;;;;;;;;:::o;5468:502::-;1105:4;1083:27;;:10;:27;;;1075:36;;;;;;;;5658:1;5646:8;:13;;;;5638:22;;;;;;;;5719:7;:17;5727:8;5719:17;;;;;;;;;;;;;;;;;;;;;;;;;5718:18;5710:27;;;;;;;;5842:8;5817:33;;:6;5824:13;5817:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;:33;;;5809:42;;;;;;;;5881:5;5861:7;:17;5869:8;5861:17;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;5917:4;5896:7;:17;5904:8;5896:17;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;5955:8;5931:6;5938:13;5931:21;;;;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;5468:502;;;:::o;892:65::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3326:220::-;1105:4;1083:27;;:10;:27;;;1075:36;;;;;;;;3503:1;3487:11;3479:25;;;;3471:34;;;;;;;;3528:11;3515:10;;:24;;;;;;;;;;;;;;;;;;3326:220;:::o;13603:121::-;13673:11;;:::i;:::-;13707:10;13700:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13603:121;:::o;4548:599::-;1105:4;1083:27;;:10;:27;;;1075:36;;;;;;;;4776:10;4755:31;;4771:1;4755:6;:13;;;;:17;:31;;4747:40;;;;;;;;4889:5;4867:27;;:6;4874:10;4867:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;:27;;;4859:36;;;;;;;;4922:5;4905:7;:14;4913:5;4905:14;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;4958:6;4981:1;4965:6;:13;;;;:17;4958:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;4937:6;4944:10;4937:18;;;;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;4993:6;:15;;;;;;;;;;;;:::i;:::-;;5089:10;5076:23;;:9;;;;;;;;;;;:23;;;;5072:68;;;5113:27;5129:10;5113:15;:27::i;:::-;5072:68;4548:599;;;:::o;2039:1141::-;2550:9;2289:1;2276:9;;;;;;;;;;;:14;;;2268:23;;;;;;;;2397:7;:14;2383:10;:28;;;;2375:37;;;;;;;;2496:1;2482:10;:15;;;;2474:24;;;;;;;;2562:1;2550:13;;2545:266;2569:7;:14;2565:1;:18;2545:266;;;2671:1;2657:7;2665:1;2657:10;;;;;;;;;;;;;;;;;;:15;;;;2649:24;;;;;;;;2740:7;:19;2748:7;2756:1;2748:10;;;;;;;;;;;;;;;;;;2740:19;;;;;;;;;;;;;;;;;;;;;;;;;2739:20;2731:29;;;;;;;;2796:4;2774:7;:19;2782:7;2790:1;2782:10;;;;;;;;;;;;;;;;;;2774:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;2585:3;;;;;;;2545:266;;;2829:7;2820:6;:16;;;;;;;;;;;;:::i;:::-;;2858:10;2846:9;;:22;;;;;;;;;;;;;;;;;;3048:1;3042:2;:7;;;;3038:135;;;3143:29;3163:2;3167:4;3143:19;:29::i;:::-;3135:38;;;;;;;;3038:135;2039:1141;;;;;:::o;13407:111::-;13473:9;;:::i;:::-;13505:6;13498:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13407:111;:::o;295:43::-;;;;;;;;;;;;;;;;;;;;:::o;446:20::-;;;;:::o;11178:464::-;11374:11;:22;11386:9;11374:22;;;;;;;;;;;;;;;;;;;;;;;;;11366:31;;;;;;;;11464:9;:22;;;11487:10;11499:2;11503:5;11510:4;11516:9;11464:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11456:71:1;;;;;;;;11600:35;11608:2;11612:5;11619:4;11625:9;11600:7;:35::i;:::-;11178:464;;;;;:::o;6159:320::-;1105:4;1083:27;;:10;:27;;;1075:36;;;;;;;;6340:6;:13;;;;6326:10;:27;;;;6318:36;;;;;;;;6438:1;6424:10;:15;;;;6416:24;;;;;;;;6462:10;6450:9;;:22;;;;;;;;;;;;;;;;;;6159:320;:::o;14301:538::-;14400:26;;:::i;:::-;14442:22;14611:6;14467:37;14488:15;14467:20;:37::i;:::-;14442:62;;14547:17;14533:32;;;;;;;;;;;;;;;;;;;;;;;;14514:51;;14595:1;14575:21;;14620:1;14611:10;;14606:227;14627:6;:13;;;;14623:1;:17;14606:227;;;14665:11;:22;14677:6;14684:1;14677:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;14665:22;;;;;;;;;;;;;;;:39;14688:15;14665:39;;;;;;;;;;;;;;;;;;;;;;;;;;;14661:162;;;14762:6;14769:1;14762:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;14724:16;14741:17;14724:35;;;;;;;;;;;;;;;;;:47;;;;;;;;;;;14789:19;;;;;;;14661:162;14642:3;;;;;;;14606:227;;;14301:538;;;;;:::o;501:29::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;9222:1531::-;9414:23;9555:17;9595:20;9625:9;9644;9440:53;9459:2;9463:5;9470:4;9476:9;9487:5;;9440:18;:53::i;:::-;9414:79;;9583:1;9555:30;;9656:1;9644:13;;9718:1;9714:5;;9709:651;9725:9;;;;;;;;;;;9721:13;;:1;:13;9709:651;;;9860:1;9843:7;:14;:18;:37;;;;;9870:7;9878:1;9870:10;;;;;;;;;;;;;;;;;;9865:1;:15;9843:37;9839:381;;;9922:7;9930:1;9922:10;;;;;;;;;;;;;;;;;;9908:24;;:10;:24;;;:68;;;;9936:11;:23;9948:7;9956:1;9948:10;;;;;;;;;;;;;;;;;;9936:23;;;;;;;;;;;;;;;:40;9960:15;9936:40;;;;;;;;;;;;;;;;;;;;;;;;;;;9908:68;9900:77;;;;;;;;10010:7;10018:1;10010:10;;;;;;;;;;;;;;;;;;9995:25;;10043:1;10038:6;;;;9839:381;;;10170:50;10180:15;10197:1;10201;10199;:3;10197:6;;;;;;;;;;;;;;;;;;10205:1;10209;10207;:3;10205:6;;;;;;;;;;;;;;;;;;10213:1;10217;10215;:3;10213:6;;;;;;;;;;;;;;;;;;10170:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10155:65;;9839:381;10242:7;:21;10250:12;10242:21;;;;;;;;;;;;;;;;;;;;;;;;;10234:30;;;;;;;;10301:9;10286:24;;:12;:24;;;10278:33;;;;;;;;10337:12;10325:24;;9736:3;;;;;;;9709:651;;;10436:1;10419:7;:14;:18;10415:216;;;10462:1;10458:5;;10453:168;10469:7;:14;10465:1;:18;10453:168;;;10526:7;10534:1;10526:10;;;;;;;;;;;;;;;;;;10512:24;;:10;:24;;;;10508:98;;;10601:5;10558:11;:23;10570:7;10578:1;10570:10;;;;;;;;;;;;;;;;;;10558:23;;;;;;;;;;;;;;;:40;10582:15;10558:40;;;;;;;;;;;;;;;;;;:48;;;;;;;;;;;;;;;;;;10508:98;10485:3;;;;;;;10453:168;;;10415:216;10700:1;10691:5;;:10;;;;;;;;;;;10711:35;10719:2;10723:5;10730:4;10736:9;10711:7;:35::i;:::-;9222:1531;;;;;;;;;;;;;;:::o;729:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;344:40::-;;;;;;;;;;;;;;;;;;;;:::o;12356:225::-;12443:12;12563:1;12560;12553:4;12547:5;12540:4;12534;12530:3;12526:2;12522:1;12518:3;12505:12;12494:71;;12480:95;;;;:::o;11648:465::-;11973:19;11773:14;11760:27;;;;;;;;:9;:27;;;;;;;;;11756:351;;;11809:28;11821:2;11825:5;11832:4;11809:11;:28::i;:::-;11801:37;;;;;;;;11756:351;;;11870:22;11857:35;;;;;;;;:9;:35;;;;;;;;;11853:254;;;11914:29;11934:2;11938:4;11914:19;:29::i;:::-;11906:38;;;;;;;;11853:254;;;11995:19;12009:4;11995:13;:19::i;:::-;11973:41;;12051:1;12036:11;:16;;;;12028:25;;;;;;;;12067:29;12084:11;12067:29;;;;;;;;;;;;;;;;;;;;;;11853:254;11756:351;11648:465;;;;;:::o;12119:231::-;12213:12;12332:1;12329;12322:4;12316:5;12309:4;12303;12299:3;12292:5;12288:2;12284:1;12280:3;12275:4;12264:70;;12250:94;;;;;:::o;12587:197::-;12656:19;12762:4;12756:5;12749:4;12743;12739:3;12736:1;12729:6;12714:54;;12700:78;;;:::o;218:14623::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", + "source": "pragma solidity 0.4.19;\nimport \"./Extension.sol\";\n\n\n/// @title Gnosis Safe - A multisignature wallet with support for confirmations using signed messages based on ERC191.\n/// @author Stefan George - \ncontract GnosisSafe {\n\n event ContractCreation(address newContract);\n\n string public constant NAME = \"Gnosis Safe\";\n string public constant VERSION = \"0.0.1\";\n\n GnosisSafe masterCopy;\n uint8 public threshold;\n uint256 public nonce;\n address[] public owners;\n Extension[] public extensions;\n\n // isOwner mapping allows to check if an address is a Safe owner.\n mapping (address => bool) public isOwner;\n // isExtension mapping allows to check if an extension was whitelisted.\n mapping (address => bool) public isExtension;\n // isConfirmed mapping allows to check if a transaction was confirmed by an owner via a confirm transaction.\n mapping (address => mapping (bytes32 => bool)) public isConfirmed;\n\n enum Operation {\n Call,\n DelegateCall,\n Create\n }\n\n modifier onlyWallet() {\n require(msg.sender == address(this));\n _;\n }\n\n /// @dev Fallback function accepts Ether transactions.\n function ()\n external\n payable\n {\n\n }\n\n /// @dev Constructor function triggers setup function.\n /// @param _owners List of Safe owners.\n /// @param _threshold Number of required confirmations for a Safe transaction.\n /// @param to Contract address for optional delegate call.\n /// @param data Data payload for optional delegate call.\n function GnosisSafe(address[] _owners, uint8 _threshold, address to, bytes data)\n public\n {\n setup(_owners, _threshold, to, data);\n }\n\n /// @dev Setup function sets initial storage of contract.\n /// @param _owners List of Safe owners.\n /// @param _threshold Number of required confirmations for a Safe transaction.\n /// @param to Contract address for optional delegate call.\n /// @param data Data payload for optional delegate call.\n function setup(address[] _owners, uint8 _threshold, address to, bytes data)\n public\n {\n // Threshold can only be 0 at initialization.\n // Check ensures that setup function can only be called once.\n require(threshold == 0);\n // Validate that threshold is smaller than numbr of added owners.\n require(_threshold <= _owners.length);\n // There has to be at least one Safe owner.\n require(_threshold >= 1);\n // Initializing Safe owners.\n for (uint256 i = 0; i < _owners.length; i++) {\n // Owner address cannot be null.\n require(_owners[i] != 0);\n // No duplicate owners allowed.\n require(!isOwner[_owners[i]]);\n isOwner[_owners[i]] = true;\n }\n owners = _owners;\n threshold = _threshold;\n // If a to address is set, an additional delegate call is executed.\n // This call allows further contract setup steps, like adding an extension.\n if (to != 0)\n // Setup has to complete successfully or transaction fails.\n require(executeDelegateCall(to, data));\n }\n\n /// @dev Allows to upgrade the contract. This can only be done via a Safe transaction.\n /// @param _masterCopy New contract address.\n function changeMasterCopy(GnosisSafe _masterCopy)\n public\n onlyWallet\n {\n // Master copy address cannot be null.\n require(address(_masterCopy) != 0);\n masterCopy = _masterCopy;\n }\n\n /// @dev Allows to add a new owner to the Safe and update the threshold at the same time.\n /// This can only be done via a Safe transaction.\n /// @param owner New owner address.\n /// @param _threshold New threshold.\n function addOwner(address owner, uint8 _threshold)\n public\n onlyWallet\n {\n // Owner address cannot be null.\n require(owner != 0);\n // No duplicate owners allowed.\n require(!isOwner[owner]);\n owners.push(owner);\n isOwner[owner] = true;\n // Change threshold if threshold was changed.\n if (threshold != _threshold)\n changeThreshold(_threshold);\n }\n\n /// @dev Allows to remove an owner from the Safe and update the threshold at the same time.\n /// This can only be done via a Safe transaction.\n /// @param ownerIndex Array index position of owner address to be removed.\n /// @param owner Owner address to be removed.\n /// @param _threshold New threshold.\n function removeOwner(uint256 ownerIndex, address owner, uint8 _threshold)\n public\n onlyWallet\n {\n // Only allow to remove an owner, if threshold can still be reached.\n require(owners.length - 1 >= _threshold);\n // Validate owner address corresponds to owner index.\n require(owners[ownerIndex] == owner);\n isOwner[owner] = false;\n owners[ownerIndex] = owners[owners.length - 1];\n owners.length--;\n // Change threshold if threshold was changed.\n if (threshold != _threshold)\n changeThreshold(_threshold);\n }\n\n /// @dev Allows to replace an owner from the Safe with another address.\n /// This can only be done via a Safe transaction.\n /// @param oldOwnerIndex Array index position of owner address to be replaced.\n /// @param oldOwner Owner address to be replaced.\n /// @param newOwner New owner address.\n function replaceOwner(uint256 oldOwnerIndex, address oldOwner, address newOwner)\n public\n onlyWallet\n {\n // Owner address cannot be null.\n require(newOwner != 0);\n // No duplicate owners allowed.\n require(!isOwner[newOwner]);\n // Validate owner address corresponds to owner index.\n require(owners[oldOwnerIndex] == oldOwner);\n isOwner[oldOwner] = false;\n isOwner[newOwner] = true;\n owners[oldOwnerIndex] = newOwner;\n }\n\n /// @dev Allows to update the number of required confirmations by Safe owners.\n /// This can only be done via a Safe transaction.\n /// @param _threshold New threshold.\n function changeThreshold(uint8 _threshold)\n public\n onlyWallet\n {\n // Validate that threshold is smaller than numbr of owners.\n require(_threshold <= owners.length);\n // There has to be at least one Safe owner.\n require(_threshold >= 1);\n threshold = _threshold;\n }\n\n /// @dev Allows to add an extension to the whitelist.\n /// This can only be done via a Safe transaction.\n /// @param extension Extension to be whitelisted.\n function addExtension(Extension extension)\n public\n onlyWallet\n {\n // Extension address cannot be null.\n require(address(extension) != 0);\n // Extension cannot be added twice.\n require(!isExtension[extension]);\n extensions.push(extension);\n isExtension[extension] = true;\n }\n\n /// @dev Allows to remove an extension from the whitelist.\n /// This can only be done via a Safe transaction.\n /// @param extensionIndex Array index position of extension to be removed from whitelist.\n /// @param extension Extension to be removed.\n function removeExtension(uint256 extensionIndex, Extension extension)\n public\n onlyWallet\n {\n // Validate extension address corresponds to extension index.\n require(extensions[extensionIndex] == extension);\n isExtension[extension] = false;\n extensions[extensionIndex] = extensions[extensions.length - 1];\n extensions.length--;\n }\n\n /// @dev Allows to confirm a Safe transaction with a regular transaction.\n /// This can only be done from an owner address.\n /// @param to Destination address.\n /// @param value Ether value.\n /// @param data Data payload.\n /// @param operation Operation type.\n /// @param _nonce Transaction nonce.\n function confirmTransaction(address to, uint256 value, bytes data, Operation operation, uint256 _nonce)\n public\n {\n // Only Safe owners are allowed to confirm Safe transactions.\n require(isOwner[msg.sender]);\n bytes32 transactionHash = getTransactionHash(to, value, data, operation, nonce);\n // It is only possible to confirm a transaction once.\n require(!isConfirmed[msg.sender][transactionHash]);\n isConfirmed[msg.sender][transactionHash] = true;\n }\n\n /// @dev Allows to execute a Safe transaction confirmed by required number of owners.\n /// @param to Destination address of Safe transaction.\n /// @param value Ether value of Safe transaction.\n /// @param data Data payload of Safe transaction.\n /// @param operation Operation type of Safe transaction.\n /// @param v Array of signature V values sorted by owner addresses.\n /// @param r Array of signature R values sorted by owner addresses.\n /// @param s Array of signature S values sorted by owner addresses.\n /// @param _owners List of Safe owners confirming via regular transactions sorted by owner addresses.\n /// @param indices List of indeces of Safe owners confirming via regular transactions.\n function executeTransaction(address to, uint256 value, bytes data, Operation operation, uint8[] v, bytes32[] r, bytes32[] s, address[] _owners, uint256[] indices)\n public\n {\n bytes32 transactionHash = getTransactionHash(to, value, data, operation, nonce);\n // There cannot be an owner with address 0.\n address lastOwner = address(0);\n address currentOwner;\n uint256 i;\n uint256 j = 0;\n // Validate threshold is reached.\n for (i = 0; i < threshold; i++) {\n // Check confirmations done with regular transactions or by msg.sender.\n if (indices.length > j && i == indices[j]) {\n require(msg.sender == _owners[j] || isConfirmed[_owners[j]][transactionHash]);\n currentOwner = _owners[j];\n j += 1;\n }\n // Check confirmations done with signed messages.\n else\n currentOwner = ecrecover(transactionHash, v[i-j], r[i-j], s[i-j]);\n require(isOwner[currentOwner]);\n require(currentOwner > lastOwner);\n lastOwner = currentOwner;\n }\n // Delete storage to receive refunds.\n if (_owners.length > 0) {\n for (i = 0; i < _owners.length; i++) {\n if (msg.sender != _owners[i])\n isConfirmed[_owners[i]][transactionHash] = false;\n }\n }\n // Increase nonce and execute transaction.\n nonce += 1;\n execute(to, value, data, operation);\n }\n\n /// @dev Allows to execute a Safe transaction via an extension without any further confirmations.\n /// @param to Destination address of extension transaction.\n /// @param value Ether value of extension transaction.\n /// @param data Data payload of extension transaction.\n /// @param operation Operation type of extension transaction.\n /// @param extension Extension address of extension transaction.\n function executeExtension(address to, uint256 value, bytes data, Operation operation, Extension extension)\n public\n {\n // Only whitelisted extensions are allowed.\n require(isExtension[extension]);\n // Extension has to confirm transaction.\n require(extension.isExecutable(msg.sender, to, value, data, operation));\n // Exectute transaction without further confirmations.\n execute(to, value, data, operation);\n }\n\n function execute(address to, uint256 value, bytes data, Operation operation)\n internal\n {\n if (operation == Operation.Call)\n require(executeCall(to, value, data));\n else if (operation == Operation.DelegateCall)\n require(executeDelegateCall(to, data));\n else {\n address newContract = executeCreate(data);\n require(newContract != 0);\n ContractCreation(newContract);\n }\n }\n\n function executeCall(address to, uint256 value, bytes data)\n internal\n returns (bool success)\n {\n assembly {\n success := call(not(0), to, value, add(data, 0x20), mload(data), 0, 0)\n }\n }\n\n function executeDelegateCall(address to, bytes data)\n internal\n returns (bool success)\n {\n assembly {\n success := delegatecall(not(0), to, add(data, 0x20), mload(data), 0, 0)\n }\n }\n\n function executeCreate(bytes data)\n internal\n returns (address newContract)\n {\n assembly {\n newContract := create(0, add(data, 0x20), mload(data))\n }\n }\n\n /// @dev Returns transactions hash to be signed by owners.\n /// @param to Destination address.\n /// @param value Ether value.\n /// @param data Data payload.\n /// @param operation Operation type.\n /// @param _nonce Transaction nonce.\n /// @return Transaction hash.\n function getTransactionHash(address to, uint256 value, bytes data, Operation operation, uint256 _nonce)\n public\n view\n returns (bytes32)\n {\n return keccak256(byte(0x19), this, to, value, data, operation, _nonce);\n }\n\n /// @dev Returns array of owners.\n /// @return Array of Safe owners.\n function getOwners()\n public\n view\n returns (address[])\n {\n return owners;\n }\n\n /// @dev Returns array of extensions.\n /// @return Array of extensions.\n function getExtensions()\n public\n view\n returns (Extension[])\n {\n return extensions;\n }\n\n /// @dev Returns a the count of owners that have confirmed the given transaction.\n /// @param transactionHash Safe transaction hash.\n function getConfirmationCount(bytes32 transactionHash)\n public\n view\n returns (uint confirmationCount)\n {\n for (uint i = 0; i < owners.length; i++) {\n if (isConfirmed[owners[i]][transactionHash])\n confirmationCount++;\n }\n }\n\n /// @dev Returns a list of owners that have confirmed the given transaction.\n /// @param transactionHash Safe transaction hash.\n function getConfirmingOwners(bytes32 transactionHash)\n public\n view\n returns (address[] confirmingOwners)\n {\n uint confirmationCount = getConfirmationCount(transactionHash);\n confirmingOwners = new address[](confirmationCount);\n confirmationCount = 0;\n for (uint i = 0; i < owners.length; i++) {\n if (isConfirmed[owners[i]][transactionHash]) {\n confirmingOwners[confirmationCount] = owners[i];\n confirmationCount++;\n }\n }\n }\n}\n", + "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", + "ast": { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", + "exportedSymbols": { + "GnosisSafe": [ + 963 + ] + }, + "id": 964, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 20, + "literals": [ + "solidity", + "0.4", + ".19" + ], + "nodeType": "PragmaDirective", + "src": "0:23:1" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Extension.sol", + "file": "./Extension.sol", + "id": 21, + "nodeType": "ImportDirective", + "scope": 964, + "sourceUnit": 19, + "src": "24:25:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": "@title Gnosis Safe - A multisignature wallet with support for confirmations using signed messages based on ERC191.\n @author Stefan George - ", + "fullyImplemented": true, + "id": 963, + "linearizedBaseContracts": [ + 963 + ], + "name": "GnosisSafe", + "nodeType": "ContractDefinition", + "nodes": [ + { + "anonymous": false, + "id": 25, + "name": "ContractCreation", + "nodeType": "EventDefinition", + "parameters": { + "id": 24, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 23, + "indexed": false, + "name": "newContract", + "nodeType": "VariableDeclaration", + "scope": 25, + "src": "268:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 22, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "268:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "267:21:1" + }, + "src": "245:44:1" + }, + { + "constant": true, + "id": 28, + "name": "NAME", + "nodeType": "VariableDeclaration", + "scope": 963, + "src": "295:43:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory", + "typeString": "string memory" + }, + "typeName": { + "id": 26, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "295:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string storage pointer" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "476e6f7369732053616665", + "id": 27, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "325:13:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_72ec6775392f699e8ffd72b7c600556d49bdc746bf22bce93d3ae6019cdaff63", + "typeString": "literal_string \"Gnosis Safe\"" + }, + "value": "Gnosis Safe" + }, + "visibility": "public" + }, + { + "constant": true, + "id": 31, + "name": "VERSION", + "nodeType": "VariableDeclaration", + "scope": 963, + "src": "344:40:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory", + "typeString": "string memory" + }, + "typeName": { + "id": 29, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "344:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string storage pointer" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "302e302e31", + "id": 30, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "377:7:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", + "typeString": "literal_string \"0.0.1\"" + }, + "value": "0.0.1" + }, + "visibility": "public" + }, + { + "constant": false, + "id": 33, + "name": "masterCopy", + "nodeType": "VariableDeclaration", + "scope": 963, + "src": "391:21:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + }, + "typeName": { + "contractScope": null, + "id": 32, + "name": "GnosisSafe", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 963, + "src": "391:10:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 35, + "name": "threshold", + "nodeType": "VariableDeclaration", + "scope": 963, + "src": "418:22:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 34, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "418:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 37, + "name": "nonce", + "nodeType": "VariableDeclaration", + "scope": 963, + "src": "446:20:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 36, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "446:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 40, + "name": "owners", + "nodeType": "VariableDeclaration", + "scope": 963, + "src": "472:23:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + }, + "typeName": { + "baseType": { + "id": 38, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "472:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 39, + "length": null, + "nodeType": "ArrayTypeName", + "src": "472:9:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[] storage pointer" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 43, + "name": "extensions", + "nodeType": "VariableDeclaration", + "scope": 963, + "src": "501:29:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage", + "typeString": "contract Extension[] storage ref" + }, + "typeName": { + "baseType": { + "contractScope": null, + "id": 41, + "name": "Extension", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 18, + "src": "501:9:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + }, + "id": 42, + "length": null, + "nodeType": "ArrayTypeName", + "src": "501:11:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage_ptr", + "typeString": "contract Extension[] storage pointer" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 47, + "name": "isOwner", + "nodeType": "VariableDeclaration", + "scope": 963, + "src": "607:40:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "typeName": { + "id": 46, + "keyType": { + "id": 44, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "616:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "607:25:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "valueType": { + "id": 45, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "627:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 51, + "name": "isExtension", + "nodeType": "VariableDeclaration", + "scope": 963, + "src": "729:44:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "typeName": { + "id": 50, + "keyType": { + "id": 48, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "738:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "729:25:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "valueType": { + "id": 49, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "749:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 57, + "name": "isConfirmed", + "nodeType": "VariableDeclaration", + "scope": 963, + "src": "892:65:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$", + "typeString": "mapping(address => mapping(bytes32 => bool))" + }, + "typeName": { + "id": 56, + "keyType": { + "id": 52, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "901:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "892:46:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$", + "typeString": "mapping(address => mapping(bytes32 => bool))" + }, + "valueType": { + "id": 55, + "keyType": { + "id": 53, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "921:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Mapping", + "src": "912:25:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + }, + "valueType": { + "id": 54, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "932:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + } + }, + "value": null, + "visibility": "public" + }, + { + "canonicalName": "GnosisSafe.Operation", + "id": 61, + "members": [ + { + "id": 58, + "name": "Call", + "nodeType": "EnumValue", + "src": "989:4:1" + }, + { + "id": 59, + "name": "DelegateCall", + "nodeType": "EnumValue", + "src": "1003:12:1" + }, + { + "id": 60, + "name": "Create", + "nodeType": "EnumValue", + "src": "1025:6:1" + } + ], + "name": "Operation", + "nodeType": "EnumDefinition", + "src": "964:73:1" + }, + { + "body": { + "id": 73, + "nodeType": "Block", + "src": "1065:64:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 69, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 64, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2089, + "src": "1083:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 65, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1083:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 67, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2100, + "src": "1105:4:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + ], + "id": 66, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1097:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 68, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1097:13:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1083:27:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 63, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "1075:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 70, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1075:36:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 71, + "nodeType": "ExpressionStatement", + "src": "1075:36:1" + }, + { + "id": 72, + "nodeType": "PlaceholderStatement", + "src": "1121:1:1" + } + ] + }, + "id": 74, + "name": "onlyWallet", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 62, + "nodeType": "ParameterList", + "parameters": [], + "src": "1062:2:1" + }, + "src": "1043:86:1", + "visibility": "internal" + }, + { + "body": { + "id": 77, + "nodeType": "Block", + "src": "1243:8:1", + "statements": [] + }, + "id": 78, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 75, + "nodeType": "ParameterList", + "parameters": [], + "src": "1203:2:1" + }, + "payable": true, + "returnParameters": { + "id": 76, + "nodeType": "ParameterList", + "parameters": [], + "src": "1243:0:1" + }, + "scope": 963, + "src": "1194:57:1", + "stateMutability": "payable", + "superFunction": null, + "visibility": "external" + }, + { + "body": { + "id": 97, + "nodeType": "Block", + "src": "1667:53:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 91, + "name": "_owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 81, + "src": "1683:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + { + "argumentTypes": null, + "id": 92, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 83, + "src": "1692:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "argumentTypes": null, + "id": 93, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 85, + "src": "1704:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 94, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 87, + "src": "1708:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 90, + "name": "setup", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 187, + "src": "1677:5:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_uint8_$_t_address_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address[] memory,uint8,address,bytes memory)" + } + }, + "id": 95, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1677:36:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 96, + "nodeType": "ExpressionStatement", + "src": "1677:36:1" + } + ] + }, + "id": 98, + "implemented": true, + "isConstructor": true, + "isDeclaredConst": false, + "modifiers": [], + "name": "GnosisSafe", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 88, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 81, + "name": "_owners", + "nodeType": "VariableDeclaration", + "scope": 98, + "src": "1587:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + }, + "typeName": { + "baseType": { + "id": 79, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1587:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 80, + "length": null, + "nodeType": "ArrayTypeName", + "src": "1587:9:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[] storage pointer" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 83, + "name": "_threshold", + "nodeType": "VariableDeclaration", + "scope": 98, + "src": "1606:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 82, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1606:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 85, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 98, + "src": "1624:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 84, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1624:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 87, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 98, + "src": "1636:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + "typeName": { + "id": 86, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1636:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1586:61:1" + }, + "payable": false, + "returnParameters": { + "id": 89, + "nodeType": "ParameterList", + "parameters": [], + "src": "1667:0:1" + }, + "scope": 963, + "src": "1567:153:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 186, + "nodeType": "Block", + "src": "2134:1046:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 113, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 111, + "name": "threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 35, + "src": "2276:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 112, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2289:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2276:14:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 110, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "2268:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 114, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2268:23:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 115, + "nodeType": "ExpressionStatement", + "src": "2268:23:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 120, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 117, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 103, + "src": "2383:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 118, + "name": "_owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 101, + "src": "2397:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 119, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2397:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2383:28:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 116, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "2375:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 121, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2375:37:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 122, + "nodeType": "ExpressionStatement", + "src": "2375:37:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 126, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 124, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 103, + "src": "2482:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 125, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2496:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "2482:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 123, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "2474:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 127, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2474:24:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 128, + "nodeType": "ExpressionStatement", + "src": "2474:24:1" + }, + { + "body": { + "id": 165, + "nodeType": "Block", + "src": "2590:221:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 145, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 141, + "name": "_owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 101, + "src": "2657:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 143, + "indexExpression": { + "argumentTypes": null, + "id": 142, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 130, + "src": "2665:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2657:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 144, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2671:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2657:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 140, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "2649:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 146, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2649:24:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 147, + "nodeType": "ExpressionStatement", + "src": "2649:24:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 154, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "2739:20:1", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 149, + "name": "isOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47, + "src": "2740:7:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 153, + "indexExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 150, + "name": "_owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 101, + "src": "2748:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 152, + "indexExpression": { + "argumentTypes": null, + "id": 151, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 130, + "src": "2756:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2748:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2740:19:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 148, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "2731:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 155, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2731:29:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 156, + "nodeType": "ExpressionStatement", + "src": "2731:29:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 163, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 157, + "name": "isOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47, + "src": "2774:7:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 161, + "indexExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 158, + "name": "_owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 101, + "src": "2782:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 160, + "indexExpression": { + "argumentTypes": null, + "id": 159, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 130, + "src": "2790:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2782:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2774:19:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 162, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2796:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "2774:26:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 164, + "nodeType": "ExpressionStatement", + "src": "2774:26:1" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 136, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 133, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 130, + "src": "2565:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 134, + "name": "_owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 101, + "src": "2569:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 135, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2569:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2565:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 166, + "initializationExpression": { + "assignments": [ + 130 + ], + "declarations": [ + { + "constant": false, + "id": 130, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 187, + "src": "2550:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 129, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2550:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 132, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 131, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2562:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "2550:13:1" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 138, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "2585:3:1", + "subExpression": { + "argumentTypes": null, + "id": 137, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 130, + "src": "2585:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 139, + "nodeType": "ExpressionStatement", + "src": "2585:3:1" + }, + "nodeType": "ForStatement", + "src": "2545:266:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 169, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 167, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "2820:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 168, + "name": "_owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 101, + "src": "2829:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "src": "2820:16:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 170, + "nodeType": "ExpressionStatement", + "src": "2820:16:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 173, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 171, + "name": "threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 35, + "src": "2846:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 172, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 103, + "src": "2858:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "2846:22:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 174, + "nodeType": "ExpressionStatement", + "src": "2846:22:1" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 177, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 175, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 105, + "src": "3042:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 176, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3048:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3042:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 185, + "nodeType": "IfStatement", + "src": "3038:135:1", + "trueBody": { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 180, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 105, + "src": "3163:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 181, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 107, + "src": "3167:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 179, + "name": "executeDelegateCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 815, + "src": "3143:19:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bool_$", + "typeString": "function (address,bytes memory) returns (bool)" + } + }, + "id": 182, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3143:29:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 178, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "3135:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 183, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3135:38:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 184, + "nodeType": "ExpressionStatement", + "src": "3135:38:1" + } + } + ] + }, + "id": 187, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "setup", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 108, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 101, + "name": "_owners", + "nodeType": "VariableDeclaration", + "scope": 187, + "src": "2054:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + }, + "typeName": { + "baseType": { + "id": 99, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2054:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 100, + "length": null, + "nodeType": "ArrayTypeName", + "src": "2054:9:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[] storage pointer" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 103, + "name": "_threshold", + "nodeType": "VariableDeclaration", + "scope": 187, + "src": "2073:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 102, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "2073:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 105, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 187, + "src": "2091:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 104, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2091:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 107, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 187, + "src": "2103:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + "typeName": { + "id": 106, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2103:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2053:61:1" + }, + "payable": false, + "returnParameters": { + "id": 109, + "nodeType": "ParameterList", + "parameters": [], + "src": "2134:0:1" + }, + "scope": 963, + "src": "2039:1141:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 206, + "nodeType": "Block", + "src": "3414:132:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 199, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 196, + "name": "_masterCopy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 189, + "src": "3487:11:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + ], + "id": 195, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3479:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 197, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3479:20:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 198, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3503:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3479:25:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 194, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "3471:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 200, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3471:34:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 201, + "nodeType": "ExpressionStatement", + "src": "3471:34:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 204, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 202, + "name": "masterCopy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33, + "src": "3515:10:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 203, + "name": "_masterCopy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 189, + "src": "3528:11:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + }, + "src": "3515:24:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + }, + "id": 205, + "nodeType": "ExpressionStatement", + "src": "3515:24:1" + } + ] + }, + "id": 207, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": [], + "id": 192, + "modifierName": { + "argumentTypes": null, + "id": 191, + "name": "onlyWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 74, + "src": "3399:10:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "3399:10:1" + } + ], + "name": "changeMasterCopy", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 190, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 189, + "name": "_masterCopy", + "nodeType": "VariableDeclaration", + "scope": 207, + "src": "3352:22:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + }, + "typeName": { + "contractScope": null, + "id": 188, + "name": "GnosisSafe", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 963, + "src": "3352:10:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3351:24:1" + }, + "payable": false, + "returnParameters": { + "id": 193, + "nodeType": "ParameterList", + "parameters": [], + "src": "3414:0:1" + }, + "scope": 963, + "src": "3326:220:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 249, + "nodeType": "Block", + "src": "3875:342:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 219, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 217, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 209, + "src": "3934:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 218, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3943:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3934:10:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 216, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "3926:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 220, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3926:19:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 221, + "nodeType": "ExpressionStatement", + "src": "3926:19:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 226, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "4003:15:1", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 223, + "name": "isOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47, + "src": "4004:7:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 225, + "indexExpression": { + "argumentTypes": null, + "id": 224, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 209, + "src": "4012:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4004:14:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 222, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "3995:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 227, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3995:24:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 228, + "nodeType": "ExpressionStatement", + "src": "3995:24:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 232, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 209, + "src": "4041:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 229, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "4029:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 231, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "push", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4029:11:1", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypush_nonpayable$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) returns (uint256)" + } + }, + "id": 233, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4029:18:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 234, + "nodeType": "ExpressionStatement", + "src": "4029:18:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 239, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 235, + "name": "isOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47, + "src": "4057:7:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 237, + "indexExpression": { + "argumentTypes": null, + "id": 236, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 209, + "src": "4065:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4057:14:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 238, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4074:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "4057:21:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 240, + "nodeType": "ExpressionStatement", + "src": "4057:21:1" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 243, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 241, + "name": "threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 35, + "src": "4146:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "id": 242, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 211, + "src": "4159:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "4146:23:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 248, + "nodeType": "IfStatement", + "src": "4142:68:1", + "trueBody": { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 245, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 211, + "src": "4199:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "id": 244, + "name": "changeThreshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 385, + "src": "4183:15:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$returns$__$", + "typeString": "function (uint8)" + } + }, + "id": 246, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4183:27:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 247, + "nodeType": "ExpressionStatement", + "src": "4183:27:1" + } + } + ] + }, + "id": 250, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": [], + "id": 214, + "modifierName": { + "argumentTypes": null, + "id": 213, + "name": "onlyWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 74, + "src": "3860:10:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "3860:10:1" + } + ], + "name": "addOwner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 212, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 209, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 250, + "src": "3804:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 208, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3804:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 211, + "name": "_threshold", + "nodeType": "VariableDeclaration", + "scope": 250, + "src": "3819:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 210, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "3819:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3803:33:1" + }, + "payable": false, + "returnParameters": { + "id": 215, + "nodeType": "ParameterList", + "parameters": [], + "src": "3875:0:1" + }, + "scope": 963, + "src": "3786:431:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 308, + "nodeType": "Block", + "src": "4660:487:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 267, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 265, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 262, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "4755:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 263, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4755:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 264, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4771:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "4755:17:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 266, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 256, + "src": "4776:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "4755:31:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 261, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "4747:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 268, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4747:40:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 269, + "nodeType": "ExpressionStatement", + "src": "4747:40:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 275, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 271, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "4867:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 273, + "indexExpression": { + "argumentTypes": null, + "id": 272, + "name": "ownerIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 252, + "src": "4874:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4867:18:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 274, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 254, + "src": "4889:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "4867:27:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 270, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "4859:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 276, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4859:36:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 277, + "nodeType": "ExpressionStatement", + "src": "4859:36:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 282, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 278, + "name": "isOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47, + "src": "4905:7:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 280, + "indexExpression": { + "argumentTypes": null, + "id": 279, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 254, + "src": "4913:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4905:14:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 281, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4922:5:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "4905:22:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 283, + "nodeType": "ExpressionStatement", + "src": "4905:22:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 293, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 284, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "4937:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 286, + "indexExpression": { + "argumentTypes": null, + "id": 285, + "name": "ownerIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 252, + "src": "4944:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4937:18:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 287, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "4958:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 292, + "indexExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 291, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 288, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "4965:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 289, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4965:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 290, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4981:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "4965:17:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4958:25:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "4937:46:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 294, + "nodeType": "ExpressionStatement", + "src": "4937:46:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 298, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "--", + "prefix": false, + "src": "4993:15:1", + "subExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 295, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "4993:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 297, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4993:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 299, + "nodeType": "ExpressionStatement", + "src": "4993:15:1" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 302, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 300, + "name": "threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 35, + "src": "5076:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "id": 301, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 256, + "src": "5089:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "5076:23:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 307, + "nodeType": "IfStatement", + "src": "5072:68:1", + "trueBody": { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 304, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 256, + "src": "5129:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "id": 303, + "name": "changeThreshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 385, + "src": "5113:15:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$returns$__$", + "typeString": "function (uint8)" + } + }, + "id": 305, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5113:27:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 306, + "nodeType": "ExpressionStatement", + "src": "5113:27:1" + } + } + ] + }, + "id": 309, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": [], + "id": 259, + "modifierName": { + "argumentTypes": null, + "id": 258, + "name": "onlyWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 74, + "src": "4645:10:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "4645:10:1" + } + ], + "name": "removeOwner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 257, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 252, + "name": "ownerIndex", + "nodeType": "VariableDeclaration", + "scope": 309, + "src": "4569:18:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 251, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4569:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 254, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 309, + "src": "4589:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 253, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4589:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 256, + "name": "_threshold", + "nodeType": "VariableDeclaration", + "scope": 309, + "src": "4604:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 255, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "4604:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4568:53:1" + }, + "payable": false, + "returnParameters": { + "id": 260, + "nodeType": "ParameterList", + "parameters": [], + "src": "4660:0:1" + }, + "scope": 963, + "src": "4548:599:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 359, + "nodeType": "Block", + "src": "5587:383:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 323, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 321, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 315, + "src": "5646:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 322, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5658:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "5646:13:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 320, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "5638:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 324, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5638:22:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 325, + "nodeType": "ExpressionStatement", + "src": "5638:22:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 330, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "5718:18:1", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 327, + "name": "isOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47, + "src": "5719:7:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 329, + "indexExpression": { + "argumentTypes": null, + "id": 328, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 315, + "src": "5727:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5719:17:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 326, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "5710:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 331, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5710:27:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 332, + "nodeType": "ExpressionStatement", + "src": "5710:27:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 338, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 334, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "5817:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 336, + "indexExpression": { + "argumentTypes": null, + "id": 335, + "name": "oldOwnerIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 311, + "src": "5824:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5817:21:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 337, + "name": "oldOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 313, + "src": "5842:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "5817:33:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 333, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "5809:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 339, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5809:42:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 340, + "nodeType": "ExpressionStatement", + "src": "5809:42:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 345, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 341, + "name": "isOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47, + "src": "5861:7:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 343, + "indexExpression": { + "argumentTypes": null, + "id": 342, + "name": "oldOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 313, + "src": "5869:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "5861:17:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 344, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5881:5:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "5861:25:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 346, + "nodeType": "ExpressionStatement", + "src": "5861:25:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 351, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 347, + "name": "isOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47, + "src": "5896:7:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 349, + "indexExpression": { + "argumentTypes": null, + "id": 348, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 315, + "src": "5904:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "5896:17:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 350, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5917:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "5896:25:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 352, + "nodeType": "ExpressionStatement", + "src": "5896:25:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 357, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 353, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "5931:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 355, + "indexExpression": { + "argumentTypes": null, + "id": 354, + "name": "oldOwnerIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 311, + "src": "5938:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "5931:21:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 356, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 315, + "src": "5955:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "5931:32:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 358, + "nodeType": "ExpressionStatement", + "src": "5931:32:1" + } + ] + }, + "id": 360, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": [], + "id": 318, + "modifierName": { + "argumentTypes": null, + "id": 317, + "name": "onlyWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 74, + "src": "5572:10:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "5572:10:1" + } + ], + "name": "replaceOwner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 316, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 311, + "name": "oldOwnerIndex", + "nodeType": "VariableDeclaration", + "scope": 360, + "src": "5490:21:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 310, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5490:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 313, + "name": "oldOwner", + "nodeType": "VariableDeclaration", + "scope": 360, + "src": "5513:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 312, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5513:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 315, + "name": "newOwner", + "nodeType": "VariableDeclaration", + "scope": 360, + "src": "5531:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 314, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5531:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5489:59:1" + }, + "payable": false, + "returnParameters": { + "id": 319, + "nodeType": "ParameterList", + "parameters": [], + "src": "5587:0:1" + }, + "scope": 963, + "src": "5468:502:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 384, + "nodeType": "Block", + "src": "6240:239:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 371, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 368, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 362, + "src": "6326:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 369, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "6340:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 370, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "6340:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6326:27:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 367, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "6318:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 372, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6318:36:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 373, + "nodeType": "ExpressionStatement", + "src": "6318:36:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 377, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 375, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 362, + "src": "6424:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 376, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6438:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "6424:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 374, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "6416:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 378, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6416:24:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 379, + "nodeType": "ExpressionStatement", + "src": "6416:24:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 382, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 380, + "name": "threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 35, + "src": "6450:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 381, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 362, + "src": "6462:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "6450:22:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 383, + "nodeType": "ExpressionStatement", + "src": "6450:22:1" + } + ] + }, + "id": 385, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": [], + "id": 365, + "modifierName": { + "argumentTypes": null, + "id": 364, + "name": "onlyWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 74, + "src": "6225:10:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "6225:10:1" + } + ], + "name": "changeThreshold", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 363, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 362, + "name": "_threshold", + "nodeType": "VariableDeclaration", + "scope": 385, + "src": "6184:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 361, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "6184:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6183:18:1" + }, + "payable": false, + "returnParameters": { + "id": 366, + "nodeType": "ParameterList", + "parameters": [], + "src": "6240:0:1" + }, + "scope": 963, + "src": "6159:320:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 419, + "nodeType": "Block", + "src": "6737:255:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 397, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 394, + "name": "extension", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 387, + "src": "6808:9:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + ], + "id": 393, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6800:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 395, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6800:18:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 396, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6822:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "6800:23:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 392, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "6792:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 398, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6792:32:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 399, + "nodeType": "ExpressionStatement", + "src": "6792:32:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 404, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "6886:23:1", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 401, + "name": "isExtension", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 51, + "src": "6887:11:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 403, + "indexExpression": { + "argumentTypes": null, + "id": 402, + "name": "extension", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 387, + "src": "6899:9:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6887:22:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 400, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "6878:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 405, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6878:32:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 406, + "nodeType": "ExpressionStatement", + "src": "6878:32:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 410, + "name": "extension", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 387, + "src": "6936:9:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + ], + "expression": { + "argumentTypes": null, + "id": 407, + "name": "extensions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43, + "src": "6920:10:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage", + "typeString": "contract Extension[] storage ref" + } + }, + "id": 409, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "push", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "6920:15:1", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypush_nonpayable$_t_contract$_Extension_$18_$returns$_t_uint256_$", + "typeString": "function (contract Extension) returns (uint256)" + } + }, + "id": 411, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6920:26:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 412, + "nodeType": "ExpressionStatement", + "src": "6920:26:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 417, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 413, + "name": "isExtension", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 51, + "src": "6956:11:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 415, + "indexExpression": { + "argumentTypes": null, + "id": 414, + "name": "extension", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 387, + "src": "6968:9:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "6956:22:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 416, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6981:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "6956:29:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 418, + "nodeType": "ExpressionStatement", + "src": "6956:29:1" + } + ] + }, + "id": 420, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": [], + "id": 390, + "modifierName": { + "argumentTypes": null, + "id": 389, + "name": "onlyWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 74, + "src": "6722:10:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "6722:10:1" + } + ], + "name": "addExtension", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 388, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 387, + "name": "extension", + "nodeType": "VariableDeclaration", + "scope": 420, + "src": "6678:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + }, + "typeName": { + "contractScope": null, + "id": 386, + "name": "Extension", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 18, + "src": "6678:9:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6677:21:1" + }, + "payable": false, + "returnParameters": { + "id": 391, + "nodeType": "ParameterList", + "parameters": [], + "src": "6737:0:1" + }, + "scope": 963, + "src": "6656:336:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 459, + "nodeType": "Block", + "src": "7372:276:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + }, + "id": 434, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 430, + "name": "extensions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43, + "src": "7460:10:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage", + "typeString": "contract Extension[] storage ref" + } + }, + "id": 432, + "indexExpression": { + "argumentTypes": null, + "id": 431, + "name": "extensionIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 422, + "src": "7471:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7460:26:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 433, + "name": "extension", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 424, + "src": "7490:9:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + }, + "src": "7460:39:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 429, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "7452:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 435, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7452:48:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 436, + "nodeType": "ExpressionStatement", + "src": "7452:48:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 441, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 437, + "name": "isExtension", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 51, + "src": "7510:11:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 439, + "indexExpression": { + "argumentTypes": null, + "id": 438, + "name": "extension", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 424, + "src": "7522:9:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "7510:22:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 440, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7535:5:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "7510:30:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 442, + "nodeType": "ExpressionStatement", + "src": "7510:30:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 452, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 443, + "name": "extensions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43, + "src": "7550:10:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage", + "typeString": "contract Extension[] storage ref" + } + }, + "id": 445, + "indexExpression": { + "argumentTypes": null, + "id": 444, + "name": "extensionIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 422, + "src": "7561:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "7550:26:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 446, + "name": "extensions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43, + "src": "7579:10:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage", + "typeString": "contract Extension[] storage ref" + } + }, + "id": 451, + "indexExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 450, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 447, + "name": "extensions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43, + "src": "7590:10:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage", + "typeString": "contract Extension[] storage ref" + } + }, + "id": 448, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "7590:17:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 449, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7610:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "7590:21:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7579:33:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + }, + "src": "7550:62:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + }, + "id": 453, + "nodeType": "ExpressionStatement", + "src": "7550:62:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 457, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "--", + "prefix": false, + "src": "7622:19:1", + "subExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 454, + "name": "extensions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43, + "src": "7622:10:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage", + "typeString": "contract Extension[] storage ref" + } + }, + "id": 456, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "7622:17:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 458, + "nodeType": "ExpressionStatement", + "src": "7622:19:1" + } + ] + }, + "id": 460, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": [], + "id": 427, + "modifierName": { + "argumentTypes": null, + "id": 426, + "name": "onlyWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 74, + "src": "7357:10:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "7357:10:1" + } + ], + "name": "removeExtension", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 425, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 422, + "name": "extensionIndex", + "nodeType": "VariableDeclaration", + "scope": 460, + "src": "7289:22:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 421, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7289:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 424, + "name": "extension", + "nodeType": "VariableDeclaration", + "scope": 460, + "src": "7313:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + }, + "typeName": { + "contractScope": null, + "id": 423, + "name": "Extension", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 18, + "src": "7313:9:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7288:45:1" + }, + "payable": false, + "returnParameters": { + "id": 428, + "nodeType": "ParameterList", + "parameters": [], + "src": "7372:0:1" + }, + "scope": 963, + "src": "7264:384:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 509, + "nodeType": "Block", + "src": "8102:383:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 474, + "name": "isOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47, + "src": "8190:7:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 477, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 475, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2089, + "src": "8198:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 476, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "8198:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "8190:19:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 473, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "8182:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 478, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8182:28:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 479, + "nodeType": "ExpressionStatement", + "src": "8182:28:1" + }, + { + "assignments": [ + 481 + ], + "declarations": [ + { + "constant": false, + "id": 481, + "name": "transactionHash", + "nodeType": "VariableDeclaration", + "scope": 510, + "src": "8220:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 480, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8220:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 489, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 483, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 462, + "src": "8265:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 484, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 464, + "src": "8269:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 485, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 466, + "src": "8276:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 486, + "name": "operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 468, + "src": "8282:9:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + }, + { + "argumentTypes": null, + "id": 487, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37, + "src": "8293:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 482, + "name": "getTransactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 852, + "src": "8246:18:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$61_$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (address,uint256,bytes memory,enum GnosisSafe.Operation,uint256) view returns (bytes32)" + } + }, + "id": 488, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8246:53:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8220:79:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 497, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "8379:41:1", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 491, + "name": "isConfirmed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57, + "src": "8380:11:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$", + "typeString": "mapping(address => mapping(bytes32 => bool))" + } + }, + "id": 494, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 492, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2089, + "src": "8392:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 493, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "8392:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "8380:23:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + } + }, + "id": 496, + "indexExpression": { + "argumentTypes": null, + "id": 495, + "name": "transactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 481, + "src": "8404:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "8380:40:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 490, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "8371:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 498, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8371:50:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 499, + "nodeType": "ExpressionStatement", + "src": "8371:50:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 507, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 500, + "name": "isConfirmed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57, + "src": "8431:11:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$", + "typeString": "mapping(address => mapping(bytes32 => bool))" + } + }, + "id": 504, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 501, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2089, + "src": "8443:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 502, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "8443:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "8431:23:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + } + }, + "id": 505, + "indexExpression": { + "argumentTypes": null, + "id": 503, + "name": "transactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 481, + "src": "8455:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "8431:40:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 506, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8474:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "8431:47:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 508, + "nodeType": "ExpressionStatement", + "src": "8431:47:1" + } + ] + }, + "id": 510, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "confirmTransaction", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 471, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 462, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 510, + "src": "8007:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 461, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8007:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 464, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 510, + "src": "8019:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 463, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8019:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 466, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 510, + "src": "8034:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + "typeName": { + "id": 465, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "8034:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 468, + "name": "operation", + "nodeType": "VariableDeclaration", + "scope": 510, + "src": "8046:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + }, + "typeName": { + "contractScope": null, + "id": 467, + "name": "Operation", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 61, + "src": "8046:9:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 470, + "name": "_nonce", + "nodeType": "VariableDeclaration", + "scope": 510, + "src": "8067:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 469, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8067:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8006:76:1" + }, + "payable": false, + "returnParameters": { + "id": 472, + "nodeType": "ParameterList", + "parameters": [], + "src": "8102:0:1" + }, + "scope": 963, + "src": "7979:506:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 697, + "nodeType": "Block", + "src": "9404:1349:1", + "statements": [ + { + "assignments": [ + 537 + ], + "declarations": [ + { + "constant": false, + "id": 537, + "name": "transactionHash", + "nodeType": "VariableDeclaration", + "scope": 698, + "src": "9414:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 536, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "9414:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 545, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 539, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 512, + "src": "9459:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 540, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 514, + "src": "9463:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 541, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 516, + "src": "9470:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 542, + "name": "operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 518, + "src": "9476:9:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + }, + { + "argumentTypes": null, + "id": 543, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37, + "src": "9487:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 538, + "name": "getTransactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 852, + "src": "9440:18:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$61_$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (address,uint256,bytes memory,enum GnosisSafe.Operation,uint256) view returns (bytes32)" + } + }, + "id": 544, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9440:53:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9414:79:1" + }, + { + "assignments": [ + 547 + ], + "declarations": [ + { + "constant": false, + "id": 547, + "name": "lastOwner", + "nodeType": "VariableDeclaration", + "scope": 698, + "src": "9555:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 546, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9555:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 551, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 549, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9583:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 548, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9575:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 550, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9575:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9555:30:1" + }, + { + "assignments": [], + "declarations": [ + { + "constant": false, + "id": 553, + "name": "currentOwner", + "nodeType": "VariableDeclaration", + "scope": 698, + "src": "9595:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 552, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9595:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 554, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "9595:20:1" + }, + { + "assignments": [], + "declarations": [ + { + "constant": false, + "id": 556, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 698, + "src": "9625:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 555, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9625:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 557, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "9625:9:1" + }, + { + "assignments": [ + 559 + ], + "declarations": [ + { + "constant": false, + "id": 559, + "name": "j", + "nodeType": "VariableDeclaration", + "scope": 698, + "src": "9644:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 558, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9644:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 561, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 560, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9656:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "9644:13:1" + }, + { + "body": { + "id": 648, + "nodeType": "Block", + "src": "9741:619:1", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 581, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 575, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 572, + "name": "indices", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 533, + "src": "9843:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 573, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "9843:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "id": 574, + "name": "j", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 559, + "src": "9860:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9843:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 580, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 576, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 556, + "src": "9865:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 577, + "name": "indices", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 533, + "src": "9870:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 579, + "indexExpression": { + "argumentTypes": null, + "id": 578, + "name": "j", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 559, + "src": "9878:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9870:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9865:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "9843:37:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "expression": { + "argumentTypes": null, + "id": 629, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 610, + "name": "currentOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 553, + "src": "10155:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 612, + "name": "transactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 537, + "src": "10180:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 613, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 521, + "src": "10197:1:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", + "typeString": "uint8[] memory" + } + }, + "id": 617, + "indexExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 616, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 614, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 556, + "src": "10199:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "id": 615, + "name": "j", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 559, + "src": "10201:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10199:3:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10197:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 618, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 524, + "src": "10205:1:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 622, + "indexExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 621, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 619, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 556, + "src": "10207:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "id": 620, + "name": "j", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 559, + "src": "10209:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10207:3:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10205:6:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 623, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 527, + "src": "10213:1:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 627, + "indexExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 626, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 624, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 556, + "src": "10215:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "id": 625, + "name": "j", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 559, + "src": "10217:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10215:3:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10213:6:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 611, + "name": "ecrecover", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2082, + "src": "10170:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)" + } + }, + "id": 628, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10170:50:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "10155:65:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 630, + "nodeType": "ExpressionStatement", + "src": "10155:65:1" + }, + "id": 631, + "nodeType": "IfStatement", + "src": "9839:381:1", + "trueBody": { + "id": 609, + "nodeType": "Block", + "src": "9882:177:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 596, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 588, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 583, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2089, + "src": "9908:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 584, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "9908:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 585, + "name": "_owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 530, + "src": "9922:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 587, + "indexExpression": { + "argumentTypes": null, + "id": 586, + "name": "j", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 559, + "src": "9930:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9922:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "9908:24:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 589, + "name": "isConfirmed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57, + "src": "9936:11:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$", + "typeString": "mapping(address => mapping(bytes32 => bool))" + } + }, + "id": 593, + "indexExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 590, + "name": "_owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 530, + "src": "9948:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 592, + "indexExpression": { + "argumentTypes": null, + "id": 591, + "name": "j", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 559, + "src": "9956:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9948:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9936:23:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + } + }, + "id": 595, + "indexExpression": { + "argumentTypes": null, + "id": 594, + "name": "transactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 537, + "src": "9960:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9936:40:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "9908:68:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 582, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "9900:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 597, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9900:77:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 598, + "nodeType": "ExpressionStatement", + "src": "9900:77:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 603, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 599, + "name": "currentOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 553, + "src": "9995:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 600, + "name": "_owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 530, + "src": "10010:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 602, + "indexExpression": { + "argumentTypes": null, + "id": 601, + "name": "j", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 559, + "src": "10018:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10010:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "9995:25:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 604, + "nodeType": "ExpressionStatement", + "src": "9995:25:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 607, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 605, + "name": "j", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 559, + "src": "10038:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "31", + "id": 606, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10043:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "10038:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 608, + "nodeType": "ExpressionStatement", + "src": "10038:6:1" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 633, + "name": "isOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47, + "src": "10242:7:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 635, + "indexExpression": { + "argumentTypes": null, + "id": 634, + "name": "currentOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 553, + "src": "10250:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10242:21:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 632, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "10234:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 636, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10234:30:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 637, + "nodeType": "ExpressionStatement", + "src": "10234:30:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 641, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 639, + "name": "currentOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 553, + "src": "10286:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "id": 640, + "name": "lastOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 547, + "src": "10301:9:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "10286:24:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 638, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "10278:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 642, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10278:33:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 643, + "nodeType": "ExpressionStatement", + "src": "10278:33:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 646, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 644, + "name": "lastOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 547, + "src": "10325:9:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 645, + "name": "currentOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 553, + "src": "10337:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "10325:24:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 647, + "nodeType": "ExpressionStatement", + "src": "10325:24:1" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 568, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 566, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 556, + "src": "9721:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "id": 567, + "name": "threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 35, + "src": "9725:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "9721:13:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 649, + "initializationExpression": { + "expression": { + "argumentTypes": null, + "id": 564, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 562, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 556, + "src": "9714:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 563, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9718:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "9714:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 565, + "nodeType": "ExpressionStatement", + "src": "9714:5:1" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 570, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "9736:3:1", + "subExpression": { + "argumentTypes": null, + "id": 569, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 556, + "src": "9736:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 571, + "nodeType": "ExpressionStatement", + "src": "9736:3:1" + }, + "nodeType": "ForStatement", + "src": "9709:651:1" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 653, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 650, + "name": "_owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 530, + "src": "10419:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 651, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "10419:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 652, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10436:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "10419:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 685, + "nodeType": "IfStatement", + "src": "10415:216:1", + "trueBody": { + "id": 684, + "nodeType": "Block", + "src": "10439:192:1", + "statements": [ + { + "body": { + "id": 682, + "nodeType": "Block", + "src": "10490:131:1", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 670, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 665, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2089, + "src": "10512:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 666, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "10512:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 667, + "name": "_owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 530, + "src": "10526:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 669, + "indexExpression": { + "argumentTypes": null, + "id": 668, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 556, + "src": "10534:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10526:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "10512:24:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 681, + "nodeType": "IfStatement", + "src": "10508:98:1", + "trueBody": { + "expression": { + "argumentTypes": null, + "id": 679, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 671, + "name": "isConfirmed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57, + "src": "10558:11:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$", + "typeString": "mapping(address => mapping(bytes32 => bool))" + } + }, + "id": 676, + "indexExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 672, + "name": "_owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 530, + "src": "10570:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 674, + "indexExpression": { + "argumentTypes": null, + "id": 673, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 556, + "src": "10578:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10570:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10558:23:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + } + }, + "id": 677, + "indexExpression": { + "argumentTypes": null, + "id": 675, + "name": "transactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 537, + "src": "10582:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "10558:40:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 678, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10601:5:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "10558:48:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 680, + "nodeType": "ExpressionStatement", + "src": "10558:48:1" + } + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 661, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 658, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 556, + "src": "10465:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 659, + "name": "_owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 530, + "src": "10469:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 660, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "10469:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10465:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 683, + "initializationExpression": { + "expression": { + "argumentTypes": null, + "id": 656, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 654, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 556, + "src": "10458:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 655, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10462:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "10458:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 657, + "nodeType": "ExpressionStatement", + "src": "10458:5:1" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 663, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "10485:3:1", + "subExpression": { + "argumentTypes": null, + "id": 662, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 556, + "src": "10485:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 664, + "nodeType": "ExpressionStatement", + "src": "10485:3:1" + }, + "nodeType": "ForStatement", + "src": "10453:168:1" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "id": 688, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 686, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37, + "src": "10691:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "31", + "id": 687, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10700:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "10691:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 689, + "nodeType": "ExpressionStatement", + "src": "10691:10:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 691, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 512, + "src": "10719:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 692, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 514, + "src": "10723:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 693, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 516, + "src": "10730:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 694, + "name": "operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 518, + "src": "10736:9:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + ], + "id": 690, + "name": "execute", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 791, + "src": "10711:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$61_$returns$__$", + "typeString": "function (address,uint256,bytes memory,enum GnosisSafe.Operation)" + } + }, + "id": 695, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10711:35:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 696, + "nodeType": "ExpressionStatement", + "src": "10711:35:1" + } + ] + }, + "id": 698, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "executeTransaction", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 534, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 512, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 698, + "src": "9250:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 511, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9250:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 514, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 698, + "src": "9262:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 513, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9262:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 516, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 698, + "src": "9277:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + "typeName": { + "id": 515, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "9277:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 518, + "name": "operation", + "nodeType": "VariableDeclaration", + "scope": 698, + "src": "9289:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + }, + "typeName": { + "contractScope": null, + "id": 517, + "name": "Operation", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 61, + "src": "9289:9:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 521, + "name": "v", + "nodeType": "VariableDeclaration", + "scope": 698, + "src": "9310:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", + "typeString": "uint8[] memory" + }, + "typeName": { + "baseType": { + "id": 519, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "9310:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 520, + "length": null, + "nodeType": "ArrayTypeName", + "src": "9310:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr", + "typeString": "uint8[] storage pointer" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 524, + "name": "r", + "nodeType": "VariableDeclaration", + "scope": 698, + "src": "9321:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + }, + "typeName": { + "baseType": { + "id": 522, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "9321:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 523, + "length": null, + "nodeType": "ArrayTypeName", + "src": "9321:9:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[] storage pointer" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 527, + "name": "s", + "nodeType": "VariableDeclaration", + "scope": 698, + "src": "9334:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + }, + "typeName": { + "baseType": { + "id": 525, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "9334:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 526, + "length": null, + "nodeType": "ArrayTypeName", + "src": "9334:9:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[] storage pointer" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 530, + "name": "_owners", + "nodeType": "VariableDeclaration", + "scope": 698, + "src": "9347:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + }, + "typeName": { + "baseType": { + "id": 528, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9347:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 529, + "length": null, + "nodeType": "ArrayTypeName", + "src": "9347:9:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[] storage pointer" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 533, + "name": "indices", + "nodeType": "VariableDeclaration", + "scope": 698, + "src": "9366:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + }, + "typeName": { + "baseType": { + "id": 531, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9366:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 532, + "length": null, + "nodeType": "ArrayTypeName", + "src": "9366:9:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[] storage pointer" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "9249:135:1" + }, + "payable": false, + "returnParameters": { + "id": 535, + "nodeType": "ParameterList", + "parameters": [], + "src": "9404:0:1" + }, + "scope": 963, + "src": "9222:1531:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 736, + "nodeType": "Block", + "src": "11304:338:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 712, + "name": "isExtension", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 51, + "src": "11374:11:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 714, + "indexExpression": { + "argumentTypes": null, + "id": 713, + "name": "extension", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 708, + "src": "11386:9:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11374:22:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 711, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "11366:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 715, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11366:31:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 716, + "nodeType": "ExpressionStatement", + "src": "11366:31:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 720, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2089, + "src": "11487:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 721, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "11487:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 722, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 700, + "src": "11499:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 723, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 702, + "src": "11503:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 724, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 704, + "src": "11510:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 725, + "name": "operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 706, + "src": "11516:9:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + ], + "expression": { + "argumentTypes": null, + "id": 718, + "name": "extension", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 708, + "src": "11464:9:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + }, + "id": 719, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "isExecutable", + "nodeType": "MemberAccess", + "referencedDeclaration": 17, + "src": "11464:22:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$61_$returns$_t_bool_$", + "typeString": "function (address,address,uint256,bytes memory,enum GnosisSafe.Operation) external returns (bool)" + } + }, + "id": 726, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11464:62:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 717, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "11456:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 727, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11456:71:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 728, + "nodeType": "ExpressionStatement", + "src": "11456:71:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 730, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 700, + "src": "11608:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 731, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 702, + "src": "11612:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 732, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 704, + "src": "11619:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 733, + "name": "operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 706, + "src": "11625:9:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + ], + "id": 729, + "name": "execute", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 791, + "src": "11600:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$61_$returns$__$", + "typeString": "function (address,uint256,bytes memory,enum GnosisSafe.Operation)" + } + }, + "id": 734, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11600:35:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 735, + "nodeType": "ExpressionStatement", + "src": "11600:35:1" + } + ] + }, + "id": 737, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "executeExtension", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 709, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 700, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 737, + "src": "11204:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 699, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11204:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 702, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 737, + "src": "11216:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 701, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11216:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 704, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 737, + "src": "11231:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + "typeName": { + "id": 703, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "11231:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 706, + "name": "operation", + "nodeType": "VariableDeclaration", + "scope": 737, + "src": "11243:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + }, + "typeName": { + "contractScope": null, + "id": 705, + "name": "Operation", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 61, + "src": "11243:9:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 708, + "name": "extension", + "nodeType": "VariableDeclaration", + "scope": 737, + "src": "11264:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + }, + "typeName": { + "contractScope": null, + "id": 707, + "name": "Extension", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 18, + "src": "11264:9:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "11203:81:1" + }, + "payable": false, + "returnParameters": { + "id": 710, + "nodeType": "ParameterList", + "parameters": [], + "src": "11304:0:1" + }, + "scope": 963, + "src": "11178:464:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 790, + "nodeType": "Block", + "src": "11746:367:1", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + }, + "id": 751, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 748, + "name": "operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 745, + "src": "11760:9:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 749, + "name": "Operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 61, + "src": "11773:9:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_Operation_$61_$", + "typeString": "type(enum GnosisSafe.Operation)" + } + }, + "id": 750, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Call", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "11773:14:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + }, + "src": "11760:27:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + }, + "id": 763, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 760, + "name": "operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 745, + "src": "11857:9:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 761, + "name": "Operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 61, + "src": "11870:9:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_Operation_$61_$", + "typeString": "type(enum GnosisSafe.Operation)" + } + }, + "id": 762, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "DelegateCall", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "11870:22:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + }, + "src": "11857:35:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 787, + "nodeType": "Block", + "src": "11959:148:1", + "statements": [ + { + "assignments": [ + 772 + ], + "declarations": [ + { + "constant": false, + "id": 772, + "name": "newContract", + "nodeType": "VariableDeclaration", + "scope": 791, + "src": "11973:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 771, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11973:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 776, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 774, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 743, + "src": "12009:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 773, + "name": "executeCreate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 824, + "src": "11995:13:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$_t_address_$", + "typeString": "function (bytes memory) returns (address)" + } + }, + "id": 775, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11995:19:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "11973:41:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 780, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 778, + "name": "newContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 772, + "src": "12036:11:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 779, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12051:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "12036:16:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 777, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "12028:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 781, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12028:25:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 782, + "nodeType": "ExpressionStatement", + "src": "12028:25:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 784, + "name": "newContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 772, + "src": "12084:11:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 783, + "name": "ContractCreation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 25, + "src": "12067:16:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 785, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12067:29:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 786, + "nodeType": "ExpressionStatement", + "src": "12067:29:1" + } + ] + }, + "id": 788, + "nodeType": "IfStatement", + "src": "11853:254:1", + "trueBody": { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 766, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 739, + "src": "11934:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 767, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 743, + "src": "11938:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 765, + "name": "executeDelegateCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 815, + "src": "11914:19:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bool_$", + "typeString": "function (address,bytes memory) returns (bool)" + } + }, + "id": 768, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11914:29:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 764, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "11906:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 769, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11906:38:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 770, + "nodeType": "ExpressionStatement", + "src": "11906:38:1" + } + }, + "id": 789, + "nodeType": "IfStatement", + "src": "11756:351:1", + "trueBody": { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 754, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 739, + "src": "11821:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 755, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 741, + "src": "11825:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 756, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 743, + "src": "11832:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 753, + "name": "executeCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 804, + "src": "11809:11:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$", + "typeString": "function (address,uint256,bytes memory) returns (bool)" + } + }, + "id": 757, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11809:28:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 752, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "11801:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 758, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11801:37:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 759, + "nodeType": "ExpressionStatement", + "src": "11801:37:1" + } + } + ] + }, + "id": 791, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "execute", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 746, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 739, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 791, + "src": "11665:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 738, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11665:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 741, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 791, + "src": "11677:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 740, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11677:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 743, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 791, + "src": "11692:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + "typeName": { + "id": 742, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "11692:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 745, + "name": "operation", + "nodeType": "VariableDeclaration", + "scope": 791, + "src": "11704:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + }, + "typeName": { + "contractScope": null, + "id": 744, + "name": "Operation", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 61, + "src": "11704:9:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "11664:60:1" + }, + "payable": false, + "returnParameters": { + "id": 747, + "nodeType": "ParameterList", + "parameters": [], + "src": "11746:0:1" + }, + "scope": 963, + "src": "11648:465:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 803, + "nodeType": "Block", + "src": "12231:119:1", + "statements": [ + { + "externalReferences": [ + { + "data": { + "declaration": 797, + "isOffset": false, + "isSlot": false, + "src": "12303:4:1", + "valueSize": 1 + } + }, + { + "data": { + "declaration": 797, + "isOffset": false, + "isSlot": false, + "src": "12322:4:1", + "valueSize": 1 + } + }, + { + "success": { + "declaration": 800, + "isOffset": false, + "isSlot": false, + "src": "12264:7:1", + "valueSize": 1 + } + }, + { + "to": { + "declaration": 793, + "isOffset": false, + "isSlot": false, + "src": "12288:2:1", + "valueSize": 1 + } + }, + { + "value": { + "declaration": 795, + "isOffset": false, + "isSlot": false, + "src": "12292:5:1", + "valueSize": 1 + } + } + ], + "id": 802, + "nodeType": "InlineAssembly", + "operations": "{\n success := call(not(0), to, value, add(data, 0x20), mload(data), 0, 0)\n}", + "src": "12241:109:1" + } + ] + }, + "id": 804, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "executeCall", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 798, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 793, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 804, + "src": "12140:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 792, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12140:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 795, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 804, + "src": "12152:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 794, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12152:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 797, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 804, + "src": "12167:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + "typeName": { + "id": 796, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "12167:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12139:39:1" + }, + "payable": false, + "returnParameters": { + "id": 801, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 800, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 804, + "src": "12213:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 799, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "12213:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12212:14:1" + }, + "scope": 963, + "src": "12119:231:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 814, + "nodeType": "Block", + "src": "12461:120:1", + "statements": [ + { + "externalReferences": [ + { + "data": { + "declaration": 808, + "isOffset": false, + "isSlot": false, + "src": "12534:4:1", + "valueSize": 1 + } + }, + { + "data": { + "declaration": 808, + "isOffset": false, + "isSlot": false, + "src": "12553:4:1", + "valueSize": 1 + } + }, + { + "success": { + "declaration": 811, + "isOffset": false, + "isSlot": false, + "src": "12494:7:1", + "valueSize": 1 + } + }, + { + "to": { + "declaration": 806, + "isOffset": false, + "isSlot": false, + "src": "12526:2:1", + "valueSize": 1 + } + } + ], + "id": 813, + "nodeType": "InlineAssembly", + "operations": "{\n success := delegatecall(not(0), to, add(data, 0x20), mload(data), 0, 0)\n}", + "src": "12471:110:1" + } + ] + }, + "id": 815, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "executeDelegateCall", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 809, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 806, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 815, + "src": "12385:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 805, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12385:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 808, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 815, + "src": "12397:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + "typeName": { + "id": 807, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "12397:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12384:24:1" + }, + "payable": false, + "returnParameters": { + "id": 812, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 811, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 815, + "src": "12443:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 810, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "12443:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12442:14:1" + }, + "scope": 963, + "src": "12356:225:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 823, + "nodeType": "Block", + "src": "12681:103:1", + "statements": [ + { + "externalReferences": [ + { + "data": { + "declaration": 817, + "isOffset": false, + "isSlot": false, + "src": "12762:4:1", + "valueSize": 1 + } + }, + { + "newContract": { + "declaration": 820, + "isOffset": false, + "isSlot": false, + "src": "12714:11:1", + "valueSize": 1 + } + }, + { + "data": { + "declaration": 817, + "isOffset": false, + "isSlot": false, + "src": "12743:4:1", + "valueSize": 1 + } + } + ], + "id": 822, + "nodeType": "InlineAssembly", + "operations": "{\n newContract := create(0, add(data, 0x20), mload(data))\n}", + "src": "12691:93:1" + } + ] + }, + "id": 824, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "executeCreate", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 818, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 817, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 824, + "src": "12610:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + "typeName": { + "id": 816, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "12610:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12609:12:1" + }, + "payable": false, + "returnParameters": { + "id": 821, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 820, + "name": "newContract", + "nodeType": "VariableDeclaration", + "scope": 824, + "src": "12656:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 819, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12656:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12655:21:1" + }, + "scope": 963, + "src": "12587:197:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 851, + "nodeType": "Block", + "src": "13238:87:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30783139", + "id": 841, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13270:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_25_by_1", + "typeString": "int_const 25" + }, + "value": "0x19" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_25_by_1", + "typeString": "int_const 25" + } + ], + "id": 840, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "13265:4:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes1_$", + "typeString": "type(bytes1)" + }, + "typeName": "byte" + }, + "id": 842, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13265:10:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + { + "argumentTypes": null, + "id": 843, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2100, + "src": "13277:4:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + }, + { + "argumentTypes": null, + "id": 844, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 826, + "src": "13283:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 845, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 828, + "src": "13287:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 846, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 830, + "src": "13294:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 847, + "name": "operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 832, + "src": "13300:9:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + }, + { + "argumentTypes": null, + "id": 848, + "name": "_nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 834, + "src": "13311:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 839, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2083, + "src": "13255:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", + "typeString": "function () pure returns (bytes32)" + } + }, + "id": 849, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13255:63:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 838, + "id": 850, + "nodeType": "Return", + "src": "13248:70:1" + } + ] + }, + "id": 852, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "getTransactionHash", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 835, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 826, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 852, + "src": "13104:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 825, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13104:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 828, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 852, + "src": "13116:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 827, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13116:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 830, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 852, + "src": "13131:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + "typeName": { + "id": 829, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "13131:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 832, + "name": "operation", + "nodeType": "VariableDeclaration", + "scope": 852, + "src": "13143:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + }, + "typeName": { + "contractScope": null, + "id": 831, + "name": "Operation", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 61, + "src": "13143:9:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 834, + "name": "_nonce", + "nodeType": "VariableDeclaration", + "scope": 852, + "src": "13164:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 833, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13164:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "13103:76:1" + }, + "payable": false, + "returnParameters": { + "id": 838, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 837, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 852, + "src": "13225:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 836, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "13225:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "13224:9:1" + }, + "scope": 963, + "src": "13076:249:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 860, + "nodeType": "Block", + "src": "13488:30:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 858, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "13505:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "functionReturnParameters": 857, + "id": 859, + "nodeType": "Return", + "src": "13498:13:1" + } + ] + }, + "id": 861, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "getOwners", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 853, + "nodeType": "ParameterList", + "parameters": [], + "src": "13425:2:1" + }, + "payable": false, + "returnParameters": { + "id": 857, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 856, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 861, + "src": "13473:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + }, + "typeName": { + "baseType": { + "id": 854, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13473:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 855, + "length": null, + "nodeType": "ArrayTypeName", + "src": "13473:9:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[] storage pointer" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "13472:11:1" + }, + "scope": 963, + "src": "13407:111:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 869, + "nodeType": "Block", + "src": "13690:34:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 867, + "name": "extensions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43, + "src": "13707:10:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage", + "typeString": "contract Extension[] storage ref" + } + }, + "functionReturnParameters": 866, + "id": 868, + "nodeType": "Return", + "src": "13700:17:1" + } + ] + }, + "id": 870, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "getExtensions", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 862, + "nodeType": "ParameterList", + "parameters": [], + "src": "13625:2:1" + }, + "payable": false, + "returnParameters": { + "id": 866, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 865, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 870, + "src": "13673:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_memory_ptr", + "typeString": "contract Extension[] memory" + }, + "typeName": { + "baseType": { + "contractScope": null, + "id": 863, + "name": "Extension", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 18, + "src": "13673:9:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + }, + "id": 864, + "length": null, + "nodeType": "ArrayTypeName", + "src": "13673:11:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage_ptr", + "typeString": "contract Extension[] storage pointer" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "13672:13:1" + }, + "scope": 963, + "src": "13603:121:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 901, + "nodeType": "Block", + "src": "13998:162:1", + "statements": [ + { + "body": { + "id": 899, + "nodeType": "Block", + "src": "14049:105:1", + "statements": [ + { + "condition": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 888, + "name": "isConfirmed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57, + "src": "14067:11:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$", + "typeString": "mapping(address => mapping(bytes32 => bool))" + } + }, + "id": 892, + "indexExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 889, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "14079:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 891, + "indexExpression": { + "argumentTypes": null, + "id": 890, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 878, + "src": "14086:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14079:9:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14067:22:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + } + }, + "id": 894, + "indexExpression": { + "argumentTypes": null, + "id": 893, + "name": "transactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 872, + "src": "14090:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14067:39:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 898, + "nodeType": "IfStatement", + "src": "14063:80:1", + "trueBody": { + "expression": { + "argumentTypes": null, + "id": 896, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "14124:19:1", + "subExpression": { + "argumentTypes": null, + "id": 895, + "name": "confirmationCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 875, + "src": "14124:17:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 897, + "nodeType": "ExpressionStatement", + "src": "14124:19:1" + } + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 884, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 881, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 878, + "src": "14025:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 882, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "14029:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 883, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "14029:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "14025:17:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 900, + "initializationExpression": { + "assignments": [ + 878 + ], + "declarations": [ + { + "constant": false, + "id": 878, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 902, + "src": "14013:6:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 877, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "14013:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 880, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 879, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14022:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "14013:10:1" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 886, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "14044:3:1", + "subExpression": { + "argumentTypes": null, + "id": 885, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 878, + "src": "14044:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 887, + "nodeType": "ExpressionStatement", + "src": "14044:3:1" + }, + "nodeType": "ForStatement", + "src": "14008:146:1" + } + ] + }, + "id": 902, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "getConfirmationCount", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 873, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 872, + "name": "transactionHash", + "nodeType": "VariableDeclaration", + "scope": 902, + "src": "13900:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 871, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "13900:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "13899:25:1" + }, + "payable": false, + "returnParameters": { + "id": 876, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 875, + "name": "confirmationCount", + "nodeType": "VariableDeclaration", + "scope": 902, + "src": "13970:22:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 874, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "13970:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "13969:24:1" + }, + "scope": 963, + "src": "13870:290:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 961, + "nodeType": "Block", + "src": "14432:407:1", + "statements": [ + { + "assignments": [ + 911 + ], + "declarations": [ + { + "constant": false, + "id": 911, + "name": "confirmationCount", + "nodeType": "VariableDeclaration", + "scope": 962, + "src": "14442:22:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 910, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "14442:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 915, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 913, + "name": "transactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 904, + "src": "14488:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 912, + "name": "getConfirmationCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 902, + "src": "14467:20:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$", + "typeString": "function (bytes32) view returns (uint256)" + } + }, + "id": 914, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14467:37:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "14442:62:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 922, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 916, + "name": "confirmingOwners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 908, + "src": "14514:16:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 920, + "name": "confirmationCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 911, + "src": "14547:17:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 919, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "14533:13:1", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_$", + "typeString": "function (uint256) pure returns (address[] memory)" + }, + "typeName": { + "baseType": { + "id": 917, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14537:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 918, + "length": null, + "nodeType": "ArrayTypeName", + "src": "14537:9:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[] storage pointer" + } + } + }, + "id": 921, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14533:32:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory", + "typeString": "address[] memory" + } + }, + "src": "14514:51:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 923, + "nodeType": "ExpressionStatement", + "src": "14514:51:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 926, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 924, + "name": "confirmationCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 911, + "src": "14575:17:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 925, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14595:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "14575:21:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 927, + "nodeType": "ExpressionStatement", + "src": "14575:21:1" + }, + { + "body": { + "id": 959, + "nodeType": "Block", + "src": "14647:186:1", + "statements": [ + { + "condition": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 939, + "name": "isConfirmed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57, + "src": "14665:11:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$", + "typeString": "mapping(address => mapping(bytes32 => bool))" + } + }, + "id": 943, + "indexExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 940, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "14677:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 942, + "indexExpression": { + "argumentTypes": null, + "id": 941, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 929, + "src": "14684:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14677:9:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14665:22:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + } + }, + "id": 945, + "indexExpression": { + "argumentTypes": null, + "id": 944, + "name": "transactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 904, + "src": "14688:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14665:39:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 958, + "nodeType": "IfStatement", + "src": "14661:162:1", + "trueBody": { + "id": 957, + "nodeType": "Block", + "src": "14706:117:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 952, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 946, + "name": "confirmingOwners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 908, + "src": "14724:16:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 948, + "indexExpression": { + "argumentTypes": null, + "id": 947, + "name": "confirmationCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 911, + "src": "14741:17:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "14724:35:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 949, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "14762:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 951, + "indexExpression": { + "argumentTypes": null, + "id": 950, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 929, + "src": "14769:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14762:9:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "14724:47:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 953, + "nodeType": "ExpressionStatement", + "src": "14724:47:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 955, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "14789:19:1", + "subExpression": { + "argumentTypes": null, + "id": 954, + "name": "confirmationCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 911, + "src": "14789:17:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 956, + "nodeType": "ExpressionStatement", + "src": "14789:19:1" + } + ] + } + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 935, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 932, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 929, + "src": "14623:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 933, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "14627:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 934, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "14627:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "14623:17:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 960, + "initializationExpression": { + "assignments": [ + 929 + ], + "declarations": [ + { + "constant": false, + "id": 929, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 962, + "src": "14611:6:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 928, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "14611:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 931, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 930, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14620:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "14611:10:1" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 937, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "14642:3:1", + "subExpression": { + "argumentTypes": null, + "id": 936, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 929, + "src": "14642:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 938, + "nodeType": "ExpressionStatement", + "src": "14642:3:1" + }, + "nodeType": "ForStatement", + "src": "14606:227:1" + } + ] + }, + "id": 962, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "getConfirmingOwners", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 905, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 904, + "name": "transactionHash", + "nodeType": "VariableDeclaration", + "scope": 962, + "src": "14330:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 903, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "14330:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "14329:25:1" + }, + "payable": false, + "returnParameters": { + "id": 909, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 908, + "name": "confirmingOwners", + "nodeType": "VariableDeclaration", + "scope": 962, + "src": "14400:26:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + }, + "typeName": { + "baseType": { + "id": 906, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14400:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 907, + "length": null, + "nodeType": "ArrayTypeName", + "src": "14400:9:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[] storage pointer" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "14399:28:1" + }, + "scope": 963, + "src": "14301:538:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 964, + "src": "218:14623:1" + } + ], + "src": "0:14842:1" + }, + "legacyAST": { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", + "exportedSymbols": { + "GnosisSafe": [ + 963 + ] + }, + "id": 964, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 20, + "literals": [ + "solidity", + "0.4", + ".19" + ], + "nodeType": "PragmaDirective", + "src": "0:23:1" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Extension.sol", + "file": "./Extension.sol", + "id": 21, + "nodeType": "ImportDirective", + "scope": 964, + "sourceUnit": 19, + "src": "24:25:1", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": "@title Gnosis Safe - A multisignature wallet with support for confirmations using signed messages based on ERC191.\n @author Stefan George - ", + "fullyImplemented": true, + "id": 963, + "linearizedBaseContracts": [ + 963 + ], + "name": "GnosisSafe", + "nodeType": "ContractDefinition", + "nodes": [ + { + "anonymous": false, + "id": 25, + "name": "ContractCreation", + "nodeType": "EventDefinition", + "parameters": { + "id": 24, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 23, + "indexed": false, + "name": "newContract", + "nodeType": "VariableDeclaration", + "scope": 25, + "src": "268:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 22, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "268:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "267:21:1" + }, + "src": "245:44:1" + }, + { + "constant": true, + "id": 28, + "name": "NAME", + "nodeType": "VariableDeclaration", + "scope": 963, + "src": "295:43:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory", + "typeString": "string memory" + }, + "typeName": { + "id": 26, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "295:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string storage pointer" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "476e6f7369732053616665", + "id": 27, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "325:13:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_72ec6775392f699e8ffd72b7c600556d49bdc746bf22bce93d3ae6019cdaff63", + "typeString": "literal_string \"Gnosis Safe\"" + }, + "value": "Gnosis Safe" + }, + "visibility": "public" + }, + { + "constant": true, + "id": 31, + "name": "VERSION", + "nodeType": "VariableDeclaration", + "scope": 963, + "src": "344:40:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_string_memory", + "typeString": "string memory" + }, + "typeName": { + "id": 29, + "name": "string", + "nodeType": "ElementaryTypeName", + "src": "344:6:1", + "typeDescriptions": { + "typeIdentifier": "t_string_storage_ptr", + "typeString": "string storage pointer" + } + }, + "value": { + "argumentTypes": null, + "hexValue": "302e302e31", + "id": 30, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "377:7:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", + "typeString": "literal_string \"0.0.1\"" + }, + "value": "0.0.1" + }, + "visibility": "public" + }, + { + "constant": false, + "id": 33, + "name": "masterCopy", + "nodeType": "VariableDeclaration", + "scope": 963, + "src": "391:21:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + }, + "typeName": { + "contractScope": null, + "id": 32, + "name": "GnosisSafe", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 963, + "src": "391:10:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 35, + "name": "threshold", + "nodeType": "VariableDeclaration", + "scope": 963, + "src": "418:22:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 34, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "418:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 37, + "name": "nonce", + "nodeType": "VariableDeclaration", + "scope": 963, + "src": "446:20:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 36, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "446:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 40, + "name": "owners", + "nodeType": "VariableDeclaration", + "scope": 963, + "src": "472:23:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + }, + "typeName": { + "baseType": { + "id": 38, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "472:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 39, + "length": null, + "nodeType": "ArrayTypeName", + "src": "472:9:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[] storage pointer" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 43, + "name": "extensions", + "nodeType": "VariableDeclaration", + "scope": 963, + "src": "501:29:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage", + "typeString": "contract Extension[] storage ref" + }, + "typeName": { + "baseType": { + "contractScope": null, + "id": 41, + "name": "Extension", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 18, + "src": "501:9:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + }, + "id": 42, + "length": null, + "nodeType": "ArrayTypeName", + "src": "501:11:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage_ptr", + "typeString": "contract Extension[] storage pointer" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 47, + "name": "isOwner", + "nodeType": "VariableDeclaration", + "scope": 963, + "src": "607:40:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "typeName": { + "id": 46, + "keyType": { + "id": 44, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "616:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "607:25:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "valueType": { + "id": 45, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "627:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 51, + "name": "isExtension", + "nodeType": "VariableDeclaration", + "scope": 963, + "src": "729:44:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "typeName": { + "id": 50, + "keyType": { + "id": 48, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "738:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "729:25:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + }, + "valueType": { + "id": 49, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "749:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 57, + "name": "isConfirmed", + "nodeType": "VariableDeclaration", + "scope": 963, + "src": "892:65:1", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$", + "typeString": "mapping(address => mapping(bytes32 => bool))" + }, + "typeName": { + "id": 56, + "keyType": { + "id": 52, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "901:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "892:46:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$", + "typeString": "mapping(address => mapping(bytes32 => bool))" + }, + "valueType": { + "id": 55, + "keyType": { + "id": 53, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "921:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "Mapping", + "src": "912:25:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + }, + "valueType": { + "id": 54, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "932:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + } + }, + "value": null, + "visibility": "public" + }, + { + "canonicalName": "GnosisSafe.Operation", + "id": 61, + "members": [ + { + "id": 58, + "name": "Call", + "nodeType": "EnumValue", + "src": "989:4:1" + }, + { + "id": 59, + "name": "DelegateCall", + "nodeType": "EnumValue", + "src": "1003:12:1" + }, + { + "id": 60, + "name": "Create", + "nodeType": "EnumValue", + "src": "1025:6:1" + } + ], + "name": "Operation", + "nodeType": "EnumDefinition", + "src": "964:73:1" + }, + { + "body": { + "id": 73, + "nodeType": "Block", + "src": "1065:64:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 69, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 64, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2089, + "src": "1083:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 65, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1083:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 67, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2100, + "src": "1105:4:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + ], + "id": 66, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1097:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 68, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1097:13:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1083:27:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 63, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "1075:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 70, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1075:36:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 71, + "nodeType": "ExpressionStatement", + "src": "1075:36:1" + }, + { + "id": 72, + "nodeType": "PlaceholderStatement", + "src": "1121:1:1" + } + ] + }, + "id": 74, + "name": "onlyWallet", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 62, + "nodeType": "ParameterList", + "parameters": [], + "src": "1062:2:1" + }, + "src": "1043:86:1", + "visibility": "internal" + }, + { + "body": { + "id": 77, + "nodeType": "Block", + "src": "1243:8:1", + "statements": [] + }, + "id": 78, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 75, + "nodeType": "ParameterList", + "parameters": [], + "src": "1203:2:1" + }, + "payable": true, + "returnParameters": { + "id": 76, + "nodeType": "ParameterList", + "parameters": [], + "src": "1243:0:1" + }, + "scope": 963, + "src": "1194:57:1", + "stateMutability": "payable", + "superFunction": null, + "visibility": "external" + }, + { + "body": { + "id": 97, + "nodeType": "Block", + "src": "1667:53:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 91, + "name": "_owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 81, + "src": "1683:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + { + "argumentTypes": null, + "id": 92, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 83, + "src": "1692:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "argumentTypes": null, + "id": 93, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 85, + "src": "1704:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 94, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 87, + "src": "1708:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 90, + "name": "setup", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 187, + "src": "1677:5:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_uint8_$_t_address_$_t_bytes_memory_ptr_$returns$__$", + "typeString": "function (address[] memory,uint8,address,bytes memory)" + } + }, + "id": 95, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1677:36:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 96, + "nodeType": "ExpressionStatement", + "src": "1677:36:1" + } + ] + }, + "id": 98, + "implemented": true, + "isConstructor": true, + "isDeclaredConst": false, + "modifiers": [], + "name": "GnosisSafe", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 88, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 81, + "name": "_owners", + "nodeType": "VariableDeclaration", + "scope": 98, + "src": "1587:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + }, + "typeName": { + "baseType": { + "id": 79, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1587:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 80, + "length": null, + "nodeType": "ArrayTypeName", + "src": "1587:9:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[] storage pointer" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 83, + "name": "_threshold", + "nodeType": "VariableDeclaration", + "scope": 98, + "src": "1606:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 82, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "1606:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 85, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 98, + "src": "1624:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 84, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1624:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 87, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 98, + "src": "1636:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + "typeName": { + "id": 86, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "1636:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1586:61:1" + }, + "payable": false, + "returnParameters": { + "id": 89, + "nodeType": "ParameterList", + "parameters": [], + "src": "1667:0:1" + }, + "scope": 963, + "src": "1567:153:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 186, + "nodeType": "Block", + "src": "2134:1046:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 113, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 111, + "name": "threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 35, + "src": "2276:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 112, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2289:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2276:14:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 110, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "2268:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 114, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2268:23:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 115, + "nodeType": "ExpressionStatement", + "src": "2268:23:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 120, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 117, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 103, + "src": "2383:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 118, + "name": "_owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 101, + "src": "2397:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 119, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2397:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2383:28:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 116, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "2375:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 121, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2375:37:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 122, + "nodeType": "ExpressionStatement", + "src": "2375:37:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 126, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 124, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 103, + "src": "2482:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 125, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2496:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "2482:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 123, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "2474:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 127, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2474:24:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 128, + "nodeType": "ExpressionStatement", + "src": "2474:24:1" + }, + { + "body": { + "id": 165, + "nodeType": "Block", + "src": "2590:221:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 145, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 141, + "name": "_owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 101, + "src": "2657:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 143, + "indexExpression": { + "argumentTypes": null, + "id": 142, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 130, + "src": "2665:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2657:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 144, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2671:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2657:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 140, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "2649:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 146, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2649:24:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 147, + "nodeType": "ExpressionStatement", + "src": "2649:24:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 154, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "2739:20:1", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 149, + "name": "isOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47, + "src": "2740:7:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 153, + "indexExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 150, + "name": "_owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 101, + "src": "2748:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 152, + "indexExpression": { + "argumentTypes": null, + "id": 151, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 130, + "src": "2756:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2748:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2740:19:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 148, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "2731:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 155, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2731:29:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 156, + "nodeType": "ExpressionStatement", + "src": "2731:29:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 163, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 157, + "name": "isOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47, + "src": "2774:7:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 161, + "indexExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 158, + "name": "_owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 101, + "src": "2782:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 160, + "indexExpression": { + "argumentTypes": null, + "id": 159, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 130, + "src": "2790:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2782:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "2774:19:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 162, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2796:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "2774:26:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 164, + "nodeType": "ExpressionStatement", + "src": "2774:26:1" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 136, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 133, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 130, + "src": "2565:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 134, + "name": "_owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 101, + "src": "2569:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 135, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2569:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2565:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 166, + "initializationExpression": { + "assignments": [ + 130 + ], + "declarations": [ + { + "constant": false, + "id": 130, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 187, + "src": "2550:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 129, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2550:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 132, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 131, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2562:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "2550:13:1" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 138, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "2585:3:1", + "subExpression": { + "argumentTypes": null, + "id": 137, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 130, + "src": "2585:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 139, + "nodeType": "ExpressionStatement", + "src": "2585:3:1" + }, + "nodeType": "ForStatement", + "src": "2545:266:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 169, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 167, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "2820:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 168, + "name": "_owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 101, + "src": "2829:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "src": "2820:16:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 170, + "nodeType": "ExpressionStatement", + "src": "2820:16:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 173, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 171, + "name": "threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 35, + "src": "2846:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 172, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 103, + "src": "2858:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "2846:22:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 174, + "nodeType": "ExpressionStatement", + "src": "2846:22:1" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 177, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 175, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 105, + "src": "3042:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 176, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3048:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3042:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 185, + "nodeType": "IfStatement", + "src": "3038:135:1", + "trueBody": { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 180, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 105, + "src": "3163:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 181, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 107, + "src": "3167:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 179, + "name": "executeDelegateCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 815, + "src": "3143:19:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bool_$", + "typeString": "function (address,bytes memory) returns (bool)" + } + }, + "id": 182, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3143:29:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 178, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "3135:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 183, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3135:38:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 184, + "nodeType": "ExpressionStatement", + "src": "3135:38:1" + } + } + ] + }, + "id": 187, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "setup", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 108, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 101, + "name": "_owners", + "nodeType": "VariableDeclaration", + "scope": 187, + "src": "2054:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + }, + "typeName": { + "baseType": { + "id": 99, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2054:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 100, + "length": null, + "nodeType": "ArrayTypeName", + "src": "2054:9:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[] storage pointer" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 103, + "name": "_threshold", + "nodeType": "VariableDeclaration", + "scope": 187, + "src": "2073:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 102, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "2073:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 105, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 187, + "src": "2091:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 104, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2091:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 107, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 187, + "src": "2103:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + "typeName": { + "id": 106, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2103:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2053:61:1" + }, + "payable": false, + "returnParameters": { + "id": 109, + "nodeType": "ParameterList", + "parameters": [], + "src": "2134:0:1" + }, + "scope": 963, + "src": "2039:1141:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 206, + "nodeType": "Block", + "src": "3414:132:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 199, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 196, + "name": "_masterCopy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 189, + "src": "3487:11:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + ], + "id": 195, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3479:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 197, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3479:20:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 198, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3503:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3479:25:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 194, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "3471:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 200, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3471:34:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 201, + "nodeType": "ExpressionStatement", + "src": "3471:34:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 204, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 202, + "name": "masterCopy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 33, + "src": "3515:10:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 203, + "name": "_masterCopy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 189, + "src": "3528:11:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + }, + "src": "3515:24:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + }, + "id": 205, + "nodeType": "ExpressionStatement", + "src": "3515:24:1" + } + ] + }, + "id": 207, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": [], + "id": 192, + "modifierName": { + "argumentTypes": null, + "id": 191, + "name": "onlyWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 74, + "src": "3399:10:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "3399:10:1" + } + ], + "name": "changeMasterCopy", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 190, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 189, + "name": "_masterCopy", + "nodeType": "VariableDeclaration", + "scope": 207, + "src": "3352:22:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + }, + "typeName": { + "contractScope": null, + "id": 188, + "name": "GnosisSafe", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 963, + "src": "3352:10:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3351:24:1" + }, + "payable": false, + "returnParameters": { + "id": 193, + "nodeType": "ParameterList", + "parameters": [], + "src": "3414:0:1" + }, + "scope": 963, + "src": "3326:220:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 249, + "nodeType": "Block", + "src": "3875:342:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 219, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 217, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 209, + "src": "3934:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 218, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3943:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3934:10:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 216, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "3926:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 220, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3926:19:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 221, + "nodeType": "ExpressionStatement", + "src": "3926:19:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 226, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "4003:15:1", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 223, + "name": "isOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47, + "src": "4004:7:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 225, + "indexExpression": { + "argumentTypes": null, + "id": 224, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 209, + "src": "4012:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4004:14:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 222, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "3995:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 227, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "3995:24:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 228, + "nodeType": "ExpressionStatement", + "src": "3995:24:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 232, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 209, + "src": "4041:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "id": 229, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "4029:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 231, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "push", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4029:11:1", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypush_nonpayable$_t_address_$returns$_t_uint256_$", + "typeString": "function (address) returns (uint256)" + } + }, + "id": 233, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4029:18:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 234, + "nodeType": "ExpressionStatement", + "src": "4029:18:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 239, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 235, + "name": "isOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47, + "src": "4057:7:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 237, + "indexExpression": { + "argumentTypes": null, + "id": 236, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 209, + "src": "4065:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4057:14:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 238, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4074:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "4057:21:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 240, + "nodeType": "ExpressionStatement", + "src": "4057:21:1" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 243, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 241, + "name": "threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 35, + "src": "4146:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "id": 242, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 211, + "src": "4159:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "4146:23:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 248, + "nodeType": "IfStatement", + "src": "4142:68:1", + "trueBody": { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 245, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 211, + "src": "4199:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "id": 244, + "name": "changeThreshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 385, + "src": "4183:15:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$returns$__$", + "typeString": "function (uint8)" + } + }, + "id": 246, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4183:27:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 247, + "nodeType": "ExpressionStatement", + "src": "4183:27:1" + } + } + ] + }, + "id": 250, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": [], + "id": 214, + "modifierName": { + "argumentTypes": null, + "id": 213, + "name": "onlyWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 74, + "src": "3860:10:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "3860:10:1" + } + ], + "name": "addOwner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 212, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 209, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 250, + "src": "3804:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 208, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "3804:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 211, + "name": "_threshold", + "nodeType": "VariableDeclaration", + "scope": 250, + "src": "3819:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 210, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "3819:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "3803:33:1" + }, + "payable": false, + "returnParameters": { + "id": 215, + "nodeType": "ParameterList", + "parameters": [], + "src": "3875:0:1" + }, + "scope": 963, + "src": "3786:431:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 308, + "nodeType": "Block", + "src": "4660:487:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 267, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 265, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 262, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "4755:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 263, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4755:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 264, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4771:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "4755:17:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "id": 266, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 256, + "src": "4776:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "4755:31:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 261, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "4747:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 268, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4747:40:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 269, + "nodeType": "ExpressionStatement", + "src": "4747:40:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 275, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 271, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "4867:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 273, + "indexExpression": { + "argumentTypes": null, + "id": 272, + "name": "ownerIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 252, + "src": "4874:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4867:18:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 274, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 254, + "src": "4889:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "4867:27:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 270, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "4859:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 276, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4859:36:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 277, + "nodeType": "ExpressionStatement", + "src": "4859:36:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 282, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 278, + "name": "isOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47, + "src": "4905:7:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 280, + "indexExpression": { + "argumentTypes": null, + "id": 279, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 254, + "src": "4913:5:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4905:14:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 281, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4922:5:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "4905:22:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 283, + "nodeType": "ExpressionStatement", + "src": "4905:22:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 293, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 284, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "4937:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 286, + "indexExpression": { + "argumentTypes": null, + "id": 285, + "name": "ownerIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 252, + "src": "4944:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "4937:18:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 287, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "4958:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 292, + "indexExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 291, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 288, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "4965:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 289, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4965:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 290, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4981:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "4965:17:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "4958:25:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "4937:46:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 294, + "nodeType": "ExpressionStatement", + "src": "4937:46:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 298, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "--", + "prefix": false, + "src": "4993:15:1", + "subExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 295, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "4993:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 297, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4993:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 299, + "nodeType": "ExpressionStatement", + "src": "4993:15:1" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 302, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 300, + "name": "threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 35, + "src": "5076:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "id": 301, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 256, + "src": "5089:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "5076:23:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 307, + "nodeType": "IfStatement", + "src": "5072:68:1", + "trueBody": { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 304, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 256, + "src": "5129:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + ], + "id": 303, + "name": "changeThreshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 385, + "src": "5113:15:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$returns$__$", + "typeString": "function (uint8)" + } + }, + "id": 305, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5113:27:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 306, + "nodeType": "ExpressionStatement", + "src": "5113:27:1" + } + } + ] + }, + "id": 309, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": [], + "id": 259, + "modifierName": { + "argumentTypes": null, + "id": 258, + "name": "onlyWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 74, + "src": "4645:10:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "4645:10:1" + } + ], + "name": "removeOwner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 257, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 252, + "name": "ownerIndex", + "nodeType": "VariableDeclaration", + "scope": 309, + "src": "4569:18:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 251, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4569:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 254, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 309, + "src": "4589:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 253, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "4589:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 256, + "name": "_threshold", + "nodeType": "VariableDeclaration", + "scope": 309, + "src": "4604:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 255, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "4604:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "4568:53:1" + }, + "payable": false, + "returnParameters": { + "id": 260, + "nodeType": "ParameterList", + "parameters": [], + "src": "4660:0:1" + }, + "scope": 963, + "src": "4548:599:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 359, + "nodeType": "Block", + "src": "5587:383:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 323, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 321, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 315, + "src": "5646:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 322, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5658:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "5646:13:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 320, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "5638:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 324, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5638:22:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 325, + "nodeType": "ExpressionStatement", + "src": "5638:22:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 330, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "5718:18:1", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 327, + "name": "isOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47, + "src": "5719:7:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 329, + "indexExpression": { + "argumentTypes": null, + "id": 328, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 315, + "src": "5727:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5719:17:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 326, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "5710:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 331, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5710:27:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 332, + "nodeType": "ExpressionStatement", + "src": "5710:27:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 338, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 334, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "5817:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 336, + "indexExpression": { + "argumentTypes": null, + "id": 335, + "name": "oldOwnerIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 311, + "src": "5824:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "5817:21:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 337, + "name": "oldOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 313, + "src": "5842:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "5817:33:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 333, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "5809:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 339, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "5809:42:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 340, + "nodeType": "ExpressionStatement", + "src": "5809:42:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 345, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 341, + "name": "isOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47, + "src": "5861:7:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 343, + "indexExpression": { + "argumentTypes": null, + "id": 342, + "name": "oldOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 313, + "src": "5869:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "5861:17:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 344, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5881:5:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "5861:25:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 346, + "nodeType": "ExpressionStatement", + "src": "5861:25:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 351, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 347, + "name": "isOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47, + "src": "5896:7:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 349, + "indexExpression": { + "argumentTypes": null, + "id": 348, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 315, + "src": "5904:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "5896:17:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 350, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5917:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "5896:25:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 352, + "nodeType": "ExpressionStatement", + "src": "5896:25:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 357, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 353, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "5931:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 355, + "indexExpression": { + "argumentTypes": null, + "id": 354, + "name": "oldOwnerIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 311, + "src": "5938:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "5931:21:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 356, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 315, + "src": "5955:8:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "5931:32:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 358, + "nodeType": "ExpressionStatement", + "src": "5931:32:1" + } + ] + }, + "id": 360, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": [], + "id": 318, + "modifierName": { + "argumentTypes": null, + "id": 317, + "name": "onlyWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 74, + "src": "5572:10:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "5572:10:1" + } + ], + "name": "replaceOwner", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 316, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 311, + "name": "oldOwnerIndex", + "nodeType": "VariableDeclaration", + "scope": 360, + "src": "5490:21:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 310, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "5490:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 313, + "name": "oldOwner", + "nodeType": "VariableDeclaration", + "scope": 360, + "src": "5513:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 312, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5513:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 315, + "name": "newOwner", + "nodeType": "VariableDeclaration", + "scope": 360, + "src": "5531:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 314, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "5531:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "5489:59:1" + }, + "payable": false, + "returnParameters": { + "id": 319, + "nodeType": "ParameterList", + "parameters": [], + "src": "5587:0:1" + }, + "scope": 963, + "src": "5468:502:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 384, + "nodeType": "Block", + "src": "6240:239:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 371, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 368, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 362, + "src": "6326:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 369, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "6340:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 370, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "6340:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "6326:27:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 367, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "6318:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 372, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6318:36:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 373, + "nodeType": "ExpressionStatement", + "src": "6318:36:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "id": 377, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 375, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 362, + "src": "6424:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "BinaryOperation", + "operator": ">=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 376, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6438:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "6424:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 374, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "6416:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 378, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6416:24:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 379, + "nodeType": "ExpressionStatement", + "src": "6416:24:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 382, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 380, + "name": "threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 35, + "src": "6450:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 381, + "name": "_threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 362, + "src": "6462:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "6450:22:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 383, + "nodeType": "ExpressionStatement", + "src": "6450:22:1" + } + ] + }, + "id": 385, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": [], + "id": 365, + "modifierName": { + "argumentTypes": null, + "id": 364, + "name": "onlyWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 74, + "src": "6225:10:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "6225:10:1" + } + ], + "name": "changeThreshold", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 363, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 362, + "name": "_threshold", + "nodeType": "VariableDeclaration", + "scope": 385, + "src": "6184:16:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + "typeName": { + "id": 361, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "6184:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6183:18:1" + }, + "payable": false, + "returnParameters": { + "id": 366, + "nodeType": "ParameterList", + "parameters": [], + "src": "6240:0:1" + }, + "scope": 963, + "src": "6159:320:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 419, + "nodeType": "Block", + "src": "6737:255:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 397, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 394, + "name": "extension", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 387, + "src": "6808:9:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + ], + "id": 393, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6800:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 395, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6800:18:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 396, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6822:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "6800:23:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 392, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "6792:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 398, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6792:32:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 399, + "nodeType": "ExpressionStatement", + "src": "6792:32:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 404, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "6886:23:1", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 401, + "name": "isExtension", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 51, + "src": "6887:11:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 403, + "indexExpression": { + "argumentTypes": null, + "id": 402, + "name": "extension", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 387, + "src": "6899:9:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "6887:22:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 400, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "6878:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 405, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6878:32:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 406, + "nodeType": "ExpressionStatement", + "src": "6878:32:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 410, + "name": "extension", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 387, + "src": "6936:9:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + ], + "expression": { + "argumentTypes": null, + "id": 407, + "name": "extensions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43, + "src": "6920:10:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage", + "typeString": "contract Extension[] storage ref" + } + }, + "id": 409, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "push", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "6920:15:1", + "typeDescriptions": { + "typeIdentifier": "t_function_arraypush_nonpayable$_t_contract$_Extension_$18_$returns$_t_uint256_$", + "typeString": "function (contract Extension) returns (uint256)" + } + }, + "id": 411, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6920:26:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 412, + "nodeType": "ExpressionStatement", + "src": "6920:26:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 417, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 413, + "name": "isExtension", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 51, + "src": "6956:11:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 415, + "indexExpression": { + "argumentTypes": null, + "id": 414, + "name": "extension", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 387, + "src": "6968:9:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "6956:22:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 416, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6981:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "6956:29:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 418, + "nodeType": "ExpressionStatement", + "src": "6956:29:1" + } + ] + }, + "id": 420, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": [], + "id": 390, + "modifierName": { + "argumentTypes": null, + "id": 389, + "name": "onlyWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 74, + "src": "6722:10:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "6722:10:1" + } + ], + "name": "addExtension", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 388, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 387, + "name": "extension", + "nodeType": "VariableDeclaration", + "scope": 420, + "src": "6678:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + }, + "typeName": { + "contractScope": null, + "id": 386, + "name": "Extension", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 18, + "src": "6678:9:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "6677:21:1" + }, + "payable": false, + "returnParameters": { + "id": 391, + "nodeType": "ParameterList", + "parameters": [], + "src": "6737:0:1" + }, + "scope": 963, + "src": "6656:336:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 459, + "nodeType": "Block", + "src": "7372:276:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + }, + "id": 434, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 430, + "name": "extensions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43, + "src": "7460:10:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage", + "typeString": "contract Extension[] storage ref" + } + }, + "id": 432, + "indexExpression": { + "argumentTypes": null, + "id": 431, + "name": "extensionIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 422, + "src": "7471:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7460:26:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 433, + "name": "extension", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 424, + "src": "7490:9:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + }, + "src": "7460:39:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 429, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "7452:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 435, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "7452:48:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 436, + "nodeType": "ExpressionStatement", + "src": "7452:48:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 441, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 437, + "name": "isExtension", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 51, + "src": "7510:11:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 439, + "indexExpression": { + "argumentTypes": null, + "id": 438, + "name": "extension", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 424, + "src": "7522:9:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "7510:22:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 440, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7535:5:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "7510:30:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 442, + "nodeType": "ExpressionStatement", + "src": "7510:30:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 452, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 443, + "name": "extensions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43, + "src": "7550:10:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage", + "typeString": "contract Extension[] storage ref" + } + }, + "id": 445, + "indexExpression": { + "argumentTypes": null, + "id": 444, + "name": "extensionIndex", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 422, + "src": "7561:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "7550:26:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 446, + "name": "extensions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43, + "src": "7579:10:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage", + "typeString": "contract Extension[] storage ref" + } + }, + "id": 451, + "indexExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 450, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 447, + "name": "extensions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43, + "src": "7590:10:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage", + "typeString": "contract Extension[] storage ref" + } + }, + "id": 448, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "7590:17:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "hexValue": "31", + "id": 449, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "7610:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "7590:21:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "7579:33:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + }, + "src": "7550:62:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + }, + "id": 453, + "nodeType": "ExpressionStatement", + "src": "7550:62:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 457, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "--", + "prefix": false, + "src": "7622:19:1", + "subExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 454, + "name": "extensions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43, + "src": "7622:10:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage", + "typeString": "contract Extension[] storage ref" + } + }, + "id": 456, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "7622:17:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 458, + "nodeType": "ExpressionStatement", + "src": "7622:19:1" + } + ] + }, + "id": 460, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": [], + "id": 427, + "modifierName": { + "argumentTypes": null, + "id": 426, + "name": "onlyWallet", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 74, + "src": "7357:10:1", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "7357:10:1" + } + ], + "name": "removeExtension", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 425, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 422, + "name": "extensionIndex", + "nodeType": "VariableDeclaration", + "scope": 460, + "src": "7289:22:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 421, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "7289:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 424, + "name": "extension", + "nodeType": "VariableDeclaration", + "scope": 460, + "src": "7313:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + }, + "typeName": { + "contractScope": null, + "id": 423, + "name": "Extension", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 18, + "src": "7313:9:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "7288:45:1" + }, + "payable": false, + "returnParameters": { + "id": 428, + "nodeType": "ParameterList", + "parameters": [], + "src": "7372:0:1" + }, + "scope": 963, + "src": "7264:384:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 509, + "nodeType": "Block", + "src": "8102:383:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 474, + "name": "isOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47, + "src": "8190:7:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 477, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 475, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2089, + "src": "8198:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 476, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "8198:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "8190:19:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 473, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "8182:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 478, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8182:28:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 479, + "nodeType": "ExpressionStatement", + "src": "8182:28:1" + }, + { + "assignments": [ + 481 + ], + "declarations": [ + { + "constant": false, + "id": 481, + "name": "transactionHash", + "nodeType": "VariableDeclaration", + "scope": 510, + "src": "8220:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 480, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "8220:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 489, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 483, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 462, + "src": "8265:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 484, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 464, + "src": "8269:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 485, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 466, + "src": "8276:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 486, + "name": "operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 468, + "src": "8282:9:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + }, + { + "argumentTypes": null, + "id": 487, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37, + "src": "8293:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 482, + "name": "getTransactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 852, + "src": "8246:18:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$61_$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (address,uint256,bytes memory,enum GnosisSafe.Operation,uint256) view returns (bytes32)" + } + }, + "id": 488, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8246:53:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "8220:79:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 497, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "!", + "prefix": true, + "src": "8379:41:1", + "subExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 491, + "name": "isConfirmed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57, + "src": "8380:11:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$", + "typeString": "mapping(address => mapping(bytes32 => bool))" + } + }, + "id": 494, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 492, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2089, + "src": "8392:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 493, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "8392:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "8380:23:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + } + }, + "id": 496, + "indexExpression": { + "argumentTypes": null, + "id": 495, + "name": "transactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 481, + "src": "8404:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "8380:40:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 490, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "8371:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 498, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "8371:50:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 499, + "nodeType": "ExpressionStatement", + "src": "8371:50:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 507, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 500, + "name": "isConfirmed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57, + "src": "8431:11:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$", + "typeString": "mapping(address => mapping(bytes32 => bool))" + } + }, + "id": 504, + "indexExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 501, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2089, + "src": "8443:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 502, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "8443:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "8431:23:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + } + }, + "id": 505, + "indexExpression": { + "argumentTypes": null, + "id": 503, + "name": "transactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 481, + "src": "8455:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "8431:40:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 506, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "8474:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "src": "8431:47:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 508, + "nodeType": "ExpressionStatement", + "src": "8431:47:1" + } + ] + }, + "id": 510, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "confirmTransaction", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 471, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 462, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 510, + "src": "8007:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 461, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "8007:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 464, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 510, + "src": "8019:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 463, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8019:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 466, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 510, + "src": "8034:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + "typeName": { + "id": 465, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "8034:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 468, + "name": "operation", + "nodeType": "VariableDeclaration", + "scope": 510, + "src": "8046:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + }, + "typeName": { + "contractScope": null, + "id": 467, + "name": "Operation", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 61, + "src": "8046:9:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 470, + "name": "_nonce", + "nodeType": "VariableDeclaration", + "scope": 510, + "src": "8067:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 469, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "8067:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "8006:76:1" + }, + "payable": false, + "returnParameters": { + "id": 472, + "nodeType": "ParameterList", + "parameters": [], + "src": "8102:0:1" + }, + "scope": 963, + "src": "7979:506:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 697, + "nodeType": "Block", + "src": "9404:1349:1", + "statements": [ + { + "assignments": [ + 537 + ], + "declarations": [ + { + "constant": false, + "id": 537, + "name": "transactionHash", + "nodeType": "VariableDeclaration", + "scope": 698, + "src": "9414:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 536, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "9414:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 545, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 539, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 512, + "src": "9459:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 540, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 514, + "src": "9463:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 541, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 516, + "src": "9470:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 542, + "name": "operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 518, + "src": "9476:9:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + }, + { + "argumentTypes": null, + "id": 543, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37, + "src": "9487:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 538, + "name": "getTransactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 852, + "src": "9440:18:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$61_$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (address,uint256,bytes memory,enum GnosisSafe.Operation,uint256) view returns (bytes32)" + } + }, + "id": 544, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9440:53:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9414:79:1" + }, + { + "assignments": [ + 547 + ], + "declarations": [ + { + "constant": false, + "id": 547, + "name": "lastOwner", + "nodeType": "VariableDeclaration", + "scope": 698, + "src": "9555:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 546, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9555:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 551, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 549, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9583:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 548, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "9575:7:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 550, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9575:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "9555:30:1" + }, + { + "assignments": [], + "declarations": [ + { + "constant": false, + "id": 553, + "name": "currentOwner", + "nodeType": "VariableDeclaration", + "scope": 698, + "src": "9595:20:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 552, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9595:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 554, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "9595:20:1" + }, + { + "assignments": [], + "declarations": [ + { + "constant": false, + "id": 556, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 698, + "src": "9625:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 555, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9625:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 557, + "initialValue": null, + "nodeType": "VariableDeclarationStatement", + "src": "9625:9:1" + }, + { + "assignments": [ + 559 + ], + "declarations": [ + { + "constant": false, + "id": 559, + "name": "j", + "nodeType": "VariableDeclaration", + "scope": 698, + "src": "9644:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 558, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9644:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 561, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 560, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9656:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "9644:13:1" + }, + { + "body": { + "id": 648, + "nodeType": "Block", + "src": "9741:619:1", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 581, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 575, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 572, + "name": "indices", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 533, + "src": "9843:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 573, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "9843:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "id": 574, + "name": "j", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 559, + "src": "9860:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9843:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 580, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 576, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 556, + "src": "9865:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 577, + "name": "indices", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 533, + "src": "9870:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 579, + "indexExpression": { + "argumentTypes": null, + "id": 578, + "name": "j", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 559, + "src": "9878:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9870:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "9865:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "9843:37:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "expression": { + "argumentTypes": null, + "id": 629, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 610, + "name": "currentOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 553, + "src": "10155:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 612, + "name": "transactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 537, + "src": "10180:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 613, + "name": "v", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 521, + "src": "10197:1:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", + "typeString": "uint8[] memory" + } + }, + "id": 617, + "indexExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 616, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 614, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 556, + "src": "10199:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "id": 615, + "name": "j", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 559, + "src": "10201:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10199:3:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10197:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 618, + "name": "r", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 524, + "src": "10205:1:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 622, + "indexExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 621, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 619, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 556, + "src": "10207:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "id": 620, + "name": "j", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 559, + "src": "10209:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10207:3:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10205:6:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 623, + "name": "s", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 527, + "src": "10213:1:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + } + }, + "id": 627, + "indexExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 626, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 624, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 556, + "src": "10215:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "id": 625, + "name": "j", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 559, + "src": "10217:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10215:3:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10213:6:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 611, + "name": "ecrecover", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2082, + "src": "10170:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", + "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)" + } + }, + "id": 628, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10170:50:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "10155:65:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 630, + "nodeType": "ExpressionStatement", + "src": "10155:65:1" + }, + "id": 631, + "nodeType": "IfStatement", + "src": "9839:381:1", + "trueBody": { + "id": 609, + "nodeType": "Block", + "src": "9882:177:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 596, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 588, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 583, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2089, + "src": "9908:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 584, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "9908:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 585, + "name": "_owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 530, + "src": "9922:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 587, + "indexExpression": { + "argumentTypes": null, + "id": 586, + "name": "j", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 559, + "src": "9930:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9922:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "9908:24:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "BinaryOperation", + "operator": "||", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 589, + "name": "isConfirmed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57, + "src": "9936:11:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$", + "typeString": "mapping(address => mapping(bytes32 => bool))" + } + }, + "id": 593, + "indexExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 590, + "name": "_owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 530, + "src": "9948:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 592, + "indexExpression": { + "argumentTypes": null, + "id": 591, + "name": "j", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 559, + "src": "9956:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9948:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9936:23:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + } + }, + "id": 595, + "indexExpression": { + "argumentTypes": null, + "id": 594, + "name": "transactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 537, + "src": "9960:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "9936:40:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "src": "9908:68:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 582, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "9900:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 597, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "9900:77:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 598, + "nodeType": "ExpressionStatement", + "src": "9900:77:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 603, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 599, + "name": "currentOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 553, + "src": "9995:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 600, + "name": "_owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 530, + "src": "10010:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 602, + "indexExpression": { + "argumentTypes": null, + "id": 601, + "name": "j", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 559, + "src": "10018:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10010:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "9995:25:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 604, + "nodeType": "ExpressionStatement", + "src": "9995:25:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 607, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 605, + "name": "j", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 559, + "src": "10038:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "31", + "id": 606, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10043:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "10038:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 608, + "nodeType": "ExpressionStatement", + "src": "10038:6:1" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 633, + "name": "isOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 47, + "src": "10242:7:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 635, + "indexExpression": { + "argumentTypes": null, + "id": 634, + "name": "currentOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 553, + "src": "10250:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10242:21:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 632, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "10234:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 636, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10234:30:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 637, + "nodeType": "ExpressionStatement", + "src": "10234:30:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 641, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 639, + "name": "currentOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 553, + "src": "10286:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "id": 640, + "name": "lastOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 547, + "src": "10301:9:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "10286:24:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 638, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "10278:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 642, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10278:33:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 643, + "nodeType": "ExpressionStatement", + "src": "10278:33:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 646, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 644, + "name": "lastOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 547, + "src": "10325:9:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 645, + "name": "currentOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 553, + "src": "10337:12:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "10325:24:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 647, + "nodeType": "ExpressionStatement", + "src": "10325:24:1" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 568, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 566, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 556, + "src": "9721:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "id": 567, + "name": "threshold", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 35, + "src": "9725:9:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "src": "9721:13:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 649, + "initializationExpression": { + "expression": { + "argumentTypes": null, + "id": 564, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 562, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 556, + "src": "9714:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 563, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "9718:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "9714:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 565, + "nodeType": "ExpressionStatement", + "src": "9714:5:1" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 570, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "9736:3:1", + "subExpression": { + "argumentTypes": null, + "id": 569, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 556, + "src": "9736:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 571, + "nodeType": "ExpressionStatement", + "src": "9736:3:1" + }, + "nodeType": "ForStatement", + "src": "9709:651:1" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 653, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 650, + "name": "_owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 530, + "src": "10419:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 651, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "10419:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 652, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10436:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "10419:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 685, + "nodeType": "IfStatement", + "src": "10415:216:1", + "trueBody": { + "id": 684, + "nodeType": "Block", + "src": "10439:192:1", + "statements": [ + { + "body": { + "id": 682, + "nodeType": "Block", + "src": "10490:131:1", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 670, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 665, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2089, + "src": "10512:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 666, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "10512:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 667, + "name": "_owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 530, + "src": "10526:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 669, + "indexExpression": { + "argumentTypes": null, + "id": 668, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 556, + "src": "10534:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10526:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "10512:24:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 681, + "nodeType": "IfStatement", + "src": "10508:98:1", + "trueBody": { + "expression": { + "argumentTypes": null, + "id": 679, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 671, + "name": "isConfirmed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57, + "src": "10558:11:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$", + "typeString": "mapping(address => mapping(bytes32 => bool))" + } + }, + "id": 676, + "indexExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 672, + "name": "_owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 530, + "src": "10570:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 674, + "indexExpression": { + "argumentTypes": null, + "id": 673, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 556, + "src": "10578:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10570:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "10558:23:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + } + }, + "id": 677, + "indexExpression": { + "argumentTypes": null, + "id": 675, + "name": "transactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 537, + "src": "10582:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "10558:40:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 678, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10601:5:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" + }, + "src": "10558:48:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 680, + "nodeType": "ExpressionStatement", + "src": "10558:48:1" + } + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 661, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 658, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 556, + "src": "10465:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 659, + "name": "_owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 530, + "src": "10469:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 660, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "10469:14:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "10465:18:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 683, + "initializationExpression": { + "expression": { + "argumentTypes": null, + "id": 656, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 654, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 556, + "src": "10458:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 655, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10462:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "10458:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 657, + "nodeType": "ExpressionStatement", + "src": "10458:5:1" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 663, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "10485:3:1", + "subExpression": { + "argumentTypes": null, + "id": 662, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 556, + "src": "10485:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 664, + "nodeType": "ExpressionStatement", + "src": "10485:3:1" + }, + "nodeType": "ForStatement", + "src": "10453:168:1" + } + ] + } + }, + { + "expression": { + "argumentTypes": null, + "id": 688, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 686, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 37, + "src": "10691:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "31", + "id": 687, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "10700:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" + }, + "value": "1" + }, + "src": "10691:10:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 689, + "nodeType": "ExpressionStatement", + "src": "10691:10:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 691, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 512, + "src": "10719:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 692, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 514, + "src": "10723:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 693, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 516, + "src": "10730:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 694, + "name": "operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 518, + "src": "10736:9:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + ], + "id": 690, + "name": "execute", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 791, + "src": "10711:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$61_$returns$__$", + "typeString": "function (address,uint256,bytes memory,enum GnosisSafe.Operation)" + } + }, + "id": 695, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "10711:35:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 696, + "nodeType": "ExpressionStatement", + "src": "10711:35:1" + } + ] + }, + "id": 698, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "executeTransaction", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 534, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 512, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 698, + "src": "9250:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 511, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9250:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 514, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 698, + "src": "9262:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 513, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9262:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 516, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 698, + "src": "9277:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + "typeName": { + "id": 515, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "9277:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 518, + "name": "operation", + "nodeType": "VariableDeclaration", + "scope": 698, + "src": "9289:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + }, + "typeName": { + "contractScope": null, + "id": 517, + "name": "Operation", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 61, + "src": "9289:9:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 521, + "name": "v", + "nodeType": "VariableDeclaration", + "scope": 698, + "src": "9310:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", + "typeString": "uint8[] memory" + }, + "typeName": { + "baseType": { + "id": 519, + "name": "uint8", + "nodeType": "ElementaryTypeName", + "src": "9310:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint8", + "typeString": "uint8" + } + }, + "id": 520, + "length": null, + "nodeType": "ArrayTypeName", + "src": "9310:7:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr", + "typeString": "uint8[] storage pointer" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 524, + "name": "r", + "nodeType": "VariableDeclaration", + "scope": 698, + "src": "9321:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + }, + "typeName": { + "baseType": { + "id": 522, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "9321:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 523, + "length": null, + "nodeType": "ArrayTypeName", + "src": "9321:9:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[] storage pointer" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 527, + "name": "s", + "nodeType": "VariableDeclaration", + "scope": 698, + "src": "9334:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", + "typeString": "bytes32[] memory" + }, + "typeName": { + "baseType": { + "id": 525, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "9334:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "id": 526, + "length": null, + "nodeType": "ArrayTypeName", + "src": "9334:9:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", + "typeString": "bytes32[] storage pointer" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 530, + "name": "_owners", + "nodeType": "VariableDeclaration", + "scope": 698, + "src": "9347:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + }, + "typeName": { + "baseType": { + "id": 528, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "9347:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 529, + "length": null, + "nodeType": "ArrayTypeName", + "src": "9347:9:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[] storage pointer" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 533, + "name": "indices", + "nodeType": "VariableDeclaration", + "scope": 698, + "src": "9366:17:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + }, + "typeName": { + "baseType": { + "id": 531, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "9366:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 532, + "length": null, + "nodeType": "ArrayTypeName", + "src": "9366:9:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[] storage pointer" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "9249:135:1" + }, + "payable": false, + "returnParameters": { + "id": 535, + "nodeType": "ParameterList", + "parameters": [], + "src": "9404:0:1" + }, + "scope": 963, + "src": "9222:1531:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 736, + "nodeType": "Block", + "src": "11304:338:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 712, + "name": "isExtension", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 51, + "src": "11374:11:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", + "typeString": "mapping(address => bool)" + } + }, + "id": 714, + "indexExpression": { + "argumentTypes": null, + "id": 713, + "name": "extension", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 708, + "src": "11386:9:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "11374:22:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 711, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "11366:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 715, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11366:31:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 716, + "nodeType": "ExpressionStatement", + "src": "11366:31:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 720, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2089, + "src": "11487:3:1", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 721, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "11487:10:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 722, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 700, + "src": "11499:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 723, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 702, + "src": "11503:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 724, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 704, + "src": "11510:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 725, + "name": "operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 706, + "src": "11516:9:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + ], + "expression": { + "argumentTypes": null, + "id": 718, + "name": "extension", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 708, + "src": "11464:9:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + }, + "id": 719, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "isExecutable", + "nodeType": "MemberAccess", + "referencedDeclaration": 17, + "src": "11464:22:1", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$61_$returns$_t_bool_$", + "typeString": "function (address,address,uint256,bytes memory,enum GnosisSafe.Operation) external returns (bool)" + } + }, + "id": 726, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11464:62:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 717, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "11456:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 727, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11456:71:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 728, + "nodeType": "ExpressionStatement", + "src": "11456:71:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 730, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 700, + "src": "11608:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 731, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 702, + "src": "11612:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 732, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 704, + "src": "11619:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 733, + "name": "operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 706, + "src": "11625:9:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + ], + "id": 729, + "name": "execute", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 791, + "src": "11600:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$61_$returns$__$", + "typeString": "function (address,uint256,bytes memory,enum GnosisSafe.Operation)" + } + }, + "id": 734, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11600:35:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 735, + "nodeType": "ExpressionStatement", + "src": "11600:35:1" + } + ] + }, + "id": 737, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "executeExtension", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 709, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 700, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 737, + "src": "11204:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 699, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11204:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 702, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 737, + "src": "11216:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 701, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11216:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 704, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 737, + "src": "11231:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + "typeName": { + "id": 703, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "11231:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 706, + "name": "operation", + "nodeType": "VariableDeclaration", + "scope": 737, + "src": "11243:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + }, + "typeName": { + "contractScope": null, + "id": 705, + "name": "Operation", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 61, + "src": "11243:9:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 708, + "name": "extension", + "nodeType": "VariableDeclaration", + "scope": 737, + "src": "11264:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + }, + "typeName": { + "contractScope": null, + "id": 707, + "name": "Extension", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 18, + "src": "11264:9:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "11203:81:1" + }, + "payable": false, + "returnParameters": { + "id": 710, + "nodeType": "ParameterList", + "parameters": [], + "src": "11304:0:1" + }, + "scope": 963, + "src": "11178:464:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 790, + "nodeType": "Block", + "src": "11746:367:1", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + }, + "id": 751, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 748, + "name": "operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 745, + "src": "11760:9:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 749, + "name": "Operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 61, + "src": "11773:9:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_Operation_$61_$", + "typeString": "type(enum GnosisSafe.Operation)" + } + }, + "id": 750, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Call", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "11773:14:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + }, + "src": "11760:27:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + }, + "id": 763, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 760, + "name": "operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 745, + "src": "11857:9:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 761, + "name": "Operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 61, + "src": "11870:9:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_Operation_$61_$", + "typeString": "type(enum GnosisSafe.Operation)" + } + }, + "id": 762, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "DelegateCall", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "11870:22:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + }, + "src": "11857:35:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 787, + "nodeType": "Block", + "src": "11959:148:1", + "statements": [ + { + "assignments": [ + 772 + ], + "declarations": [ + { + "constant": false, + "id": 772, + "name": "newContract", + "nodeType": "VariableDeclaration", + "scope": 791, + "src": "11973:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 771, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11973:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 776, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 774, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 743, + "src": "12009:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 773, + "name": "executeCreate", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 824, + "src": "11995:13:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$_t_address_$", + "typeString": "function (bytes memory) returns (address)" + } + }, + "id": 775, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11995:19:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "11973:41:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 780, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 778, + "name": "newContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 772, + "src": "12036:11:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 779, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "12051:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "12036:16:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 777, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "12028:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 781, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12028:25:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 782, + "nodeType": "ExpressionStatement", + "src": "12028:25:1" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 784, + "name": "newContract", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 772, + "src": "12084:11:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 783, + "name": "ContractCreation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 25, + "src": "12067:16:1", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", + "typeString": "function (address)" + } + }, + "id": 785, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "12067:29:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 786, + "nodeType": "ExpressionStatement", + "src": "12067:29:1" + } + ] + }, + "id": 788, + "nodeType": "IfStatement", + "src": "11853:254:1", + "trueBody": { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 766, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 739, + "src": "11934:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 767, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 743, + "src": "11938:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 765, + "name": "executeDelegateCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 815, + "src": "11914:19:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bool_$", + "typeString": "function (address,bytes memory) returns (bool)" + } + }, + "id": 768, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11914:29:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 764, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "11906:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 769, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11906:38:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 770, + "nodeType": "ExpressionStatement", + "src": "11906:38:1" + } + }, + "id": 789, + "nodeType": "IfStatement", + "src": "11756:351:1", + "trueBody": { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 754, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 739, + "src": "11821:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 755, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 741, + "src": "11825:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 756, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 743, + "src": "11832:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 753, + "name": "executeCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 804, + "src": "11809:11:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$", + "typeString": "function (address,uint256,bytes memory) returns (bool)" + } + }, + "id": 757, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11809:28:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 752, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "11801:7:1", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 758, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "11801:37:1", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 759, + "nodeType": "ExpressionStatement", + "src": "11801:37:1" + } + } + ] + }, + "id": 791, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "execute", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 746, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 739, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 791, + "src": "11665:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 738, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "11665:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 741, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 791, + "src": "11677:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 740, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "11677:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 743, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 791, + "src": "11692:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + "typeName": { + "id": 742, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "11692:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 745, + "name": "operation", + "nodeType": "VariableDeclaration", + "scope": 791, + "src": "11704:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + }, + "typeName": { + "contractScope": null, + "id": 744, + "name": "Operation", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 61, + "src": "11704:9:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "11664:60:1" + }, + "payable": false, + "returnParameters": { + "id": 747, + "nodeType": "ParameterList", + "parameters": [], + "src": "11746:0:1" + }, + "scope": 963, + "src": "11648:465:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 803, + "nodeType": "Block", + "src": "12231:119:1", + "statements": [ + { + "externalReferences": [ + { + "data": { + "declaration": 797, + "isOffset": false, + "isSlot": false, + "src": "12303:4:1", + "valueSize": 1 + } + }, + { + "data": { + "declaration": 797, + "isOffset": false, + "isSlot": false, + "src": "12322:4:1", + "valueSize": 1 + } + }, + { + "success": { + "declaration": 800, + "isOffset": false, + "isSlot": false, + "src": "12264:7:1", + "valueSize": 1 + } + }, + { + "to": { + "declaration": 793, + "isOffset": false, + "isSlot": false, + "src": "12288:2:1", + "valueSize": 1 + } + }, + { + "value": { + "declaration": 795, + "isOffset": false, + "isSlot": false, + "src": "12292:5:1", + "valueSize": 1 + } + } + ], + "id": 802, + "nodeType": "InlineAssembly", + "operations": "{\n success := call(not(0), to, value, add(data, 0x20), mload(data), 0, 0)\n}", + "src": "12241:109:1" + } + ] + }, + "id": 804, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "executeCall", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 798, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 793, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 804, + "src": "12140:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 792, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12140:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 795, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 804, + "src": "12152:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 794, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "12152:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 797, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 804, + "src": "12167:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + "typeName": { + "id": 796, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "12167:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12139:39:1" + }, + "payable": false, + "returnParameters": { + "id": 801, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 800, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 804, + "src": "12213:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 799, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "12213:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12212:14:1" + }, + "scope": 963, + "src": "12119:231:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 814, + "nodeType": "Block", + "src": "12461:120:1", + "statements": [ + { + "externalReferences": [ + { + "data": { + "declaration": 808, + "isOffset": false, + "isSlot": false, + "src": "12534:4:1", + "valueSize": 1 + } + }, + { + "data": { + "declaration": 808, + "isOffset": false, + "isSlot": false, + "src": "12553:4:1", + "valueSize": 1 + } + }, + { + "success": { + "declaration": 811, + "isOffset": false, + "isSlot": false, + "src": "12494:7:1", + "valueSize": 1 + } + }, + { + "to": { + "declaration": 806, + "isOffset": false, + "isSlot": false, + "src": "12526:2:1", + "valueSize": 1 + } + } + ], + "id": 813, + "nodeType": "InlineAssembly", + "operations": "{\n success := delegatecall(not(0), to, add(data, 0x20), mload(data), 0, 0)\n}", + "src": "12471:110:1" + } + ] + }, + "id": 815, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "executeDelegateCall", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 809, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 806, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 815, + "src": "12385:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 805, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12385:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 808, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 815, + "src": "12397:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + "typeName": { + "id": 807, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "12397:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12384:24:1" + }, + "payable": false, + "returnParameters": { + "id": 812, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 811, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 815, + "src": "12443:12:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 810, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "12443:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12442:14:1" + }, + "scope": 963, + "src": "12356:225:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 823, + "nodeType": "Block", + "src": "12681:103:1", + "statements": [ + { + "externalReferences": [ + { + "data": { + "declaration": 817, + "isOffset": false, + "isSlot": false, + "src": "12762:4:1", + "valueSize": 1 + } + }, + { + "newContract": { + "declaration": 820, + "isOffset": false, + "isSlot": false, + "src": "12714:11:1", + "valueSize": 1 + } + }, + { + "data": { + "declaration": 817, + "isOffset": false, + "isSlot": false, + "src": "12743:4:1", + "valueSize": 1 + } + } + ], + "id": 822, + "nodeType": "InlineAssembly", + "operations": "{\n newContract := create(0, add(data, 0x20), mload(data))\n}", + "src": "12691:93:1" + } + ] + }, + "id": 824, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "executeCreate", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 818, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 817, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 824, + "src": "12610:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + "typeName": { + "id": 816, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "12610:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12609:12:1" + }, + "payable": false, + "returnParameters": { + "id": 821, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 820, + "name": "newContract", + "nodeType": "VariableDeclaration", + "scope": 824, + "src": "12656:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 819, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "12656:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "12655:21:1" + }, + "scope": 963, + "src": "12587:197:1", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + }, + { + "body": { + "id": 851, + "nodeType": "Block", + "src": "13238:87:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30783139", + "id": 841, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "13270:4:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_25_by_1", + "typeString": "int_const 25" + }, + "value": "0x19" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_25_by_1", + "typeString": "int_const 25" + } + ], + "id": 840, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "13265:4:1", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes1_$", + "typeString": "type(bytes1)" + }, + "typeName": "byte" + }, + "id": 842, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13265:10:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + { + "argumentTypes": null, + "id": 843, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2100, + "src": "13277:4:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + } + }, + { + "argumentTypes": null, + "id": 844, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 826, + "src": "13283:2:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 845, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 828, + "src": "13287:5:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 846, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 830, + "src": "13294:4:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 847, + "name": "operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 832, + "src": "13300:9:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + }, + { + "argumentTypes": null, + "id": 848, + "name": "_nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 834, + "src": "13311:6:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + { + "typeIdentifier": "t_contract$_GnosisSafe_$963", + "typeString": "contract GnosisSafe" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 839, + "name": "keccak256", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2083, + "src": "13255:9:1", + "typeDescriptions": { + "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", + "typeString": "function () pure returns (bytes32)" + } + }, + "id": 849, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "13255:63:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "functionReturnParameters": 838, + "id": 850, + "nodeType": "Return", + "src": "13248:70:1" + } + ] + }, + "id": 852, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "getTransactionHash", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 835, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 826, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 852, + "src": "13104:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 825, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13104:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 828, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 852, + "src": "13116:13:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 827, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13116:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 830, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 852, + "src": "13131:10:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + "typeName": { + "id": 829, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "13131:5:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 832, + "name": "operation", + "nodeType": "VariableDeclaration", + "scope": 852, + "src": "13143:19:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + }, + "typeName": { + "contractScope": null, + "id": 831, + "name": "Operation", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 61, + "src": "13143:9:1", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$61", + "typeString": "enum GnosisSafe.Operation" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 834, + "name": "_nonce", + "nodeType": "VariableDeclaration", + "scope": 852, + "src": "13164:14:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 833, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "13164:7:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "13103:76:1" + }, + "payable": false, + "returnParameters": { + "id": 838, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 837, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 852, + "src": "13225:7:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 836, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "13225:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "13224:9:1" + }, + "scope": 963, + "src": "13076:249:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 860, + "nodeType": "Block", + "src": "13488:30:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 858, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "13505:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "functionReturnParameters": 857, + "id": 859, + "nodeType": "Return", + "src": "13498:13:1" + } + ] + }, + "id": 861, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "getOwners", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 853, + "nodeType": "ParameterList", + "parameters": [], + "src": "13425:2:1" + }, + "payable": false, + "returnParameters": { + "id": 857, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 856, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 861, + "src": "13473:9:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + }, + "typeName": { + "baseType": { + "id": 854, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "13473:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 855, + "length": null, + "nodeType": "ArrayTypeName", + "src": "13473:9:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[] storage pointer" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "13472:11:1" + }, + "scope": 963, + "src": "13407:111:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 869, + "nodeType": "Block", + "src": "13690:34:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 867, + "name": "extensions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 43, + "src": "13707:10:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage", + "typeString": "contract Extension[] storage ref" + } + }, + "functionReturnParameters": 866, + "id": 868, + "nodeType": "Return", + "src": "13700:17:1" + } + ] + }, + "id": 870, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "getExtensions", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 862, + "nodeType": "ParameterList", + "parameters": [], + "src": "13625:2:1" + }, + "payable": false, + "returnParameters": { + "id": 866, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 865, + "name": "", + "nodeType": "VariableDeclaration", + "scope": 870, + "src": "13673:11:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_memory_ptr", + "typeString": "contract Extension[] memory" + }, + "typeName": { + "baseType": { + "contractScope": null, + "id": 863, + "name": "Extension", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 18, + "src": "13673:9:1", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Extension_$18", + "typeString": "contract Extension" + } + }, + "id": 864, + "length": null, + "nodeType": "ArrayTypeName", + "src": "13673:11:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage_ptr", + "typeString": "contract Extension[] storage pointer" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "13672:13:1" + }, + "scope": 963, + "src": "13603:121:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 901, + "nodeType": "Block", + "src": "13998:162:1", + "statements": [ + { + "body": { + "id": 899, + "nodeType": "Block", + "src": "14049:105:1", + "statements": [ + { + "condition": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 888, + "name": "isConfirmed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57, + "src": "14067:11:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$", + "typeString": "mapping(address => mapping(bytes32 => bool))" + } + }, + "id": 892, + "indexExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 889, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "14079:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 891, + "indexExpression": { + "argumentTypes": null, + "id": 890, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 878, + "src": "14086:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14079:9:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14067:22:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + } + }, + "id": 894, + "indexExpression": { + "argumentTypes": null, + "id": 893, + "name": "transactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 872, + "src": "14090:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14067:39:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 898, + "nodeType": "IfStatement", + "src": "14063:80:1", + "trueBody": { + "expression": { + "argumentTypes": null, + "id": 896, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "14124:19:1", + "subExpression": { + "argumentTypes": null, + "id": 895, + "name": "confirmationCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 875, + "src": "14124:17:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 897, + "nodeType": "ExpressionStatement", + "src": "14124:19:1" + } + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 884, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 881, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 878, + "src": "14025:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 882, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "14029:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 883, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "14029:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "14025:17:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 900, + "initializationExpression": { + "assignments": [ + 878 + ], + "declarations": [ + { + "constant": false, + "id": 878, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 902, + "src": "14013:6:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 877, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "14013:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 880, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 879, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14022:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "14013:10:1" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 886, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "14044:3:1", + "subExpression": { + "argumentTypes": null, + "id": 885, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 878, + "src": "14044:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 887, + "nodeType": "ExpressionStatement", + "src": "14044:3:1" + }, + "nodeType": "ForStatement", + "src": "14008:146:1" + } + ] + }, + "id": 902, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "getConfirmationCount", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 873, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 872, + "name": "transactionHash", + "nodeType": "VariableDeclaration", + "scope": 902, + "src": "13900:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 871, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "13900:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "13899:25:1" + }, + "payable": false, + "returnParameters": { + "id": 876, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 875, + "name": "confirmationCount", + "nodeType": "VariableDeclaration", + "scope": 902, + "src": "13970:22:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 874, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "13970:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "13969:24:1" + }, + "scope": 963, + "src": "13870:290:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 961, + "nodeType": "Block", + "src": "14432:407:1", + "statements": [ + { + "assignments": [ + 911 + ], + "declarations": [ + { + "constant": false, + "id": 911, + "name": "confirmationCount", + "nodeType": "VariableDeclaration", + "scope": 962, + "src": "14442:22:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 910, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "14442:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 915, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 913, + "name": "transactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 904, + "src": "14488:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + ], + "id": 912, + "name": "getConfirmationCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 902, + "src": "14467:20:1", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$", + "typeString": "function (bytes32) view returns (uint256)" + } + }, + "id": 914, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14467:37:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "14442:62:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 922, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 916, + "name": "confirmingOwners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 908, + "src": "14514:16:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 920, + "name": "confirmationCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 911, + "src": "14547:17:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 919, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "14533:13:1", + "typeDescriptions": { + "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_$", + "typeString": "function (uint256) pure returns (address[] memory)" + }, + "typeName": { + "baseType": { + "id": 917, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14537:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 918, + "length": null, + "nodeType": "ArrayTypeName", + "src": "14537:9:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[] storage pointer" + } + } + }, + "id": 921, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "14533:32:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory", + "typeString": "address[] memory" + } + }, + "src": "14514:51:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 923, + "nodeType": "ExpressionStatement", + "src": "14514:51:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 926, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 924, + "name": "confirmationCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 911, + "src": "14575:17:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 925, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14595:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "14575:21:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 927, + "nodeType": "ExpressionStatement", + "src": "14575:21:1" + }, + { + "body": { + "id": 959, + "nodeType": "Block", + "src": "14647:186:1", + "statements": [ + { + "condition": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 939, + "name": "isConfirmed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 57, + "src": "14665:11:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$", + "typeString": "mapping(address => mapping(bytes32 => bool))" + } + }, + "id": 943, + "indexExpression": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 940, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "14677:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 942, + "indexExpression": { + "argumentTypes": null, + "id": 941, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 929, + "src": "14684:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14677:9:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14665:22:1", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", + "typeString": "mapping(bytes32 => bool)" + } + }, + "id": 945, + "indexExpression": { + "argumentTypes": null, + "id": 944, + "name": "transactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 904, + "src": "14688:15:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14665:39:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 958, + "nodeType": "IfStatement", + "src": "14661:162:1", + "trueBody": { + "id": 957, + "nodeType": "Block", + "src": "14706:117:1", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 952, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 946, + "name": "confirmingOwners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 908, + "src": "14724:16:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 948, + "indexExpression": { + "argumentTypes": null, + "id": 947, + "name": "confirmationCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 911, + "src": "14741:17:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "nodeType": "IndexAccess", + "src": "14724:35:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 949, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "14762:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 951, + "indexExpression": { + "argumentTypes": null, + "id": 950, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 929, + "src": "14769:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "14762:9:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "14724:47:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 953, + "nodeType": "ExpressionStatement", + "src": "14724:47:1" + }, + { + "expression": { + "argumentTypes": null, + "id": 955, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "14789:19:1", + "subExpression": { + "argumentTypes": null, + "id": 954, + "name": "confirmationCount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 911, + "src": "14789:17:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 956, + "nodeType": "ExpressionStatement", + "src": "14789:19:1" + } + ] + } + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 935, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 932, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 929, + "src": "14623:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 933, + "name": "owners", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 40, + "src": "14627:6:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage", + "typeString": "address[] storage ref" + } + }, + "id": 934, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "14627:13:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "14623:17:1", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 960, + "initializationExpression": { + "assignments": [ + 929 + ], + "declarations": [ + { + "constant": false, + "id": 929, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 962, + "src": "14611:6:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 928, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "14611:4:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 931, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 930, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "14620:1:1", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "14611:10:1" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 937, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "14642:3:1", + "subExpression": { + "argumentTypes": null, + "id": 936, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 929, + "src": "14642:1:1", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 938, + "nodeType": "ExpressionStatement", + "src": "14642:3:1" + }, + "nodeType": "ForStatement", + "src": "14606:227:1" + } + ] + }, + "id": 962, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "getConfirmingOwners", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 905, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 904, + "name": "transactionHash", + "nodeType": "VariableDeclaration", + "scope": 962, + "src": "14330:23:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + }, + "typeName": { + "id": 903, + "name": "bytes32", + "nodeType": "ElementaryTypeName", + "src": "14330:7:1", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "14329:25:1" + }, + "payable": false, + "returnParameters": { + "id": 909, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 908, + "name": "confirmingOwners", + "nodeType": "VariableDeclaration", + "scope": 962, + "src": "14400:26:1", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + }, + "typeName": { + "baseType": { + "id": 906, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "14400:7:1", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 907, + "length": null, + "nodeType": "ArrayTypeName", + "src": "14400:9:1", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[] storage pointer" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "14399:28:1" + }, + "scope": 963, + "src": "14301:538:1", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 964, + "src": "218:14623:1" + } + ], + "src": "0:14842:1" + }, + "compiler": { + "name": "solc", + "version": "0.4.19+commit.c4cbbb05.Emscripten.clang" + }, + "networks": { + "4": { + "events": {}, + "links": {}, + "address": "0x90bbec32c6d045b37b2ee32a2bbbef640b3972d1", + "transactionHash": "0x2f6d1570cc556eef41a2d5e6d0410188979b61cbd580084cc7451a5776009204" + }, + "42": { + "events": {}, + "links": {}, + "address": "0xaefa715af8a64d96f8619daa663fd72d78a0bf28", + "transactionHash": "0x13a8bc9539b1b6652ad74f4b3cbe2ec19d48cbbe578b7496e95379e12aca1862" + }, + "1525342778744": { + "events": {}, + "links": {}, + "address": "0x84c8db395337da2e3d4fb3e26af6bf35739d49b8", + "transactionHash": "0x5b64197eda9ffa97845a6a77ff7bfb134b37c81fa74b3eef652bffbcd6879f6a" + }, + "1525789101965": { + "events": {}, + "links": {}, + "address": "0x6ad761ab330a930f611c0a19226e39ae5da5122d", + "transactionHash": "0x2030f160032d1cea96610c0485dc0fc03426ab66de7f3582cd5fd02a60b14f52" + } + }, + "schemaVersion": "2.0.0", + "updatedAt": "2018-05-08T14:18:44.047Z" +} \ No newline at end of file diff --git a/safe-contracts/build/contracts/v0/Migrations.json b/safe-contracts/build/contracts/v0/Migrations.json new file mode 100644 index 0000000000..e6b99e6ecf --- /dev/null +++ b/safe-contracts/build/contracts/v0/Migrations.json @@ -0,0 +1,1397 @@ +{ + "contractName": "Migrations", + "abi": [ + { + "constant": true, + "inputs": [], + "name": "last_completed_migration", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "owner", + "outputs": [ + { + "name": "", + "type": "address" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "constant": false, + "inputs": [ + { + "name": "completed", + "type": "uint256" + } + ], + "name": "setCompleted", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "new_address", + "type": "address" + } + ], + "name": "upgrade", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x6060604052341561000f57600080fd5b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506102db8061005e6000396000f300606060405260043610610062576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630900f01014610067578063445df0ac146100a05780638da5cb5b146100c9578063fdacd5761461011e575b600080fd5b341561007257600080fd5b61009e600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610141565b005b34156100ab57600080fd5b6100b3610224565b6040518082815260200191505060405180910390f35b34156100d457600080fd5b6100dc61022a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561012957600080fd5b61013f600480803590602001909190505061024f565b005b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610220578190508073ffffffffffffffffffffffffffffffffffffffff1663fdacd5766001546040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b151561020b57600080fd5b6102c65a03f1151561021c57600080fd5b5050505b5050565b60015481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156102ac57806001819055505b505600a165627a7a723058201cc1585f9df7ab81426097daac394849e8580cf9e44d78be5b645de915c388300029", + "deployedBytecode": "0x606060405260043610610062576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630900f01014610067578063445df0ac146100a05780638da5cb5b146100c9578063fdacd5761461011e575b600080fd5b341561007257600080fd5b61009e600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610141565b005b34156100ab57600080fd5b6100b3610224565b6040518082815260200191505060405180910390f35b34156100d457600080fd5b6100dc61022a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561012957600080fd5b61013f600480803590602001909190505061024f565b005b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610220578190508073ffffffffffffffffffffffffffffffffffffffff1663fdacd5766001546040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b151561020b57600080fd5b6102c65a03f1151561021c57600080fd5b5050505b5050565b60015481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156102ac57806001819055505b505600a165627a7a723058201cc1585f9df7ab81426097daac394849e8580cf9e44d78be5b645de915c388300029", + "sourceMap": "25:580:2:-;;;191:76;;;;;;;;250:10;242:5;;:18;;;;;;;;;;;;;;;;;;25:580;;;;;;", + "deployedSourceMap": "25:580:2:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;408:195;;;;;;;;;;;;;;;;;;;;;;;;;;;;77:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;51:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;273:129;;;;;;;;;;;;;;;;;;;;;;;;;;408:195;494:19;170:5;;;;;;;;;;;156:19;;:10;:19;;;152:26;;;527:11;494:45;;549:8;:21;;;571:24;;549:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;152:26;408:195;;:::o;77:36::-;;;;:::o;51:20::-;;;;;;;;;;;;;:::o;273:129::-;170:5;;;;;;;;;;;156:19;;:10;:19;;;152:26;;;386:9;359:24;:36;;;;152:26;273:129;:::o", + "source": "pragma solidity ^0.4.4;\n\ncontract Migrations {\n address public owner;\n uint public last_completed_migration;\n\n modifier restricted() {\n if (msg.sender == owner) _;\n }\n\n function Migrations()\n public\n {\n owner = msg.sender;\n }\n\n function setCompleted(uint completed)\n public\n restricted\n {\n last_completed_migration = completed;\n }\n\n function upgrade(address new_address)\n public\n restricted\n {\n Migrations upgraded = Migrations(new_address);\n upgraded.setCompleted(last_completed_migration);\n }\n}\n", + "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Migrations.sol", + "ast": { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Migrations.sol", + "exportedSymbols": { + "Migrations": [ + 1020 + ] + }, + "id": 1021, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 965, + "literals": [ + "solidity", + "^", + "0.4", + ".4" + ], + "nodeType": "PragmaDirective", + "src": "0:23:2" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 1020, + "linearizedBaseContracts": [ + 1020 + ], + "name": "Migrations", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 967, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 1020, + "src": "51:20:2", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 966, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "51:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 969, + "name": "last_completed_migration", + "nodeType": "VariableDeclaration", + "scope": 1020, + "src": "77:36:2", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 968, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "77:4:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "public" + }, + { + "body": { + "id": 977, + "nodeType": "Block", + "src": "142:43:2", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 974, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 971, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2089, + "src": "156:3:2", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 972, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "156:10:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 973, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 967, + "src": "170:5:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "156:19:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 976, + "nodeType": "IfStatement", + "src": "152:26:2", + "trueBody": { + "id": 975, + "nodeType": "PlaceholderStatement", + "src": "177:1:2" + } + } + ] + }, + "id": 978, + "name": "restricted", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 970, + "nodeType": "ParameterList", + "parameters": [], + "src": "139:2:2" + }, + "src": "120:65:2", + "visibility": "internal" + }, + { + "body": { + "id": 986, + "nodeType": "Block", + "src": "232:35:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 984, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 981, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 967, + "src": "242:5:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 982, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2089, + "src": "250:3:2", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 983, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "250:10:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "242:18:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 985, + "nodeType": "ExpressionStatement", + "src": "242:18:2" + } + ] + }, + "id": 987, + "implemented": true, + "isConstructor": true, + "isDeclaredConst": false, + "modifiers": [], + "name": "Migrations", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 979, + "nodeType": "ParameterList", + "parameters": [], + "src": "210:2:2" + }, + "payable": false, + "returnParameters": { + "id": 980, + "nodeType": "ParameterList", + "parameters": [], + "src": "232:0:2" + }, + "scope": 1020, + "src": "191:76:2", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 998, + "nodeType": "Block", + "src": "349:53:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 996, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 994, + "name": "last_completed_migration", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 969, + "src": "359:24:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 995, + "name": "completed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 989, + "src": "386:9:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "359:36:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 997, + "nodeType": "ExpressionStatement", + "src": "359:36:2" + } + ] + }, + "id": 999, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": [], + "id": 992, + "modifierName": { + "argumentTypes": null, + "id": 991, + "name": "restricted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 978, + "src": "334:10:2", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "334:10:2" + } + ], + "name": "setCompleted", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 990, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 989, + "name": "completed", + "nodeType": "VariableDeclaration", + "scope": 999, + "src": "295:14:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 988, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "295:4:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "294:16:2" + }, + "payable": false, + "returnParameters": { + "id": 993, + "nodeType": "ParameterList", + "parameters": [], + "src": "349:0:2" + }, + "scope": 1020, + "src": "273:129:2", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1018, + "nodeType": "Block", + "src": "484:119:2", + "statements": [ + { + "assignments": [ + 1007 + ], + "declarations": [ + { + "constant": false, + "id": 1007, + "name": "upgraded", + "nodeType": "VariableDeclaration", + "scope": 1019, + "src": "494:19:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Migrations_$1020", + "typeString": "contract Migrations" + }, + "typeName": { + "contractScope": null, + "id": 1006, + "name": "Migrations", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1020, + "src": "494:10:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Migrations_$1020", + "typeString": "contract Migrations" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1011, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1009, + "name": "new_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1001, + "src": "527:11:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1008, + "name": "Migrations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1020, + "src": "516:10:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Migrations_$1020_$", + "typeString": "type(contract Migrations)" + } + }, + "id": 1010, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "516:23:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Migrations_$1020", + "typeString": "contract Migrations" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "494:45:2" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1015, + "name": "last_completed_migration", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 969, + "src": "571:24:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1012, + "name": "upgraded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1007, + "src": "549:8:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Migrations_$1020", + "typeString": "contract Migrations" + } + }, + "id": 1014, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "setCompleted", + "nodeType": "MemberAccess", + "referencedDeclaration": 999, + "src": "549:21:2", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256) external" + } + }, + "id": 1016, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "549:47:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1017, + "nodeType": "ExpressionStatement", + "src": "549:47:2" + } + ] + }, + "id": 1019, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": [], + "id": 1004, + "modifierName": { + "argumentTypes": null, + "id": 1003, + "name": "restricted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 978, + "src": "469:10:2", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "469:10:2" + } + ], + "name": "upgrade", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1002, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1001, + "name": "new_address", + "nodeType": "VariableDeclaration", + "scope": 1019, + "src": "425:19:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1000, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "425:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "424:21:2" + }, + "payable": false, + "returnParameters": { + "id": 1005, + "nodeType": "ParameterList", + "parameters": [], + "src": "484:0:2" + }, + "scope": 1020, + "src": "408:195:2", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 1021, + "src": "25:580:2" + } + ], + "src": "0:606:2" + }, + "legacyAST": { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Migrations.sol", + "exportedSymbols": { + "Migrations": [ + 1020 + ] + }, + "id": 1021, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 965, + "literals": [ + "solidity", + "^", + "0.4", + ".4" + ], + "nodeType": "PragmaDirective", + "src": "0:23:2" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": true, + "id": 1020, + "linearizedBaseContracts": [ + 1020 + ], + "name": "Migrations", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 967, + "name": "owner", + "nodeType": "VariableDeclaration", + "scope": 1020, + "src": "51:20:2", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 966, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "51:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "public" + }, + { + "constant": false, + "id": 969, + "name": "last_completed_migration", + "nodeType": "VariableDeclaration", + "scope": 1020, + "src": "77:36:2", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 968, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "77:4:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "public" + }, + { + "body": { + "id": 977, + "nodeType": "Block", + "src": "142:43:2", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 974, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 971, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2089, + "src": "156:3:2", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 972, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "156:10:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "id": 973, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 967, + "src": "170:5:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "156:19:2", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 976, + "nodeType": "IfStatement", + "src": "152:26:2", + "trueBody": { + "id": 975, + "nodeType": "PlaceholderStatement", + "src": "177:1:2" + } + } + ] + }, + "id": 978, + "name": "restricted", + "nodeType": "ModifierDefinition", + "parameters": { + "id": 970, + "nodeType": "ParameterList", + "parameters": [], + "src": "139:2:2" + }, + "src": "120:65:2", + "visibility": "internal" + }, + { + "body": { + "id": 986, + "nodeType": "Block", + "src": "232:35:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 984, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 981, + "name": "owner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 967, + "src": "242:5:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 982, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2089, + "src": "250:3:2", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 983, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "250:10:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "242:18:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 985, + "nodeType": "ExpressionStatement", + "src": "242:18:2" + } + ] + }, + "id": 987, + "implemented": true, + "isConstructor": true, + "isDeclaredConst": false, + "modifiers": [], + "name": "Migrations", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 979, + "nodeType": "ParameterList", + "parameters": [], + "src": "210:2:2" + }, + "payable": false, + "returnParameters": { + "id": 980, + "nodeType": "ParameterList", + "parameters": [], + "src": "232:0:2" + }, + "scope": 1020, + "src": "191:76:2", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 998, + "nodeType": "Block", + "src": "349:53:2", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 996, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 994, + "name": "last_completed_migration", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 969, + "src": "359:24:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 995, + "name": "completed", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 989, + "src": "386:9:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "359:36:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 997, + "nodeType": "ExpressionStatement", + "src": "359:36:2" + } + ] + }, + "id": 999, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": [], + "id": 992, + "modifierName": { + "argumentTypes": null, + "id": 991, + "name": "restricted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 978, + "src": "334:10:2", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "334:10:2" + } + ], + "name": "setCompleted", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 990, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 989, + "name": "completed", + "nodeType": "VariableDeclaration", + "scope": 999, + "src": "295:14:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 988, + "name": "uint", + "nodeType": "ElementaryTypeName", + "src": "295:4:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "294:16:2" + }, + "payable": false, + "returnParameters": { + "id": 993, + "nodeType": "ParameterList", + "parameters": [], + "src": "349:0:2" + }, + "scope": 1020, + "src": "273:129:2", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1018, + "nodeType": "Block", + "src": "484:119:2", + "statements": [ + { + "assignments": [ + 1007 + ], + "declarations": [ + { + "constant": false, + "id": 1007, + "name": "upgraded", + "nodeType": "VariableDeclaration", + "scope": 1019, + "src": "494:19:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Migrations_$1020", + "typeString": "contract Migrations" + }, + "typeName": { + "contractScope": null, + "id": 1006, + "name": "Migrations", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1020, + "src": "494:10:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Migrations_$1020", + "typeString": "contract Migrations" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1011, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1009, + "name": "new_address", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1001, + "src": "527:11:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1008, + "name": "Migrations", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1020, + "src": "516:10:2", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Migrations_$1020_$", + "typeString": "type(contract Migrations)" + } + }, + "id": 1010, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "516:23:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Migrations_$1020", + "typeString": "contract Migrations" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "494:45:2" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1015, + "name": "last_completed_migration", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 969, + "src": "571:24:2", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1012, + "name": "upgraded", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1007, + "src": "549:8:2", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Migrations_$1020", + "typeString": "contract Migrations" + } + }, + "id": 1014, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "setCompleted", + "nodeType": "MemberAccess", + "referencedDeclaration": 999, + "src": "549:21:2", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256) external" + } + }, + "id": 1016, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "549:47:2", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1017, + "nodeType": "ExpressionStatement", + "src": "549:47:2" + } + ] + }, + "id": 1019, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": [], + "id": 1004, + "modifierName": { + "argumentTypes": null, + "id": 1003, + "name": "restricted", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 978, + "src": "469:10:2", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "469:10:2" + } + ], + "name": "upgrade", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1002, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1001, + "name": "new_address", + "nodeType": "VariableDeclaration", + "scope": 1019, + "src": "425:19:2", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1000, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "425:7:2", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "424:21:2" + }, + "payable": false, + "returnParameters": { + "id": 1005, + "nodeType": "ParameterList", + "parameters": [], + "src": "484:0:2" + }, + "scope": 1020, + "src": "408:195:2", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 1021, + "src": "25:580:2" + } + ], + "src": "0:606:2" + }, + "compiler": { + "name": "solc", + "version": "0.4.19+commit.c4cbbb05.Emscripten.clang" + }, + "networks": { + "4": { + "events": {}, + "links": {}, + "address": "0x8130ece7b262aa6e6a63a6d05b115247ba35a9ec", + "transactionHash": "0xdac98c9134a0828ac6bcf5a69d4d4154e890f197bdad53924cfdeaef1d29d363" + }, + "42": { + "events": {}, + "links": {}, + "address": "0xa31ae2d8f41b3b5a5a748c88a3dcec0640582182", + "transactionHash": "0x9f7a4b1f8709150b7efd2c2a4b31708410f3f3ad0f938d67bcef3c52d1033672" + }, + "1525342778744": { + "events": {}, + "links": {}, + "address": "0xced15a6a3e7f4f182667bf7dd3e0403b8229a97b", + "transactionHash": "0x8efec3bf60df6831ec5c77ceec27654c94b84005dfee1cb7dfae8d51c847ca93" + }, + "1525789101965": { + "events": {}, + "links": {}, + "address": "0x9cafa36304f4ce89fadc9894820e8a7684cabe02", + "transactionHash": "0xa757776d7b9eac962d1c4e89161441d296a8153da49efa8ee43d0202d894df5d" + } + }, + "schemaVersion": "2.0.0", + "updatedAt": "2018-05-08T14:18:44.026Z" +} \ No newline at end of file diff --git a/safe-contracts/build/contracts/v0/MultiSend.json b/safe-contracts/build/contracts/v0/MultiSend.json new file mode 100644 index 0000000000..e7c98caa04 --- /dev/null +++ b/safe-contracts/build/contracts/v0/MultiSend.json @@ -0,0 +1,365 @@ +{ + "contractName": "MultiSend", + "abi": [ + { + "constant": false, + "inputs": [ + { + "name": "transactions", + "type": "bytes" + } + ], + "name": "multiSend", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x6060604052341561000f57600080fd5b6101278061001e6000396000f300606060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680638d80ff0a146044575b600080fd5b3415604e57600080fd5b609c600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050609e565b005b805160205b8181101560f65780830151602082018401516060830185015160808401860160008083838688600019f16000811460d85760dd565b600080fd5b50602080602084010402608001850194505050505060a3565b5050505600a165627a7a723058207fe7130b5215c2b7fb5987a9e0c21a2085684d930840ac75e4e7c62730c93cfc0029", + "deployedBytecode": "0x606060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680638d80ff0a146044575b600080fd5b3415604e57600080fd5b609c600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050609e565b005b805160205b8181101560f65780830151602082018401516060830185015160808401860160008083838688600019f16000811460d85760dd565b600080fd5b50602080602084010402608001850194505050505060a3565b5050505600a165627a7a723058207fe7130b5215c2b7fb5987a9e0c21a2085684d930840ac75e4e7c62730c93cfc0029", + "sourceMap": "253:1012:9:-;;;;;;;;;;;;;;;;;", + "deployedSourceMap": "253:1012:9:-;;;;;;;;;;;;;;;;;;;;;;;;593:670;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;704:12;698:5;739:4;756:491;770:6;767:1;764:2;756:491;;;834:1;820:12;816:3;810:5;898:4;895:1;891:3;877:12;873:3;867:5;971:4;968:1;964:3;950:12;946:3;940:5;1032:4;1029:1;1025:3;1011:12;1007:3;1107:1;1104;1092:10;1086:4;1079:5;1075:2;1071:1;1067:3;1062:4;1131:1;1126:23;;;;1055:94;;1126:23;1145:1;1142;1135:6;1055:94;;1226:4;1219;1212;1200:10;1196:3;1192;1188;1182:4;1178:3;1175:1;1171:3;1166:67;;782:465;;;;756:491;;;670:587;;;:::o", + "source": "pragma solidity 0.4.19;\n\n\n/// @title Multi Send - Allows to batch multiple transactions into one.\n/// @author Nick Dodson - \n/// @author Gonçalo Sá - \n/// @author Stefan George - \ncontract MultiSend {\n\n /// @dev Sends multiple transactions and reverts all if one fails.\n /// @param transactions Encoded transactions. Each transaction is encoded as\n /// a tuple(address,uint256,bytes). The bytes of all\n /// encoded transactions are concatenated to form the input.\n function multiSend(bytes transactions)\n public\n {\n assembly {\n let length := mload(transactions)\n let i := 0x20\n for { } lt(i, length) { } {\n let to := mload(add(transactions, i))\n let value := mload(add(transactions, add(i, 0x20)))\n let dataLength := mload(add(transactions, add(i, 0x60)))\n let data := add(transactions, add(i, 0x80))\n switch call(not(0), to, value, data, dataLength, 0, 0)\n case 0 { revert(0, 0) }\n i := add(i, add(0x80, mul(div(add(dataLength, 0x20), 0x20), 0x20)))\n }\n }\n }\n}\n", + "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/libraries/MultiSend.sol", + "ast": { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/libraries/MultiSend.sol", + "exportedSymbols": { + "MultiSend": [ + 2016 + ] + }, + "id": 2017, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2008, + "literals": [ + "solidity", + "0.4", + ".19" + ], + "nodeType": "PragmaDirective", + "src": "0:23:9" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": "@title Multi Send - Allows to batch multiple transactions into one.\n @author Nick Dodson - \n @author Gonçalo Sá - \n @author Stefan George - ", + "fullyImplemented": true, + "id": 2016, + "linearizedBaseContracts": [ + 2016 + ], + "name": "MultiSend", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 2014, + "nodeType": "Block", + "src": "651:612:9", + "statements": [ + { + "externalReferences": [ + { + "transactions": { + "declaration": 2010, + "isOffset": false, + "isSlot": false, + "src": "704:12:9", + "valueSize": 1 + } + }, + { + "transactions": { + "declaration": 2010, + "isOffset": false, + "isSlot": false, + "src": "820:12:9", + "valueSize": 1 + } + }, + { + "transactions": { + "declaration": 2010, + "isOffset": false, + "isSlot": false, + "src": "877:12:9", + "valueSize": 1 + } + }, + { + "transactions": { + "declaration": 2010, + "isOffset": false, + "isSlot": false, + "src": "950:12:9", + "valueSize": 1 + } + }, + { + "transactions": { + "declaration": 2010, + "isOffset": false, + "isSlot": false, + "src": "1011:12:9", + "valueSize": 1 + } + } + ], + "id": 2013, + "nodeType": "InlineAssembly", + "operations": "{\n let length := mload(transactions)\n let i := 0x20\n for {\n }\n lt(i, length)\n {\n }\n {\n let to := mload(add(transactions, i))\n let value := mload(add(transactions, add(i, 0x20)))\n let dataLength := mload(add(transactions, add(i, 0x60)))\n let data := add(transactions, add(i, 0x80))\n switch call(not(0), to, value, data, dataLength, 0, 0)\n case 0 {\n revert(0, 0)\n }\n i := add(i, add(0x80, mul(div(add(dataLength, 0x20), 0x20), 0x20)))\n }\n}", + "src": "661:602:9" + } + ] + }, + "id": 2015, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "multiSend", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2011, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2010, + "name": "transactions", + "nodeType": "VariableDeclaration", + "scope": 2015, + "src": "612:18:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + "typeName": { + "id": 2009, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "612:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "611:20:9" + }, + "payable": false, + "returnParameters": { + "id": 2012, + "nodeType": "ParameterList", + "parameters": [], + "src": "651:0:9" + }, + "scope": 2016, + "src": "593:670:9", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 2017, + "src": "253:1012:9" + } + ], + "src": "0:1266:9" + }, + "legacyAST": { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/libraries/MultiSend.sol", + "exportedSymbols": { + "MultiSend": [ + 2016 + ] + }, + "id": 2017, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2008, + "literals": [ + "solidity", + "0.4", + ".19" + ], + "nodeType": "PragmaDirective", + "src": "0:23:9" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": "@title Multi Send - Allows to batch multiple transactions into one.\n @author Nick Dodson - \n @author Gonçalo Sá - \n @author Stefan George - ", + "fullyImplemented": true, + "id": 2016, + "linearizedBaseContracts": [ + 2016 + ], + "name": "MultiSend", + "nodeType": "ContractDefinition", + "nodes": [ + { + "body": { + "id": 2014, + "nodeType": "Block", + "src": "651:612:9", + "statements": [ + { + "externalReferences": [ + { + "transactions": { + "declaration": 2010, + "isOffset": false, + "isSlot": false, + "src": "704:12:9", + "valueSize": 1 + } + }, + { + "transactions": { + "declaration": 2010, + "isOffset": false, + "isSlot": false, + "src": "820:12:9", + "valueSize": 1 + } + }, + { + "transactions": { + "declaration": 2010, + "isOffset": false, + "isSlot": false, + "src": "877:12:9", + "valueSize": 1 + } + }, + { + "transactions": { + "declaration": 2010, + "isOffset": false, + "isSlot": false, + "src": "950:12:9", + "valueSize": 1 + } + }, + { + "transactions": { + "declaration": 2010, + "isOffset": false, + "isSlot": false, + "src": "1011:12:9", + "valueSize": 1 + } + } + ], + "id": 2013, + "nodeType": "InlineAssembly", + "operations": "{\n let length := mload(transactions)\n let i := 0x20\n for {\n }\n lt(i, length)\n {\n }\n {\n let to := mload(add(transactions, i))\n let value := mload(add(transactions, add(i, 0x20)))\n let dataLength := mload(add(transactions, add(i, 0x60)))\n let data := add(transactions, add(i, 0x80))\n switch call(not(0), to, value, data, dataLength, 0, 0)\n case 0 {\n revert(0, 0)\n }\n i := add(i, add(0x80, mul(div(add(dataLength, 0x20), 0x20), 0x20)))\n }\n}", + "src": "661:602:9" + } + ] + }, + "id": 2015, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "multiSend", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2011, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2010, + "name": "transactions", + "nodeType": "VariableDeclaration", + "scope": 2015, + "src": "612:18:9", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + "typeName": { + "id": 2009, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "612:5:9", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "611:20:9" + }, + "payable": false, + "returnParameters": { + "id": 2012, + "nodeType": "ParameterList", + "parameters": [], + "src": "651:0:9" + }, + "scope": 2016, + "src": "593:670:9", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 2017, + "src": "253:1012:9" + } + ], + "src": "0:1266:9" + }, + "compiler": { + "name": "solc", + "version": "0.4.19+commit.c4cbbb05.Emscripten.clang" + }, + "networks": { + "4": { + "events": {}, + "links": {}, + "address": "0xb42ea77ed35188c3d9f478ede1883c7fc3889bf4", + "transactionHash": "0x49884b2c77b96bd8fab92acb25cb6c1d31322f8d8a5285168b629d02ff0942df" + }, + "42": { + "events": {}, + "links": {}, + "address": "0xa64866921fa040d96080a66327b57d3659aa3cb2", + "transactionHash": "0x0976055636f5f47833e456b68bbd3bd73497c17c1b51072795ee7ca472c7a1ee" + }, + "1525342778744": { + "events": {}, + "links": {}, + "address": "0x1751f194e16ab8cc857b37bbbca9b796b182691b", + "transactionHash": "0xf406441274f4472d909145b4145733064edd26a8ef0c5cd1b00d19a481cec4fd" + }, + "1525789101965": { + "events": {}, + "links": {}, + "address": "0x1e2dee6ce961ee356fd4382bf3e34e9b7f3876ce", + "transactionHash": "0x03595ae31f80fbcd00b5c0e5c51593841fe78041c8750420decf364f0f3d724c" + } + }, + "schemaVersion": "2.0.0", + "updatedAt": "2018-05-08T14:18:44.025Z" +} \ No newline at end of file diff --git a/safe-contracts/build/contracts/v0/MultiSendStruct.json b/safe-contracts/build/contracts/v0/MultiSendStruct.json new file mode 100644 index 0000000000..58264cc55e --- /dev/null +++ b/safe-contracts/build/contracts/v0/MultiSendStruct.json @@ -0,0 +1,1678 @@ +{ + "contractName": "MultiSendStruct", + "abi": [ + { + "constant": false, + "inputs": [ + { + "components": [ + { + "name": "to", + "type": "address" + }, + { + "name": "value", + "type": "uint256" + }, + { + "name": "data", + "type": "bytes" + } + ], + "name": "transactions", + "type": "tuple[]" + } + ], + "name": "multiSend", + "outputs": [], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x6060604052341561000f57600080fd5b6104338061001e6000396000f300606060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632f6fda4a14610046575b600080fd5b341561005157600080fd5b61006660046100619036906102d1565b610068565b005b60006100726100e8565b600091505b82518210156100c957828281518110151561008e57fe5b9060200190602002015190506100b18160000151826020015183604001516100ce565b15156100bc57600080fd5b8180600101925050610077565b505050565b60008060008351602085018688600019f190509392505050565b606060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001610120610126565b81525090565b602060405190810160405280600081525090565b600061014682356103c0565b905092915050565b600082601f8301126000811461016357610168565b600080fd5b50813561017c6101778261035a565b610324565b9150818183526020840193506020810190508360005b838110156101c257813586016101a88882610233565b845260208401935060208301925050600181019050610192565b5050505092915050565b600082601f830112600081146101e1576101e6565b600080fd5b5081356101fa6101f58261038b565b610324565b915080825260208301602083018583830111600181146102195761021e565b600080fd5b5061022a8382846103ea565b50505092915050565b6000606082840312600181146102485761024d565b600080fd5b506102586060610324565b905060006102688482850161013a565b600083015250602061027c848285016102bd565b602083015250604082013567ffffffffffffffff81116001811461029f576102a4565b600080fd5b506102b1848285016101cc565b60408301525092915050565b60006102c982356103e0565b905092915050565b6000602082840312600181146102e6576102eb565b600080fd5b50600082013567ffffffffffffffff8111600181146103095761030e565b600080fd5b5061031b8482850161014e565b91505092915050565b6000604051905081810181811067ffffffffffffffff8211176001811461034a5761034f565b600080fd5b508060405250919050565b600067ffffffffffffffff82116001811461037457610379565b600080fd5b50602082029050602081019050919050565b600067ffffffffffffffff8211600181146103a5576103aa565b600080fd5b50601f19601f8301169050602081019050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b828183376000838301525050505600a265627a7a72305820484c17df168e13c63e6cab3910c3609158f4993315f595b990932cc0a3f27c726c6578706572696d656e74616cf50037", + "deployedBytecode": "0x606060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632f6fda4a14610046575b600080fd5b341561005157600080fd5b61006660046100619036906102d1565b610068565b005b60006100726100e8565b600091505b82518210156100c957828281518110151561008e57fe5b9060200190602002015190506100b18160000151826020015183604001516100ce565b15156100bc57600080fd5b8180600101925050610077565b505050565b60008060008351602085018688600019f190509392505050565b606060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001610120610126565b81525090565b602060405190810160405280600081525090565b600061014682356103c0565b905092915050565b600082601f8301126000811461016357610168565b600080fd5b50813561017c6101778261035a565b610324565b9150818183526020840193506020810190508360005b838110156101c257813586016101a88882610233565b845260208401935060208301925050600181019050610192565b5050505092915050565b600082601f830112600081146101e1576101e6565b600080fd5b5081356101fa6101f58261038b565b610324565b915080825260208301602083018583830111600181146102195761021e565b600080fd5b5061022a8382846103ea565b50505092915050565b6000606082840312600181146102485761024d565b600080fd5b506102586060610324565b905060006102688482850161013a565b600083015250602061027c848285016102bd565b602083015250604082013567ffffffffffffffff81116001811461029f576102a4565b600080fd5b506102b1848285016101cc565b60408301525092915050565b60006102c982356103e0565b905092915050565b6000602082840312600181146102e6576102eb565b600080fd5b50600082013567ffffffffffffffff8111600181146103095761030e565b600080fd5b5061031b8482850161014e565b91505092915050565b6000604051905081810181811067ffffffffffffffff8211176001811461034a5761034f565b600080fd5b508060405250919050565b600067ffffffffffffffff82116001811461037457610379565b600080fd5b50602082029050602081019050919050565b600067ffffffffffffffff8211600181146103a5576103aa565b600080fd5b50601f19601f8301169050602081019050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b828183376000838301525050505600a265627a7a72305820484c17df168e13c63e6cab3910c3609158f4993315f595b990932cc0a3f27c726c6578706572696d656e74616cf50037", + "sourceMap": "339:772:10:-;;;;;;;;;;;;;;;;;", + "deployedSourceMap": "339:772:10:-;;;;;;;;;;;;;;;;;;;;;;;;581:291;;;;;;;;;;;;;;;;;;;;;;;661:9;720:30;;:::i;:::-;673:1;661:13;;657:209;680:12;:19;676:1;:23;657:209;;;753:12;766:1;753:15;;;;;;;;;;;;;;;;;;720:48;;790:64;802:11;:14;;;818:11;:17;;;837:11;:16;;;790:11;:64::i;:::-;782:73;;;;;;;;701:3;;;;;;;657:209;;;581:291;;;:::o;878:231::-;972:12;1091:1;1088;1081:4;1075:5;1068:4;1062;1058:3;1051:5;1047:2;1043:1;1039:3;1034:4;1023:70;;1009:94;;;;;:::o;339:772::-;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;5:118:-1:-;;72:46;110:6;97:12;72:46;;;63:55;;57:66;;;;;175:756;;314:3;307:4;299:6;295:3;291;324:1;319:23;;;;284:58;;319:23;338:1;335;328:6;284:58;;375:6;362:12;397:105;412:89;494:6;412:89;;;397:105;;;388:114;;519:5;544:6;537:5;530:6;574:4;566:6;562:3;552:27;;596:4;591:3;587;580:21;;649:6;682:1;667:258;692:6;689:1;686:2;667:258;;;775:3;762:12;754:6;750:3;799:62;857:3;845:10;799:62;;;794:3;787:6;885:4;880:3;876;869:21;;913:4;908:3;904;897:21;;724:201;714:1;711;707:3;702:14;;667:258;;;671:14;277:654;;;;;;;;940:446;;1034:3;1027:4;1019:6;1015:3;1011;1044:1;1039:23;;;;1004:58;;1039:23;1058:1;1055;1048:6;1004:58;;1095:6;1082:12;1117:60;1132:44;1169:6;1132:44;;;1117:60;;;1108:69;;1197:6;1190:5;1183:6;1233:4;1225:6;1221:3;1266:4;1259:5;1255:3;1305;1296:6;1291:3;1287;1284:2;1315:1;1310:23;;;;1277:56;;1310:23;1329:1;1326;1319:6;1277:56;;1339:41;1373:6;1368:3;1363;1339:41;;;997:389;;;;;;;;1435:722;;1553:4;1541:9;1536:3;1532;1528;1564:1;1559:23;;;;1521:61;;1559:23;1578:1;1575;1568:6;1521:61;;1596:20;1611:4;1596:20;;;1587:29;;1664:1;1695:49;1740:3;1731:6;1720:9;1716:3;1695:49;;;1689:3;1682:5;1678:3;1671:6;1626:130;1807:2;1840:49;1885:3;1876:6;1865:9;1861:3;1840:49;;;1833:4;1826:5;1822:3;1815:6;1766:135;1979:2;1968:9;1964:3;1951:12;2007:18;1999:6;1996:2;2032:1;2027:23;;;;1989:61;;2027:23;2046:1;2043;2036:6;1989:61;;2081:54;2131:3;2122:6;2111:9;2107:3;2081:54;;;2074:4;2067:5;2063:3;2056:6;1911:236;1515:642;;;;;2164:118;;2231:46;2269:6;2256:12;2231:46;;;2222:55;;2216:66;;;;;2289:449;;2447:2;2435:9;2426:7;2422:3;2418;2456:1;2451:23;;;;2411:63;;2451:23;2470:1;2467;2460:6;2411:63;;2533:1;2522:9;2518:3;2505:12;2560:18;2552:6;2549:2;2585:1;2580:23;;;;2542:61;;2580:23;2599:1;2596;2589:6;2542:61;;2619:103;2714:7;2705:6;2694:9;2690:3;2619:103;;;2609:113;;2484:244;2405:333;;;;;2745:267;;2807:2;2801:5;2791:19;;2845:4;2837:6;2833:3;2948:6;2936:10;2933:2;2912:18;2900:10;2897:2;2894;2962:1;2957:23;;;;2887:93;;2957:23;2976:1;2973;2966:6;2887:93;;2996:10;2992:2;2985:6;2785:227;;;;;3019:294;;3207:18;3199:6;3196:2;3232:1;3227:23;;;;3189:61;;3227:23;3246:1;3243;3236:6;3189:61;;3275:4;3267:6;3263:3;3255:25;;3303:4;3297;3293:3;3285:23;;3126:187;;;;3320:265;;3463:18;3455:6;3452:2;3488:1;3483:23;;;;3445:61;;3483:23;3502:1;3499;3492:6;3445:61;;3546:4;3542:3;3535:4;3527:6;3523:3;3519;3511:41;;3575:4;3569;3565:3;3557:23;;3382:203;;;;3592:128;;3672:42;3665:5;3661:3;3650:65;;3644:76;;;;3727:79;;3796:5;3785:16;;3779:27;;;;3814:145;3895:6;3890:3;3885;3872:12;3951:1;3942:6;3937:3;3933;3926:6;3865:94;;;", + "source": "pragma solidity ^0.4.19;\npragma experimental ABIEncoderV2;\n\n\n/// @title Multi Send - Allows to batch multiple transactions into one.\n/// @author Nick Dodson - \n/// @author Gonçalo Sá - \n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract MultiSendStruct {\n\n struct Transaction {\n address to;\n uint256 value;\n bytes data;\n }\n\n /// @dev Sends multiple transactions and reverts all if one fails.\n /// @param transactions Encoded transactions.\n function multiSend(Transaction[] transactions)\n public\n {\n for(uint256 i = 0; i < transactions.length; i++) {\n Transaction memory transaction = transactions[i];\n require(executeCall(transaction.to, transaction.value, transaction.data));\n }\n }\n\n function executeCall(address to, uint256 value, bytes data)\n internal\n returns (bool success)\n {\n assembly {\n success := call(not(0), to, value, add(data, 0x20), mload(data), 0, 0)\n }\n }\n}\n", + "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/libraries/MultiSendStruct.sol", + "ast": { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/libraries/MultiSendStruct.sol", + "exportedSymbols": { + "MultiSendStruct": [ + 2077 + ] + }, + "id": 2078, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2018, + "literals": [ + "solidity", + "^", + "0.4", + ".19" + ], + "nodeType": "PragmaDirective", + "src": "0:24:10" + }, + { + "id": 2019, + "literals": [ + "experimental", + "ABIEncoderV2" + ], + "nodeType": "PragmaDirective", + "src": "25:33:10" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": "@title Multi Send - Allows to batch multiple transactions into one.\n @author Nick Dodson - \n @author Gonçalo Sá - \n @author Stefan George - \n @author Richard Meissner - ", + "fullyImplemented": true, + "id": 2077, + "linearizedBaseContracts": [ + 2077 + ], + "name": "MultiSendStruct", + "nodeType": "ContractDefinition", + "nodes": [ + { + "canonicalName": "MultiSendStruct.Transaction", + "id": 2026, + "members": [ + { + "constant": false, + "id": 2021, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 2026, + "src": "398:10:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2020, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "398:7:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2023, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 2026, + "src": "416:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2022, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "416:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2025, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 2026, + "src": "437:10:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + }, + "typeName": { + "id": 2024, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "437:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "Transaction", + "nodeType": "StructDefinition", + "scope": 2077, + "src": "371:83:10", + "visibility": "public" + }, + { + "body": { + "id": 2062, + "nodeType": "Block", + "src": "647:225:10", + "statements": [ + { + "body": { + "id": 2060, + "nodeType": "Block", + "src": "706:160:10", + "statements": [ + { + "assignments": [ + 2044 + ], + "declarations": [ + { + "constant": false, + "id": 2044, + "name": "transaction", + "nodeType": "VariableDeclaration", + "scope": 2063, + "src": "720:30:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Transaction_$2026_memory_ptr", + "typeString": "struct MultiSendStruct.Transaction memory" + }, + "typeName": { + "contractScope": null, + "id": 2043, + "name": "Transaction", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2026, + "src": "720:11:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Transaction_$2026_storage_ptr", + "typeString": "struct MultiSendStruct.Transaction storage pointer" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2048, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2045, + "name": "transactions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2029, + "src": "753:12:10", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Transaction_$2026_memory_$dyn_memory_ptr", + "typeString": "struct MultiSendStruct.Transaction memory[] memory" + } + }, + "id": 2047, + "indexExpression": { + "argumentTypes": null, + "id": 2046, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2033, + "src": "766:1:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "753:15:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Transaction_$2026_memory", + "typeString": "struct MultiSendStruct.Transaction memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "720:48:10" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2051, + "name": "transaction", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2044, + "src": "802:11:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Transaction_$2026_memory_ptr", + "typeString": "struct MultiSendStruct.Transaction memory" + } + }, + "id": 2052, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "to", + "nodeType": "MemberAccess", + "referencedDeclaration": 2021, + "src": "802:14:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2053, + "name": "transaction", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2044, + "src": "818:11:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Transaction_$2026_memory_ptr", + "typeString": "struct MultiSendStruct.Transaction memory" + } + }, + "id": 2054, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": 2023, + "src": "818:17:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2055, + "name": "transaction", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2044, + "src": "837:11:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Transaction_$2026_memory_ptr", + "typeString": "struct MultiSendStruct.Transaction memory" + } + }, + "id": 2056, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "data", + "nodeType": "MemberAccess", + "referencedDeclaration": 2025, + "src": "837:16:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory", + "typeString": "bytes memory" + } + ], + "id": 2050, + "name": "executeCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2076, + "src": "790:11:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$", + "typeString": "function (address,uint256,bytes memory) returns (bool)" + } + }, + "id": 2057, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "790:64:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2049, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "782:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2058, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "782:73:10", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2059, + "nodeType": "ExpressionStatement", + "src": "782:73:10" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2039, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2036, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2033, + "src": "676:1:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2037, + "name": "transactions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2029, + "src": "680:12:10", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Transaction_$2026_memory_$dyn_memory_ptr", + "typeString": "struct MultiSendStruct.Transaction memory[] memory" + } + }, + "id": 2038, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "680:19:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "676:23:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2061, + "initializationExpression": { + "assignments": [ + 2033 + ], + "declarations": [ + { + "constant": false, + "id": 2033, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 2063, + "src": "661:9:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2032, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "661:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2035, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 2034, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "673:1:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "661:13:10" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 2041, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "701:3:10", + "subExpression": { + "argumentTypes": null, + "id": 2040, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2033, + "src": "701:1:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2042, + "nodeType": "ExpressionStatement", + "src": "701:3:10" + }, + "nodeType": "ForStatement", + "src": "657:209:10" + } + ] + }, + "id": 2063, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "multiSend", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2030, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2029, + "name": "transactions", + "nodeType": "VariableDeclaration", + "scope": 2063, + "src": "600:26:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Transaction_$2026_memory_$dyn_memory_ptr", + "typeString": "struct MultiSendStruct.Transaction memory[] memory" + }, + "typeName": { + "baseType": { + "contractScope": null, + "id": 2027, + "name": "Transaction", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2026, + "src": "600:11:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Transaction_$2026_storage_ptr", + "typeString": "struct MultiSendStruct.Transaction storage pointer" + } + }, + "id": 2028, + "length": null, + "nodeType": "ArrayTypeName", + "src": "600:13:10", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Transaction_$2026_storage_$dyn_storage_ptr", + "typeString": "struct MultiSendStruct.Transaction storage ref[] storage pointer" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "599:28:10" + }, + "payable": false, + "returnParameters": { + "id": 2031, + "nodeType": "ParameterList", + "parameters": [], + "src": "647:0:10" + }, + "scope": 2077, + "src": "581:291:10", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2075, + "nodeType": "Block", + "src": "990:119:10", + "statements": [ + { + "externalReferences": [ + { + "data": { + "declaration": 2069, + "isOffset": false, + "isSlot": false, + "src": "1062:4:10", + "valueSize": 1 + } + }, + { + "data": { + "declaration": 2069, + "isOffset": false, + "isSlot": false, + "src": "1081:4:10", + "valueSize": 1 + } + }, + { + "success": { + "declaration": 2072, + "isOffset": false, + "isSlot": false, + "src": "1023:7:10", + "valueSize": 1 + } + }, + { + "to": { + "declaration": 2065, + "isOffset": false, + "isSlot": false, + "src": "1047:2:10", + "valueSize": 1 + } + }, + { + "value": { + "declaration": 2067, + "isOffset": false, + "isSlot": false, + "src": "1051:5:10", + "valueSize": 1 + } + } + ], + "id": 2074, + "nodeType": "InlineAssembly", + "operations": "{\n success := call(not(0), to, value, add(data, 0x20), mload(data), 0, 0)\n}", + "src": "1000:109:10" + } + ] + }, + "id": 2076, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "executeCall", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2070, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2065, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 2076, + "src": "899:10:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2064, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "899:7:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2067, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 2076, + "src": "911:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2066, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "911:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2069, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 2076, + "src": "926:10:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + "typeName": { + "id": 2068, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "926:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "898:39:10" + }, + "payable": false, + "returnParameters": { + "id": 2073, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2072, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 2076, + "src": "972:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2071, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "972:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "971:14:10" + }, + "scope": 2077, + "src": "878:231:10", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 2078, + "src": "339:772:10" + } + ], + "src": "0:1112:10" + }, + "legacyAST": { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/libraries/MultiSendStruct.sol", + "exportedSymbols": { + "MultiSendStruct": [ + 2077 + ] + }, + "id": 2078, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 2018, + "literals": [ + "solidity", + "^", + "0.4", + ".19" + ], + "nodeType": "PragmaDirective", + "src": "0:24:10" + }, + { + "id": 2019, + "literals": [ + "experimental", + "ABIEncoderV2" + ], + "nodeType": "PragmaDirective", + "src": "25:33:10" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": "@title Multi Send - Allows to batch multiple transactions into one.\n @author Nick Dodson - \n @author Gonçalo Sá - \n @author Stefan George - \n @author Richard Meissner - ", + "fullyImplemented": true, + "id": 2077, + "linearizedBaseContracts": [ + 2077 + ], + "name": "MultiSendStruct", + "nodeType": "ContractDefinition", + "nodes": [ + { + "canonicalName": "MultiSendStruct.Transaction", + "id": 2026, + "members": [ + { + "constant": false, + "id": 2021, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 2026, + "src": "398:10:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2020, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "398:7:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2023, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 2026, + "src": "416:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2022, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "416:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2025, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 2026, + "src": "437:10:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + }, + "typeName": { + "id": 2024, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "437:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "Transaction", + "nodeType": "StructDefinition", + "scope": 2077, + "src": "371:83:10", + "visibility": "public" + }, + { + "body": { + "id": 2062, + "nodeType": "Block", + "src": "647:225:10", + "statements": [ + { + "body": { + "id": 2060, + "nodeType": "Block", + "src": "706:160:10", + "statements": [ + { + "assignments": [ + 2044 + ], + "declarations": [ + { + "constant": false, + "id": 2044, + "name": "transaction", + "nodeType": "VariableDeclaration", + "scope": 2063, + "src": "720:30:10", + "stateVariable": false, + "storageLocation": "memory", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Transaction_$2026_memory_ptr", + "typeString": "struct MultiSendStruct.Transaction memory" + }, + "typeName": { + "contractScope": null, + "id": 2043, + "name": "Transaction", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2026, + "src": "720:11:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Transaction_$2026_storage_ptr", + "typeString": "struct MultiSendStruct.Transaction storage pointer" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2048, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 2045, + "name": "transactions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2029, + "src": "753:12:10", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Transaction_$2026_memory_$dyn_memory_ptr", + "typeString": "struct MultiSendStruct.Transaction memory[] memory" + } + }, + "id": 2047, + "indexExpression": { + "argumentTypes": null, + "id": 2046, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2033, + "src": "766:1:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "753:15:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Transaction_$2026_memory", + "typeString": "struct MultiSendStruct.Transaction memory" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "720:48:10" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2051, + "name": "transaction", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2044, + "src": "802:11:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Transaction_$2026_memory_ptr", + "typeString": "struct MultiSendStruct.Transaction memory" + } + }, + "id": 2052, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "to", + "nodeType": "MemberAccess", + "referencedDeclaration": 2021, + "src": "802:14:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2053, + "name": "transaction", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2044, + "src": "818:11:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Transaction_$2026_memory_ptr", + "typeString": "struct MultiSendStruct.Transaction memory" + } + }, + "id": 2054, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "value", + "nodeType": "MemberAccess", + "referencedDeclaration": 2023, + "src": "818:17:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2055, + "name": "transaction", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2044, + "src": "837:11:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Transaction_$2026_memory_ptr", + "typeString": "struct MultiSendStruct.Transaction memory" + } + }, + "id": 2056, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "data", + "nodeType": "MemberAccess", + "referencedDeclaration": 2025, + "src": "837:16:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory", + "typeString": "bytes memory" + } + ], + "id": 2050, + "name": "executeCall", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2076, + "src": "790:11:10", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$", + "typeString": "function (address,uint256,bytes memory) returns (bool)" + } + }, + "id": 2057, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "790:64:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 2049, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "782:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 2058, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "782:73:10", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 2059, + "nodeType": "ExpressionStatement", + "src": "782:73:10" + } + ] + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 2039, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 2036, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2033, + "src": "676:1:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 2037, + "name": "transactions", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2029, + "src": "680:12:10", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Transaction_$2026_memory_$dyn_memory_ptr", + "typeString": "struct MultiSendStruct.Transaction memory[] memory" + } + }, + "id": 2038, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "680:19:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "676:23:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "id": 2061, + "initializationExpression": { + "assignments": [ + 2033 + ], + "declarations": [ + { + "constant": false, + "id": 2033, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 2063, + "src": "661:9:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2032, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "661:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 2035, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 2034, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "673:1:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "661:13:10" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 2041, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "701:3:10", + "subExpression": { + "argumentTypes": null, + "id": 2040, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2033, + "src": "701:1:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 2042, + "nodeType": "ExpressionStatement", + "src": "701:3:10" + }, + "nodeType": "ForStatement", + "src": "657:209:10" + } + ] + }, + "id": 2063, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "multiSend", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2030, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2029, + "name": "transactions", + "nodeType": "VariableDeclaration", + "scope": 2063, + "src": "600:26:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Transaction_$2026_memory_$dyn_memory_ptr", + "typeString": "struct MultiSendStruct.Transaction memory[] memory" + }, + "typeName": { + "baseType": { + "contractScope": null, + "id": 2027, + "name": "Transaction", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 2026, + "src": "600:11:10", + "typeDescriptions": { + "typeIdentifier": "t_struct$_Transaction_$2026_storage_ptr", + "typeString": "struct MultiSendStruct.Transaction storage pointer" + } + }, + "id": 2028, + "length": null, + "nodeType": "ArrayTypeName", + "src": "600:13:10", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_struct$_Transaction_$2026_storage_$dyn_storage_ptr", + "typeString": "struct MultiSendStruct.Transaction storage ref[] storage pointer" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "599:28:10" + }, + "payable": false, + "returnParameters": { + "id": 2031, + "nodeType": "ParameterList", + "parameters": [], + "src": "647:0:10" + }, + "scope": 2077, + "src": "581:291:10", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 2075, + "nodeType": "Block", + "src": "990:119:10", + "statements": [ + { + "externalReferences": [ + { + "data": { + "declaration": 2069, + "isOffset": false, + "isSlot": false, + "src": "1062:4:10", + "valueSize": 1 + } + }, + { + "data": { + "declaration": 2069, + "isOffset": false, + "isSlot": false, + "src": "1081:4:10", + "valueSize": 1 + } + }, + { + "success": { + "declaration": 2072, + "isOffset": false, + "isSlot": false, + "src": "1023:7:10", + "valueSize": 1 + } + }, + { + "to": { + "declaration": 2065, + "isOffset": false, + "isSlot": false, + "src": "1047:2:10", + "valueSize": 1 + } + }, + { + "value": { + "declaration": 2067, + "isOffset": false, + "isSlot": false, + "src": "1051:5:10", + "valueSize": 1 + } + } + ], + "id": 2074, + "nodeType": "InlineAssembly", + "operations": "{\n success := call(not(0), to, value, add(data, 0x20), mload(data), 0, 0)\n}", + "src": "1000:109:10" + } + ] + }, + "id": 2076, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "executeCall", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 2070, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2065, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 2076, + "src": "899:10:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2064, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "899:7:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2067, + "name": "value", + "nodeType": "VariableDeclaration", + "scope": 2076, + "src": "911:13:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 2066, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "911:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2069, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 2076, + "src": "926:10:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + "typeName": { + "id": 2068, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "926:5:10", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "898:39:10" + }, + "payable": false, + "returnParameters": { + "id": 2073, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 2072, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 2076, + "src": "972:12:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 2071, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "972:4:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "971:14:10" + }, + "scope": 2077, + "src": "878:231:10", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "internal" + } + ], + "scope": 2078, + "src": "339:772:10" + } + ], + "src": "0:1112:10" + }, + "compiler": { + "name": "solc", + "version": "0.4.19+commit.c4cbbb05.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "2.0.0", + "updatedAt": "2018-05-04T10:42:18.395Z" +} \ No newline at end of file diff --git a/safe-contracts/build/contracts/v0/Proxy.json b/safe-contracts/build/contracts/v0/Proxy.json new file mode 100644 index 0000000000..ddba9fa348 --- /dev/null +++ b/safe-contracts/build/contracts/v0/Proxy.json @@ -0,0 +1,644 @@ +{ + "contractName": "Proxy", + "abi": [ + { + "inputs": [ + { + "name": "_masterCopy", + "type": "address" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "payable": true, + "stateMutability": "payable", + "type": "fallback" + } + ], + "bytecode": "0x6060604052341561000f57600080fd5b6040516020806101108339810160405280805190602001909190505060008173ffffffffffffffffffffffffffffffffffffffff161415151561005157600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506070806100a06000396000f300606060405273ffffffffffffffffffffffffffffffffffffffff60005416366000803760008036600084600019f43d6000803e8060008114603f573d6000f35b3d6000fd00a165627a7a72305820daad8330a1c74b6650ef400638bc3fcb59dcd0b0341bff33bbe640bd2ffdaff60029", + "deployedBytecode": "0x606060405273ffffffffffffffffffffffffffffffffffffffff60005416366000803760008036600084600019f43d6000803e8060008114603f573d6000f35b3d6000fd00a165627a7a72305820daad8330a1c74b6650ef400638bc3fcb59dcd0b0341bff33bbe640bd2ffdaff60029", + "sourceMap": "190:887:3:-;;;357:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;445:1;430:11;:16;;;;422:25;;;;;;;;470:11;457:10;;:24;;;;;;;;;;;;;;;;;;357:131;190:887;;;;;;", + "deployedSourceMap": "190:887:3:-;;;703:42;699:1;693:5;689:3;778:12;775:1;772;759:12;876:1;873;857:12;854:1;842:10;838:1;834:3;821:12;912:14;909:1;906;891:14;949:7;974:1;969:38;;;;1040:14;1037:1;1030:6;969:38;988:14;985:1;978:6", + "source": "pragma solidity 0.4.19;\n\n\n/// @title Proxy - Generic proxy contract allows to execute all transactions applying the code of a master contract.\n/// @author Stefan George - \ncontract Proxy {\n\n address masterCopy;\n\n /// @dev Constructor function sets address of master copy contract.\n /// @param _masterCopy Master copy address.\n function Proxy(address _masterCopy)\n public\n {\n require(_masterCopy != 0);\n masterCopy = _masterCopy;\n }\n\n /// @dev Fallback function forwards all transactions and returns all received return data.\n function ()\n external\n payable\n {\n assembly {\n let masterCopy := and(sload(0), 0xffffffffffffffffffffffffffffffffffffffff)\n calldatacopy(0, 0, calldatasize())\n let success := delegatecall(not(0), masterCopy, 0, calldatasize(), 0, 0)\n returndatacopy(0, 0, returndatasize())\n switch success\n case 0 { revert(0, returndatasize()) }\n default { return(0, returndatasize()) }\n }\n }\n}\n", + "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Proxy.sol", + "ast": { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Proxy.sol", + "exportedSymbols": { + "Proxy": [ + 1046 + ] + }, + "id": 1047, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1022, + "literals": [ + "solidity", + "0.4", + ".19" + ], + "nodeType": "PragmaDirective", + "src": "0:23:3" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": "@title Proxy - Generic proxy contract allows to execute all transactions applying the code of a master contract.\n @author Stefan George - ", + "fullyImplemented": true, + "id": 1046, + "linearizedBaseContracts": [ + 1046 + ], + "name": "Proxy", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 1024, + "name": "masterCopy", + "nodeType": "VariableDeclaration", + "scope": 1046, + "src": "212:18:3", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1023, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "212:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "body": { + "id": 1039, + "nodeType": "Block", + "src": "412:76:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1032, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1030, + "name": "_masterCopy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1026, + "src": "430:11:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1031, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "445:1:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "430:16:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1029, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "422:7:3", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1033, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "422:25:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1034, + "nodeType": "ExpressionStatement", + "src": "422:25:3" + }, + { + "expression": { + "argumentTypes": null, + "id": 1037, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1035, + "name": "masterCopy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1024, + "src": "457:10:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1036, + "name": "_masterCopy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1026, + "src": "470:11:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "457:24:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1038, + "nodeType": "ExpressionStatement", + "src": "457:24:3" + } + ] + }, + "id": 1040, + "implemented": true, + "isConstructor": true, + "isDeclaredConst": false, + "modifiers": [], + "name": "Proxy", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1027, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1026, + "name": "_masterCopy", + "nodeType": "VariableDeclaration", + "scope": 1040, + "src": "372:19:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1025, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "372:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "371:21:3" + }, + "payable": false, + "returnParameters": { + "id": 1028, + "nodeType": "ParameterList", + "parameters": [], + "src": "412:0:3" + }, + "scope": 1046, + "src": "357:131:3", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1044, + "nodeType": "Block", + "src": "638:437:3", + "statements": [ + { + "externalReferences": [], + "id": 1043, + "nodeType": "InlineAssembly", + "operations": "{\n let masterCopy := and(sload(0), 0xffffffffffffffffffffffffffffffffffffffff)\n calldatacopy(0, 0, calldatasize())\n let success := delegatecall(not(0), masterCopy, 0, calldatasize(), 0, 0)\n returndatacopy(0, 0, returndatasize())\n switch success\n case 0 {\n revert(0, returndatasize())\n }\n default {\n return(0, returndatasize())\n }\n}", + "src": "648:427:3" + } + ] + }, + "id": 1045, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1041, + "nodeType": "ParameterList", + "parameters": [], + "src": "598:2:3" + }, + "payable": true, + "returnParameters": { + "id": 1042, + "nodeType": "ParameterList", + "parameters": [], + "src": "638:0:3" + }, + "scope": 1046, + "src": "589:486:3", + "stateMutability": "payable", + "superFunction": null, + "visibility": "external" + } + ], + "scope": 1047, + "src": "190:887:3" + } + ], + "src": "0:1078:3" + }, + "legacyAST": { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Proxy.sol", + "exportedSymbols": { + "Proxy": [ + 1046 + ] + }, + "id": 1047, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1022, + "literals": [ + "solidity", + "0.4", + ".19" + ], + "nodeType": "PragmaDirective", + "src": "0:23:3" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": "@title Proxy - Generic proxy contract allows to execute all transactions applying the code of a master contract.\n @author Stefan George - ", + "fullyImplemented": true, + "id": 1046, + "linearizedBaseContracts": [ + 1046 + ], + "name": "Proxy", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 1024, + "name": "masterCopy", + "nodeType": "VariableDeclaration", + "scope": 1046, + "src": "212:18:3", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1023, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "212:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "body": { + "id": 1039, + "nodeType": "Block", + "src": "412:76:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1032, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1030, + "name": "_masterCopy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1026, + "src": "430:11:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1031, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "445:1:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "430:16:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1029, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2092, + "src": "422:7:3", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1033, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "422:25:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1034, + "nodeType": "ExpressionStatement", + "src": "422:25:3" + }, + { + "expression": { + "argumentTypes": null, + "id": 1037, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1035, + "name": "masterCopy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1024, + "src": "457:10:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "id": 1036, + "name": "_masterCopy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1026, + "src": "470:11:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "457:24:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1038, + "nodeType": "ExpressionStatement", + "src": "457:24:3" + } + ] + }, + "id": 1040, + "implemented": true, + "isConstructor": true, + "isDeclaredConst": false, + "modifiers": [], + "name": "Proxy", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1027, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1026, + "name": "_masterCopy", + "nodeType": "VariableDeclaration", + "scope": 1040, + "src": "372:19:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1025, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "372:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "371:21:3" + }, + "payable": false, + "returnParameters": { + "id": 1028, + "nodeType": "ParameterList", + "parameters": [], + "src": "412:0:3" + }, + "scope": 1046, + "src": "357:131:3", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1044, + "nodeType": "Block", + "src": "638:437:3", + "statements": [ + { + "externalReferences": [], + "id": 1043, + "nodeType": "InlineAssembly", + "operations": "{\n let masterCopy := and(sload(0), 0xffffffffffffffffffffffffffffffffffffffff)\n calldatacopy(0, 0, calldatasize())\n let success := delegatecall(not(0), masterCopy, 0, calldatasize(), 0, 0)\n returndatacopy(0, 0, returndatasize())\n switch success\n case 0 {\n revert(0, returndatasize())\n }\n default {\n return(0, returndatasize())\n }\n}", + "src": "648:427:3" + } + ] + }, + "id": 1045, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1041, + "nodeType": "ParameterList", + "parameters": [], + "src": "598:2:3" + }, + "payable": true, + "returnParameters": { + "id": 1042, + "nodeType": "ParameterList", + "parameters": [], + "src": "638:0:3" + }, + "scope": 1046, + "src": "589:486:3", + "stateMutability": "payable", + "superFunction": null, + "visibility": "external" + } + ], + "scope": 1047, + "src": "190:887:3" + } + ], + "src": "0:1078:3" + }, + "compiler": { + "name": "solc", + "version": "0.4.19+commit.c4cbbb05.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "2.0.0", + "updatedAt": "2018-05-04T10:42:18.368Z" +} \ No newline at end of file diff --git a/safe-contracts/build/contracts/v0/ProxyFactory.json b/safe-contracts/build/contracts/v0/ProxyFactory.json new file mode 100644 index 0000000000..ad986eb501 --- /dev/null +++ b/safe-contracts/build/contracts/v0/ProxyFactory.json @@ -0,0 +1,1014 @@ +{ + "contractName": "ProxyFactory", + "abi": [ + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "name": "proxy", + "type": "address" + } + ], + "name": "ProxyCreation", + "type": "event" + }, + { + "constant": false, + "inputs": [ + { + "name": "masterCopy", + "type": "address" + }, + { + "name": "data", + "type": "bytes" + } + ], + "name": "createProxy", + "outputs": [ + { + "name": "proxy", + "type": "address" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + } + ], + "bytecode": "0x6060604052341561000f57600080fd5b61033e8061001e6000396000f300606060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806361b69abd14610046575b600080fd5b341561005157600080fd5b6100c0600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050610102565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008261010d6101f2565b808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f080151561015957600080fd5b905060008251111561018957600080835160208501600085600019f16000811461018257610187565b600080fd5b505b7fa38789425dbeee0239e16ff2d2567e31720127fbc6430758c1a4efc6aef29f8081604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a192915050565b604051610110806102038339019056006060604052341561000f57600080fd5b6040516020806101108339810160405280805190602001909190505060008173ffffffffffffffffffffffffffffffffffffffff161415151561005157600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506070806100a06000396000f300606060405273ffffffffffffffffffffffffffffffffffffffff60005416366000803760008036600084600019f43d6000803e8060008114603f573d6000f35b3d6000fd00a165627a7a72305820daad8330a1c74b6650ef400638bc3fcb59dcd0b0341bff33bbe640bd2ffdaff60029a165627a7a7230582016c17d280f9b2d074d821cd6f6e791d8a9100e0da9af1a0cc86af635d90935070029", + "deployedBytecode": "0x606060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806361b69abd14610046575b600080fd5b341561005157600080fd5b6100c0600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050610102565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008261010d6101f2565b808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f080151561015957600080fd5b905060008251111561018957600080835160208501600085600019f16000811461018257610187565b600080fd5b505b7fa38789425dbeee0239e16ff2d2567e31720127fbc6430758c1a4efc6aef29f8081604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a192915050565b604051610110806102038339019056006060604052341561000f57600080fd5b6040516020806101108339810160405280805190602001909190505060008173ffffffffffffffffffffffffffffffffffffffff161415151561005157600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506070806100a06000396000f300606060405273ffffffffffffffffffffffffffffffffffffffff60005416366000803760008036600084600019f43d6000803e8060008114603f573d6000f35b3d6000fd00a165627a7a72305820daad8330a1c74b6650ef400638bc3fcb59dcd0b0341bff33bbe640bd2ffdaff60029a165627a7a7230582016c17d280f9b2d074d821cd6f6e791d8a9100e0da9af1a0cc86af635d90935070029", + "sourceMap": "225:675:4:-;;;;;;;;;;;;;;;;;", + "deployedSourceMap": "225:675:4:-;;;;;;;;;;;;;;;;;;;;;;;;532:366;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;617:11;662:10;652:21;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;644:29;;701:1;687:4;:11;:15;683:201;;;806:1;803;796:4;790:5;783:4;777;773:3;770:1;763:5;759:1;755:3;750:4;830:1;825:23;;;;743:105;;825:23;844:1;841;834:6;743:105;;725:137;871:20;885:5;871:20;;;;;;;;;;;;;;;;;;;;;;532:366;;;;:::o;225:675::-;;;;;;;;;;:::o", + "source": "pragma solidity 0.4.19;\nimport \"./Proxy.sol\";\n\n\n/// @title Proxy Factory - Allows to create new proxy contact and execute a message call to the new proxy within one transaction.\n/// @author Stefan George - \ncontract ProxyFactory {\n\n event ProxyCreation(Proxy proxy);\n\n /// @dev Allows to create new proxy contact and execute a message call to the new proxy within one transaction.\n /// @param masterCopy Address of master copy.\n /// @param data Payload for message call sent to new proxy contract.\n function createProxy(address masterCopy, bytes data)\n public\n returns (Proxy proxy)\n {\n proxy = new Proxy(masterCopy);\n if (data.length > 0)\n assembly {\n switch call(not(0), proxy, 0, add(data, 0x20), mload(data), 0, 0)\n case 0 { revert(0, 0) }\n }\n ProxyCreation(proxy);\n }\n}\n", + "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ProxyFactory.sol", + "ast": { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ProxyFactory.sol", + "exportedSymbols": { + "ProxyFactory": [ + 1081 + ] + }, + "id": 1082, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1048, + "literals": [ + "solidity", + "0.4", + ".19" + ], + "nodeType": "PragmaDirective", + "src": "0:23:4" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Proxy.sol", + "file": "./Proxy.sol", + "id": 1049, + "nodeType": "ImportDirective", + "scope": 1082, + "sourceUnit": 1047, + "src": "24:21:4", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [], + "contractDependencies": [ + 1046 + ], + "contractKind": "contract", + "documentation": "@title Proxy Factory - Allows to create new proxy contact and execute a message call to the new proxy within one transaction.\n @author Stefan George - ", + "fullyImplemented": true, + "id": 1081, + "linearizedBaseContracts": [ + 1081 + ], + "name": "ProxyFactory", + "nodeType": "ContractDefinition", + "nodes": [ + { + "anonymous": false, + "id": 1053, + "name": "ProxyCreation", + "nodeType": "EventDefinition", + "parameters": { + "id": 1052, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1051, + "indexed": false, + "name": "proxy", + "nodeType": "VariableDeclaration", + "scope": 1053, + "src": "274:11:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Proxy_$1046", + "typeString": "contract Proxy" + }, + "typeName": { + "contractScope": null, + "id": 1050, + "name": "Proxy", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1046, + "src": "274:5:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Proxy_$1046", + "typeString": "contract Proxy" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "273:13:4" + }, + "src": "254:33:4" + }, + { + "body": { + "id": 1079, + "nodeType": "Block", + "src": "634:264:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1067, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1062, + "name": "proxy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1060, + "src": "644:5:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Proxy_$1046", + "typeString": "contract Proxy" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1065, + "name": "masterCopy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1055, + "src": "662:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1064, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "652:9:4", + "typeDescriptions": { + "typeIdentifier": "t_function_creation_nonpayable$_t_address_$returns$_t_contract$_Proxy_$1046_$", + "typeString": "function (address) returns (contract Proxy)" + }, + "typeName": { + "contractScope": null, + "id": 1063, + "name": "Proxy", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1046, + "src": "656:5:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Proxy_$1046", + "typeString": "contract Proxy" + } + } + }, + "id": 1066, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "652:21:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Proxy_$1046", + "typeString": "contract Proxy" + } + }, + "src": "644:29:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Proxy_$1046", + "typeString": "contract Proxy" + } + }, + "id": 1068, + "nodeType": "ExpressionStatement", + "src": "644:29:4" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1072, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1069, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1057, + "src": "687:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 1070, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "687:11:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1071, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "701:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "687:15:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1074, + "nodeType": "IfStatement", + "src": "683:201:4", + "trueBody": { + "externalReferences": [ + { + "data": { + "declaration": 1057, + "isOffset": false, + "isSlot": false, + "src": "777:4:4", + "valueSize": 1 + } + }, + { + "data": { + "declaration": 1057, + "isOffset": false, + "isSlot": false, + "src": "796:4:4", + "valueSize": 1 + } + }, + { + "proxy": { + "declaration": 1060, + "isOffset": false, + "isSlot": false, + "src": "763:5:4", + "valueSize": 1 + } + } + ], + "id": 1073, + "nodeType": "InlineAssembly", + "operations": "{\n switch call(not(0), proxy, 0, add(data, 0x20), mload(data), 0, 0)\n case 0 {\n revert(0, 0)\n }\n}", + "src": "716:168:4" + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1076, + "name": "proxy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1060, + "src": "885:5:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Proxy_$1046", + "typeString": "contract Proxy" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Proxy_$1046", + "typeString": "contract Proxy" + } + ], + "id": 1075, + "name": "ProxyCreation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1053, + "src": "871:13:4", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_contract$_Proxy_$1046_$returns$__$", + "typeString": "function (contract Proxy)" + } + }, + "id": 1077, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "871:20:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1078, + "nodeType": "ExpressionStatement", + "src": "871:20:4" + } + ] + }, + "id": 1080, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "createProxy", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1058, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1055, + "name": "masterCopy", + "nodeType": "VariableDeclaration", + "scope": 1080, + "src": "553:18:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1054, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "553:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1057, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 1080, + "src": "573:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + "typeName": { + "id": 1056, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "573:5:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "552:32:4" + }, + "payable": false, + "returnParameters": { + "id": 1061, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1060, + "name": "proxy", + "nodeType": "VariableDeclaration", + "scope": 1080, + "src": "617:11:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Proxy_$1046", + "typeString": "contract Proxy" + }, + "typeName": { + "contractScope": null, + "id": 1059, + "name": "Proxy", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1046, + "src": "617:5:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Proxy_$1046", + "typeString": "contract Proxy" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "616:13:4" + }, + "scope": 1081, + "src": "532:366:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 1082, + "src": "225:675:4" + } + ], + "src": "0:901:4" + }, + "legacyAST": { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ProxyFactory.sol", + "exportedSymbols": { + "ProxyFactory": [ + 1081 + ] + }, + "id": 1082, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1048, + "literals": [ + "solidity", + "0.4", + ".19" + ], + "nodeType": "PragmaDirective", + "src": "0:23:4" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Proxy.sol", + "file": "./Proxy.sol", + "id": 1049, + "nodeType": "ImportDirective", + "scope": 1082, + "sourceUnit": 1047, + "src": "24:21:4", + "symbolAliases": [], + "unitAlias": "" + }, + { + "baseContracts": [], + "contractDependencies": [ + 1046 + ], + "contractKind": "contract", + "documentation": "@title Proxy Factory - Allows to create new proxy contact and execute a message call to the new proxy within one transaction.\n @author Stefan George - ", + "fullyImplemented": true, + "id": 1081, + "linearizedBaseContracts": [ + 1081 + ], + "name": "ProxyFactory", + "nodeType": "ContractDefinition", + "nodes": [ + { + "anonymous": false, + "id": 1053, + "name": "ProxyCreation", + "nodeType": "EventDefinition", + "parameters": { + "id": 1052, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1051, + "indexed": false, + "name": "proxy", + "nodeType": "VariableDeclaration", + "scope": 1053, + "src": "274:11:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Proxy_$1046", + "typeString": "contract Proxy" + }, + "typeName": { + "contractScope": null, + "id": 1050, + "name": "Proxy", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1046, + "src": "274:5:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Proxy_$1046", + "typeString": "contract Proxy" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "273:13:4" + }, + "src": "254:33:4" + }, + { + "body": { + "id": 1079, + "nodeType": "Block", + "src": "634:264:4", + "statements": [ + { + "expression": { + "argumentTypes": null, + "id": 1067, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "id": 1062, + "name": "proxy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1060, + "src": "644:5:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Proxy_$1046", + "typeString": "contract Proxy" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1065, + "name": "masterCopy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1055, + "src": "662:10:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1064, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "NewExpression", + "src": "652:9:4", + "typeDescriptions": { + "typeIdentifier": "t_function_creation_nonpayable$_t_address_$returns$_t_contract$_Proxy_$1046_$", + "typeString": "function (address) returns (contract Proxy)" + }, + "typeName": { + "contractScope": null, + "id": 1063, + "name": "Proxy", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1046, + "src": "656:5:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Proxy_$1046", + "typeString": "contract Proxy" + } + } + }, + "id": 1066, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "652:21:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Proxy_$1046", + "typeString": "contract Proxy" + } + }, + "src": "644:29:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Proxy_$1046", + "typeString": "contract Proxy" + } + }, + "id": 1068, + "nodeType": "ExpressionStatement", + "src": "644:29:4" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1072, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1069, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1057, + "src": "687:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + "id": 1070, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "687:11:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1071, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "701:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "687:15:4", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1074, + "nodeType": "IfStatement", + "src": "683:201:4", + "trueBody": { + "externalReferences": [ + { + "data": { + "declaration": 1057, + "isOffset": false, + "isSlot": false, + "src": "777:4:4", + "valueSize": 1 + } + }, + { + "data": { + "declaration": 1057, + "isOffset": false, + "isSlot": false, + "src": "796:4:4", + "valueSize": 1 + } + }, + { + "proxy": { + "declaration": 1060, + "isOffset": false, + "isSlot": false, + "src": "763:5:4", + "valueSize": 1 + } + } + ], + "id": 1073, + "nodeType": "InlineAssembly", + "operations": "{\n switch call(not(0), proxy, 0, add(data, 0x20), mload(data), 0, 0)\n case 0 {\n revert(0, 0)\n }\n}", + "src": "716:168:4" + } + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1076, + "name": "proxy", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1060, + "src": "885:5:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Proxy_$1046", + "typeString": "contract Proxy" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_Proxy_$1046", + "typeString": "contract Proxy" + } + ], + "id": 1075, + "name": "ProxyCreation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1053, + "src": "871:13:4", + "typeDescriptions": { + "typeIdentifier": "t_function_event_nonpayable$_t_contract$_Proxy_$1046_$returns$__$", + "typeString": "function (contract Proxy)" + } + }, + "id": 1077, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "871:20:4", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1078, + "nodeType": "ExpressionStatement", + "src": "871:20:4" + } + ] + }, + "id": 1080, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "createProxy", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1058, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1055, + "name": "masterCopy", + "nodeType": "VariableDeclaration", + "scope": 1080, + "src": "553:18:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1054, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "553:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1057, + "name": "data", + "nodeType": "VariableDeclaration", + "scope": 1080, + "src": "573:10:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + "typeName": { + "id": 1056, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "573:5:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes storage pointer" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "552:32:4" + }, + "payable": false, + "returnParameters": { + "id": 1061, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1060, + "name": "proxy", + "nodeType": "VariableDeclaration", + "scope": 1080, + "src": "617:11:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Proxy_$1046", + "typeString": "contract Proxy" + }, + "typeName": { + "contractScope": null, + "id": 1059, + "name": "Proxy", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1046, + "src": "617:5:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_Proxy_$1046", + "typeString": "contract Proxy" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "616:13:4" + }, + "scope": 1081, + "src": "532:366:4", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + } + ], + "scope": 1082, + "src": "225:675:4" + } + ], + "src": "0:901:4" + }, + "compiler": { + "name": "solc", + "version": "0.4.19+commit.c4cbbb05.Emscripten.clang" + }, + "networks": { + "4": { + "events": {}, + "links": {}, + "address": "0x28442b8a4c6ffbe02fa75a1d1524b7c38ef79194", + "transactionHash": "0xc0e9f6268bb1b4e75e1683d0d93175523c18a23ef01bf660f6332d54ca03ad92" + }, + "42": { + "events": {}, + "links": {}, + "address": "0x53294c9c8def7e613c5bc68ac232125c0a60bef7", + "transactionHash": "0x641afc57ac89b6f66587df51dda6b602bf35fc0feef170b48e8a047729eb8784" + }, + "1525342778744": { + "events": {}, + "links": {}, + "address": "0xba6fb7147e7586b483610639adf7ad72ca52bb0f", + "transactionHash": "0x9eef5bbd728a1a1add6215268dd534fda491d32af43574c029fefa98eb798e03" + }, + "1525789101965": { + "events": {}, + "links": {}, + "address": "0x6fc8a87bf7e3499f14c21396b773cc92adb7d1e6", + "transactionHash": "0x70d96a3ae7424f041f6d56773e5500d9eecc075b3ec5b9fb63ee06b91354965c" + } + }, + "schemaVersion": "2.0.0", + "updatedAt": "2018-05-08T14:18:44.019Z" +} \ No newline at end of file diff --git a/safe-contracts/build/contracts/SocialRecoveryExtension.json b/safe-contracts/build/contracts/v0/SocialRecoveryExtension.json similarity index 100% rename from safe-contracts/build/contracts/SocialRecoveryExtension.json rename to safe-contracts/build/contracts/v0/SocialRecoveryExtension.json diff --git a/safe-contracts/build/contracts/WhitelistExtension.json b/safe-contracts/build/contracts/v0/WhitelistExtension.json similarity index 100% rename from safe-contracts/build/contracts/WhitelistExtension.json rename to safe-contracts/build/contracts/v0/WhitelistExtension.json From 3c740c0dbb1daff7c08348435d804ff109b1fc33 Mon Sep 17 00:00:00 2001 From: apanizo Date: Thu, 10 May 2018 15:06:34 +0200 Subject: [PATCH 043/138] WA-238 Updating code to new safe-contracts version --- package.json | 2 +- .../safe/component/Withdrawn/withdrawn.js | 15 +++++------ src/wallets/safeContracts.js | 27 ++++++++++--------- yarn.lock | 24 ++++++++++++----- 4 files changed, 39 insertions(+), 29 deletions(-) diff --git a/package.json b/package.json index 71bb2202d6..4b744801c5 100644 --- a/package.json +++ b/package.json @@ -87,7 +87,7 @@ "storybook-host": "^4.1.5", "storybook-router": "^0.3.3", "style-loader": "^0.20.2", - "truffle": "4.1.5", + "truffle": "4.1.8", "truffle-contract": "^1.1.8", "truffle-solidity-loader": "0.0.8", "uglifyjs-webpack-plugin": "^1.2.2", diff --git a/src/routes/safe/component/Withdrawn/withdrawn.js b/src/routes/safe/component/Withdrawn/withdrawn.js index afa42f446c..e2001e3b02 100644 --- a/src/routes/safe/component/Withdrawn/withdrawn.js +++ b/src/routes/safe/component/Withdrawn/withdrawn.js @@ -9,24 +9,21 @@ const withdrawn = async (values: Object, safeAddress: string, userAccount: strin const web3 = getWeb3() const gnosisSafe = getGnosisSafeContract(web3).at(safeAddress) - const extensions = await gnosisSafe.getExtensions() - const dailyAddress = extensions[0] - const dailyLimitExtension = getCreateDailyLimitExtensionContract(web3).at(dailyAddress) - if (await dailyLimitExtension.gnosisSafe() !== gnosisSafe.address) { + const modules = await gnosisSafe.getModules() + const dailyAddress = modules[0] + + const dailyLimitModule = getCreateDailyLimitExtensionContract(web3).at(dailyAddress) + if (await dailyLimitModule.manager.call() !== gnosisSafe.address) { throw new Error('Using an extension of different safe') } const destination = values[DESTINATION_PARAM] const value = web3.toWei(values[VALUE_PARAM], 'ether') - const CALL = 0 - - await gnosisSafe.executeExtension( + await dailyLimitModule.executeDailyLimit( destination, value, 0, - CALL, - dailyLimitExtension.address, { from: userAccount, gas: '5000000' }, ) } diff --git a/src/wallets/safeContracts.js b/src/wallets/safeContracts.js index e1f64bc05f..243e2276f2 100644 --- a/src/wallets/safeContracts.js +++ b/src/wallets/safeContracts.js @@ -3,10 +3,10 @@ import contract from 'truffle-contract' import { promisify } from '~/utils/promisify' import { ensureOnce } from '~/utils/singleton' import { getWeb3 } from '~/wallets/getWeb3' -import GnosisSafeSol from '#/GnosisSafe.json' +import GnosisSafeSol from '#/GnosisSafeTeamEdition.json' import ProxyFactorySol from '#/ProxyFactory.json' -import CreateAndAddExtensionSol from '#/CreateAndAddExtension.json' -import DailyLimitExtensionSol from '#/DailyLimitExtension.json' +import CreateAndAddModule from '#/CreateAndAddModule.json' +import DailyLimitModule from '#/DailyLimitModule.json' let proxyFactoryMaster let createAndAddExtensionMaster @@ -28,17 +28,17 @@ const createProxyFactoryContract = (web3: any) => { } const createAddExtensionContract = (web3: any) => { - const createAndAddExtension = contract(CreateAndAddExtensionSol) - createAndAddExtension.setProvider(web3.currentProvider) + const createAndAddModule = contract(CreateAndAddModule) + createAndAddModule.setProvider(web3.currentProvider) - return createAndAddExtension + return createAndAddModule } const createDailyLimitExtensionContract = (web3: any) => { - const dailyLimitExtension = contract(DailyLimitExtensionSol) - dailyLimitExtension.setProvider(web3.currentProvider) + const dailyLimitModule = contract(DailyLimitModule) + dailyLimitModule.setProvider(web3.currentProvider) - return dailyLimitExtension + return dailyLimitModule } export const getGnosisSafeContract = ensureOnce(createGnosisSafeContract) @@ -88,11 +88,14 @@ export const initContracts = ensureOnce(createMasterCopies) const getSafeDataBasedOn = async (accounts, numConfirmations, dailyLimitInEth) => { const web3 = getWeb3() - const extensionData = await dailyLimitMaster.contract.setup + + const moduleData = await dailyLimitMaster.contract.setup .getData([0], [web3.toWei(dailyLimitInEth, 'ether')]) + const proxyFactoryData = await proxyFactoryMaster.contract.createProxy - .getData(dailyLimitMaster.address, extensionData) - const createAndAddExtensionData = createAndAddExtensionMaster.contract.createAndAddExtension + .getData(dailyLimitMaster.address, moduleData) + + const createAndAddExtensionData = createAndAddExtensionMaster.contract.createAndAddModule .getData(proxyFactoryMaster.address, proxyFactoryData) return safeMaster.contract.setup diff --git a/yarn.lock b/yarn.lock index 799524f3cb..0e8a027b10 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10477,9 +10477,9 @@ sockjs@0.3.19: faye-websocket "^0.10.0" uuid "^3.0.1" -solc@0.4.21, solc@^0.4.2: - version "0.4.21" - resolved "https://registry.yarnpkg.com/solc/-/solc-0.4.21.tgz#6a7ecd505bfa0fc268330d5de6b9ae65c8c68264" +solc@0.4.23: + version "0.4.23" + resolved "https://registry.yarnpkg.com/solc/-/solc-0.4.23.tgz#54a0ff4015827b32fddb62c0a418b5247310a58e" dependencies: fs-extra "^0.30.0" memorystream "^0.3.1" @@ -10505,6 +10505,16 @@ solc@^0.3.6: require-from-string "^1.1.0" yargs "^4.7.1" +solc@^0.4.2: + version "0.4.21" + resolved "https://registry.yarnpkg.com/solc/-/solc-0.4.21.tgz#6a7ecd505bfa0fc268330d5de6b9ae65c8c68264" + dependencies: + fs-extra "^0.30.0" + memorystream "^0.3.1" + require-from-string "^1.1.0" + semver "^5.3.0" + yargs "^4.7.1" + solidity-parser@^0.1.0, solidity-parser@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/solidity-parser/-/solidity-parser-0.1.1.tgz#0fb3b665ed7041bef4575962ee426e7cd9d0a90a" @@ -11252,13 +11262,13 @@ truffle-solidity-loader@0.0.8: truffle "^2.0.8" web3 "^0.17.0-alpha" -truffle@4.1.5: - version "4.1.5" - resolved "https://registry.yarnpkg.com/truffle/-/truffle-4.1.5.tgz#763c8175fe5ea1ada92aa7a02eff84b4ab272f72" +truffle@4.1.8: + version "4.1.8" + resolved "https://registry.yarnpkg.com/truffle/-/truffle-4.1.8.tgz#b0b9175e0270145999567a3f0a2337c914a23a9c" dependencies: mocha "^3.4.2" original-require "^1.0.1" - solc "0.4.21" + solc "0.4.23" truffle@^2.0.8: version "2.1.2" From 5f1931c039ed81cd1b2cbe3c10053ac47bdf9351 Mon Sep 17 00:00:00 2001 From: apanizo Date: Thu, 10 May 2018 16:56:45 +0200 Subject: [PATCH 044/138] WA-238 Cleanning tests --- src/routes/safe/component/Safe.test.js | 8 -------- 1 file changed, 8 deletions(-) diff --git a/src/routes/safe/component/Safe.test.js b/src/routes/safe/component/Safe.test.js index bf6689f42c..50049ea094 100644 --- a/src/routes/safe/component/Safe.test.js +++ b/src/routes/safe/component/Safe.test.js @@ -69,13 +69,5 @@ describe('React DOM TESTS > Withdrawn funds from safe', () => { const withdrawnButtons = TestUtils.scryRenderedComponentsWithType(Withdrawn, Button) const visitTxsButton = withdrawnButtons[0] expect(visitTxsButton.props.children).toEqual(SEE_TXS_BUTTON_TEXT) - // Add funds to the Safe - // Add to store the match param [address] - // Render safe - // Simulate click NEXT - // Simulate click FINISH - // Give some time - // find the visit txs button - // check the funds on the destination and safe are correct }) }) From 1e42b3d67e9843937cdd99db31b72d5e1828b3ae Mon Sep 17 00:00:00 2001 From: apanizo Date: Fri, 11 May 2018 15:25:16 +0200 Subject: [PATCH 045/138] WA-238 Adapting dailyLimit in safes to store the amount spent --- src/routes/safe/component/Safe/DailyLimit.jsx | 38 +++++++++++-------- src/routes/safe/component/Safe/index.jsx | 2 +- src/routes/safe/store/actions/addSafe.js | 8 +++- src/routes/safe/store/model/safe.js | 14 ++++++- .../safe/store/test/builder/safe.builder.js | 5 ++- 5 files changed, 45 insertions(+), 22 deletions(-) diff --git a/src/routes/safe/component/Safe/DailyLimit.jsx b/src/routes/safe/component/Safe/DailyLimit.jsx index a19bb462ba..23b909f1c7 100644 --- a/src/routes/safe/component/Safe/DailyLimit.jsx +++ b/src/routes/safe/component/Safe/DailyLimit.jsx @@ -7,26 +7,32 @@ import Button from '~/components/layout/Button' import ListItemText from '~/components/List/ListItemText' type Props = { - limit: number, + dailyLimit: number, onWithdrawn: () => void, } export const WITHDRAWN_BUTTON_TEXT = 'Withdrawn' -const DailyLimit = ({ limit, onWithdrawn }: Props) => ( - - - - - - - -) +const DailyLimit = ({ dailyLimit, onWithdrawn }: Props) => { + const limit = dailyLimit.get('value') + const disabled = dailyLimit.get('todaySpent') > limit + + return ( + + + + + + + + ) +} export default DailyLimit diff --git a/src/routes/safe/component/Safe/index.jsx b/src/routes/safe/component/Safe/index.jsx index 563f069c7b..752a9907c4 100644 --- a/src/routes/safe/component/Safe/index.jsx +++ b/src/routes/safe/component/Safe/index.jsx @@ -55,7 +55,7 @@ class GnoSafe extends React.PureComponent {
- + diff --git a/src/routes/safe/store/actions/addSafe.js b/src/routes/safe/store/actions/addSafe.js index e4a1801e69..d5a3836c8f 100644 --- a/src/routes/safe/store/actions/addSafe.js +++ b/src/routes/safe/store/actions/addSafe.js @@ -1,7 +1,7 @@ // @flow import { List } from 'immutable' import { createAction } from 'redux-actions' -import { type SafeProps } from '~/routes/safe/store/model/safe' +import { makeDailyLimit, type DailyLimit, type SafeProps } from '~/routes/safe/store/model/safe' import { makeOwner, type Owner } from '~/routes/safe/store/model/owner' export const ADD_SAFE = 'ADD_SAFE' @@ -12,14 +12,18 @@ export const buildOwnersFrom = (names: string[], addresses: string[]) => { return List(owners) } +export const buildDailyLimitFrom = (dailyLimit: number): DailyLimit => + makeDailyLimit({ value: dailyLimit, spentToday: 0 }) + const addSafe = createAction( ADD_SAFE, ( name: string, address: string, - confirmations: number, dailyLimit: number, + confirmations: number, limit: number, ownersName: string[], ownersAddress: string[], ): SafeProps => { const owners: List = buildOwnersFrom(ownersName, ownersAddress) + const dailyLimit: DailyLimit = buildDailyLimitFrom(limit) return ({ address, name, confirmations, owners, dailyLimit, diff --git a/src/routes/safe/store/model/safe.js b/src/routes/safe/store/model/safe.js index 28e25209e2..cc9149d845 100644 --- a/src/routes/safe/store/model/safe.js +++ b/src/routes/safe/store/model/safe.js @@ -3,6 +3,18 @@ import { List, Record } from 'immutable' import type { RecordFactory, RecordOf } from 'immutable' import type { Owner } from '~/routes/safe/store/model/owner' +export type DailyLimitProps = { + value: number, + spentToday: number, +} + +export const makeDailyLimit: RecordFactory = Record({ + value: 0, + spentToday: 0, +}) + +export type DailyLimit = RecordOf + export type SafeProps = { name: string, address: string, @@ -16,7 +28,7 @@ export const makeSafe: RecordFactory = Record({ address: '', confirmations: 0, owners: List([]), - dailyLimit: 0, + dailyLimit: makeDailyLimit(), }) export type Safe = RecordOf diff --git a/src/routes/safe/store/test/builder/safe.builder.js b/src/routes/safe/store/test/builder/safe.builder.js index 0bde9e05b3..5edc8e259e 100644 --- a/src/routes/safe/store/test/builder/safe.builder.js +++ b/src/routes/safe/store/test/builder/safe.builder.js @@ -1,6 +1,6 @@ // @flow import { makeSafe, type Safe } from '~/routes/safe/store/model/safe' -import { buildOwnersFrom } from '~/routes/safe/store/actions' +import { buildOwnersFrom, buildDailyLimitFrom } from '~/routes/safe/store/actions' class SafeBuilder { safe: Safe @@ -25,7 +25,8 @@ class SafeBuilder { } withDailyLimit(limit: number) { - this.safe = this.safe.set('dailyLimit', limit) + const dailyLimit = buildDailyLimitFrom(limit) + this.safe = this.safe.set('dailyLimit', dailyLimit) return this } From 86fad267ca33f92eb6b5d8d7f635b736fe24029c Mon Sep 17 00:00:00 2001 From: apanizo Date: Fri, 11 May 2018 18:07:02 +0200 Subject: [PATCH 046/138] WA-238 get Daily Limit by token from the safe smart contract (useful for spentToday) --- src/routes/safe/component/Safe.test.js | 21 +++++++++++++++- .../safe/component/Withdrawn/withdrawn.js | 24 ++++++++++++++++++- 2 files changed, 43 insertions(+), 2 deletions(-) diff --git a/src/routes/safe/component/Safe.test.js b/src/routes/safe/component/Safe.test.js index 50049ea094..653bf16e3c 100644 --- a/src/routes/safe/component/Safe.test.js +++ b/src/routes/safe/component/Safe.test.js @@ -12,8 +12,9 @@ import SafeView from '~/routes/safe/component/Safe' import AppRoutes from '~/routes' import { WITHDRAWN_BUTTON_TEXT } from '~/routes/safe/component/Safe/DailyLimit' import WithdrawnComponent, { SEE_TXS_BUTTON_TEXT } from '~/routes/safe/component/Withdrawn' -import { getBalanceInEtherOf } from '~/wallets/getWeb3' +import { getBalanceInEtherOf, getProviderInfo } from '~/wallets/getWeb3' import { sleep } from '~/utils/timer' +import withdrawn, { DESTINATION_PARAM, VALUE_PARAM, getDailyLimitFrom } from '~/routes/safe/component/Withdrawn/withdrawn' describe('React DOM TESTS > Withdrawn funds from safe', () => { let SafeDom @@ -70,4 +71,22 @@ describe('React DOM TESTS > Withdrawn funds from safe', () => { const visitTxsButton = withdrawnButtons[0] expect(visitTxsButton.props.children).toEqual(SEE_TXS_BUTTON_TEXT) }) + + it('spentToday dailyLimitModule property is updated correctly', async () => { + const providerInfo = await getProviderInfo() + const userAddress = providerInfo.account + + const values = { + [DESTINATION_PARAM]: userAddress, + [VALUE_PARAM]: '0.01', + } + await withdrawn(values, address, userAddress) + await withdrawn(values, address, userAddress) + + const ethAddress = 0 + const dailyLimit: DailyLimitProps = await getDailyLimitFrom(address, ethAddress) + + expect(dailyLimit.value).toBe(0.5) + expect(dailyLimit.spentToday).toBe(0.02) + }) }) diff --git a/src/routes/safe/component/Withdrawn/withdrawn.js b/src/routes/safe/component/Withdrawn/withdrawn.js index e2001e3b02..95c72ca4be 100644 --- a/src/routes/safe/component/Withdrawn/withdrawn.js +++ b/src/routes/safe/component/Withdrawn/withdrawn.js @@ -1,11 +1,14 @@ // @flow import { getWeb3 } from '~/wallets/getWeb3' import { getGnosisSafeContract, getCreateDailyLimitExtensionContract } from '~/wallets/safeContracts' +import { type DailyLimitProps } from '~/routes/safe/store/model/safe' +export const LIMIT_POSITION = 0 +export const SPENT_TODAY_POS = 1 export const DESTINATION_PARAM = 'destination' export const VALUE_PARAM = 'ether' -const withdrawn = async (values: Object, safeAddress: string, userAccount: string): Promise => { +const getDailyLimitModuleFrom = async (safeAddress) => { const web3 = getWeb3() const gnosisSafe = getGnosisSafeContract(web3).at(safeAddress) @@ -17,6 +20,25 @@ const withdrawn = async (values: Object, safeAddress: string, userAccount: strin throw new Error('Using an extension of different safe') } + return dailyLimitModule +} + +export const getDailyLimitFrom = async (safeAddress, tokenAddress): DailyLimitProps => { + const web3 = getWeb3() + const dailyLimitModule = await getDailyLimitModuleFrom(safeAddress) + + const dailyLimitEth = await dailyLimitModule.dailyLimits(tokenAddress) + + const limit = web3.fromWei(dailyLimitEth[LIMIT_POSITION].valueOf(), 'ether').toString() + const spentToday = web3.fromWei(dailyLimitEth[SPENT_TODAY_POS].valueOf(), 'ether').toString() + + return { value: Number(limit), spentToday: Number(spentToday) } +} + +const withdrawn = async (values: Object, safeAddress: string, userAccount: string): Promise => { + const web3 = getWeb3() + const dailyLimitModule = await getDailyLimitModuleFrom(safeAddress) + const destination = values[DESTINATION_PARAM] const value = web3.toWei(values[VALUE_PARAM], 'ether') From 79ae47570f33efa426ee0694cbce6bdb952e0cc2 Mon Sep 17 00:00:00 2001 From: apanizo Date: Sun, 13 May 2018 13:25:02 +0200 Subject: [PATCH 047/138] WA-238 creation of updateDailyLimit action --- .../safe/store/actions/updateDailyLimit.js | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 src/routes/safe/store/actions/updateDailyLimit.js diff --git a/src/routes/safe/store/actions/updateDailyLimit.js b/src/routes/safe/store/actions/updateDailyLimit.js new file mode 100644 index 0000000000..876f10e0ea --- /dev/null +++ b/src/routes/safe/store/actions/updateDailyLimit.js @@ -0,0 +1,19 @@ +// @flow +import { createAction } from 'redux-actions' + +export const UPDATE_DAILY_LIMIT = 'UPDATE_DAILY_LIMIT' + +type SpentTodayProps = { + safeAddress: string, + dailyLimit: DailyLimitProps, +} + +const updateDailyLimit = createAction( + UPDATE_DAILY_LIMIT, + (safeAddress: string, dailyLimit: DailyLimitProps): SpentTodayProps => ({ + safeAddress, + dailyLimit, + }), +) + +export default updateDailyLimit From aa93a8301bb9c3a6b0778256306b758d7d82ba1d Mon Sep 17 00:00:00 2001 From: apanizo Date: Sun, 13 May 2018 13:30:20 +0200 Subject: [PATCH 048/138] WA-238 refactor update deployedSafe builder including execture withdrawn helper --- src/routes/safe/component/Safe.test.js | 20 +++++++----------- .../test/builder/deployedSafe.builder.js | 21 +++++++++++++++---- 2 files changed, 25 insertions(+), 16 deletions(-) diff --git a/src/routes/safe/component/Safe.test.js b/src/routes/safe/component/Safe.test.js index 653bf16e3c..719b8db824 100644 --- a/src/routes/safe/component/Safe.test.js +++ b/src/routes/safe/component/Safe.test.js @@ -6,15 +6,15 @@ import { ConnectedRouter } from 'react-router-redux' import Button from '~/components/layout/Button' import { aNewStore, history } from '~/store' import { addEtherTo } from '~/test/addEtherTo' -import { aDeployedSafe } from '~/routes/safe/store/test/builder/deployedSafe.builder' +import { aDeployedSafe, executeWithdrawnOn } from '~/routes/safe/store/test/builder/deployedSafe.builder' import { SAFELIST_ADDRESS } from '~/routes/routes' import SafeView from '~/routes/safe/component/Safe' import AppRoutes from '~/routes' import { WITHDRAWN_BUTTON_TEXT } from '~/routes/safe/component/Safe/DailyLimit' import WithdrawnComponent, { SEE_TXS_BUTTON_TEXT } from '~/routes/safe/component/Withdrawn' -import { getBalanceInEtherOf, getProviderInfo } from '~/wallets/getWeb3' +import { getBalanceInEtherOf } from '~/wallets/getWeb3' import { sleep } from '~/utils/timer' -import withdrawn, { DESTINATION_PARAM, VALUE_PARAM, getDailyLimitFrom } from '~/routes/safe/component/Withdrawn/withdrawn' +import { getDailyLimitFrom } from '~/routes/safe/component/Withdrawn/withdrawn' describe('React DOM TESTS > Withdrawn funds from safe', () => { let SafeDom @@ -73,19 +73,15 @@ describe('React DOM TESTS > Withdrawn funds from safe', () => { }) it('spentToday dailyLimitModule property is updated correctly', async () => { - const providerInfo = await getProviderInfo() - const userAddress = providerInfo.account - - const values = { - [DESTINATION_PARAM]: userAddress, - [VALUE_PARAM]: '0.01', - } - await withdrawn(values, address, userAddress) - await withdrawn(values, address, userAddress) + // GIVEN in beforeEach + // WHEN + await executeWithdrawnOn(address, 0.01) + await executeWithdrawnOn(address, 0.01) const ethAddress = 0 const dailyLimit: DailyLimitProps = await getDailyLimitFrom(address, ethAddress) + // THEN expect(dailyLimit.value).toBe(0.5) expect(dailyLimit.spentToday).toBe(0.02) }) diff --git a/src/routes/safe/store/test/builder/deployedSafe.builder.js b/src/routes/safe/store/test/builder/deployedSafe.builder.js index ee976ca031..c4f6ad73be 100644 --- a/src/routes/safe/store/test/builder/deployedSafe.builder.js +++ b/src/routes/safe/store/test/builder/deployedSafe.builder.js @@ -11,6 +11,7 @@ import { sleep } from '~/utils/timer' import { getProviderInfo } from '~/wallets/getWeb3' import addProvider from '~/wallets/store/actions/addProvider' import { makeProvider } from '~/wallets/store/model/provider' +import withdrawn, { DESTINATION_PARAM, VALUE_PARAM } from '~/routes/safe/component/Withdrawn/withdrawn' export const renderSafe = async (localStore: Store) => { const provider = await getProviderInfo() @@ -28,7 +29,7 @@ export const renderSafe = async (localStore: Store) => { ) } -const deploySafe = async (safe: React$Component<{}>) => { +const deploySafe = async (safe: React$Component<{}>, dailyLimit: string) => { const inputs = TestUtils.scryRenderedDOMComponentsWithTag(safe, 'input') const fieldName = inputs[0] const fieldOwners = inputs[1] @@ -42,7 +43,7 @@ const deploySafe = async (safe: React$Component<{}>) => { TestUtils.Simulate.change(fieldName, { target: { value: 'Adolfo Safe' } }) TestUtils.Simulate.change(fieldConfirmations, { target: { value: '1' } }) TestUtils.Simulate.change(ownerName, { target: { value: 'Adolfo Eth Account' } }) - TestUtils.Simulate.change(fieldDailyLimit, { target: { value: '0.5' } }) + TestUtils.Simulate.change(fieldDailyLimit, { target: { value: dailyLimit } }) const form = TestUtils.findRenderedDOMComponentWithTag(safe, 'form') @@ -66,9 +67,21 @@ const deploySafe = async (safe: React$Component<{}>) => { return transactionHash } -export const aDeployedSafe = async (specificStore: Store) => { +export const aDeployedSafe = async (specificStore: Store, dailyLimit?: number = 0.5) => { const safe: React$Component<{}> = await renderSafe(specificStore) - const deployedSafe = await deploySafe(safe) + const deployedSafe = await deploySafe(safe, `${dailyLimit}`) return deployedSafe.logs[1].args.proxy } + +export const executeWithdrawnOn = async (safeAddress: string, value: number) => { + const providerInfo = await getProviderInfo() + const userAddress = providerInfo.account + + const values = { + [DESTINATION_PARAM]: userAddress, + [VALUE_PARAM]: `${value}`, + } + + await withdrawn(values, safeAddress, userAddress) +} From 3cba259fc1d48e7dbca591e9a6eea0a9a1073bf1 Mon Sep 17 00:00:00 2001 From: apanizo Date: Sun, 13 May 2018 13:31:33 +0200 Subject: [PATCH 049/138] WA-238 DailyLimit Record types --- src/routes/safe/store/actions/addSafe.js | 3 ++- src/routes/safe/store/model/dailyLimit.js | 15 +++++++++++++++ src/routes/safe/store/model/safe.js | 15 ++------------- 3 files changed, 19 insertions(+), 14 deletions(-) create mode 100644 src/routes/safe/store/model/dailyLimit.js diff --git a/src/routes/safe/store/actions/addSafe.js b/src/routes/safe/store/actions/addSafe.js index d5a3836c8f..ab7cf91642 100644 --- a/src/routes/safe/store/actions/addSafe.js +++ b/src/routes/safe/store/actions/addSafe.js @@ -1,7 +1,8 @@ // @flow import { List } from 'immutable' import { createAction } from 'redux-actions' -import { makeDailyLimit, type DailyLimit, type SafeProps } from '~/routes/safe/store/model/safe' +import { makeDailyLimit, type DailyLimit } from '~/routes/safe/store/model/dailyLimit' +import { type SafeProps } from '~/routes/safe/store/model/safe' import { makeOwner, type Owner } from '~/routes/safe/store/model/owner' export const ADD_SAFE = 'ADD_SAFE' diff --git a/src/routes/safe/store/model/dailyLimit.js b/src/routes/safe/store/model/dailyLimit.js new file mode 100644 index 0000000000..2345c243f7 --- /dev/null +++ b/src/routes/safe/store/model/dailyLimit.js @@ -0,0 +1,15 @@ +// @flow +import { Record } from 'immutable' +import type { RecordFactory, RecordOf } from 'immutable' + +export type DailyLimitProps = { + value: number, + spentToday: number, +} + +export const makeDailyLimit: RecordFactory = Record({ + value: 0, + spentToday: 0, +}) + +export type DailyLimit = RecordOf diff --git a/src/routes/safe/store/model/safe.js b/src/routes/safe/store/model/safe.js index cc9149d845..22e10581f9 100644 --- a/src/routes/safe/store/model/safe.js +++ b/src/routes/safe/store/model/safe.js @@ -1,26 +1,15 @@ // @flow import { List, Record } from 'immutable' import type { RecordFactory, RecordOf } from 'immutable' +import { type DailyLimit, makeDailyLimit } from '~/routes/safe/store/model/dailyLimit' import type { Owner } from '~/routes/safe/store/model/owner' -export type DailyLimitProps = { - value: number, - spentToday: number, -} - -export const makeDailyLimit: RecordFactory = Record({ - value: 0, - spentToday: 0, -}) - -export type DailyLimit = RecordOf - export type SafeProps = { name: string, address: string, confirmations: number, owners: List, - dailyLimit: number, + dailyLimit: DailyLimit, } export const makeSafe: RecordFactory = Record({ From 4a30051858a5c278ada97a6cadfc0c8cb5fabd13 Mon Sep 17 00:00:00 2001 From: apanizo Date: Sun, 13 May 2018 13:33:40 +0200 Subject: [PATCH 050/138] WA-238 fetchDailyLimit action definition and its reducer --- src/routes/safe/store/actions/fetchDailyLimit.js | 12 ++++++++++++ src/routes/safe/store/reducer/safe.js | 7 +++++++ 2 files changed, 19 insertions(+) create mode 100644 src/routes/safe/store/actions/fetchDailyLimit.js diff --git a/src/routes/safe/store/actions/fetchDailyLimit.js b/src/routes/safe/store/actions/fetchDailyLimit.js new file mode 100644 index 0000000000..5e3c8936f5 --- /dev/null +++ b/src/routes/safe/store/actions/fetchDailyLimit.js @@ -0,0 +1,12 @@ +// @flow +import type { Dispatch as ReduxDispatch } from 'redux' +import { type GlobalState } from '~/store/index' +import { getDailyLimitFrom } from '~/routes/safe/component/Withdrawn/withdrawn' +import updateDailyLimit from './updateDailyLimit' + +export default (safeAddress: string) => async (dispatch: ReduxDispatch) => { + const ethAddress = 0 + const dailyLimit: DailyLimitProps = await getDailyLimitFrom(safeAddress, ethAddress) + + return dispatch(updateDailyLimit(safeAddress, dailyLimit)) +} diff --git a/src/routes/safe/store/reducer/safe.js b/src/routes/safe/store/reducer/safe.js index a6a4bd3191..f35c2ff707 100644 --- a/src/routes/safe/store/reducer/safe.js +++ b/src/routes/safe/store/reducer/safe.js @@ -2,9 +2,11 @@ import { Map, List } from 'immutable' import { handleActions, type ActionType } from 'redux-actions' import addSafe, { ADD_SAFE } from '~/routes/safe/store/actions/addSafe' +import updateDailyLimit, { UPDATE_DAILY_LIMIT } from '~/routes/safe/store/actions/updateDailyLimit' import { makeOwner } from '~/routes/safe/store/model/owner' import { type Safe, makeSafe } from '~/routes/safe/store/model/safe' import { loadSafes, saveSafes } from '~/utils/localStorage' +import { makeDailyLimit } from '~/routes/safe/store/model/dailyLimit' export const SAFE_REDUCER_ID = 'safes' @@ -45,4 +47,9 @@ export default handleActions({ saveSafes(safes.toJSON()) return safes }, + [UPDATE_DAILY_LIMIT]: (state: State, action: ActionType): State => { + const safes = state.updateIn([action.safeAddress, 'dailyLimit'], () => makeDailyLimit(action.dailyLimit)) + saveSafes(safes.toJSON()) + return safes + }, }, Map()) From cefa6d5567dd6e984264012b68d27c53443053fb Mon Sep 17 00:00:00 2001 From: apanizo Date: Mon, 14 May 2018 09:10:28 +0200 Subject: [PATCH 051/138] WA-238 Do not update safes in localStorage when updating DailyLimit --- src/routes/safe/store/reducer/safe.js | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/routes/safe/store/reducer/safe.js b/src/routes/safe/store/reducer/safe.js index f35c2ff707..f3cd7df020 100644 --- a/src/routes/safe/store/reducer/safe.js +++ b/src/routes/safe/store/reducer/safe.js @@ -47,9 +47,6 @@ export default handleActions({ saveSafes(safes.toJSON()) return safes }, - [UPDATE_DAILY_LIMIT]: (state: State, action: ActionType): State => { - const safes = state.updateIn([action.safeAddress, 'dailyLimit'], () => makeDailyLimit(action.dailyLimit)) - saveSafes(safes.toJSON()) - return safes - }, + [UPDATE_DAILY_LIMIT]: (state: State, action: ActionType): State => + state.updateIn([action.safeAddress, 'dailyLimit'], () => makeDailyLimit(action.dailyLimit)), }, Map()) From 8b5aad2bd547d154578075ffd3778cd202b1758b Mon Sep 17 00:00:00 2001 From: apanizo Date: Mon, 14 May 2018 09:48:41 +0200 Subject: [PATCH 052/138] WA-238 Updating deployment of sc --- safe-contracts/build/contracts/CreateAndAddModule.json | 8 +++++++- safe-contracts/build/contracts/DailyLimitModule.json | 8 +++++++- .../build/contracts/DailyLimitModuleWithSignature.json | 8 +++++++- .../build/contracts/GnosisSafePersonalEdition.json | 8 +++++++- .../build/contracts/GnosisSafeStateChannelEdition.json | 8 +++++++- safe-contracts/build/contracts/GnosisSafeTeamEdition.json | 8 +++++++- safe-contracts/build/contracts/Migrations.json | 8 +++++++- safe-contracts/build/contracts/MultiSend.json | 8 +++++++- safe-contracts/build/contracts/ProxyFactory.json | 8 +++++++- safe-contracts/build/contracts/SocialRecoveryModule.json | 8 +++++++- safe-contracts/build/contracts/WhitelistModule.json | 8 +++++++- 11 files changed, 77 insertions(+), 11 deletions(-) diff --git a/safe-contracts/build/contracts/CreateAndAddModule.json b/safe-contracts/build/contracts/CreateAndAddModule.json index a8d264059f..f6c838d6f2 100644 --- a/safe-contracts/build/contracts/CreateAndAddModule.json +++ b/safe-contracts/build/contracts/CreateAndAddModule.json @@ -1208,8 +1208,14 @@ "links": {}, "address": "0x544c20ddcab0459a99c93823d0c02d50f75ced36", "transactionHash": "0x0e6adf453722b13530f4f8c8f947f6e5105156aa99a10b588447ed57e27d7b85" + }, + "1526283540628": { + "events": {}, + "links": {}, + "address": "0xdeabe313841db5cddcc1b5f01c6497ece16c2347", + "transactionHash": "0x0e6adf453722b13530f4f8c8f947f6e5105156aa99a10b588447ed57e27d7b85" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-10T11:07:04.706Z" + "updatedAt": "2018-05-14T07:39:37.967Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/DailyLimitModule.json b/safe-contracts/build/contracts/DailyLimitModule.json index 4e51441756..99c698db5c 100644 --- a/safe-contracts/build/contracts/DailyLimitModule.json +++ b/safe-contracts/build/contracts/DailyLimitModule.json @@ -7909,8 +7909,14 @@ "links": {}, "address": "0xe52c225329d3fb9f6933bd52e7067a24d20f7983", "transactionHash": "0xaffd9cdbf1bd14f5f349af2782a1b4dbebd9ac97abedbcfb9aee5fb1707afe96" + }, + "1526283540628": { + "events": {}, + "links": {}, + "address": "0x452dd8d6f81786c3ad3ec3cbcf024687659c682a", + "transactionHash": "0xaffd9cdbf1bd14f5f349af2782a1b4dbebd9ac97abedbcfb9aee5fb1707afe96" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-10T11:07:04.692Z" + "updatedAt": "2018-05-14T07:39:37.963Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/DailyLimitModuleWithSignature.json b/safe-contracts/build/contracts/DailyLimitModuleWithSignature.json index 0c844f47c8..4ce1e78372 100644 --- a/safe-contracts/build/contracts/DailyLimitModuleWithSignature.json +++ b/safe-contracts/build/contracts/DailyLimitModuleWithSignature.json @@ -2542,8 +2542,14 @@ "links": {}, "address": "0x788256524db64c2b23ff2e417a833927550a2d65", "transactionHash": "0x13942c7ebe4c7c49493ac8d9d8ee3c329a0be8b7a78717117e0c5d43cbf8632c" + }, + "1526283540628": { + "events": {}, + "links": {}, + "address": "0x3e2ade0d97956160691a96fb2adf83844155708d", + "transactionHash": "0x13942c7ebe4c7c49493ac8d9d8ee3c329a0be8b7a78717117e0c5d43cbf8632c" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-10T11:07:04.705Z" + "updatedAt": "2018-05-14T07:39:37.966Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/GnosisSafePersonalEdition.json b/safe-contracts/build/contracts/GnosisSafePersonalEdition.json index 96168a1bad..c404e0caa0 100644 --- a/safe-contracts/build/contracts/GnosisSafePersonalEdition.json +++ b/safe-contracts/build/contracts/GnosisSafePersonalEdition.json @@ -8185,8 +8185,14 @@ "links": {}, "address": "0x1f8829f66b8ac7a6893109dd298007f5dd3bcadf", "transactionHash": "0x9a582bc25c7705ede926f13bef0ba8fa76176d0ec80dc0871e1b28d87382f545" + }, + "1526283540628": { + "events": {}, + "links": {}, + "address": "0xad5d0371132b0959508b44c6221e6bc4de8df987", + "transactionHash": "0x9a582bc25c7705ede926f13bef0ba8fa76176d0ec80dc0871e1b28d87382f545" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-10T11:07:04.685Z" + "updatedAt": "2018-05-14T07:39:37.952Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/GnosisSafeStateChannelEdition.json b/safe-contracts/build/contracts/GnosisSafeStateChannelEdition.json index c15e4a8768..52a0b46263 100644 --- a/safe-contracts/build/contracts/GnosisSafeStateChannelEdition.json +++ b/safe-contracts/build/contracts/GnosisSafeStateChannelEdition.json @@ -5456,8 +5456,14 @@ "links": {}, "address": "0x9327970e8e29e8dba16b28acb177906a92447a0c", "transactionHash": "0x8b91e38b0bbafe43309aca9832bcd234b82d7ac9f81abe94891cd406a735549c" + }, + "1526283540628": { + "events": {}, + "links": {}, + "address": "0xf2eb76d41d54cc58f9a8e86e2b42d41ccd22a8fa", + "transactionHash": "0x8b91e38b0bbafe43309aca9832bcd234b82d7ac9f81abe94891cd406a735549c" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-10T11:07:04.688Z" + "updatedAt": "2018-05-14T07:39:37.959Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/GnosisSafeTeamEdition.json b/safe-contracts/build/contracts/GnosisSafeTeamEdition.json index 9266fee5e7..30774201c3 100644 --- a/safe-contracts/build/contracts/GnosisSafeTeamEdition.json +++ b/safe-contracts/build/contracts/GnosisSafeTeamEdition.json @@ -6495,8 +6495,14 @@ "links": {}, "address": "0xd16506c40cb044bf78552d9bea796c9d98fa0a45", "transactionHash": "0x782ef1b28e30afdcb711e7119c7bc794bbd7f42356ea5a68072b8f59400b05e3" + }, + "1526283540628": { + "events": {}, + "links": {}, + "address": "0xaadc387a6c96744064754aa1f2391cbe1bb55970", + "transactionHash": "0x782ef1b28e30afdcb711e7119c7bc794bbd7f42356ea5a68072b8f59400b05e3" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-10T11:07:04.681Z" + "updatedAt": "2018-05-14T07:39:37.956Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/Migrations.json b/safe-contracts/build/contracts/Migrations.json index 499d53d4e3..a8c86fc005 100644 --- a/safe-contracts/build/contracts/Migrations.json +++ b/safe-contracts/build/contracts/Migrations.json @@ -1392,8 +1392,14 @@ "links": {}, "address": "0xb97a46b50b9e38d540e9701d3d4afe71a65c09df", "transactionHash": "0x137111f15934455430bea53bd8a6721561285af6a431f174f090257877635ab6" + }, + "1526283540628": { + "events": {}, + "links": {}, + "address": "0x3b293b12ee278dba3d4350cd5b4434c228bad69b", + "transactionHash": "0x137111f15934455430bea53bd8a6721561285af6a431f174f090257877635ab6" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-10T11:07:04.707Z" + "updatedAt": "2018-05-14T07:39:37.978Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/MultiSend.json b/safe-contracts/build/contracts/MultiSend.json index 73a181b042..47cffc8a50 100644 --- a/safe-contracts/build/contracts/MultiSend.json +++ b/safe-contracts/build/contracts/MultiSend.json @@ -348,8 +348,14 @@ "links": {}, "address": "0xa4604b882b2c10ce381c4e61ad9ac72ab32f350f", "transactionHash": "0xf4586ae05ae02801de1759128e43658bb0439e622a5ba84ad6bb4b652d641f4f" + }, + "1526283540628": { + "events": {}, + "links": {}, + "address": "0xf5cfa4069271285402ba2585c521c6c627810963", + "transactionHash": "0xf4586ae05ae02801de1759128e43658bb0439e622a5ba84ad6bb4b652d641f4f" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-10T11:07:04.706Z" + "updatedAt": "2018-05-14T07:39:37.970Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/ProxyFactory.json b/safe-contracts/build/contracts/ProxyFactory.json index 2145226d23..8283a2fde0 100644 --- a/safe-contracts/build/contracts/ProxyFactory.json +++ b/safe-contracts/build/contracts/ProxyFactory.json @@ -999,8 +999,14 @@ "links": {}, "address": "0x7686eac12d94e3c0bdfe0a00ec759f89fbd115f7", "transactionHash": "0x5b47c779cfd719a97f218a56d99b64b2c5b382549f3375822d5afed010cdb9c5" + }, + "1526283540628": { + "events": {}, + "links": {}, + "address": "0x321151783f8dfb4699370d1bd5cee4e82bc3b52a", + "transactionHash": "0x5b47c779cfd719a97f218a56d99b64b2c5b382549f3375822d5afed010cdb9c5" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-10T11:07:04.678Z" + "updatedAt": "2018-05-14T07:39:37.950Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/SocialRecoveryModule.json b/safe-contracts/build/contracts/SocialRecoveryModule.json index 84be143d69..01e864797c 100644 --- a/safe-contracts/build/contracts/SocialRecoveryModule.json +++ b/safe-contracts/build/contracts/SocialRecoveryModule.json @@ -6958,8 +6958,14 @@ "links": {}, "address": "0xfe2114e016fa8d92959754f25d4f63f155ad1a6a", "transactionHash": "0xa514f0c5c6fcab99a16bba503b6ed893935cedfafe2e5c8c825dfc117e1e266d" + }, + "1526283540628": { + "events": {}, + "links": {}, + "address": "0x12fb2fe4f6d4c08b14c694e163b9bee65697e708", + "transactionHash": "0xa514f0c5c6fcab99a16bba503b6ed893935cedfafe2e5c8c825dfc117e1e266d" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-10T11:07:04.698Z" + "updatedAt": "2018-05-14T07:39:37.975Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/WhitelistModule.json b/safe-contracts/build/contracts/WhitelistModule.json index ca9c77e3bb..749a1ca1d1 100644 --- a/safe-contracts/build/contracts/WhitelistModule.json +++ b/safe-contracts/build/contracts/WhitelistModule.json @@ -3956,8 +3956,14 @@ "links": {}, "address": "0x15fd83fcf27f1726e692389be1b6e03fe7d56bb6", "transactionHash": "0xc7f84311daf6a72740fe5822cd6007cec3ce1ff6aeaf454559f3e5f36c81cfd8" + }, + "1526283540628": { + "events": {}, + "links": {}, + "address": "0x536f677993e3eada3e17f2f42888ee777441fc3e", + "transactionHash": "0xc7f84311daf6a72740fe5822cd6007cec3ce1ff6aeaf454559f3e5f36c81cfd8" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-10T11:07:04.695Z" + "updatedAt": "2018-05-14T07:39:37.968Z" } \ No newline at end of file From 725a9f6b139efff86eb45a245ac43e2694378725 Mon Sep 17 00:00:00 2001 From: apanizo Date: Mon, 14 May 2018 09:50:11 +0200 Subject: [PATCH 053/138] WA-238 Fix error on reducer not using action's payload property --- src/routes/safe/store/reducer/safe.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/routes/safe/store/reducer/safe.js b/src/routes/safe/store/reducer/safe.js index f3cd7df020..1b85846020 100644 --- a/src/routes/safe/store/reducer/safe.js +++ b/src/routes/safe/store/reducer/safe.js @@ -48,5 +48,5 @@ export default handleActions({ return safes }, [UPDATE_DAILY_LIMIT]: (state: State, action: ActionType): State => - state.updateIn([action.safeAddress, 'dailyLimit'], () => makeDailyLimit(action.dailyLimit)), + state.updateIn([action.payload.safeAddress, 'dailyLimit'], () => makeDailyLimit(action.payload.dailyLimit)), }, Map()) From 4051852edaad0b49a8d0a4ee1d05e805cee7a4ea Mon Sep 17 00:00:00 2001 From: apanizo Date: Mon, 14 May 2018 10:42:08 +0200 Subject: [PATCH 054/138] WA-238 Returning promise when executing dailyLimit tx --- src/routes/safe/component/Withdrawn/withdrawn.js | 2 +- src/routes/safe/store/test/builder/deployedSafe.builder.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/routes/safe/component/Withdrawn/withdrawn.js b/src/routes/safe/component/Withdrawn/withdrawn.js index 95c72ca4be..1c06658e6d 100644 --- a/src/routes/safe/component/Withdrawn/withdrawn.js +++ b/src/routes/safe/component/Withdrawn/withdrawn.js @@ -42,7 +42,7 @@ const withdrawn = async (values: Object, safeAddress: string, userAccount: strin const destination = values[DESTINATION_PARAM] const value = web3.toWei(values[VALUE_PARAM], 'ether') - await dailyLimitModule.executeDailyLimit( + return dailyLimitModule.executeDailyLimit( destination, value, 0, diff --git a/src/routes/safe/store/test/builder/deployedSafe.builder.js b/src/routes/safe/store/test/builder/deployedSafe.builder.js index c4f6ad73be..bd81081839 100644 --- a/src/routes/safe/store/test/builder/deployedSafe.builder.js +++ b/src/routes/safe/store/test/builder/deployedSafe.builder.js @@ -83,5 +83,5 @@ export const executeWithdrawnOn = async (safeAddress: string, value: number) => [VALUE_PARAM]: `${value}`, } - await withdrawn(values, safeAddress, userAddress) + return withdrawn(values, safeAddress, userAddress) } From 26815af91cb209b9e93883c575d3f8e6ee57f350 Mon Sep 17 00:00:00 2001 From: apanizo Date: Mon, 14 May 2018 10:42:42 +0200 Subject: [PATCH 055/138] WA-238 Adding test handling exception when exceeding dailyLimit --- .../component/Withdrawn/withdrawn.test.js | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 src/routes/safe/component/Withdrawn/withdrawn.test.js diff --git a/src/routes/safe/component/Withdrawn/withdrawn.test.js b/src/routes/safe/component/Withdrawn/withdrawn.test.js new file mode 100644 index 0000000000..b5fafd1a1b --- /dev/null +++ b/src/routes/safe/component/Withdrawn/withdrawn.test.js @@ -0,0 +1,29 @@ +// @flow +import { aNewStore } from '~/store' +import { addEtherTo } from '~/test/addEtherTo' +import { aDeployedSafe, executeWithdrawnOn } from '~/routes/safe/store/test/builder/deployedSafe.builder' + +describe('Safe Blockchain Test', () => { + let store + beforeEach(async () => { + store = aNewStore() + }) + + it('wihdrawn should return revert error if exceeded dailyLimit', async () => { + // GIVEN + const dailyLimitValue = 0.30 + const safeAddress = await aDeployedSafe(store, dailyLimitValue) + await addEtherTo(safeAddress, '0.7') + const value = 0.15 + + // WHEN + await executeWithdrawnOn(safeAddress, value) + await executeWithdrawnOn(safeAddress, value) + + // THEN + expect(executeWithdrawnOn(safeAddress, value)).rejects.toThrow('VM Exception while processing transaction: revert') + }) +}) +// } + +// export default updateDailyLimitReducerTests From 706bdba69b930c61c5e13041dfb93e20895ef159 Mon Sep 17 00:00:00 2001 From: apanizo Date: Mon, 14 May 2018 10:43:23 +0200 Subject: [PATCH 056/138] WA-238 Adding test updating safe's daily limit redux record after executing withdrawn --- .../safe/store/test/dailyLimit.reducer.js | 51 +++++++++++++++++++ src/routes/safe/store/test/safe.spec.js | 2 + 2 files changed, 53 insertions(+) create mode 100644 src/routes/safe/store/test/dailyLimit.reducer.js diff --git a/src/routes/safe/store/test/dailyLimit.reducer.js b/src/routes/safe/store/test/dailyLimit.reducer.js new file mode 100644 index 0000000000..9ee1eb5ab0 --- /dev/null +++ b/src/routes/safe/store/test/dailyLimit.reducer.js @@ -0,0 +1,51 @@ +// @flow +import { SAFE_REDUCER_ID } from '~/routes/safe/store/reducer/safe' +import fetchDailyLimit from '~/routes/safe/store/actions/fetchDailyLimit' +import { aNewStore } from '~/store' +import { addEtherTo } from '~/test/addEtherTo' +import { aDeployedSafe, executeWithdrawnOn } from './builder/deployedSafe.builder' + +const updateDailyLimitReducerTests = () => { + describe('Safe Actions[updateDailyLimit]', () => { + let store + beforeEach(async () => { + store = aNewStore() + }) + + it('reducer should return 0 as spentToday value from just deployed safe', async () => { + // GIVEN + const dailyLimitValue = 0.5 + const safeAddress = await aDeployedSafe(store, 0.5) + // WHEN + await store.dispatch(fetchDailyLimit(safeAddress)) + + // THEN + const safes = store.getState()[SAFE_REDUCER_ID] + const dailyLimit = safes.get(safeAddress).get('dailyLimit') + expect(dailyLimit).not.toBe(undefined) + expect(dailyLimit.value).toBe(dailyLimitValue) + expect(dailyLimit.spentToday).toBe(0) + }) + + it('reducer should return 0.1456 ETH as spentToday if the user has withdrawn 0.1456 from MAX of 0.3 ETH', async () => { + // GIVEN + const dailyLimitValue = 0.3 + const safeAddress = await aDeployedSafe(store, dailyLimitValue) + await addEtherTo(safeAddress, '0.5') + const value = 0.1456 + + // WHEN + await executeWithdrawnOn(safeAddress, value) + await store.dispatch(fetchDailyLimit(safeAddress)) + + // THEN + const safes = store.getState()[SAFE_REDUCER_ID] + const dailyLimit = safes.get(safeAddress).get('dailyLimit') + expect(dailyLimit).not.toBe(undefined) + expect(dailyLimit.value).toBe(dailyLimitValue) + expect(dailyLimit.spentToday).toBe(value) + }) + }) +} + +export default updateDailyLimitReducerTests diff --git a/src/routes/safe/store/test/safe.spec.js b/src/routes/safe/store/test/safe.spec.js index ea07c3ee6f..57521e6f8e 100644 --- a/src/routes/safe/store/test/safe.spec.js +++ b/src/routes/safe/store/test/safe.spec.js @@ -1,6 +1,7 @@ // @flow import balanceReducerTests from './balance.reducer' import safeReducerTests from './safe.reducer' +import dailyLimitReducerTests from './dailyLimit.reducer' import balanceSelectorTests from './balance.selector' import safeSelectorTests from './safe.selector' @@ -8,6 +9,7 @@ describe('Safe Test suite', () => { // ACTIONS AND REDUCERS safeReducerTests() balanceReducerTests() + dailyLimitReducerTests() // SAFE SELECTOR safeSelectorTests() From f04eec5f779ad7bea77a9fad46437bf34f515c3d Mon Sep 17 00:00:00 2001 From: apanizo Date: Mon, 14 May 2018 11:14:09 +0200 Subject: [PATCH 057/138] WA-238 Storybook showing spentToday and disabling withdrawn buttons is limit has been exceeded --- src/routes/safe/component/Layout.stories.js | 16 ++++++++++++++-- src/routes/safe/component/Safe/DailyLimit.jsx | 12 +++++++----- src/routes/safe/store/actions/addSafe.js | 4 ++-- .../safe/store/test/builder/safe.builder.js | 16 ++++++++++++++-- 4 files changed, 37 insertions(+), 11 deletions(-) diff --git a/src/routes/safe/component/Layout.stories.js b/src/routes/safe/component/Layout.stories.js index 83cfecea16..30ecd637e2 100644 --- a/src/routes/safe/component/Layout.stories.js +++ b/src/routes/safe/component/Layout.stories.js @@ -30,8 +30,20 @@ storiesOf('Routes /safe:address', module) fetchBalance={() => {}} /> )) - .add('Safe with 2 owners', () => { - const safe = SafeFactory.twoOwnersSafe + .add('Safe with 2 owners and 10ETH as dailyLimit', () => { + const safe = SafeFactory.dailyLimitSafe(10, 1.345) + + return ( + {}} + /> + ) + }) + .add('Safe with dailyLimit reached', () => { + const safe = SafeFactory.dailyLimitSafe(10, 10) return ( void, } export const WITHDRAWN_BUTTON_TEXT = 'Withdrawn' -const DailyLimit = ({ dailyLimit, onWithdrawn }: Props) => { +const DailyLimitComponent = ({ dailyLimit, onWithdrawn }: Props) => { const limit = dailyLimit.get('value') - const disabled = dailyLimit.get('todaySpent') > limit + const spentToday = dailyLimit.get('spentToday') + const disabled = spentToday >= limit + const text = `${limit} ETH (spent today: ${spentToday} ETH)` return ( - + -) - -type GoProps = { - title: string, - to: string, -} - -const GoButton = ({ title, to }: GoProps) => ( - - - -) type ControlProps = { next: string, @@ -48,34 +20,37 @@ const ControlButtons = ({ > Back - + ) type Props = { finishedTx: boolean, + finishedButton: React$Node, onPrevious: () => void, firstPage: boolean, lastPage: boolean, submitting: boolean, - goTitle: string, - goPath: string, } const Controls = ({ - finishedTx, onPrevious, firstPage, lastPage, submitting, goTitle, goPath, + finishedTx, finishedButton, onPrevious, firstPage, lastPage, submitting, }: Props) => ( - - { finishedTx - ? - : - } - + finishedTx + ? {finishedButton} + : ) export default Controls diff --git a/src/components/Stepper/index.jsx b/src/components/Stepper/index.jsx index cb5a389976..5f90792a87 100644 --- a/src/components/Stepper/index.jsx +++ b/src/components/Stepper/index.jsx @@ -4,6 +4,7 @@ import { withStyles } from 'material-ui/styles' import * as React from 'react' import type { FormApi } from 'react-final-form' import GnoForm from '~/components/forms/GnoForm' +import Button from '~/components/layout/Button' import Col from '~/components/layout/Col' import Row from '~/components/layout/Row' import Controls from './Controls' @@ -12,12 +13,12 @@ export { default as Step } from './Step' type Props = { classes: Object, - goTitle: string, - goPath: string, steps: string[], finishedTransaction: boolean, + finishedButton: React$Node, initialValues?: Object, children: React$Node, + onReset?: () => void, onSubmit: (values: Object, form: FormApi, callback: ?(errors: ?Object) => void) => ?Object | Promise | void, } @@ -33,6 +34,13 @@ type PageProps = { class GnoStepper extends React.PureComponent { static Page = ({ children }: PageProps) => children + static FinishButton = ({ + component, to, title, ...props + }) => ( + + ) constructor(props: Props) { super(props) @@ -42,6 +50,17 @@ class GnoStepper extends React.PureComponent { } } + onReset = () => { + const resetCallback = this.props.onReset + if (resetCallback) { + resetCallback() + } + this.setState(() => ({ + page: 0, + values: this.props.initialValues || {}, + })) + } + getActivePageFrom = (pages: React$Node) => { const activePageProps = React.Children.toArray(pages)[this.state.page].props const { children, ...props } = activePageProps @@ -80,11 +99,12 @@ class GnoStepper extends React.PureComponent { render() { const { - steps, children, finishedTransaction, goTitle, goPath, classes, + steps, children, finishedTransaction, finishedButton, classes, } = this.props const { page, values } = this.state const activePage = this.getActivePageFrom(children) const isLastPage = page === steps.length - 1 + const finished = React.cloneElement(React.Children.only(finishedButton), { onClick: this.onReset }) return ( @@ -108,11 +128,10 @@ class GnoStepper extends React.PureComponent { diff --git a/src/routes/open/components/Layout.jsx b/src/routes/open/components/Layout.jsx index 25a6723394..b41207ecc2 100644 --- a/src/routes/open/components/Layout.jsx +++ b/src/routes/open/components/Layout.jsx @@ -6,6 +6,7 @@ import Confirmation from '~/routes/open/components/FormConfirmation' import Review from '~/routes/open/components/ReviewInformation' import SafeFields, { safeFieldsValidation } from '~/routes/open/components/SafeForm' import { SAFELIST_ADDRESS } from '~/routes/routes' +import Link from '~/components/layout/Link' const getSteps = () => [ 'Fill Safe Form', 'Review Information', 'Deploy it', @@ -29,16 +30,16 @@ const Layout = ({ }: Props) => { const steps = getSteps() const initialValues = initialValuesFrom(userAccount) + const finishedButton = return ( { provider ? ( diff --git a/src/routes/safe/component/Withdrawn/index.jsx b/src/routes/safe/component/Withdrawn/index.jsx index e46c6ea597..c6ddba18c2 100644 --- a/src/routes/safe/component/Withdrawn/index.jsx +++ b/src/routes/safe/component/Withdrawn/index.jsx @@ -2,7 +2,6 @@ import * as React from 'react' import { connect } from 'react-redux' import Stepper from '~/components/Stepper' -import { SAFELIST_ADDRESS } from '~/routes/routes' import { sleep } from '~/utils/timer' import { type DailyLimit } from '~/routes/safe/store/model/dailyLimit' import actions, { type Actions } from './actions' @@ -24,7 +23,7 @@ type State = { done: boolean, } -export const SEE_TXS_BUTTON_TEXT = 'DONE' +export const SEE_TXS_BUTTON_TEXT = 'RESET' class Withdrawn extends React.Component { state = { @@ -45,19 +44,24 @@ class Withdrawn extends React.Component { } } + onReset = () => { + this.setState({ done: false }) + } + render() { - const { dailyLimit, safeAddress } = this.props + const { dailyLimit } = this.props const { done } = this.state const steps = getSteps() + const finishedButton = return ( { WithdrawnForm } From a16b5ed0f253c06d4d7c3e84d2a160034b018ce4 Mon Sep 17 00:00:00 2001 From: apanizo Date: Thu, 17 May 2018 15:46:31 +0200 Subject: [PATCH 071/138] WA-238 Add test safesByOnwer selector with casi insensitive comparing addresses --- src/routes/open/components/Layout.jsx | 2 +- src/routes/safeList/store/selectors/index.js | 8 ++++++- .../safeList/store/test/safes.selector.js | 21 +++++++++++++++++++ 3 files changed, 29 insertions(+), 2 deletions(-) diff --git a/src/routes/open/components/Layout.jsx b/src/routes/open/components/Layout.jsx index b41207ecc2..44f8620ba0 100644 --- a/src/routes/open/components/Layout.jsx +++ b/src/routes/open/components/Layout.jsx @@ -30,7 +30,7 @@ const Layout = ({ }: Props) => { const steps = getSteps() const initialValues = initialValuesFrom(userAccount) - const finishedButton = + const finishedButton = return ( diff --git a/src/routes/safeList/store/selectors/index.js b/src/routes/safeList/store/selectors/index.js index befd256974..93989643c0 100644 --- a/src/routes/safeList/store/selectors/index.js +++ b/src/routes/safeList/store/selectors/index.js @@ -4,6 +4,7 @@ import { createSelector, type Selector } from 'reselect' import { type GlobalState } from '~/store/index' import { type Safe } from '~/routes/safe/store/model/safe' import { userAccountSelector } from '~/wallets/store/selectors/index' +import { type Owner } from '~/routes/safe/store/model/owner' export const safesMapSelector = (state: GlobalState): Map => state.safes const safesListSelector: Selector> = createSelector( @@ -16,5 +17,10 @@ export const safesByOwnerSelector: Selector> = creat safesListSelector, (userAddress: string, safes: List): List => safes.filter((safe: Safe) => - safe.owners.filter(owner => owner.get('address') === userAddress).count() > 0), + safe.owners.filter((owner: Owner) => { + const ownerLower = owner.get('address').toLowerCase() + const userLower = userAddress.toLowerCase() + + return ownerLower === userLower + }).count() > 0), ) diff --git a/src/routes/safeList/store/test/safes.selector.js b/src/routes/safeList/store/test/safes.selector.js index a38edf16a3..f268154cc9 100644 --- a/src/routes/safeList/store/test/safes.selector.js +++ b/src/routes/safeList/store/test/safes.selector.js @@ -90,6 +90,27 @@ const safesListSelectorTests = () => { expect(safes.count()).toEqual(2) expect(safes.get(0)).not.toEqual(safes.get(1)) }) + + it('should return safes under owners case-insensitive', () => { + // GIVEN + let map: Map = Map() + const userAccountUpper = walletRecord.account.toUpperCase() + map = map.set('fooAddress', SafeFactory.oneOwnerSafe(userAccountUpper)) + map = map.set('barAddress', SafeFactory.twoOwnersSafe('foo', userAccountUpper)) + + const reduxStore = { + [SAFE_REDUCER_ID]: map, + [PROVIDER_REDUCER_ID]: walletRecord, + balances: undefined, + } + + // WHEN + const safes = safesByOwnerSelector(reduxStore, {}) + + // THEN + expect(safes.count()).toEqual(2) + expect(safes.get(0)).not.toEqual(safes.get(1)) + }) }) } From 7efcf4496131a3cc4e639deb45cf6dcd96c7a723 Mon Sep 17 00:00:00 2001 From: apanizo Date: Mon, 21 May 2018 16:09:01 +0200 Subject: [PATCH 072/138] WA-238 Adding confirmation and transaction model entities (Immutable Records) --- src/routes/safe/store/model/confirmation.js | 16 +++++++++++++ src/routes/safe/store/model/transaction.js | 26 +++++++++++++++++++++ src/routes/safe/store/reducer/safe.js | 4 ++-- 3 files changed, 44 insertions(+), 2 deletions(-) create mode 100644 src/routes/safe/store/model/confirmation.js create mode 100644 src/routes/safe/store/model/transaction.js diff --git a/src/routes/safe/store/model/confirmation.js b/src/routes/safe/store/model/confirmation.js new file mode 100644 index 0000000000..71fa560206 --- /dev/null +++ b/src/routes/safe/store/model/confirmation.js @@ -0,0 +1,16 @@ +// @flow +import { Record } from 'immutable' +import type { RecordFactory, RecordOf } from 'immutable' +import { makeOwner, type Owner } from '~/routes/safe/store/model/owner' + +export type ConfirmationProps = { + owner: Owner, + status: boolean, // false: not confirmed, true: confirmed +} + +export const makeConfirmation: RecordFactory = Record({ + owner: makeOwner(), + status: false, +}) + +export type Confirmation = RecordOf diff --git a/src/routes/safe/store/model/transaction.js b/src/routes/safe/store/model/transaction.js new file mode 100644 index 0000000000..83a664d09b --- /dev/null +++ b/src/routes/safe/store/model/transaction.js @@ -0,0 +1,26 @@ +// @flow +import { List, Record } from 'immutable' +import type { RecordFactory, RecordOf } from 'immutable' +import { type Confirmation } from '~/routes/safe/store/model/confirmation' + +export type TransactionProps = { + name: string, + nonce: number, + value: number, + threshold: number, + confirmations: List, + destination: string, + tx: string, +} + +export const makeTransaction: RecordFactory = Record({ + name: '', + nonce: 0, + value: 0, + confirmations: List([]), + destination: '', + tx: '', + threshold: 0, +}) + +export type Transaction = RecordOf diff --git a/src/routes/safe/store/reducer/safe.js b/src/routes/safe/store/reducer/safe.js index 550e9b8717..ec6543eff8 100644 --- a/src/routes/safe/store/reducer/safe.js +++ b/src/routes/safe/store/reducer/safe.js @@ -5,7 +5,7 @@ import addSafe, { ADD_SAFE } from '~/routes/safe/store/actions/addSafe' import updateDailyLimit, { UPDATE_DAILY_LIMIT } from '~/routes/safe/store/actions/updateDailyLimit' import { makeOwner } from '~/routes/safe/store/model/owner' import { type Safe, makeSafe } from '~/routes/safe/store/model/safe' -import { loadSafes, saveSafes } from '~/utils/localStorage' +import { load, saveSafes, SAFES_KEY } from '~/utils/localStorage' import { makeDailyLimit } from '~/routes/safe/store/model/dailyLimit' export const SAFE_REDUCER_ID = 'safes' @@ -26,7 +26,7 @@ const buildSafesFrom = (loadedSafes: Object): State => { } export const calculateInitialState = (): State => { - const storedSafes = loadSafes() + const storedSafes = load(SAFES_KEY) return storedSafes ? buildSafesFrom(storedSafes) : Map() } From 302fc1361377bb5879285b3e4fa70f7bef2a0fcd Mon Sep 17 00:00:00 2001 From: apanizo Date: Mon, 21 May 2018 16:10:05 +0200 Subject: [PATCH 073/138] WA-238 Refactor localStorage class allowing load data by key --- src/utils/localStorage.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/utils/localStorage.js b/src/utils/localStorage.js index 40edc4c045..e537d38ae8 100644 --- a/src/utils/localStorage.js +++ b/src/utils/localStorage.js @@ -1,9 +1,10 @@ // @flow -const SAFES_KEY = 'SAFES' +export const SAFES_KEY = 'SAFES' +export const TX_KEY = 'TX' -export const loadSafes = () => { +export const load = (key: string) => { try { - const serializedState = localStorage.getItem(SAFES_KEY) + const serializedState = localStorage.getItem(key) if (serializedState === null) { return undefined } From 60d7f9056e792e2b56fcdbde5e8199554871afc0 Mon Sep 17 00:00:00 2001 From: apanizo Date: Mon, 21 May 2018 16:11:02 +0200 Subject: [PATCH 074/138] WA-238 Transaction tests for storing confirmations --- .../Transactions/test/transactions.builder.js | 0 .../Transactions/test/transactions.test.js | 181 ++++++++++++++++++ .../component/Transactions/transactions.js | 67 +++++++ .../safe/store/test/builder/safe.builder.js | 2 +- 4 files changed, 249 insertions(+), 1 deletion(-) create mode 100644 src/routes/safe/component/Transactions/test/transactions.builder.js create mode 100644 src/routes/safe/component/Transactions/test/transactions.test.js create mode 100644 src/routes/safe/component/Transactions/transactions.js diff --git a/src/routes/safe/component/Transactions/test/transactions.builder.js b/src/routes/safe/component/Transactions/test/transactions.builder.js new file mode 100644 index 0000000000..e69de29bb2 diff --git a/src/routes/safe/component/Transactions/test/transactions.test.js b/src/routes/safe/component/Transactions/test/transactions.test.js new file mode 100644 index 0000000000..1f34048bc6 --- /dev/null +++ b/src/routes/safe/component/Transactions/test/transactions.test.js @@ -0,0 +1,181 @@ +// @flow +import { List, Map } from 'immutable' +import { createTransaction, loadSafeTransactions } from '~/routes/safe/component/Transactions/transactions' +import { type Transaction } from '~/routes/safe/store/model/transaction' +import { SafeFactory } from '~/routes/safe/store/test/builder/safe.builder' +import { type Safe } from '~/routes/safe/store/model/safe' +import { type Owner } from '~/routes/safe/store/model/owner' +import { type Confirmation } from '~/routes/safe/store/model/confirmation' + +const testSizeOfSafesWith = (transactions, size) => { + expect(transactions).not.toBe(undefined) + expect(transactions).not.toBe(null) + expect(transactions.size).toBe(size) +} + +const testSizeOfTransactions = (safeTxs, size) => { + if (!safeTxs) { throw new Error() } + expect(safeTxs.count()).toBe(size) + expect(safeTxs.get(0)).not.toBe(undefined) + expect(safeTxs.get(0)).not.toBe(null) +} + +const testTransactionFrom = (safeTxs, pos, name, nonce, value, threshold, destination, firstOwner, secondOwner) => { + if (!safeTxs) { throw new Error() } + const tx: Transaction | typeof undefined = safeTxs.get(pos) + + if (!tx) { throw new Error() } + expect(tx.get('name')).toBe(name) + expect(tx.get('value')).toBe(value) + expect(tx.get('threshold')).toBe(threshold) + expect(tx.get('destination')).toBe(destination) + expect(tx.get('confirmations').count()).toBe(2) + expect(tx.get('nonce')).toBe(nonce) + + const confirmations: List = tx.get('confirmations') + const firstConfirmation: Confirmation | typeof undefined = confirmations.get(0) + if (!firstConfirmation) { throw new Error() } + expect(firstConfirmation.get('owner')).not.toBe(undefined) + expect(firstConfirmation.get('owner')).toEqual(firstOwner) + expect(firstConfirmation.get('status')).toBe(false) + + const secondConfirmation: Confirmation | typeof undefined = confirmations.get(1) + if (!secondConfirmation) { throw new Error() } + expect(secondConfirmation.get('owner')).not.toBe(undefined) + expect(secondConfirmation.get('owner')).toEqual(secondOwner) + expect(secondConfirmation.get('status')).toBe(false) +} + +describe('Transactions Suite', () => { + let safe: Safe + let destination: string + let value: number + let owners: List + beforeEach(async () => { + localStorage.clear() + + safe = SafeFactory.twoOwnersSafe('foo', 'bar') + destination = 'baz' + value = 2 + owners = safe.get('owners') + + const firstOwner = owners.get(0) + if (!firstOwner) { throw new Error() } + const secondOwner = owners.get(1) + if (!secondOwner) { throw new Error() } + }) + + it('adds first confirmation to stored safe', async () => { + // GIVEN + const txName = 'Buy butteries for project' + const nonce: number = 10 + createTransaction(txName, nonce, destination, value, owners, safe.get('name'), safe.get('address'), safe.get('confirmations')) + + // WHEN + const transactions: Map> = loadSafeTransactions() + + // THEN + testSizeOfSafesWith(transactions, 1) + + const safeTransactions: List | typeof undefined = transactions.get(safe.get('address')) + if (!safeTransactions) { throw new Error() } + testSizeOfTransactions(safeTransactions, 1) + + testTransactionFrom(safeTransactions, 0, txName, nonce, value, 2, destination, owners.get(0), owners.get(1)) + }) + + it('adds second confirmation to stored safe with one confirmation', async () => { + // GIVEN + const firstTxName = 'Buy butteries for project' + const firstNonce: number = Date.now() + createTransaction(firstTxName, firstNonce, destination, value, owners, safe.get('name'), safe.get('address'), safe.get('confirmations')) + + const secondTxName = 'Buy printers for project' + const secondNonce: number = firstNonce + 100 + createTransaction(secondTxName, secondNonce, destination, value, owners, safe.get('name'), safe.get('address'), safe.get('confirmations')) + + // WHEN + const transactions: Map> = loadSafeTransactions() + + // THEN + testSizeOfSafesWith(transactions, 1) + + const safeTxs: List | typeof undefined = transactions.get(safe.get('address')) + if (!safeTxs) { throw new Error() } + testSizeOfTransactions(safeTxs, 2) + + testTransactionFrom(safeTxs, 0, firstTxName, firstNonce, value, 2, destination, owners.get(0), owners.get(1)) + testTransactionFrom(safeTxs, 1, secondTxName, secondNonce, value, 2, destination, owners.get(0), owners.get(1)) + }) + + it('adds second confirmation to stored safe having two safes with one confirmation each', async () => { + const txName = 'Buy batteris for Alplha project' + const nonce = 10 + createTransaction(txName, nonce, destination, value, owners, safe.get('name'), safe.get('address'), safe.get('confirmations')) + + const secondSafe = SafeFactory.dailyLimitSafe(10, 2) + const txSecondName = 'Buy batteris for Beta project' + const txSecondNonce = 10 + createTransaction( + txSecondName, txSecondNonce, destination, value, + secondSafe.get('owners'), secondSafe.get('name'), secondSafe.get('address'), secondSafe.get('confirmations'), + ) + + let transactions: Map> = loadSafeTransactions() + testSizeOfSafesWith(transactions, 2) + + const firstSafeTxs: List | typeof undefined = transactions.get(safe.get('address')) + if (!firstSafeTxs) { throw new Error() } + testSizeOfTransactions(firstSafeTxs, 1) + + const secondSafeTxs: List | typeof undefined = transactions.get(secondSafe.get('address')) + if (!secondSafeTxs) { throw new Error() } + testSizeOfTransactions(secondSafeTxs, 1) + + // WHEN + const txFirstName = 'Buy paper for Alplha project' + const txFirstNonce = 11 + createTransaction( + txFirstName, txFirstNonce, destination, value, + safe.get('owners'), safe.get('name'), safe.get('address'), safe.get('confirmations'), + ) + + transactions = loadSafeTransactions() + + // THEN + testSizeOfSafesWith(transactions, 2) + testSizeOfTransactions(transactions.get(safe.get('address')), 2) + testSizeOfTransactions(transactions.get(secondSafe.get('address')), 1) + + // Test 2 transactions of first safe + testTransactionFrom( + transactions.get(safe.address), 0, + txName, nonce, value, 2, destination, + owners.get(0), owners.get(1), + ) + testTransactionFrom( + transactions.get(safe.address), 1, + txFirstName, txFirstNonce, value, 2, destination, + owners.get(0), owners.get(1), + ) + + // Test one transaction of second safe + testTransactionFrom( + transactions.get(secondSafe.address), 0, + txSecondName, txSecondNonce, value, 2, destination, + secondSafe.get('owners').get(0), secondSafe.get('owners').get(1), + ) + }) + + it('does not allow to store same transaction twice', async () => { + // GIVEN + const txName = 'Buy butteries for project' + const nonce: number = 10 + createTransaction(txName, nonce, destination, value, owners, safe.get('name'), safe.get('address'), safe.get('confirmations')) + + // WHEN + const createTxFnc = () => createTransaction(txName, nonce, destination, value, owners, safe.get('name'), safe.get('address'), safe.get('confirmations')) + expect(createTxFnc).toThrow(/Transaction with same nonce/) + }) +}) + diff --git a/src/routes/safe/component/Transactions/transactions.js b/src/routes/safe/component/Transactions/transactions.js new file mode 100644 index 0000000000..6b4229dfa7 --- /dev/null +++ b/src/routes/safe/component/Transactions/transactions.js @@ -0,0 +1,67 @@ +// @flow +import { List, Map } from 'immutable' +import { type Owner, makeOwner } from '~/routes/safe/store/model/owner' +import { load, TX_KEY } from '~/utils/localStorage' +import { type Confirmation, type ConfirmationProps, makeConfirmation } from '~/routes/safe/store/model/confirmation' +import { makeTransaction, type Transaction, type TransactionProps } from '~/routes/safe/store/model/transaction' + +const buildConfirmationsFrom = (owners: List): List => + owners.map((owner: Owner) => makeConfirmation({ owner, status: false })) + +export const createTransaction = ( + name: string, + nonce: number, + destination: string, + value: number, + owners: List, + safeName: string, + safeAddress: string, + safeThreshold: number, +) => { + const confirmations: List = buildConfirmationsFrom(owners) + const transaction: Transaction = makeTransaction({ + name, nonce, value, confirmations, destination, threshold: safeThreshold, + }) + + const safeTransactions = load(TX_KEY) || {} + const transactions = safeTransactions[safeAddress] + const txsRecord = transactions ? List(transactions) : List([]) + + if (txsRecord.find((txs: TransactionProps) => txs.nonce === nonce)) { + throw new Error(`Transaction with same nonce: ${nonce} already created for safe: ${safeAddress}`) + } + + safeTransactions[safeAddress] = txsRecord.push(transaction) + + localStorage.setItem(TX_KEY, JSON.stringify(safeTransactions)) +} + +export const loadSafeTransactions = () => { + const safes = load(TX_KEY) || {} + + return Map().withMutations((map: Map>) => + Object.keys(safes).map((safe: string) => { + const safeTxs = safes[safe] + const safeTxsRecord = safeTxs.map((tx: TransactionProps) => { + const { confirmations } = tx + const txRecord = makeTransaction({ + ...tx, + confirmations: List(confirmations.map((conf: ConfirmationProps) => + makeConfirmation({ ...conf, owner: makeOwner(conf.owner) }))), + }) + + return txRecord + }) + + return map.set(safe, List(safeTxsRecord)) + })) +} + +/* TO USE as a selector +export const getTransactionsOf = async (safeAddress: string) => { + const safesTransactions = loadSafeTransactions() + const safeTxs = List(safesTransactions.get(safeAddress)) + + return safeTxs +} +*/ diff --git a/src/routes/safe/store/test/builder/safe.builder.js b/src/routes/safe/store/test/builder/safe.builder.js index 95f27fb8a8..a1dcc2a708 100644 --- a/src/routes/safe/store/test/builder/safe.builder.js +++ b/src/routes/safe/store/test/builder/safe.builder.js @@ -64,7 +64,7 @@ export class SafeFactory { .get() static dailyLimitSafe = (dailyLimit: number, spentToday: number) => aSafe() - .withAddress('0x03db1a8b26d08df23337e9276a36b474510f0026') + .withAddress('0x03db1a8b26d08df23337e9276a36b474510f0027') .withName('Adol & Tobias Safe') .withConfirmations(2) .withOwner( From 3f77bc1dbd2cd6e8e3f243c99d6fe064a239c684 Mon Sep 17 00:00:00 2001 From: apanizo Date: Mon, 21 May 2018 16:58:03 +0200 Subject: [PATCH 075/138] WA-238 Tests checking owners conditions --- .../Transactions/test/transactions.test.js | 71 ++++++++++++++----- .../component/Transactions/transactions.js | 34 +++++---- 2 files changed, 74 insertions(+), 31 deletions(-) diff --git a/src/routes/safe/component/Transactions/test/transactions.test.js b/src/routes/safe/component/Transactions/test/transactions.test.js index 1f34048bc6..7c6557b541 100644 --- a/src/routes/safe/component/Transactions/test/transactions.test.js +++ b/src/routes/safe/component/Transactions/test/transactions.test.js @@ -20,7 +20,8 @@ const testSizeOfTransactions = (safeTxs, size) => { expect(safeTxs.get(0)).not.toBe(null) } -const testTransactionFrom = (safeTxs, pos, name, nonce, value, threshold, destination, firstOwner, secondOwner) => { +const testTransactionFrom = +(safeTxs, pos, name, nonce, value, threshold, destination, creator, firstOwner, secondOwner) => { if (!safeTxs) { throw new Error() } const tx: Transaction | typeof undefined = safeTxs.get(pos) @@ -37,7 +38,7 @@ const testTransactionFrom = (safeTxs, pos, name, nonce, value, threshold, destin if (!firstConfirmation) { throw new Error() } expect(firstConfirmation.get('owner')).not.toBe(undefined) expect(firstConfirmation.get('owner')).toEqual(firstOwner) - expect(firstConfirmation.get('status')).toBe(false) + expect(firstConfirmation.get('status')).toBe(true) const secondConfirmation: Confirmation | typeof undefined = confirmations.get(1) if (!secondConfirmation) { throw new Error() } @@ -69,7 +70,7 @@ describe('Transactions Suite', () => { // GIVEN const txName = 'Buy butteries for project' const nonce: number = 10 - createTransaction(txName, nonce, destination, value, owners, safe.get('name'), safe.get('address'), safe.get('confirmations')) + createTransaction(txName, nonce, destination, value, 'foo', owners, '', safe.get('name'), safe.get('address'), safe.get('confirmations')) // WHEN const transactions: Map> = loadSafeTransactions() @@ -81,18 +82,18 @@ describe('Transactions Suite', () => { if (!safeTransactions) { throw new Error() } testSizeOfTransactions(safeTransactions, 1) - testTransactionFrom(safeTransactions, 0, txName, nonce, value, 2, destination, owners.get(0), owners.get(1)) + testTransactionFrom(safeTransactions, 0, txName, nonce, value, 2, destination, 'foo', owners.get(0), owners.get(1)) }) it('adds second confirmation to stored safe with one confirmation', async () => { // GIVEN const firstTxName = 'Buy butteries for project' const firstNonce: number = Date.now() - createTransaction(firstTxName, firstNonce, destination, value, owners, safe.get('name'), safe.get('address'), safe.get('confirmations')) + createTransaction(firstTxName, firstNonce, destination, value, 'foo', owners, '', safe.get('name'), safe.get('address'), safe.get('confirmations')) const secondTxName = 'Buy printers for project' const secondNonce: number = firstNonce + 100 - createTransaction(secondTxName, secondNonce, destination, value, owners, safe.get('name'), safe.get('address'), safe.get('confirmations')) + createTransaction(secondTxName, secondNonce, destination, value, 'foo', owners, '', safe.get('name'), safe.get('address'), safe.get('confirmations')) // WHEN const transactions: Map> = loadSafeTransactions() @@ -104,21 +105,21 @@ describe('Transactions Suite', () => { if (!safeTxs) { throw new Error() } testSizeOfTransactions(safeTxs, 2) - testTransactionFrom(safeTxs, 0, firstTxName, firstNonce, value, 2, destination, owners.get(0), owners.get(1)) - testTransactionFrom(safeTxs, 1, secondTxName, secondNonce, value, 2, destination, owners.get(0), owners.get(1)) + testTransactionFrom(safeTxs, 0, firstTxName, firstNonce, value, 2, destination, 'foo', owners.get(0), owners.get(1)) + testTransactionFrom(safeTxs, 1, secondTxName, secondNonce, value, 2, destination, 'foo', owners.get(0), owners.get(1)) }) it('adds second confirmation to stored safe having two safes with one confirmation each', async () => { const txName = 'Buy batteris for Alplha project' const nonce = 10 - createTransaction(txName, nonce, destination, value, owners, safe.get('name'), safe.get('address'), safe.get('confirmations')) + createTransaction(txName, nonce, destination, value, 'foo', owners, '', safe.get('name'), safe.get('address'), safe.get('confirmations')) const secondSafe = SafeFactory.dailyLimitSafe(10, 2) const txSecondName = 'Buy batteris for Beta project' const txSecondNonce = 10 createTransaction( - txSecondName, txSecondNonce, destination, value, - secondSafe.get('owners'), secondSafe.get('name'), secondSafe.get('address'), secondSafe.get('confirmations'), + txSecondName, txSecondNonce, destination, value, '0x03db1a8b26d08df23337e9276a36b474510f0023', + secondSafe.get('owners'), '', secondSafe.get('name'), secondSafe.get('address'), secondSafe.get('confirmations'), ) let transactions: Map> = loadSafeTransactions() @@ -136,8 +137,8 @@ describe('Transactions Suite', () => { const txFirstName = 'Buy paper for Alplha project' const txFirstNonce = 11 createTransaction( - txFirstName, txFirstNonce, destination, value, - safe.get('owners'), safe.get('name'), safe.get('address'), safe.get('confirmations'), + txFirstName, txFirstNonce, destination, value, 'foo', + safe.get('owners'), '', safe.get('name'), safe.get('address'), safe.get('confirmations'), ) transactions = loadSafeTransactions() @@ -151,19 +152,19 @@ describe('Transactions Suite', () => { testTransactionFrom( transactions.get(safe.address), 0, txName, nonce, value, 2, destination, - owners.get(0), owners.get(1), + 'foo', owners.get(0), owners.get(1), ) testTransactionFrom( transactions.get(safe.address), 1, txFirstName, txFirstNonce, value, 2, destination, - owners.get(0), owners.get(1), + 'foo', owners.get(0), owners.get(1), ) // Test one transaction of second safe testTransactionFrom( transactions.get(secondSafe.address), 0, txSecondName, txSecondNonce, value, 2, destination, - secondSafe.get('owners').get(0), secondSafe.get('owners').get(1), + '0x03db1a8b26d08df23337e9276a36b474510f0023', secondSafe.get('owners').get(0), secondSafe.get('owners').get(1), ) }) @@ -171,11 +172,45 @@ describe('Transactions Suite', () => { // GIVEN const txName = 'Buy butteries for project' const nonce: number = 10 - createTransaction(txName, nonce, destination, value, owners, safe.get('name'), safe.get('address'), safe.get('confirmations')) + createTransaction(txName, nonce, destination, value, 'foo', owners, '', safe.get('name'), safe.get('address'), safe.get('confirmations')) // WHEN - const createTxFnc = () => createTransaction(txName, nonce, destination, value, owners, safe.get('name'), safe.get('address'), safe.get('confirmations')) + const createTxFnc = () => createTransaction(txName, nonce, destination, value, 'foo', owners, '', safe.get('name'), safe.get('address'), safe.get('confirmations')) expect(createTxFnc).toThrow(/Transaction with same nonce/) }) + + it('checks the owner who creates the tx has confirmed it', async () => { + // GIVEN + const txName = 'Buy butteries for project' + const nonce: number = 10 + createTransaction(txName, nonce, destination, value, 'foo', owners, '', safe.get('name'), safe.get('address'), safe.get('confirmations')) + + // WHEN + const transactions: Map> = loadSafeTransactions() + + // THEN + testSizeOfSafesWith(transactions, 1) + }) + + it('checks the owner who creates the tx is an owner', async () => { + // GIVEN + const txName = 'Buy butteries for project' + const nonce: number = 10 + const ownerName = 'invented' + const createTxFnc = () => createTransaction(txName, nonce, destination, value, ownerName, owners, '', safe.get('name'), safe.get('address'), safe.get('confirmations')) + + expect(createTxFnc).toThrow(/The creator of the tx is not an owner/) + }) + + it('checks if safe has one owner transaction has been executed', async () => { + const ownerName = 'foo' + const oneOwnerSafe = SafeFactory.oneOwnerSafe(ownerName) + const txName = 'Buy butteries for project' + const nonce: number = 10 + const tx = '' + const createTxFnc = () => createTransaction(txName, nonce, destination, value, ownerName, oneOwnerSafe.get('owners'), tx, oneOwnerSafe.get('name'), oneOwnerSafe.get('address'), oneOwnerSafe.get('confirmations')) + + expect(createTxFnc).toThrow(/The tx should be mined before storing it in safes with one owner/) + }) }) diff --git a/src/routes/safe/component/Transactions/transactions.js b/src/routes/safe/component/Transactions/transactions.js index 6b4229dfa7..1bf5de411f 100644 --- a/src/routes/safe/component/Transactions/transactions.js +++ b/src/routes/safe/component/Transactions/transactions.js @@ -5,22 +5,39 @@ import { load, TX_KEY } from '~/utils/localStorage' import { type Confirmation, type ConfirmationProps, makeConfirmation } from '~/routes/safe/store/model/confirmation' import { makeTransaction, type Transaction, type TransactionProps } from '~/routes/safe/store/model/transaction' -const buildConfirmationsFrom = (owners: List): List => - owners.map((owner: Owner) => makeConfirmation({ owner, status: false })) +const buildConfirmationsFrom = (owners: List, creator: string): List => { + if (!owners) { + throw new Error('This safe has no owners') + } + + if (!owners.find((owner: Owner) => owner.get('address') === creator)) { + throw new Error('The creator of the tx is not an owner') + } + + return owners.map((owner: Owner) => makeConfirmation({ owner, status: owner.get('address') === creator })) +} export const createTransaction = ( name: string, nonce: number, destination: string, value: number, + creator: string, owners: List, + tx: string, safeName: string, safeAddress: string, safeThreshold: number, ) => { - const confirmations: List = buildConfirmationsFrom(owners) + const confirmations: List = buildConfirmationsFrom(owners, creator) + + const notMinedWhenOneOwnerSafe = owners.count() === 1 && !tx + if (notMinedWhenOneOwnerSafe) { + throw new Error('The tx should be mined before storing it in safes with one owner') + } + const transaction: Transaction = makeTransaction({ - name, nonce, value, confirmations, destination, threshold: safeThreshold, + name, nonce, value, confirmations, destination, threshold: safeThreshold, tx, }) const safeTransactions = load(TX_KEY) || {} @@ -56,12 +73,3 @@ export const loadSafeTransactions = () => { return map.set(safe, List(safeTxsRecord)) })) } - -/* TO USE as a selector -export const getTransactionsOf = async (safeAddress: string) => { - const safesTransactions = loadSafeTransactions() - const safeTxs = List(safesTransactions.get(safeAddress)) - - return safeTxs -} -*/ From 29e92ca622bd768b4c5c3b634a9aac6a8af073c8 Mon Sep 17 00:00:00 2001 From: apanizo Date: Tue, 22 May 2018 08:56:49 +0200 Subject: [PATCH 076/138] WA-238 Refactor transaction tests --- .../Transactions/test/transactions.test.js | 63 ++++--------------- .../Transactions/test/transactionsHelper.js | 48 ++++++++++++++ 2 files changed, 61 insertions(+), 50 deletions(-) create mode 100644 src/routes/safe/component/Transactions/test/transactionsHelper.js diff --git a/src/routes/safe/component/Transactions/test/transactions.test.js b/src/routes/safe/component/Transactions/test/transactions.test.js index 7c6557b541..23e8fea436 100644 --- a/src/routes/safe/component/Transactions/test/transactions.test.js +++ b/src/routes/safe/component/Transactions/test/transactions.test.js @@ -5,47 +5,7 @@ import { type Transaction } from '~/routes/safe/store/model/transaction' import { SafeFactory } from '~/routes/safe/store/test/builder/safe.builder' import { type Safe } from '~/routes/safe/store/model/safe' import { type Owner } from '~/routes/safe/store/model/owner' -import { type Confirmation } from '~/routes/safe/store/model/confirmation' - -const testSizeOfSafesWith = (transactions, size) => { - expect(transactions).not.toBe(undefined) - expect(transactions).not.toBe(null) - expect(transactions.size).toBe(size) -} - -const testSizeOfTransactions = (safeTxs, size) => { - if (!safeTxs) { throw new Error() } - expect(safeTxs.count()).toBe(size) - expect(safeTxs.get(0)).not.toBe(undefined) - expect(safeTxs.get(0)).not.toBe(null) -} - -const testTransactionFrom = -(safeTxs, pos, name, nonce, value, threshold, destination, creator, firstOwner, secondOwner) => { - if (!safeTxs) { throw new Error() } - const tx: Transaction | typeof undefined = safeTxs.get(pos) - - if (!tx) { throw new Error() } - expect(tx.get('name')).toBe(name) - expect(tx.get('value')).toBe(value) - expect(tx.get('threshold')).toBe(threshold) - expect(tx.get('destination')).toBe(destination) - expect(tx.get('confirmations').count()).toBe(2) - expect(tx.get('nonce')).toBe(nonce) - - const confirmations: List = tx.get('confirmations') - const firstConfirmation: Confirmation | typeof undefined = confirmations.get(0) - if (!firstConfirmation) { throw new Error() } - expect(firstConfirmation.get('owner')).not.toBe(undefined) - expect(firstConfirmation.get('owner')).toEqual(firstOwner) - expect(firstConfirmation.get('status')).toBe(true) - - const secondConfirmation: Confirmation | typeof undefined = confirmations.get(1) - if (!secondConfirmation) { throw new Error() } - expect(secondConfirmation.get('owner')).not.toBe(undefined) - expect(secondConfirmation.get('owner')).toEqual(secondOwner) - expect(secondConfirmation.get('status')).toBe(false) -} +import { testSizeOfSafesWith, testSizeOfTransactions, testTransactionFrom } from './transactionsHelper' describe('Transactions Suite', () => { let safe: Safe @@ -89,11 +49,12 @@ describe('Transactions Suite', () => { // GIVEN const firstTxName = 'Buy butteries for project' const firstNonce: number = Date.now() - createTransaction(firstTxName, firstNonce, destination, value, 'foo', owners, '', safe.get('name'), safe.get('address'), safe.get('confirmations')) + const safeAddress = safe.get('address') + createTransaction(firstTxName, firstNonce, destination, value, 'foo', owners, '', safe.get('name'), safeAddress, safe.get('confirmations')) const secondTxName = 'Buy printers for project' const secondNonce: number = firstNonce + 100 - createTransaction(secondTxName, secondNonce, destination, value, 'foo', owners, '', safe.get('name'), safe.get('address'), safe.get('confirmations')) + createTransaction(secondTxName, secondNonce, destination, value, 'foo', owners, '', safe.get('name'), safeAddress, safe.get('confirmations')) // WHEN const transactions: Map> = loadSafeTransactions() @@ -101,7 +62,7 @@ describe('Transactions Suite', () => { // THEN testSizeOfSafesWith(transactions, 1) - const safeTxs: List | typeof undefined = transactions.get(safe.get('address')) + const safeTxs: List | typeof undefined = transactions.get(safeAddress) if (!safeTxs) { throw new Error() } testSizeOfTransactions(safeTxs, 2) @@ -112,24 +73,26 @@ describe('Transactions Suite', () => { it('adds second confirmation to stored safe having two safes with one confirmation each', async () => { const txName = 'Buy batteris for Alplha project' const nonce = 10 - createTransaction(txName, nonce, destination, value, 'foo', owners, '', safe.get('name'), safe.get('address'), safe.get('confirmations')) + const safeAddress = safe.address + createTransaction(txName, nonce, destination, value, 'foo', owners, '', safe.get('name'), safeAddress, safe.get('confirmations')) const secondSafe = SafeFactory.dailyLimitSafe(10, 2) const txSecondName = 'Buy batteris for Beta project' const txSecondNonce = 10 + const secondSafeAddress = secondSafe.address createTransaction( txSecondName, txSecondNonce, destination, value, '0x03db1a8b26d08df23337e9276a36b474510f0023', - secondSafe.get('owners'), '', secondSafe.get('name'), secondSafe.get('address'), secondSafe.get('confirmations'), + secondSafe.get('owners'), '', secondSafe.get('name'), secondSafeAddress, secondSafe.get('confirmations'), ) let transactions: Map> = loadSafeTransactions() testSizeOfSafesWith(transactions, 2) - const firstSafeTxs: List | typeof undefined = transactions.get(safe.get('address')) + const firstSafeTxs: List | typeof undefined = transactions.get(safeAddress) if (!firstSafeTxs) { throw new Error() } testSizeOfTransactions(firstSafeTxs, 1) - const secondSafeTxs: List | typeof undefined = transactions.get(secondSafe.get('address')) + const secondSafeTxs: List | typeof undefined = transactions.get(secondSafeAddress) if (!secondSafeTxs) { throw new Error() } testSizeOfTransactions(secondSafeTxs, 1) @@ -145,8 +108,8 @@ describe('Transactions Suite', () => { // THEN testSizeOfSafesWith(transactions, 2) - testSizeOfTransactions(transactions.get(safe.get('address')), 2) - testSizeOfTransactions(transactions.get(secondSafe.get('address')), 1) + testSizeOfTransactions(transactions.get(safeAddress), 2) + testSizeOfTransactions(transactions.get(secondSafeAddress), 1) // Test 2 transactions of first safe testTransactionFrom( diff --git a/src/routes/safe/component/Transactions/test/transactionsHelper.js b/src/routes/safe/component/Transactions/test/transactionsHelper.js new file mode 100644 index 0000000000..6faef0f670 --- /dev/null +++ b/src/routes/safe/component/Transactions/test/transactionsHelper.js @@ -0,0 +1,48 @@ +// @flow +import { List, Map } from 'immutable' +import { type Confirmation } from '~/routes/safe/store/model/confirmation' +import { type Transaction } from '~/routes/safe/store/model/transaction' +import { type Owner } from '~/routes/safe/store/model/owner' + +export const testSizeOfSafesWith = (transactions: Map>, size: number) => { + expect(transactions).not.toBe(undefined) + expect(transactions).not.toBe(null) + expect(transactions.size).toBe(size) +} + +export const testSizeOfTransactions = (safeTxs: List | typeof undefined, size: number) => { + if (!safeTxs) { throw new Error() } + expect(safeTxs.count()).toBe(size) + expect(safeTxs.get(0)).not.toBe(undefined) + expect(safeTxs.get(0)).not.toBe(null) +} + +export const testTransactionFrom = ( + safeTxs: List | typeof undefined, pos: number, name: string, + nonce: number, value: number, threshold: number, destination: string, + creator: string, firstOwner: Owner | typeof undefined, secondOwner: Owner | typeof undefined, +) => { + if (!safeTxs) { throw new Error() } + const tx: Transaction | typeof undefined = safeTxs.get(pos) + + if (!tx) { throw new Error() } + expect(tx.get('name')).toBe(name) + expect(tx.get('value')).toBe(value) + expect(tx.get('threshold')).toBe(threshold) + expect(tx.get('destination')).toBe(destination) + expect(tx.get('confirmations').count()).toBe(2) + expect(tx.get('nonce')).toBe(nonce) + + const confirmations: List = tx.get('confirmations') + const firstConfirmation: Confirmation | typeof undefined = confirmations.get(0) + if (!firstConfirmation) { throw new Error() } + expect(firstConfirmation.get('owner')).not.toBe(undefined) + expect(firstConfirmation.get('owner')).toEqual(firstOwner) + expect(firstConfirmation.get('status')).toBe(true) + + const secondConfirmation: Confirmation | typeof undefined = confirmations.get(1) + if (!secondConfirmation) { throw new Error() } + expect(secondConfirmation.get('owner')).not.toBe(undefined) + expect(secondConfirmation.get('owner')).toEqual(secondOwner) + expect(secondConfirmation.get('status')).toBe(false) +} From bd2e6b70a5fa753e5843cf01e1887e9b558c1038 Mon Sep 17 00:00:00 2001 From: apanizo Date: Tue, 22 May 2018 09:21:56 +0200 Subject: [PATCH 077/138] WA-238 Allowing set a Daily Limit of 0 when creating a Safe --- src/components/forms/validator.js | 2 +- src/routes/open/components/SafeForm/DailyLimit/index.jsx | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/components/forms/validator.js b/src/components/forms/validator.js index 8637f158a9..fbc72d67aa 100644 --- a/src/components/forms/validator.js +++ b/src/components/forms/validator.js @@ -17,7 +17,7 @@ export const greaterThan = (min: number) => (value: string) => { } export const minValue = (min: number) => (value: string) => { - if (Number.isNaN(Number(value)) || Number.parseInt(value, 10) >= Number(min)) { + if (Number.isNaN(Number(value)) || Number.parseFloat(value) >= Number(min)) { return undefined } diff --git a/src/routes/open/components/SafeForm/DailyLimit/index.jsx b/src/routes/open/components/SafeForm/DailyLimit/index.jsx index 83c4ff6b55..34dbd15322 100644 --- a/src/routes/open/components/SafeForm/DailyLimit/index.jsx +++ b/src/routes/open/components/SafeForm/DailyLimit/index.jsx @@ -2,7 +2,7 @@ import * as React from 'react' import Field from '~/components/forms/Field' import TextField from '~/components/forms/TextField' -import { composeValidators, mustBeNumber, required, greaterThan } from '~/components/forms/validator' +import { composeValidators, mustBeNumber, required, minValue } from '~/components/forms/validator' import Block from '~/components/layout/Block' import { FIELD_DAILY_LIMIT } from '~/routes/open/components/fields' @@ -12,7 +12,7 @@ const DailyLimit = () => ( name={FIELD_DAILY_LIMIT} component={TextField} type="text" - validate={composeValidators(required, mustBeNumber, greaterThan(0))} + validate={composeValidators(required, mustBeNumber, minValue(0))} placeholder="Daily Limit*" text="Daily Limit" /> From ec25ae276e8d989e573792790418f8ae4e18ff4e Mon Sep 17 00:00:00 2001 From: apanizo Date: Tue, 22 May 2018 09:22:38 +0200 Subject: [PATCH 078/138] WA-238 Updating contracts and removing old ones --- .../build/contracts/CreateAndAddModules.json | 8 +- .../build/contracts/DailyLimitModule.json | 8 +- .../DailyLimitModuleWithSignature.json | 8 +- .../contracts/GnosisSafePersonalEdition.json | 8 +- .../contracts/GnosisSafeTeamEdition.json | 8 +- .../build/contracts/Migrations.json | 8 +- safe-contracts/build/contracts/MultiSend.json | 8 +- .../build/contracts/ProxyFactory.json | 8 +- .../build/contracts/SocialRecoveryModule.json | 8 +- .../build/contracts/StateChannelModule.json | 8 +- .../build/contracts/WhitelistModule.json | 8 +- .../contracts/v0/CreateAndAddExtension.json | 1215 - .../contracts/v0/DailyLimitExtension.json | 9134 ------ .../build/contracts/v0/Extension.json | 531 - .../build/contracts/v0/GnosisSafe.json | 25235 ---------------- .../build/contracts/v0/Migrations.json | 1397 - .../build/contracts/v0/MultiSend.json | 365 - .../build/contracts/v0/MultiSendStruct.json | 1678 - safe-contracts/build/contracts/v0/Proxy.json | 644 - .../build/contracts/v0/ProxyFactory.json | 1014 - .../contracts/v0/SocialRecoveryExtension.json | 9121 ------ .../contracts/v0/WhitelistExtension.json | 5406 ---- 22 files changed, 77 insertions(+), 55751 deletions(-) delete mode 100644 safe-contracts/build/contracts/v0/CreateAndAddExtension.json delete mode 100644 safe-contracts/build/contracts/v0/DailyLimitExtension.json delete mode 100644 safe-contracts/build/contracts/v0/Extension.json delete mode 100644 safe-contracts/build/contracts/v0/GnosisSafe.json delete mode 100644 safe-contracts/build/contracts/v0/Migrations.json delete mode 100644 safe-contracts/build/contracts/v0/MultiSend.json delete mode 100644 safe-contracts/build/contracts/v0/MultiSendStruct.json delete mode 100644 safe-contracts/build/contracts/v0/Proxy.json delete mode 100644 safe-contracts/build/contracts/v0/ProxyFactory.json delete mode 100644 safe-contracts/build/contracts/v0/SocialRecoveryExtension.json delete mode 100644 safe-contracts/build/contracts/v0/WhitelistExtension.json diff --git a/safe-contracts/build/contracts/CreateAndAddModules.json b/safe-contracts/build/contracts/CreateAndAddModules.json index e9fe806dec..c7a8d05668 100644 --- a/safe-contracts/build/contracts/CreateAndAddModules.json +++ b/safe-contracts/build/contracts/CreateAndAddModules.json @@ -1264,8 +1264,14 @@ "links": {}, "address": "0x0dfc419b1f993f1d14459f802c5f4966a50640fe", "transactionHash": "0x0bb1edef06266204f2710df9365b39aac03e0527a4d9b5b5ca12b7b1fbe888d8" + }, + "1526973574996": { + "events": {}, + "links": {}, + "address": "0x8dc367d2426d12c60633d4b8808f48164f5c9fce", + "transactionHash": "0x0bb1edef06266204f2710df9365b39aac03e0527a4d9b5b5ca12b7b1fbe888d8" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-16T13:45:24.531Z" + "updatedAt": "2018-05-22T07:20:22.992Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/DailyLimitModule.json b/safe-contracts/build/contracts/DailyLimitModule.json index 8d34a185d6..2642d89c58 100644 --- a/safe-contracts/build/contracts/DailyLimitModule.json +++ b/safe-contracts/build/contracts/DailyLimitModule.json @@ -7999,8 +7999,14 @@ "links": {}, "address": "0x180cb429f1d8b3e99b718640d3895155e2190452", "transactionHash": "0xefeddc1db847371ef66ea36caf0a583b6bb2b9a08fdbeb73ee0f1563131ca3e2" + }, + "1526973574996": { + "events": {}, + "links": {}, + "address": "0xdf2e7bbb8f57db7d8b11f9d8a77b0754979111c1", + "transactionHash": "0xefeddc1db847371ef66ea36caf0a583b6bb2b9a08fdbeb73ee0f1563131ca3e2" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-16T13:45:24.523Z" + "updatedAt": "2018-05-22T07:20:22.997Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/DailyLimitModuleWithSignature.json b/safe-contracts/build/contracts/DailyLimitModuleWithSignature.json index e58738e8ed..3066be149d 100644 --- a/safe-contracts/build/contracts/DailyLimitModuleWithSignature.json +++ b/safe-contracts/build/contracts/DailyLimitModuleWithSignature.json @@ -2554,8 +2554,14 @@ "links": {}, "address": "0xdb5a513347baaf6454bdfcb439d6c712c52a754e", "transactionHash": "0x21a453f823a02858ff598704a36731ed3a5264592902c73a7e68ee53d3fb635d" + }, + "1526973574996": { + "events": {}, + "links": {}, + "address": "0x924ca341d09a83622d62128543b45530d43afa51", + "transactionHash": "0x21a453f823a02858ff598704a36731ed3a5264592902c73a7e68ee53d3fb635d" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-16T13:45:24.518Z" + "updatedAt": "2018-05-22T07:20:22.991Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/GnosisSafePersonalEdition.json b/safe-contracts/build/contracts/GnosisSafePersonalEdition.json index c799fb76ee..d4ed103119 100644 --- a/safe-contracts/build/contracts/GnosisSafePersonalEdition.json +++ b/safe-contracts/build/contracts/GnosisSafePersonalEdition.json @@ -8234,8 +8234,14 @@ "links": {}, "address": "0x6cd3878c8fce094d881e37ed48a6eb90bcea5ef7", "transactionHash": "0xd404a4c4c3ff550c031b238e6df539cbbd9d5727574d8446d0c40f2abf4638b1" + }, + "1526973574996": { + "events": {}, + "links": {}, + "address": "0x38a0e040615367af9cd0626ef96441785f82f5c8", + "transactionHash": "0xd404a4c4c3ff550c031b238e6df539cbbd9d5727574d8446d0c40f2abf4638b1" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-16T13:45:24.509Z" + "updatedAt": "2018-05-22T07:20:22.972Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/GnosisSafeTeamEdition.json b/safe-contracts/build/contracts/GnosisSafeTeamEdition.json index cf6a3a087c..ab782635f4 100644 --- a/safe-contracts/build/contracts/GnosisSafeTeamEdition.json +++ b/safe-contracts/build/contracts/GnosisSafeTeamEdition.json @@ -6682,8 +6682,14 @@ "links": {}, "address": "0xac64aef07af9275b66107f36039a47592c6507f8", "transactionHash": "0x8004ae7f9ec8f459da793c0882711d8488c50b973f4bdddb9df31cade42b2cd3" + }, + "1526973574996": { + "events": {}, + "links": {}, + "address": "0x592b6c1e500c567c0dd01c2a1dd6b84db9c41ace", + "transactionHash": "0x8004ae7f9ec8f459da793c0882711d8488c50b973f4bdddb9df31cade42b2cd3" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-16T13:45:24.516Z" + "updatedAt": "2018-05-22T07:20:22.969Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/Migrations.json b/safe-contracts/build/contracts/Migrations.json index eabe9c301b..0d472f6174 100644 --- a/safe-contracts/build/contracts/Migrations.json +++ b/safe-contracts/build/contracts/Migrations.json @@ -1404,8 +1404,14 @@ "links": {}, "address": "0x6ff07ab4d4ecb8339dee6bd028e379c2a1992103", "transactionHash": "0x137111f15934455430bea53bd8a6721561285af6a431f174f090257877635ab6" + }, + "1526973574996": { + "events": {}, + "links": {}, + "address": "0xf06f42d5ffd359b4a14e6fecada46cafdb3276f2", + "transactionHash": "0x137111f15934455430bea53bd8a6721561285af6a431f174f090257877635ab6" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-16T13:45:24.532Z" + "updatedAt": "2018-05-22T07:20:22.994Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/MultiSend.json b/safe-contracts/build/contracts/MultiSend.json index 5dc2904d69..f0f87b651e 100644 --- a/safe-contracts/build/contracts/MultiSend.json +++ b/safe-contracts/build/contracts/MultiSend.json @@ -360,8 +360,14 @@ "links": {}, "address": "0x20658014abeebf3f064bf4442a5cd160143b800e", "transactionHash": "0xf4586ae05ae02801de1759128e43658bb0439e622a5ba84ad6bb4b652d641f4f" + }, + "1526973574996": { + "events": {}, + "links": {}, + "address": "0xf27293ee4c8876589b0e197d3bebb2402c798e1f", + "transactionHash": "0xf4586ae05ae02801de1759128e43658bb0439e622a5ba84ad6bb4b652d641f4f" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-16T13:45:24.531Z" + "updatedAt": "2018-05-22T07:20:22.989Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/ProxyFactory.json b/safe-contracts/build/contracts/ProxyFactory.json index c0fd4e62fd..acb924b3d0 100644 --- a/safe-contracts/build/contracts/ProxyFactory.json +++ b/safe-contracts/build/contracts/ProxyFactory.json @@ -1011,8 +1011,14 @@ "links": {}, "address": "0xf7f9b14921d4723eae3a8b29784c100301f6d8b8", "transactionHash": "0x5b47c779cfd719a97f218a56d99b64b2c5b382549f3375822d5afed010cdb9c5" + }, + "1526973574996": { + "events": {}, + "links": {}, + "address": "0x91cee89bad367a2621a047c77d65e903acfa8a9d", + "transactionHash": "0x5b47c779cfd719a97f218a56d99b64b2c5b382549f3375822d5afed010cdb9c5" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-16T13:45:24.507Z" + "updatedAt": "2018-05-22T07:20:22.967Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/SocialRecoveryModule.json b/safe-contracts/build/contracts/SocialRecoveryModule.json index f7bb8824db..e36e344b24 100644 --- a/safe-contracts/build/contracts/SocialRecoveryModule.json +++ b/safe-contracts/build/contracts/SocialRecoveryModule.json @@ -7048,8 +7048,14 @@ "links": {}, "address": "0x1a92687d3982d12a985c4c35447673ff1fd312d1", "transactionHash": "0x44896356866fb32a30fe5b74e2e5b2ce3383ffef7f3190f5f10a98b5fa4406de" + }, + "1526973574996": { + "events": {}, + "links": {}, + "address": "0xadaea58298d3f8087ac9a8d9c70ed90bb47719c3", + "transactionHash": "0x44896356866fb32a30fe5b74e2e5b2ce3383ffef7f3190f5f10a98b5fa4406de" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-16T13:45:24.527Z" + "updatedAt": "2018-05-22T07:20:22.987Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/StateChannelModule.json b/safe-contracts/build/contracts/StateChannelModule.json index da3df3545f..6256c4bbe3 100644 --- a/safe-contracts/build/contracts/StateChannelModule.json +++ b/safe-contracts/build/contracts/StateChannelModule.json @@ -5589,8 +5589,14 @@ "links": {}, "address": "0xb9597dbd8ed0c4c481d1677b3200b8c4d342750c", "transactionHash": "0x7f1b3b4ba4694670b29675af571cb4a96b1c2d78d09d210e27482419aa6fff79" + }, + "1526973574996": { + "events": {}, + "links": {}, + "address": "0x79933939f70a2707380e371524050ecf6477da74", + "transactionHash": "0x7f1b3b4ba4694670b29675af571cb4a96b1c2d78d09d210e27482419aa6fff79" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-16T13:45:24.513Z" + "updatedAt": "2018-05-22T07:20:22.977Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/WhitelistModule.json b/safe-contracts/build/contracts/WhitelistModule.json index e82217b357..7bb8999069 100644 --- a/safe-contracts/build/contracts/WhitelistModule.json +++ b/safe-contracts/build/contracts/WhitelistModule.json @@ -4046,8 +4046,14 @@ "links": {}, "address": "0x5fde4f39a944859214e24311ad809166d35b2595", "transactionHash": "0xe8e4d24799a8b74210c07b7faa44968bece2c73df692920f7af75181654e10f2" + }, + "1526973574996": { + "events": {}, + "links": {}, + "address": "0xba3ef9cf5be6c120fc0a642690f297e3bd239aa3", + "transactionHash": "0xe8e4d24799a8b74210c07b7faa44968bece2c73df692920f7af75181654e10f2" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-16T13:45:24.529Z" + "updatedAt": "2018-05-22T07:20:22.983Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/v0/CreateAndAddExtension.json b/safe-contracts/build/contracts/v0/CreateAndAddExtension.json deleted file mode 100644 index c2f8f757a7..0000000000 --- a/safe-contracts/build/contracts/v0/CreateAndAddExtension.json +++ /dev/null @@ -1,1215 +0,0 @@ -{ - "contractName": "CreateAndAddExtension", - "abi": [ - { - "constant": false, - "inputs": [ - { - "name": "extension", - "type": "address" - } - ], - "name": "addExtension", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "proxyFactory", - "type": "address" - }, - { - "name": "data", - "type": "bytes" - } - ], - "name": "createAndAddExtension", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "0x6060604052341561000f57600080fd5b61023f8061001e6000396000f30060606040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063170ff3e11461005157806324aae6941461008a575b600080fd5b341561005c57600080fd5b610088600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610106565b005b341561009557600080fd5b610104600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190505061010b565b005b600080fd5b600061011783836101cc565b90503073ffffffffffffffffffffffffffffffffffffffff1663170ff3e1826040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15156101b357600080fd5b6102c65a03f115156101c457600080fd5b505050505050565b600060405160208184516020860187600019f4600081146101ec576101f1565b600080fd5b5073ffffffffffffffffffffffffffffffffffffffff815116915050929150505600a165627a7a723058208120395f85344344c66227841e7bb657a31240594ca20234664dc785131ecbcd0029", - "deployedBytecode": "0x60606040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063170ff3e11461005157806324aae6941461008a575b600080fd5b341561005c57600080fd5b610088600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610106565b005b341561009557600080fd5b610104600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190505061010b565b005b600080fd5b600061011783836101cc565b90503073ffffffffffffffffffffffffffffffffffffffff1663170ff3e1826040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15156101b357600080fd5b6102c65a03f115156101c457600080fd5b505050505050565b600060405160208184516020860187600019f4600081146101ec576101f1565b600080fd5b5073ffffffffffffffffffffffffffffffffffffffff815116915050929150505600a165627a7a723058208120395f85344344c66227841e7bb657a31240594ca20234664dc785131ecbcd0029", - "sourceMap": "199:1057:8:-;;;;;;;;;;;;;;;;;", - "deployedSourceMap": "199:1057:8:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;364:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;638:196;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;364:87;436:8;;;638:196;732:19;754:35;770:12;784:4;754:15;:35::i;:::-;732:57;;799:4;:17;;;817:9;799:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;638:196;;;:::o;840:414::-;933:19;1011:4;1005:5;1109:4;1101:6;1094:4;1088:5;1081:4;1075;1071:3;1057:12;1053:1;1049:3;1036:12;1132:1;1127:23;;;;1029:121;;1127:23;1146:1;1143;1136:6;1029:121;;1195:42;1186:6;1180:5;1176:3;1163:75;;977:271;;;;;:::o", - "source": "pragma solidity 0.4.19;\nimport \"../Extension.sol\";\n\n\n/// @title Create and Add Extension - Allows to create and add a new extension in one transaction.\n/// @author Stefan George - \ncontract CreateAndAddExtension {\n\n /// @dev Function required to compile contract. Gnosis Safe function is called instead.\n /// @param extension Not used.\n function addExtension(Extension extension)\n public\n {\n revert();\n }\n\n /// @dev Allows to create and add a new extension in one transaction.\n /// @param proxyFactory Extension factory contract.\n /// @param data Extension constructor payload.\n function createAndAddExtension(address proxyFactory, bytes data)\n public\n {\n Extension extension = createExtension(proxyFactory, data);\n this.addExtension(extension);\n }\n\n function createExtension(address proxyFactory, bytes data)\n internal\n returns (Extension extension)\n {\n assembly {\n let output := mload(0x40)\n switch delegatecall(not(0), proxyFactory, add(data, 0x20), mload(data), output, 0x20)\n case 0 { revert(0, 0) }\n extension := and(mload(output), 0xffffffffffffffffffffffffffffffffffffffff)\n }\n }\n}\n", - "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/libraries/CreateAndAddExtension.sol", - "ast": { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/libraries/CreateAndAddExtension.sol", - "exportedSymbols": { - "CreateAndAddExtension": [ - 2006 - ] - }, - "id": 2007, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 1963, - "literals": [ - "solidity", - "0.4", - ".19" - ], - "nodeType": "PragmaDirective", - "src": "0:23:8" - }, - { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Extension.sol", - "file": "../Extension.sol", - "id": 1964, - "nodeType": "ImportDirective", - "scope": 2007, - "sourceUnit": 19, - "src": "24:26:8", - "symbolAliases": [], - "unitAlias": "" - }, - { - "baseContracts": [], - "contractDependencies": [], - "contractKind": "contract", - "documentation": "@title Create and Add Extension - Allows to create and add a new extension in one transaction.\n @author Stefan George - ", - "fullyImplemented": true, - "id": 2006, - "linearizedBaseContracts": [ - 2006 - ], - "name": "CreateAndAddExtension", - "nodeType": "ContractDefinition", - "nodes": [ - { - "body": { - "id": 1972, - "nodeType": "Block", - "src": "426:25:8", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 1969, - "name": "revert", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2093, - "src": "436:6:8", - "typeDescriptions": { - "typeIdentifier": "t_function_revert_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 1970, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "436:8:8", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1971, - "nodeType": "ExpressionStatement", - "src": "436:8:8" - } - ] - }, - "id": 1973, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "addExtension", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1967, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1966, - "name": "extension", - "nodeType": "VariableDeclaration", - "scope": 1973, - "src": "386:19:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - }, - "typeName": { - "contractScope": null, - "id": 1965, - "name": "Extension", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 18, - "src": "386:9:8", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "385:21:8" - }, - "payable": false, - "returnParameters": { - "id": 1968, - "nodeType": "ParameterList", - "parameters": [], - "src": "426:0:8" - }, - "scope": 2006, - "src": "364:87:8", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1993, - "nodeType": "Block", - "src": "722:112:8", - "statements": [ - { - "assignments": [ - 1981 - ], - "declarations": [ - { - "constant": false, - "id": 1981, - "name": "extension", - "nodeType": "VariableDeclaration", - "scope": 1994, - "src": "732:19:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - }, - "typeName": { - "contractScope": null, - "id": 1980, - "name": "Extension", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 18, - "src": "732:9:8", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1986, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1983, - "name": "proxyFactory", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1975, - "src": "770:12:8", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 1984, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1977, - "src": "784:4:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 1982, - "name": "createExtension", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2005, - "src": "754:15:8", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_contract$_Extension_$18_$", - "typeString": "function (address,bytes memory) returns (contract Extension)" - } - }, - "id": 1985, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "754:35:8", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "732:57:8" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1990, - "name": "extension", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1981, - "src": "817:9:8", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - ], - "expression": { - "argumentTypes": null, - "id": 1987, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2116, - "src": "799:4:8", - "typeDescriptions": { - "typeIdentifier": "t_contract$_CreateAndAddExtension_$2006", - "typeString": "contract CreateAndAddExtension" - } - }, - "id": 1989, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "addExtension", - "nodeType": "MemberAccess", - "referencedDeclaration": 1973, - "src": "799:17:8", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_contract$_Extension_$18_$returns$__$", - "typeString": "function (contract Extension) external" - } - }, - "id": 1991, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "799:28:8", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1992, - "nodeType": "ExpressionStatement", - "src": "799:28:8" - } - ] - }, - "id": 1994, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "createAndAddExtension", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1978, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1975, - "name": "proxyFactory", - "nodeType": "VariableDeclaration", - "scope": 1994, - "src": "669:20:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1974, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "669:7:8", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1977, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 1994, - "src": "691:10:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 1976, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "691:5:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "668:34:8" - }, - "payable": false, - "returnParameters": { - "id": 1979, - "nodeType": "ParameterList", - "parameters": [], - "src": "722:0:8" - }, - "scope": 2006, - "src": "638:196:8", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 2004, - "nodeType": "Block", - "src": "958:296:8", - "statements": [ - { - "externalReferences": [ - { - "extension": { - "declaration": 2001, - "isOffset": false, - "isSlot": false, - "src": "1163:9:8", - "valueSize": 1 - } - }, - { - "data": { - "declaration": 1998, - "isOffset": false, - "isSlot": false, - "src": "1075:4:8", - "valueSize": 1 - } - }, - { - "data": { - "declaration": 1998, - "isOffset": false, - "isSlot": false, - "src": "1094:4:8", - "valueSize": 1 - } - }, - { - "proxyFactory": { - "declaration": 1996, - "isOffset": false, - "isSlot": false, - "src": "1057:12:8", - "valueSize": 1 - } - } - ], - "id": 2003, - "nodeType": "InlineAssembly", - "operations": "{\n let output := mload(0x40)\n switch delegatecall(not(0), proxyFactory, add(data, 0x20), mload(data), output, 0x20)\n case 0 {\n revert(0, 0)\n }\n extension := and(mload(output), 0xffffffffffffffffffffffffffffffffffffffff)\n}", - "src": "968:286:8" - } - ] - }, - "id": 2005, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "createExtension", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1999, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1996, - "name": "proxyFactory", - "nodeType": "VariableDeclaration", - "scope": 2005, - "src": "865:20:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1995, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "865:7:8", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1998, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 2005, - "src": "887:10:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 1997, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "887:5:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "864:34:8" - }, - "payable": false, - "returnParameters": { - "id": 2002, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2001, - "name": "extension", - "nodeType": "VariableDeclaration", - "scope": 2005, - "src": "933:19:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - }, - "typeName": { - "contractScope": null, - "id": 2000, - "name": "Extension", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 18, - "src": "933:9:8", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "932:21:8" - }, - "scope": 2006, - "src": "840:414:8", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - } - ], - "scope": 2007, - "src": "199:1057:8" - } - ], - "src": "0:1257:8" - }, - "legacyAST": { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/libraries/CreateAndAddExtension.sol", - "exportedSymbols": { - "CreateAndAddExtension": [ - 2006 - ] - }, - "id": 2007, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 1963, - "literals": [ - "solidity", - "0.4", - ".19" - ], - "nodeType": "PragmaDirective", - "src": "0:23:8" - }, - { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Extension.sol", - "file": "../Extension.sol", - "id": 1964, - "nodeType": "ImportDirective", - "scope": 2007, - "sourceUnit": 19, - "src": "24:26:8", - "symbolAliases": [], - "unitAlias": "" - }, - { - "baseContracts": [], - "contractDependencies": [], - "contractKind": "contract", - "documentation": "@title Create and Add Extension - Allows to create and add a new extension in one transaction.\n @author Stefan George - ", - "fullyImplemented": true, - "id": 2006, - "linearizedBaseContracts": [ - 2006 - ], - "name": "CreateAndAddExtension", - "nodeType": "ContractDefinition", - "nodes": [ - { - "body": { - "id": 1972, - "nodeType": "Block", - "src": "426:25:8", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 1969, - "name": "revert", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2093, - "src": "436:6:8", - "typeDescriptions": { - "typeIdentifier": "t_function_revert_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 1970, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "436:8:8", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1971, - "nodeType": "ExpressionStatement", - "src": "436:8:8" - } - ] - }, - "id": 1973, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "addExtension", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1967, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1966, - "name": "extension", - "nodeType": "VariableDeclaration", - "scope": 1973, - "src": "386:19:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - }, - "typeName": { - "contractScope": null, - "id": 1965, - "name": "Extension", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 18, - "src": "386:9:8", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "385:21:8" - }, - "payable": false, - "returnParameters": { - "id": 1968, - "nodeType": "ParameterList", - "parameters": [], - "src": "426:0:8" - }, - "scope": 2006, - "src": "364:87:8", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1993, - "nodeType": "Block", - "src": "722:112:8", - "statements": [ - { - "assignments": [ - 1981 - ], - "declarations": [ - { - "constant": false, - "id": 1981, - "name": "extension", - "nodeType": "VariableDeclaration", - "scope": 1994, - "src": "732:19:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - }, - "typeName": { - "contractScope": null, - "id": 1980, - "name": "Extension", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 18, - "src": "732:9:8", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1986, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1983, - "name": "proxyFactory", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1975, - "src": "770:12:8", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 1984, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1977, - "src": "784:4:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 1982, - "name": "createExtension", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2005, - "src": "754:15:8", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_contract$_Extension_$18_$", - "typeString": "function (address,bytes memory) returns (contract Extension)" - } - }, - "id": 1985, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "754:35:8", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "732:57:8" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1990, - "name": "extension", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1981, - "src": "817:9:8", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - ], - "expression": { - "argumentTypes": null, - "id": 1987, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2116, - "src": "799:4:8", - "typeDescriptions": { - "typeIdentifier": "t_contract$_CreateAndAddExtension_$2006", - "typeString": "contract CreateAndAddExtension" - } - }, - "id": 1989, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "addExtension", - "nodeType": "MemberAccess", - "referencedDeclaration": 1973, - "src": "799:17:8", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_contract$_Extension_$18_$returns$__$", - "typeString": "function (contract Extension) external" - } - }, - "id": 1991, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "799:28:8", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1992, - "nodeType": "ExpressionStatement", - "src": "799:28:8" - } - ] - }, - "id": 1994, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "createAndAddExtension", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1978, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1975, - "name": "proxyFactory", - "nodeType": "VariableDeclaration", - "scope": 1994, - "src": "669:20:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1974, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "669:7:8", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1977, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 1994, - "src": "691:10:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 1976, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "691:5:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "668:34:8" - }, - "payable": false, - "returnParameters": { - "id": 1979, - "nodeType": "ParameterList", - "parameters": [], - "src": "722:0:8" - }, - "scope": 2006, - "src": "638:196:8", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 2004, - "nodeType": "Block", - "src": "958:296:8", - "statements": [ - { - "externalReferences": [ - { - "extension": { - "declaration": 2001, - "isOffset": false, - "isSlot": false, - "src": "1163:9:8", - "valueSize": 1 - } - }, - { - "data": { - "declaration": 1998, - "isOffset": false, - "isSlot": false, - "src": "1075:4:8", - "valueSize": 1 - } - }, - { - "data": { - "declaration": 1998, - "isOffset": false, - "isSlot": false, - "src": "1094:4:8", - "valueSize": 1 - } - }, - { - "proxyFactory": { - "declaration": 1996, - "isOffset": false, - "isSlot": false, - "src": "1057:12:8", - "valueSize": 1 - } - } - ], - "id": 2003, - "nodeType": "InlineAssembly", - "operations": "{\n let output := mload(0x40)\n switch delegatecall(not(0), proxyFactory, add(data, 0x20), mload(data), output, 0x20)\n case 0 {\n revert(0, 0)\n }\n extension := and(mload(output), 0xffffffffffffffffffffffffffffffffffffffff)\n}", - "src": "968:286:8" - } - ] - }, - "id": 2005, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "createExtension", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1999, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1996, - "name": "proxyFactory", - "nodeType": "VariableDeclaration", - "scope": 2005, - "src": "865:20:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1995, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "865:7:8", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1998, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 2005, - "src": "887:10:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 1997, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "887:5:8", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "864:34:8" - }, - "payable": false, - "returnParameters": { - "id": 2002, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2001, - "name": "extension", - "nodeType": "VariableDeclaration", - "scope": 2005, - "src": "933:19:8", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - }, - "typeName": { - "contractScope": null, - "id": 2000, - "name": "Extension", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 18, - "src": "933:9:8", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "932:21:8" - }, - "scope": 2006, - "src": "840:414:8", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - } - ], - "scope": 2007, - "src": "199:1057:8" - } - ], - "src": "0:1257:8" - }, - "compiler": { - "name": "solc", - "version": "0.4.19+commit.c4cbbb05.Emscripten.clang" - }, - "networks": { - "4": { - "events": {}, - "links": {}, - "address": "0xb19cd8c86c13dcade8f680a67e49aaa48c0817a9", - "transactionHash": "0x11ae4fbe0e73a77a68f8229c126331e9fb4e6ff09ebee7e8b60890913a1ca440" - }, - "42": { - "events": {}, - "links": {}, - "address": "0xce33c528bca2944d25eeadf7107a896018702a98", - "transactionHash": "0x99b20dea53ddbbb9757e414a9a36289c379203be870619b55af681ee86d3b953" - }, - "1525342778744": { - "events": {}, - "links": {}, - "address": "0x69c1cca644134e10f5f82fc28b3d45e136786dfc", - "transactionHash": "0x2af139a9359ac4b51195eab08a5958d134195ea3793c8851e63b2657d6b1a1be" - }, - "1525789101965": { - "events": {}, - "links": {}, - "address": "0xa8fd8a2a990b5a5b300a6dc712d1b85b5574ffd9", - "transactionHash": "0x9477126b8b58fd22addc14218038766bb1723de3027fa4db33decd381eeb1b2d" - } - }, - "schemaVersion": "2.0.0", - "updatedAt": "2018-05-08T14:18:44.024Z" -} \ No newline at end of file diff --git a/safe-contracts/build/contracts/v0/DailyLimitExtension.json b/safe-contracts/build/contracts/v0/DailyLimitExtension.json deleted file mode 100644 index e9fcb85849..0000000000 --- a/safe-contracts/build/contracts/v0/DailyLimitExtension.json +++ /dev/null @@ -1,9134 +0,0 @@ -{ - "contractName": "DailyLimitExtension", - "abi": [ - { - "constant": true, - "inputs": [], - "name": "TRANSFER_FUNCTION_IDENTIFIER", - "outputs": [ - { - "name": "", - "type": "bytes4" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "NAME", - "outputs": [ - { - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "gnosisSafe", - "outputs": [ - { - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "", - "type": "address" - } - ], - "name": "dailyLimits", - "outputs": [ - { - "name": "dailyLimit", - "type": "uint256" - }, - { - "name": "spentToday", - "type": "uint256" - }, - { - "name": "lastDay", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "VERSION", - "outputs": [ - { - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "name": "tokens", - "type": "address[]" - }, - { - "name": "_dailyLimits", - "type": "uint256[]" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "constant": false, - "inputs": [ - { - "name": "tokens", - "type": "address[]" - }, - { - "name": "_dailyLimits", - "type": "uint256[]" - } - ], - "name": "setup", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_masterCopy", - "type": "address" - } - ], - "name": "changeMasterCopy", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "token", - "type": "address" - }, - { - "name": "dailyLimit", - "type": "uint256" - } - ], - "name": "changeDailyLimit", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "sender", - "type": "address" - }, - { - "name": "to", - "type": "address" - }, - { - "name": "value", - "type": "uint256" - }, - { - "name": "data", - "type": "bytes" - }, - { - "name": "operation", - "type": "uint8" - } - ], - "name": "isExecutable", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "today", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x6060604052341561000f57600080fd5b604051610dbf380380610dbf833981016040528080518201919060200180518201919050506100518282610058640100000000026104e2176401000000009004565b5050610176565b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156100a057600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600090505b82518110156101715781818151811015156100fd57fe5b9060200190602002015160026000858481518110151561011957fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555080806001019150506100e6565b505050565b610c3a806101856000396000f3006060604052600436106100a4576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806328814f03146100a9578063430e47f8146101435780637de7edef146101aa57806381c5e03b146101e3578063a3f4df7e14610225578063a84173ae146102b3578063b74e452b14610308578063cde09ca914610331578063d7bffc92146103f9578063ffa1ad7414610454575b600080fd5b34156100b457600080fd5b610141600480803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919050506104e2565b005b341561014e57600080fd5b610156610600565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b34156101b557600080fd5b6101e1600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610624565b005b34156101ee57600080fd5b610223600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506106e9565b005b341561023057600080fd5b610238610790565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561027857808201518184015260208101905061025d565b50505050905090810190601f1680156102a55780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156102be57600080fd5b6102c66107c9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561031357600080fd5b61031b6107ef565b6040518082815260200191505060405180910390f35b341561033c57600080fd5b6103df600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803560ff16906020019091905050610807565b604051808215151515815260200191505060405180910390f35b341561040457600080fd5b610430600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610afc565b60405180848152602001838152602001828152602001935050505060405180910390f35b341561045f57600080fd5b610467610b26565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104a757808201518184015260208101905061048c565b50505050905090810190601f1680156104d45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561052a57600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600090505b82518110156105fb57818181518110151561058757fe5b906020019060200201516002600085848151811015156105a357fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055508080600101915050610570565b505050565b7fa9059cbb0000000000000000000000000000000000000000000000000000000081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561068057600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156106a657600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561074557600080fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055505050565b6040805190810160405280601581526020017f4461696c79204c696d697420457874656e73696f6e000000000000000000000081525081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600062015180428115156107ff57fe5b064203905090565b6000806000806000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561086b57600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e8b6000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b151561093057600080fd5b6102c65a03f1151561094157600080fd5b50505060405180519050151561095657600080fd5b6000600281111561096357fe5b86600281111561096f57fe5b14151561097b57600080fd5b6000875114801561098c5750600088115b806109a45750600087511180156109a35750600088145b5b15156109af57600080fd5b6000875114156109c85760009350889250879150610a4d565b8893506020870151905060248701519250604487015191507fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141515610a4c57600080fd5b5b60008373ffffffffffffffffffffffffffffffffffffffff1614151515610a7357600080fd5b600082111515610a8257600080fd5b610a8c8483610b5f565b15610aea5781600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016000828254019250508190555060019450610aef565b600094505b5050505095945050505050565b60026020528060005260406000206000915090508060000154908060010154908060020154905083565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b600080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060020154610bb06107ef565b1115610bd157610bbe6107ef565b8160020181905550600081600101819055505b80600001548382600101540111158015610bf45750806001015483826001015401115b15610c025760019150610c07565b600091505b50929150505600a165627a7a72305820f7f238174a987b01a6474c913fd8e1b521a4e9437201243a233835e7739be3730029", - "deployedBytecode": "0x6060604052600436106100a4576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806328814f03146100a9578063430e47f8146101435780637de7edef146101aa57806381c5e03b146101e3578063a3f4df7e14610225578063a84173ae146102b3578063b74e452b14610308578063cde09ca914610331578063d7bffc92146103f9578063ffa1ad7414610454575b600080fd5b34156100b457600080fd5b610141600480803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919050506104e2565b005b341561014e57600080fd5b610156610600565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b34156101b557600080fd5b6101e1600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610624565b005b34156101ee57600080fd5b610223600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506106e9565b005b341561023057600080fd5b610238610790565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561027857808201518184015260208101905061025d565b50505050905090810190601f1680156102a55780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156102be57600080fd5b6102c66107c9565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561031357600080fd5b61031b6107ef565b6040518082815260200191505060405180910390f35b341561033c57600080fd5b6103df600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803560ff16906020019091905050610807565b604051808215151515815260200191505060405180910390f35b341561040457600080fd5b610430600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610afc565b60405180848152602001838152602001828152602001935050505060405180910390f35b341561045f57600080fd5b610467610b26565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104a757808201518184015260208101905061048c565b50505050905090810190601f1680156104d45780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561052a57600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600090505b82518110156105fb57818181518110151561058757fe5b906020019060200201516002600085848151811015156105a357fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055508080600101915050610570565b505050565b7fa9059cbb0000000000000000000000000000000000000000000000000000000081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561068057600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156106a657600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561074557600080fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055505050565b6040805190810160405280601581526020017f4461696c79204c696d697420457874656e73696f6e000000000000000000000081525081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600062015180428115156107ff57fe5b064203905090565b6000806000806000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561086b57600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e8b6000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b151561093057600080fd5b6102c65a03f1151561094157600080fd5b50505060405180519050151561095657600080fd5b6000600281111561096357fe5b86600281111561096f57fe5b14151561097b57600080fd5b6000875114801561098c5750600088115b806109a45750600087511180156109a35750600088145b5b15156109af57600080fd5b6000875114156109c85760009350889250879150610a4d565b8893506020870151905060248701519250604487015191507fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141515610a4c57600080fd5b5b60008373ffffffffffffffffffffffffffffffffffffffff1614151515610a7357600080fd5b600082111515610a8257600080fd5b610a8c8483610b5f565b15610aea5781600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016000828254019250508190555060019450610aef565b600094505b5050505095945050505050565b60026020528060005260406000206000915090508060000154908060010154908060020154905083565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b600080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060020154610bb06107ef565b1115610bd157610bbe6107ef565b8160020181905550600081600101819055505b80600001548382600101540111158015610bf45750806001015483826001015401115b15610c025760019150610c07565b600091505b50929150505600a165627a7a72305820f7f238174a987b01a6474c913fd8e1b521a4e9437201243a233835e7739be3730029", - "sourceMap": "247:5028:5:-;;;1209:134;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1309:27;1315:6;1323:12;1309:5;;;;;:27;;;:::i;:::-;1209:134;;247:5028;;1585:424;1900:9;1838:1;1823:10;;;;;;;;;;;1815:24;;;1807:33;;;;;;;;1874:10;1850;;:35;;;;;;;;;;;;;;;;;;1912:1;1900:13;;1895:107;1919:6;:13;1915:1;:17;1895:107;;;1987:12;2000:1;1987:15;;;;;;;;;;;;;;;;;;1951:11;:22;1963:6;1970:1;1963:9;;;;;;;;;;;;;;;;;;1951:22;;;;;;;;;;;;;;;:33;;:51;;;;1934:3;;;;;;;1895:107;;;1585:424;;;:::o;247:5028::-;;;;;;;", - "deployedSourceMap": "247:5028:5:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1585:424;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;401:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2155:186;;;;;;;;;;;;;;;;;;;;;;;;;;;;2569:162;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;296:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;511:28:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5157:116;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3233:1338;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;617:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;355:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1585:424:5;1900:9;1838:1;1823:10;;;;;;;;;;;1815:24;;;1807:33;;;;;;;;1874:10;1850;;:35;;;;;;;;;;;;;;;;;;1912:1;1900:13;;1895:107;1919:6;:13;1915:1;:17;1895:107;;;1987:12;2000:1;1987:15;;;;;;;;;;;;;;;;;;1951:11;:22;1963:6;1970:1;1963:9;;;;;;;;;;;;;;;;;;1951:22;;;;;;;;;;;;;;;:33;;:51;;;;1934:3;;;;;;;1895:107;;;1585:424;;;:::o;401:67::-;;;:::o;2155:186::-;852:10;;;;;;;;;;;830:33;;:10;:33;;;822:42;;;;;;;;2298:1;2282:11;2274:25;;;;2266:34;;;;;;;;2323:11;2310:10;;:24;;;;;;;;;;;;;;;;;;2155:186;:::o;2569:162::-;852:10;;;;;;;;;;;830:33;;:10;:33;;;822:42;;;;;;;;2714:10;2682:11;:18;2694:5;2682:18;;;;;;;;;;;;;;;:29;;:42;;;;2569:162;;:::o;296:53::-;;;;;;;;;;;;;;;;;;;;:::o;511:28::-;;;;;;;;;;;;;:::o;5157:116::-;5219:4;5259:6;5253:3;:12;;;;;;;;5246:3;:20;5239:27;;5157:116;:::o;3233:1338::-;3397:4;3744:13;3767:16;3793:14;3980:25;852:10;;;;;;;;;;;830:33;;:10;:33;;;822:42;;;;;;;;3502:10;;;;;;;;;;;:18;;;3521:6;3502:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3494:35;;;;;;;;3560:25;3547:38;;;;;;;;:9;:38;;;;;;;;;3539:47;;;;;;;;3686:1;3671:4;:11;:16;:29;;;;;3699:1;3691:5;:9;3671:29;:62;;;;3718:1;3704:4;:11;:15;:29;;;;;3732:1;3723:5;:10;3704:29;3671:62;3663:71;;;;;;;;3836:1;3821:4;:11;:16;3817:470;;;3861:1;3853:9;;3887:2;3876:13;;3912:5;3903:14;;3817:470;;;3964:2;3956:10;;4084:4;4078;4074:3;4068:5;4046:44;;4135:4;4129;4125:3;4119:5;4107:34;;4184:4;4178;4174:3;4168:5;4158:32;;4247:28;4225:50;;;:18;:50;;;;4217:59;;;;;;;;3817:470;4316:1;4304:8;:13;;;;4296:22;;;;;;;;4345:1;4336:6;:10;4328:19;;;;;;;;4425:27;4438:5;4445:6;4425:12;:27::i;:::-;4421:122;;;4501:6;4468:11;:18;4480:5;4468:18;;;;;;;;;;;;;;;:29;;;:39;;;;;;;;;;;4528:4;4521:11;;;;4421:122;4559:5;4552:12;;874:1;3233:1338;;;;;;;;;;;:::o;617:50::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;355:40::-;;;;;;;;;;;;;;;;;;;;:::o;4577:488::-;4664:4;4684:29;4716:11;:18;4728:5;4716:18;;;;;;;;;;;;;;;4684:50;;4758:10;:18;;;4748:7;:5;:7::i;:::-;:28;4744:126;;;4813:7;:5;:7::i;:::-;4792:10;:18;;:28;;;;4858:1;4834:10;:21;;:25;;;;4744:126;4920:10;:21;;;4910:6;4886:10;:21;;;:30;:55;;:125;;;;;4990:10;:21;;;4981:6;4957:10;:21;;;:30;:54;4886:125;4879:157;;;5032:4;5025:11;;;;4879:157;5053:5;5046:12;;4577:488;;;;;;:::o", - "source": "pragma solidity 0.4.19;\nimport \"../Extension.sol\";\nimport \"../GnosisSafe.sol\";\n\n\n/// @title Daily Limit Extension - Allows to transfer limited amounts of ERC20 tokens and Ether without confirmations.\n/// @author Stefan George - \ncontract DailyLimitExtension is Extension {\n\n string public constant NAME = \"Daily Limit Extension\";\n string public constant VERSION = \"0.0.1\";\n bytes4 public constant TRANSFER_FUNCTION_IDENTIFIER = hex\"a9059cbb\";\n\n DailyLimitExtension masterCopy;\n GnosisSafe public gnosisSafe;\n\n // dailyLimits mapping maps token address to daily limit settings.\n mapping (address => DailyLimit) public dailyLimits;\n\n struct DailyLimit {\n uint256 dailyLimit;\n uint256 spentToday;\n uint256 lastDay;\n }\n\n modifier onlyGnosisSafe() {\n require(msg.sender == address(gnosisSafe));\n _;\n }\n\n /// @dev Constructor function triggers setup function.\n /// @param tokens List of token addresses. Ether is represented with address 0x0.\n /// @param _dailyLimits List of daily limits in smallest unit (e.g. Wei for Ether). \n /// First entry of array corresponds to first entry in token address array.\n function DailyLimitExtension(address[] tokens, uint256[] _dailyLimits)\n public\n {\n setup(tokens, _dailyLimits);\n }\n\n /// @dev Setup function sets initial storage of contract.\n /// @param tokens List of token addresses. Ether is represented with address 0x0.\n /// @param _dailyLimits List of daily limits in smalles units (e.g. Wei for Ether).\n function setup(address[] tokens, uint256[] _dailyLimits)\n public\n {\n // gnosisSafe can only be 0 at initalization of contract.\n // Check ensures that setup function can only be called once.\n require(address(gnosisSafe) == 0);\n gnosisSafe = GnosisSafe(msg.sender);\n for (uint256 i = 0; i < tokens.length; i++)\n dailyLimits[tokens[i]].dailyLimit = _dailyLimits[i];\n }\n\n /// @dev Allows to upgrade the contract. This can only be done via a Safe transaction.\n /// @param _masterCopy New contract address.\n function changeMasterCopy(DailyLimitExtension _masterCopy)\n public\n onlyGnosisSafe\n {\n require(address(_masterCopy) != 0);\n masterCopy = _masterCopy;\n }\n\n /// @dev Allows to update the daily limit for a specified token. This can only be done via a Safe transaction.\n /// @param token Token contract address.\n /// @param dailyLimit Daily limit in smallest token unit.\n function changeDailyLimit(address token, uint256 dailyLimit)\n public\n onlyGnosisSafe\n {\n dailyLimits[token].dailyLimit = dailyLimit;\n }\n\n /// @dev Returns if Safe transaction is a valid daily limit transaction.\n /// @param sender Safe owner sending Safe transaction.\n /// @param to Receiver address in case of Ether transfer, token address in case of a token transfer.\n /// @param value Ether value in case of an Ether transfer.\n /// @param data Encoded token transfer. Empty in case of Ether transfer.\n /// @param operation Only Call operations are allowed.\n /// @return Returns if transaction can be executed.\n function isExecutable(address sender, address to, uint256 value, bytes data, GnosisSafe.Operation operation)\n public\n onlyGnosisSafe\n returns (bool)\n {\n // Only Safe owners are allowed to execute daily limit transactions.\n require(gnosisSafe.isOwner(sender));\n require(operation == GnosisSafe.Operation.Call);\n // Data has to encode a token transfer or has to be empty.\n require(data.length == 0 && value > 0 || data.length > 0 && value == 0);\n address token;\n address receiver;\n uint256 amount;\n if (data.length == 0) {\n token = 0;\n receiver = to;\n amount = value;\n }\n else {\n token = to;\n bytes4 functionIdentifier;\n assembly {\n functionIdentifier := mload(add(data, 0x20))\n receiver := mload(add(data, 0x24))\n amount := mload(add(data, 0x44))\n }\n require(functionIdentifier == TRANSFER_FUNCTION_IDENTIFIER);\n }\n require(receiver != 0);\n require(amount > 0);\n // Validate that transfer is not exceeding daily limit.\n if (isUnderLimit(token, amount)) {\n dailyLimits[token].spentToday += amount;\n return true;\n }\n return false;\n }\n\n function isUnderLimit(address token, uint256 amount)\n internal\n returns (bool)\n {\n DailyLimit storage dailyLimit = dailyLimits[token];\n if (today() > dailyLimit.lastDay) {\n dailyLimit.lastDay = today();\n dailyLimit.spentToday = 0;\n }\n if ( dailyLimit.spentToday + amount <= dailyLimit.dailyLimit\n && dailyLimit.spentToday + amount > dailyLimit.spentToday)\n return true;\n return false;\n }\n\n /// @dev Returns last midnight as Unix timestamp.\n /// @return Unix timestamp.\n function today()\n public\n view\n returns (uint)\n {\n return now - (now % 1 days);\n }\n}\n", - "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/extensions/DailyLimitExtension.sol", - "ast": { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/extensions/DailyLimitExtension.sol", - "exportedSymbols": { - "DailyLimitExtension": [ - 1418 - ] - }, - "id": 1419, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 1083, - "literals": [ - "solidity", - "0.4", - ".19" - ], - "nodeType": "PragmaDirective", - "src": "0:23:5" - }, - { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Extension.sol", - "file": "../Extension.sol", - "id": 1084, - "nodeType": "ImportDirective", - "scope": 1419, - "sourceUnit": 19, - "src": "24:26:5", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", - "file": "../GnosisSafe.sol", - "id": 1085, - "nodeType": "ImportDirective", - "scope": 1419, - "sourceUnit": 964, - "src": "51:27:5", - "symbolAliases": [], - "unitAlias": "" - }, - { - "baseContracts": [ - { - "arguments": [], - "baseName": { - "contractScope": null, - "id": 1086, - "name": "Extension", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 18, - "src": "279:9:5", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "id": 1087, - "nodeType": "InheritanceSpecifier", - "src": "279:9:5" - } - ], - "contractDependencies": [ - 18 - ], - "contractKind": "contract", - "documentation": "@title Daily Limit Extension - Allows to transfer limited amounts of ERC20 tokens and Ether without confirmations.\n @author Stefan George - ", - "fullyImplemented": true, - "id": 1418, - "linearizedBaseContracts": [ - 1418, - 18 - ], - "name": "DailyLimitExtension", - "nodeType": "ContractDefinition", - "nodes": [ - { - "constant": true, - "id": 1090, - "name": "NAME", - "nodeType": "VariableDeclaration", - "scope": 1418, - "src": "296:53:5", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_string_memory", - "typeString": "string memory" - }, - "typeName": { - "id": 1088, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "296:6:5", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string storage pointer" - } - }, - "value": { - "argumentTypes": null, - "hexValue": "4461696c79204c696d697420457874656e73696f6e", - "id": 1089, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "326:23:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_d825d71e418e7ec5e1c3c51592576f08c81f26d9ede420759434d9e0a688c12f", - "typeString": "literal_string \"Daily Limit Extension\"" - }, - "value": "Daily Limit Extension" - }, - "visibility": "public" - }, - { - "constant": true, - "id": 1093, - "name": "VERSION", - "nodeType": "VariableDeclaration", - "scope": 1418, - "src": "355:40:5", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_string_memory", - "typeString": "string memory" - }, - "typeName": { - "id": 1091, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "355:6:5", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string storage pointer" - } - }, - "value": { - "argumentTypes": null, - "hexValue": "302e302e31", - "id": 1092, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "388:7:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", - "typeString": "literal_string \"0.0.1\"" - }, - "value": "0.0.1" - }, - "visibility": "public" - }, - { - "constant": true, - "id": 1096, - "name": "TRANSFER_FUNCTION_IDENTIFIER", - "nodeType": "VariableDeclaration", - "scope": 1418, - "src": "401:67:5", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - "typeName": { - "id": 1094, - "name": "bytes4", - "nodeType": "ElementaryTypeName", - "src": "401:6:5", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "value": { - "argumentTypes": null, - "hexValue": "a9059cbb", - "id": 1095, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "455:13:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_abce0605a16ff5e998983a0af570b8ad942bb11e305eb20ae3ada0a3be24eb97", - "typeString": "literal_string (contains invalid UTF-8 sequence at position 0)" - }, - "value": null - }, - "visibility": "public" - }, - { - "constant": false, - "id": 1098, - "name": "masterCopy", - "nodeType": "VariableDeclaration", - "scope": 1418, - "src": "475:30:5", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_DailyLimitExtension_$1418", - "typeString": "contract DailyLimitExtension" - }, - "typeName": { - "contractScope": null, - "id": 1097, - "name": "DailyLimitExtension", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1418, - "src": "475:19:5", - "typeDescriptions": { - "typeIdentifier": "t_contract$_DailyLimitExtension_$1418", - "typeString": "contract DailyLimitExtension" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1100, - "name": "gnosisSafe", - "nodeType": "VariableDeclaration", - "scope": 1418, - "src": "511:28:5", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - }, - "typeName": { - "contractScope": null, - "id": 1099, - "name": "GnosisSafe", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 963, - "src": "511:10:5", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "id": 1104, - "name": "dailyLimits", - "nodeType": "VariableDeclaration", - "scope": 1418, - "src": "617:50:5", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1111_storage_$", - "typeString": "mapping(address => struct DailyLimitExtension.DailyLimit storage ref)" - }, - "typeName": { - "id": 1103, - "keyType": { - "id": 1101, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "626:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Mapping", - "src": "617:31:5", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1111_storage_$", - "typeString": "mapping(address => struct DailyLimitExtension.DailyLimit storage ref)" - }, - "valueType": { - "contractScope": null, - "id": 1102, - "name": "DailyLimit", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1111, - "src": "637:10:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr", - "typeString": "struct DailyLimitExtension.DailyLimit storage pointer" - } - } - }, - "value": null, - "visibility": "public" - }, - { - "canonicalName": "DailyLimitExtension.DailyLimit", - "id": 1111, - "members": [ - { - "constant": false, - "id": 1106, - "name": "dailyLimit", - "nodeType": "VariableDeclaration", - "scope": 1111, - "src": "702:18:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1105, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "702:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1108, - "name": "spentToday", - "nodeType": "VariableDeclaration", - "scope": 1111, - "src": "730:18:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1107, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "730:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1110, - "name": "lastDay", - "nodeType": "VariableDeclaration", - "scope": 1111, - "src": "758:15:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1109, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "758:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "name": "DailyLimit", - "nodeType": "StructDefinition", - "scope": 1418, - "src": "674:106:5", - "visibility": "public" - }, - { - "body": { - "id": 1123, - "nodeType": "Block", - "src": "812:70:5", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 1119, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1114, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2089, - "src": "830:3:5", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1115, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "830:10:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1117, - "name": "gnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1100, - "src": "852:10:5", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - ], - "id": 1116, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "844:7:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 1118, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "844:19:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "830:33:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1113, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "822:7:5", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1120, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "822:42:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1121, - "nodeType": "ExpressionStatement", - "src": "822:42:5" - }, - { - "id": 1122, - "nodeType": "PlaceholderStatement", - "src": "874:1:5" - } - ] - }, - "id": 1124, - "name": "onlyGnosisSafe", - "nodeType": "ModifierDefinition", - "parameters": { - "id": 1112, - "nodeType": "ParameterList", - "parameters": [], - "src": "809:2:5" - }, - "src": "786:96:5", - "visibility": "internal" - }, - { - "body": { - "id": 1138, - "nodeType": "Block", - "src": "1299:44:5", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1134, - "name": "tokens", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1127, - "src": "1315:6:5", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - { - "argumentTypes": null, - "id": 1135, - "name": "_dailyLimits", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1130, - "src": "1323:12:5", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", - "typeString": "uint256[] memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - }, - { - "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", - "typeString": "uint256[] memory" - } - ], - "id": 1133, - "name": "setup", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1187, - "src": "1309:5:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$", - "typeString": "function (address[] memory,uint256[] memory)" - } - }, - "id": 1136, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1309:27:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1137, - "nodeType": "ExpressionStatement", - "src": "1309:27:5" - } - ] - }, - "id": 1139, - "implemented": true, - "isConstructor": true, - "isDeclaredConst": false, - "modifiers": [], - "name": "DailyLimitExtension", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1131, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1127, - "name": "tokens", - "nodeType": "VariableDeclaration", - "scope": 1139, - "src": "1238:16:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - }, - "typeName": { - "baseType": { - "id": 1125, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1238:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 1126, - "length": null, - "nodeType": "ArrayTypeName", - "src": "1238:9:5", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1130, - "name": "_dailyLimits", - "nodeType": "VariableDeclaration", - "scope": 1139, - "src": "1256:22:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", - "typeString": "uint256[] memory" - }, - "typeName": { - "baseType": { - "id": 1128, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1256:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1129, - "length": null, - "nodeType": "ArrayTypeName", - "src": "1256:9:5", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", - "typeString": "uint256[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1237:42:5" - }, - "payable": false, - "returnParameters": { - "id": 1132, - "nodeType": "ParameterList", - "parameters": [], - "src": "1299:0:5" - }, - "scope": 1418, - "src": "1209:134:5", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1186, - "nodeType": "Block", - "src": "1661:348:5", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 1153, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1150, - "name": "gnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1100, - "src": "1823:10:5", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - ], - "id": 1149, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "1815:7:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 1151, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1815:19:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1152, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1838:1:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1815:24:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1148, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "1807:7:5", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1154, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1807:33:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1155, - "nodeType": "ExpressionStatement", - "src": "1807:33:5" - }, - { - "expression": { - "argumentTypes": null, - "id": 1161, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1156, - "name": "gnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1100, - "src": "1850:10:5", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1158, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2089, - "src": "1874:3:5", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1159, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "1874:10:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 1157, - "name": "GnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 963, - "src": "1863:10:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_GnosisSafe_$963_$", - "typeString": "type(contract GnosisSafe)" - } - }, - "id": 1160, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1863:22:5", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - "src": "1850:35:5", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - "id": 1162, - "nodeType": "ExpressionStatement", - "src": "1850:35:5" - }, - { - "body": { - "expression": { - "argumentTypes": null, - "id": 1183, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1174, - "name": "dailyLimits", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1104, - "src": "1951:11:5", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1111_storage_$", - "typeString": "mapping(address => struct DailyLimitExtension.DailyLimit storage ref)" - } - }, - "id": 1178, - "indexExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1175, - "name": "tokens", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1142, - "src": "1963:6:5", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 1177, - "indexExpression": { - "argumentTypes": null, - "id": 1176, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1164, - "src": "1970:1:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1963:9:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1951:22:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1111_storage", - "typeString": "struct DailyLimitExtension.DailyLimit storage ref" - } - }, - "id": 1179, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "dailyLimit", - "nodeType": "MemberAccess", - "referencedDeclaration": 1106, - "src": "1951:33:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1180, - "name": "_dailyLimits", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1145, - "src": "1987:12:5", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", - "typeString": "uint256[] memory" - } - }, - "id": 1182, - "indexExpression": { - "argumentTypes": null, - "id": 1181, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1164, - "src": "2000:1:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1987:15:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1951:51:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1184, - "nodeType": "ExpressionStatement", - "src": "1951:51:5" - }, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1170, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1167, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1164, - "src": "1915:1:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1168, - "name": "tokens", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1142, - "src": "1919:6:5", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 1169, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "1919:13:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1915:17:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1185, - "initializationExpression": { - "assignments": [ - 1164 - ], - "declarations": [ - { - "constant": false, - "id": 1164, - "name": "i", - "nodeType": "VariableDeclaration", - "scope": 1187, - "src": "1900:9:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1163, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1900:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1166, - "initialValue": { - "argumentTypes": null, - "hexValue": "30", - "id": 1165, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1912:1:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "1900:13:5" - }, - "loopExpression": { - "expression": { - "argumentTypes": null, - "id": 1172, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "1934:3:5", - "subExpression": { - "argumentTypes": null, - "id": 1171, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1164, - "src": "1934:1:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1173, - "nodeType": "ExpressionStatement", - "src": "1934:3:5" - }, - "nodeType": "ForStatement", - "src": "1895:107:5" - } - ] - }, - "id": 1187, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "setup", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1146, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1142, - "name": "tokens", - "nodeType": "VariableDeclaration", - "scope": 1187, - "src": "1600:16:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - }, - "typeName": { - "baseType": { - "id": 1140, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1600:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 1141, - "length": null, - "nodeType": "ArrayTypeName", - "src": "1600:9:5", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1145, - "name": "_dailyLimits", - "nodeType": "VariableDeclaration", - "scope": 1187, - "src": "1618:22:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", - "typeString": "uint256[] memory" - }, - "typeName": { - "baseType": { - "id": 1143, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1618:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1144, - "length": null, - "nodeType": "ArrayTypeName", - "src": "1618:9:5", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", - "typeString": "uint256[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1599:42:5" - }, - "payable": false, - "returnParameters": { - "id": 1147, - "nodeType": "ParameterList", - "parameters": [], - "src": "1661:0:5" - }, - "scope": 1418, - "src": "1585:424:5", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1206, - "nodeType": "Block", - "src": "2256:85:5", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 1199, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1196, - "name": "_masterCopy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1189, - "src": "2282:11:5", - "typeDescriptions": { - "typeIdentifier": "t_contract$_DailyLimitExtension_$1418", - "typeString": "contract DailyLimitExtension" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_DailyLimitExtension_$1418", - "typeString": "contract DailyLimitExtension" - } - ], - "id": 1195, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "2274:7:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 1197, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2274:20:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1198, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2298:1:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2274:25:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1194, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "2266:7:5", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1200, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2266:34:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1201, - "nodeType": "ExpressionStatement", - "src": "2266:34:5" - }, - { - "expression": { - "argumentTypes": null, - "id": 1204, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1202, - "name": "masterCopy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1098, - "src": "2310:10:5", - "typeDescriptions": { - "typeIdentifier": "t_contract$_DailyLimitExtension_$1418", - "typeString": "contract DailyLimitExtension" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 1203, - "name": "_masterCopy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1189, - "src": "2323:11:5", - "typeDescriptions": { - "typeIdentifier": "t_contract$_DailyLimitExtension_$1418", - "typeString": "contract DailyLimitExtension" - } - }, - "src": "2310:24:5", - "typeDescriptions": { - "typeIdentifier": "t_contract$_DailyLimitExtension_$1418", - "typeString": "contract DailyLimitExtension" - } - }, - "id": 1205, - "nodeType": "ExpressionStatement", - "src": "2310:24:5" - } - ] - }, - "id": 1207, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [], - "id": 1192, - "modifierName": { - "argumentTypes": null, - "id": 1191, - "name": "onlyGnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1124, - "src": "2237:14:5", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "2237:14:5" - } - ], - "name": "changeMasterCopy", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1190, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1189, - "name": "_masterCopy", - "nodeType": "VariableDeclaration", - "scope": 1207, - "src": "2181:31:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_DailyLimitExtension_$1418", - "typeString": "contract DailyLimitExtension" - }, - "typeName": { - "contractScope": null, - "id": 1188, - "name": "DailyLimitExtension", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1418, - "src": "2181:19:5", - "typeDescriptions": { - "typeIdentifier": "t_contract$_DailyLimitExtension_$1418", - "typeString": "contract DailyLimitExtension" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "2180:33:5" - }, - "payable": false, - "returnParameters": { - "id": 1193, - "nodeType": "ParameterList", - "parameters": [], - "src": "2256:0:5" - }, - "scope": 1418, - "src": "2155:186:5", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1223, - "nodeType": "Block", - "src": "2672:59:5", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 1221, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1216, - "name": "dailyLimits", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1104, - "src": "2682:11:5", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1111_storage_$", - "typeString": "mapping(address => struct DailyLimitExtension.DailyLimit storage ref)" - } - }, - "id": 1218, - "indexExpression": { - "argumentTypes": null, - "id": 1217, - "name": "token", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1209, - "src": "2694:5:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2682:18:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1111_storage", - "typeString": "struct DailyLimitExtension.DailyLimit storage ref" - } - }, - "id": 1219, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "dailyLimit", - "nodeType": "MemberAccess", - "referencedDeclaration": 1106, - "src": "2682:29:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 1220, - "name": "dailyLimit", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1211, - "src": "2714:10:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2682:42:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1222, - "nodeType": "ExpressionStatement", - "src": "2682:42:5" - } - ] - }, - "id": 1224, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [], - "id": 1214, - "modifierName": { - "argumentTypes": null, - "id": 1213, - "name": "onlyGnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1124, - "src": "2653:14:5", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "2653:14:5" - } - ], - "name": "changeDailyLimit", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1212, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1209, - "name": "token", - "nodeType": "VariableDeclaration", - "scope": 1224, - "src": "2595:13:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1208, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2595:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1211, - "name": "dailyLimit", - "nodeType": "VariableDeclaration", - "scope": 1224, - "src": "2610:18:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1210, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2610:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "2594:35:5" - }, - "payable": false, - "returnParameters": { - "id": 1215, - "nodeType": "ParameterList", - "parameters": [], - "src": "2672:0:5" - }, - "scope": 1418, - "src": "2569:162:5", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1347, - "nodeType": "Block", - "src": "3407:1164:5", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1244, - "name": "sender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1226, - "src": "3521:6:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "expression": { - "argumentTypes": null, - "id": 1242, - "name": "gnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1100, - "src": "3502:10:5", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - "id": 1243, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "isOwner", - "nodeType": "MemberAccess", - "referencedDeclaration": 47, - "src": "3502:18:5", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", - "typeString": "function (address) view external returns (bool)" - } - }, - "id": 1245, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3502:26:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1241, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "3494:7:5", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1246, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3494:35:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1247, - "nodeType": "ExpressionStatement", - "src": "3494:35:5" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - }, - "id": 1253, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1249, - "name": "operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1234, - "src": "3547:9:5", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1250, - "name": "GnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 963, - "src": "3560:10:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_GnosisSafe_$963_$", - "typeString": "type(contract GnosisSafe)" - } - }, - "id": 1251, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "Operation", - "nodeType": "MemberAccess", - "referencedDeclaration": 61, - "src": "3560:20:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_Operation_$61_$", - "typeString": "type(enum GnosisSafe.Operation)" - } - }, - "id": 1252, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "Call", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "3560:25:5", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "src": "3547:38:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1248, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "3539:7:5", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1254, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3539:47:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1255, - "nodeType": "ExpressionStatement", - "src": "3539:47:5" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 1273, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 1264, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1260, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1257, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1232, - "src": "3671:4:5", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "id": 1258, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "3671:11:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1259, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3686:1:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "3671:16:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1263, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1261, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1230, - "src": "3691:5:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1262, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3699:1:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "3691:9:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "3671:29:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "||", - "rightExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 1272, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1268, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1265, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1232, - "src": "3704:4:5", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "id": 1266, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "3704:11:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1267, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3718:1:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "3704:15:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1271, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1269, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1230, - "src": "3723:5:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1270, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3732:1:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "3723:10:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "3704:29:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "3671:62:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1256, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "3663:7:5", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1274, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3663:71:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1275, - "nodeType": "ExpressionStatement", - "src": "3663:71:5" - }, - { - "assignments": [], - "declarations": [ - { - "constant": false, - "id": 1277, - "name": "token", - "nodeType": "VariableDeclaration", - "scope": 1348, - "src": "3744:13:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1276, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3744:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1278, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "3744:13:5" - }, - { - "assignments": [], - "declarations": [ - { - "constant": false, - "id": 1280, - "name": "receiver", - "nodeType": "VariableDeclaration", - "scope": 1348, - "src": "3767:16:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1279, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3767:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1281, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "3767:16:5" - }, - { - "assignments": [], - "declarations": [ - { - "constant": false, - "id": 1283, - "name": "amount", - "nodeType": "VariableDeclaration", - "scope": 1348, - "src": "3793:14:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1282, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3793:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1284, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "3793:14:5" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1288, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1285, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1232, - "src": "3821:4:5", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "id": 1286, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "3821:11:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1287, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3836:1:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "3821:16:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "id": 1316, - "nodeType": "Block", - "src": "3942:345:5", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 1304, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1302, - "name": "token", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1277, - "src": "3956:5:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 1303, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1228, - "src": "3964:2:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "3956:10:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 1305, - "nodeType": "ExpressionStatement", - "src": "3956:10:5" - }, - { - "assignments": [], - "declarations": [ - { - "constant": false, - "id": 1307, - "name": "functionIdentifier", - "nodeType": "VariableDeclaration", - "scope": 1348, - "src": "3980:25:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - "typeName": { - "id": 1306, - "name": "bytes4", - "nodeType": "ElementaryTypeName", - "src": "3980:6:5", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1308, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "3980:25:5" - }, - { - "externalReferences": [ - { - "functionIdentifier": { - "declaration": 1307, - "isOffset": false, - "isSlot": false, - "src": "4046:18:5", - "valueSize": 1 - } - }, - { - "amount": { - "declaration": 1283, - "isOffset": false, - "isSlot": false, - "src": "4158:6:5", - "valueSize": 1 - } - }, - { - "data": { - "declaration": 1232, - "isOffset": false, - "isSlot": false, - "src": "4078:4:5", - "valueSize": 1 - } - }, - { - "receiver": { - "declaration": 1280, - "isOffset": false, - "isSlot": false, - "src": "4107:8:5", - "valueSize": 1 - } - }, - { - "data": { - "declaration": 1232, - "isOffset": false, - "isSlot": false, - "src": "4129:4:5", - "valueSize": 1 - } - }, - { - "data": { - "declaration": 1232, - "isOffset": false, - "isSlot": false, - "src": "4178:4:5", - "valueSize": 1 - } - } - ], - "id": 1309, - "nodeType": "InlineAssembly", - "operations": "{\n functionIdentifier := mload(add(data, 0x20))\n receiver := mload(add(data, 0x24))\n amount := mload(add(data, 0x44))\n}", - "src": "4019:205:5" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - "id": 1313, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1311, - "name": "functionIdentifier", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1307, - "src": "4225:18:5", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 1312, - "name": "TRANSFER_FUNCTION_IDENTIFIER", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1096, - "src": "4247:28:5", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "src": "4225:50:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1310, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "4217:7:5", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1314, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4217:59:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1315, - "nodeType": "ExpressionStatement", - "src": "4217:59:5" - } - ] - }, - "id": 1317, - "nodeType": "IfStatement", - "src": "3817:470:5", - "trueBody": { - "id": 1301, - "nodeType": "Block", - "src": "3839:89:5", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 1291, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1289, - "name": "token", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1277, - "src": "3853:5:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "30", - "id": 1290, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3861:1:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "3853:9:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 1292, - "nodeType": "ExpressionStatement", - "src": "3853:9:5" - }, - { - "expression": { - "argumentTypes": null, - "id": 1295, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1293, - "name": "receiver", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1280, - "src": "3876:8:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 1294, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1228, - "src": "3887:2:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "3876:13:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 1296, - "nodeType": "ExpressionStatement", - "src": "3876:13:5" - }, - { - "expression": { - "argumentTypes": null, - "id": 1299, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1297, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1283, - "src": "3903:6:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 1298, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1230, - "src": "3912:5:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3903:14:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1300, - "nodeType": "ExpressionStatement", - "src": "3903:14:5" - } - ] - } - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 1321, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1319, - "name": "receiver", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1280, - "src": "4304:8:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1320, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4316:1:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "4304:13:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1318, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "4296:7:5", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1322, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4296:22:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1323, - "nodeType": "ExpressionStatement", - "src": "4296:22:5" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1327, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1325, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1283, - "src": "4336:6:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1326, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4345:1:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "4336:10:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1324, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "4328:7:5", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1328, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4328:19:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1329, - "nodeType": "ExpressionStatement", - "src": "4328:19:5" - }, - { - "condition": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1331, - "name": "token", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1277, - "src": "4438:5:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 1332, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1283, - "src": "4445:6:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1330, - "name": "isUnderLimit", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1404, - "src": "4425:12:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", - "typeString": "function (address,uint256) returns (bool)" - } - }, - "id": 1333, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4425:27:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 1344, - "nodeType": "IfStatement", - "src": "4421:122:5", - "trueBody": { - "id": 1343, - "nodeType": "Block", - "src": "4454:89:5", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 1339, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1334, - "name": "dailyLimits", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1104, - "src": "4468:11:5", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1111_storage_$", - "typeString": "mapping(address => struct DailyLimitExtension.DailyLimit storage ref)" - } - }, - "id": 1336, - "indexExpression": { - "argumentTypes": null, - "id": 1335, - "name": "token", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1277, - "src": "4480:5:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4468:18:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1111_storage", - "typeString": "struct DailyLimitExtension.DailyLimit storage ref" - } - }, - "id": 1337, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "spentToday", - "nodeType": "MemberAccess", - "referencedDeclaration": 1108, - "src": "4468:29:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "+=", - "rightHandSide": { - "argumentTypes": null, - "id": 1338, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1283, - "src": "4501:6:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4468:39:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1340, - "nodeType": "ExpressionStatement", - "src": "4468:39:5" - }, - { - "expression": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 1341, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4528:4:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "functionReturnParameters": 1240, - "id": 1342, - "nodeType": "Return", - "src": "4521:11:5" - } - ] - } - }, - { - "expression": { - "argumentTypes": null, - "hexValue": "66616c7365", - "id": 1345, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4559:5:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "functionReturnParameters": 1240, - "id": 1346, - "nodeType": "Return", - "src": "4552:12:5" - } - ] - }, - "id": 1348, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [], - "id": 1237, - "modifierName": { - "argumentTypes": null, - "id": 1236, - "name": "onlyGnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1124, - "src": "3365:14:5", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "3365:14:5" - } - ], - "name": "isExecutable", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1235, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1226, - "name": "sender", - "nodeType": "VariableDeclaration", - "scope": 1348, - "src": "3255:14:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1225, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3255:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1228, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 1348, - "src": "3271:10:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1227, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3271:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1230, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 1348, - "src": "3283:13:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1229, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3283:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1232, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 1348, - "src": "3298:10:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 1231, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "3298:5:5", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1234, - "name": "operation", - "nodeType": "VariableDeclaration", - "scope": 1348, - "src": "3310:30:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - }, - "typeName": { - "contractScope": null, - "id": 1233, - "name": "GnosisSafe.Operation", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 61, - "src": "3310:20:5", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "3254:87:5" - }, - "payable": false, - "returnParameters": { - "id": 1240, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1239, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 1348, - "src": "3397:4:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 1238, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "3397:4:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "3396:6:5" - }, - "scope": 1418, - "src": "3233:1338:5", - "stateMutability": "nonpayable", - "superFunction": 17, - "visibility": "public" - }, - { - "body": { - "id": 1403, - "nodeType": "Block", - "src": "4674:391:5", - "statements": [ - { - "assignments": [ - 1358 - ], - "declarations": [ - { - "constant": false, - "id": 1358, - "name": "dailyLimit", - "nodeType": "VariableDeclaration", - "scope": 1404, - "src": "4684:29:5", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr", - "typeString": "struct DailyLimitExtension.DailyLimit storage pointer" - }, - "typeName": { - "contractScope": null, - "id": 1357, - "name": "DailyLimit", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1111, - "src": "4684:10:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr", - "typeString": "struct DailyLimitExtension.DailyLimit storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1362, - "initialValue": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1359, - "name": "dailyLimits", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1104, - "src": "4716:11:5", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1111_storage_$", - "typeString": "mapping(address => struct DailyLimitExtension.DailyLimit storage ref)" - } - }, - "id": 1361, - "indexExpression": { - "argumentTypes": null, - "id": 1360, - "name": "token", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1350, - "src": "4728:5:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4716:18:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1111_storage", - "typeString": "struct DailyLimitExtension.DailyLimit storage ref" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "4684:50:5" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1367, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 1363, - "name": "today", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1417, - "src": "4748:5:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", - "typeString": "function () view returns (uint256)" - } - }, - "id": 1364, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4748:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1365, - "name": "dailyLimit", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1358, - "src": "4758:10:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr", - "typeString": "struct DailyLimitExtension.DailyLimit storage pointer" - } - }, - "id": 1366, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "lastDay", - "nodeType": "MemberAccess", - "referencedDeclaration": 1110, - "src": "4758:18:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4748:28:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 1382, - "nodeType": "IfStatement", - "src": "4744:126:5", - "trueBody": { - "id": 1381, - "nodeType": "Block", - "src": "4778:92:5", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 1373, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1368, - "name": "dailyLimit", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1358, - "src": "4792:10:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr", - "typeString": "struct DailyLimitExtension.DailyLimit storage pointer" - } - }, - "id": 1370, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "lastDay", - "nodeType": "MemberAccess", - "referencedDeclaration": 1110, - "src": "4792:18:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 1371, - "name": "today", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1417, - "src": "4813:5:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", - "typeString": "function () view returns (uint256)" - } - }, - "id": 1372, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4813:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4792:28:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1374, - "nodeType": "ExpressionStatement", - "src": "4792:28:5" - }, - { - "expression": { - "argumentTypes": null, - "id": 1379, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1375, - "name": "dailyLimit", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1358, - "src": "4834:10:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr", - "typeString": "struct DailyLimitExtension.DailyLimit storage pointer" - } - }, - "id": 1377, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "spentToday", - "nodeType": "MemberAccess", - "referencedDeclaration": 1108, - "src": "4834:21:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "30", - "id": 1378, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4858:1:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "4834:25:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1380, - "nodeType": "ExpressionStatement", - "src": "4834:25:5" - } - ] - } - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 1397, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1389, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1386, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1383, - "name": "dailyLimit", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1358, - "src": "4886:10:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr", - "typeString": "struct DailyLimitExtension.DailyLimit storage pointer" - } - }, - "id": 1384, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "spentToday", - "nodeType": "MemberAccess", - "referencedDeclaration": 1108, - "src": "4886:21:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "argumentTypes": null, - "id": 1385, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1352, - "src": "4910:6:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4886:30:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<=", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1387, - "name": "dailyLimit", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1358, - "src": "4920:10:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr", - "typeString": "struct DailyLimitExtension.DailyLimit storage pointer" - } - }, - "id": 1388, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "dailyLimit", - "nodeType": "MemberAccess", - "referencedDeclaration": 1106, - "src": "4920:21:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4886:55:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1396, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1393, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1390, - "name": "dailyLimit", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1358, - "src": "4957:10:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr", - "typeString": "struct DailyLimitExtension.DailyLimit storage pointer" - } - }, - "id": 1391, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "spentToday", - "nodeType": "MemberAccess", - "referencedDeclaration": 1108, - "src": "4957:21:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "argumentTypes": null, - "id": 1392, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1352, - "src": "4981:6:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4957:30:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1394, - "name": "dailyLimit", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1358, - "src": "4990:10:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr", - "typeString": "struct DailyLimitExtension.DailyLimit storage pointer" - } - }, - "id": 1395, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "spentToday", - "nodeType": "MemberAccess", - "referencedDeclaration": 1108, - "src": "4990:21:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4957:54:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "4886:125:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 1400, - "nodeType": "IfStatement", - "src": "4879:157:5", - "trueBody": { - "expression": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 1398, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5032:4:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "functionReturnParameters": 1356, - "id": 1399, - "nodeType": "Return", - "src": "5025:11:5" - } - }, - { - "expression": { - "argumentTypes": null, - "hexValue": "66616c7365", - "id": 1401, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5053:5:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "functionReturnParameters": 1356, - "id": 1402, - "nodeType": "Return", - "src": "5046:12:5" - } - ] - }, - "id": 1404, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "isUnderLimit", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1353, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1350, - "name": "token", - "nodeType": "VariableDeclaration", - "scope": 1404, - "src": "4599:13:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1349, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "4599:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1352, - "name": "amount", - "nodeType": "VariableDeclaration", - "scope": 1404, - "src": "4614:14:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1351, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4614:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "4598:31:5" - }, - "payable": false, - "returnParameters": { - "id": 1356, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1355, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 1404, - "src": "4664:4:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 1354, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "4664:4:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "4663:6:5" - }, - "scope": 1418, - "src": "4577:488:5", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 1416, - "nodeType": "Block", - "src": "5229:44:5", - "statements": [ - { - "expression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1414, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1409, - "name": "now", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2091, - "src": "5246:3:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1412, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1410, - "name": "now", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2091, - "src": "5253:3:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "%", - "rightExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 1411, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5259:6:5", - "subdenomination": "days", - "typeDescriptions": { - "typeIdentifier": "t_rational_86400_by_1", - "typeString": "int_const 86400" - }, - "value": "1" - }, - "src": "5253:12:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 1413, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "5252:14:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "5246:20:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 1408, - "id": 1415, - "nodeType": "Return", - "src": "5239:27:5" - } - ] - }, - "id": 1417, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "today", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1405, - "nodeType": "ParameterList", - "parameters": [], - "src": "5171:2:5" - }, - "payable": false, - "returnParameters": { - "id": 1408, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1407, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 1417, - "src": "5219:4:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1406, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "5219:4:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "5218:6:5" - }, - "scope": 1418, - "src": "5157:116:5", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - } - ], - "scope": 1419, - "src": "247:5028:5" - } - ], - "src": "0:5276:5" - }, - "legacyAST": { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/extensions/DailyLimitExtension.sol", - "exportedSymbols": { - "DailyLimitExtension": [ - 1418 - ] - }, - "id": 1419, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 1083, - "literals": [ - "solidity", - "0.4", - ".19" - ], - "nodeType": "PragmaDirective", - "src": "0:23:5" - }, - { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Extension.sol", - "file": "../Extension.sol", - "id": 1084, - "nodeType": "ImportDirective", - "scope": 1419, - "sourceUnit": 19, - "src": "24:26:5", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", - "file": "../GnosisSafe.sol", - "id": 1085, - "nodeType": "ImportDirective", - "scope": 1419, - "sourceUnit": 964, - "src": "51:27:5", - "symbolAliases": [], - "unitAlias": "" - }, - { - "baseContracts": [ - { - "arguments": [], - "baseName": { - "contractScope": null, - "id": 1086, - "name": "Extension", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 18, - "src": "279:9:5", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "id": 1087, - "nodeType": "InheritanceSpecifier", - "src": "279:9:5" - } - ], - "contractDependencies": [ - 18 - ], - "contractKind": "contract", - "documentation": "@title Daily Limit Extension - Allows to transfer limited amounts of ERC20 tokens and Ether without confirmations.\n @author Stefan George - ", - "fullyImplemented": true, - "id": 1418, - "linearizedBaseContracts": [ - 1418, - 18 - ], - "name": "DailyLimitExtension", - "nodeType": "ContractDefinition", - "nodes": [ - { - "constant": true, - "id": 1090, - "name": "NAME", - "nodeType": "VariableDeclaration", - "scope": 1418, - "src": "296:53:5", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_string_memory", - "typeString": "string memory" - }, - "typeName": { - "id": 1088, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "296:6:5", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string storage pointer" - } - }, - "value": { - "argumentTypes": null, - "hexValue": "4461696c79204c696d697420457874656e73696f6e", - "id": 1089, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "326:23:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_d825d71e418e7ec5e1c3c51592576f08c81f26d9ede420759434d9e0a688c12f", - "typeString": "literal_string \"Daily Limit Extension\"" - }, - "value": "Daily Limit Extension" - }, - "visibility": "public" - }, - { - "constant": true, - "id": 1093, - "name": "VERSION", - "nodeType": "VariableDeclaration", - "scope": 1418, - "src": "355:40:5", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_string_memory", - "typeString": "string memory" - }, - "typeName": { - "id": 1091, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "355:6:5", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string storage pointer" - } - }, - "value": { - "argumentTypes": null, - "hexValue": "302e302e31", - "id": 1092, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "388:7:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", - "typeString": "literal_string \"0.0.1\"" - }, - "value": "0.0.1" - }, - "visibility": "public" - }, - { - "constant": true, - "id": 1096, - "name": "TRANSFER_FUNCTION_IDENTIFIER", - "nodeType": "VariableDeclaration", - "scope": 1418, - "src": "401:67:5", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - "typeName": { - "id": 1094, - "name": "bytes4", - "nodeType": "ElementaryTypeName", - "src": "401:6:5", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "value": { - "argumentTypes": null, - "hexValue": "a9059cbb", - "id": 1095, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "455:13:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_abce0605a16ff5e998983a0af570b8ad942bb11e305eb20ae3ada0a3be24eb97", - "typeString": "literal_string (contains invalid UTF-8 sequence at position 0)" - }, - "value": null - }, - "visibility": "public" - }, - { - "constant": false, - "id": 1098, - "name": "masterCopy", - "nodeType": "VariableDeclaration", - "scope": 1418, - "src": "475:30:5", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_DailyLimitExtension_$1418", - "typeString": "contract DailyLimitExtension" - }, - "typeName": { - "contractScope": null, - "id": 1097, - "name": "DailyLimitExtension", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1418, - "src": "475:19:5", - "typeDescriptions": { - "typeIdentifier": "t_contract$_DailyLimitExtension_$1418", - "typeString": "contract DailyLimitExtension" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1100, - "name": "gnosisSafe", - "nodeType": "VariableDeclaration", - "scope": 1418, - "src": "511:28:5", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - }, - "typeName": { - "contractScope": null, - "id": 1099, - "name": "GnosisSafe", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 963, - "src": "511:10:5", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "id": 1104, - "name": "dailyLimits", - "nodeType": "VariableDeclaration", - "scope": 1418, - "src": "617:50:5", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1111_storage_$", - "typeString": "mapping(address => struct DailyLimitExtension.DailyLimit storage ref)" - }, - "typeName": { - "id": 1103, - "keyType": { - "id": 1101, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "626:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Mapping", - "src": "617:31:5", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1111_storage_$", - "typeString": "mapping(address => struct DailyLimitExtension.DailyLimit storage ref)" - }, - "valueType": { - "contractScope": null, - "id": 1102, - "name": "DailyLimit", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1111, - "src": "637:10:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr", - "typeString": "struct DailyLimitExtension.DailyLimit storage pointer" - } - } - }, - "value": null, - "visibility": "public" - }, - { - "canonicalName": "DailyLimitExtension.DailyLimit", - "id": 1111, - "members": [ - { - "constant": false, - "id": 1106, - "name": "dailyLimit", - "nodeType": "VariableDeclaration", - "scope": 1111, - "src": "702:18:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1105, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "702:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1108, - "name": "spentToday", - "nodeType": "VariableDeclaration", - "scope": 1111, - "src": "730:18:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1107, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "730:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1110, - "name": "lastDay", - "nodeType": "VariableDeclaration", - "scope": 1111, - "src": "758:15:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1109, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "758:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "name": "DailyLimit", - "nodeType": "StructDefinition", - "scope": 1418, - "src": "674:106:5", - "visibility": "public" - }, - { - "body": { - "id": 1123, - "nodeType": "Block", - "src": "812:70:5", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 1119, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1114, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2089, - "src": "830:3:5", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1115, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "830:10:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1117, - "name": "gnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1100, - "src": "852:10:5", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - ], - "id": 1116, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "844:7:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 1118, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "844:19:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "830:33:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1113, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "822:7:5", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1120, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "822:42:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1121, - "nodeType": "ExpressionStatement", - "src": "822:42:5" - }, - { - "id": 1122, - "nodeType": "PlaceholderStatement", - "src": "874:1:5" - } - ] - }, - "id": 1124, - "name": "onlyGnosisSafe", - "nodeType": "ModifierDefinition", - "parameters": { - "id": 1112, - "nodeType": "ParameterList", - "parameters": [], - "src": "809:2:5" - }, - "src": "786:96:5", - "visibility": "internal" - }, - { - "body": { - "id": 1138, - "nodeType": "Block", - "src": "1299:44:5", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1134, - "name": "tokens", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1127, - "src": "1315:6:5", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - { - "argumentTypes": null, - "id": 1135, - "name": "_dailyLimits", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1130, - "src": "1323:12:5", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", - "typeString": "uint256[] memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - }, - { - "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", - "typeString": "uint256[] memory" - } - ], - "id": 1133, - "name": "setup", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1187, - "src": "1309:5:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$", - "typeString": "function (address[] memory,uint256[] memory)" - } - }, - "id": 1136, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1309:27:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1137, - "nodeType": "ExpressionStatement", - "src": "1309:27:5" - } - ] - }, - "id": 1139, - "implemented": true, - "isConstructor": true, - "isDeclaredConst": false, - "modifiers": [], - "name": "DailyLimitExtension", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1131, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1127, - "name": "tokens", - "nodeType": "VariableDeclaration", - "scope": 1139, - "src": "1238:16:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - }, - "typeName": { - "baseType": { - "id": 1125, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1238:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 1126, - "length": null, - "nodeType": "ArrayTypeName", - "src": "1238:9:5", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1130, - "name": "_dailyLimits", - "nodeType": "VariableDeclaration", - "scope": 1139, - "src": "1256:22:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", - "typeString": "uint256[] memory" - }, - "typeName": { - "baseType": { - "id": 1128, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1256:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1129, - "length": null, - "nodeType": "ArrayTypeName", - "src": "1256:9:5", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", - "typeString": "uint256[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1237:42:5" - }, - "payable": false, - "returnParameters": { - "id": 1132, - "nodeType": "ParameterList", - "parameters": [], - "src": "1299:0:5" - }, - "scope": 1418, - "src": "1209:134:5", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1186, - "nodeType": "Block", - "src": "1661:348:5", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 1153, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1150, - "name": "gnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1100, - "src": "1823:10:5", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - ], - "id": 1149, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "1815:7:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 1151, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1815:19:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1152, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1838:1:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1815:24:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1148, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "1807:7:5", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1154, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1807:33:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1155, - "nodeType": "ExpressionStatement", - "src": "1807:33:5" - }, - { - "expression": { - "argumentTypes": null, - "id": 1161, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1156, - "name": "gnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1100, - "src": "1850:10:5", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1158, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2089, - "src": "1874:3:5", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1159, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "1874:10:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 1157, - "name": "GnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 963, - "src": "1863:10:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_GnosisSafe_$963_$", - "typeString": "type(contract GnosisSafe)" - } - }, - "id": 1160, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1863:22:5", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - "src": "1850:35:5", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - "id": 1162, - "nodeType": "ExpressionStatement", - "src": "1850:35:5" - }, - { - "body": { - "expression": { - "argumentTypes": null, - "id": 1183, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1174, - "name": "dailyLimits", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1104, - "src": "1951:11:5", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1111_storage_$", - "typeString": "mapping(address => struct DailyLimitExtension.DailyLimit storage ref)" - } - }, - "id": 1178, - "indexExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1175, - "name": "tokens", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1142, - "src": "1963:6:5", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 1177, - "indexExpression": { - "argumentTypes": null, - "id": 1176, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1164, - "src": "1970:1:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1963:9:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1951:22:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1111_storage", - "typeString": "struct DailyLimitExtension.DailyLimit storage ref" - } - }, - "id": 1179, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "dailyLimit", - "nodeType": "MemberAccess", - "referencedDeclaration": 1106, - "src": "1951:33:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1180, - "name": "_dailyLimits", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1145, - "src": "1987:12:5", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", - "typeString": "uint256[] memory" - } - }, - "id": 1182, - "indexExpression": { - "argumentTypes": null, - "id": 1181, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1164, - "src": "2000:1:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1987:15:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1951:51:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1184, - "nodeType": "ExpressionStatement", - "src": "1951:51:5" - }, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1170, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1167, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1164, - "src": "1915:1:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1168, - "name": "tokens", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1142, - "src": "1919:6:5", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 1169, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "1919:13:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1915:17:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1185, - "initializationExpression": { - "assignments": [ - 1164 - ], - "declarations": [ - { - "constant": false, - "id": 1164, - "name": "i", - "nodeType": "VariableDeclaration", - "scope": 1187, - "src": "1900:9:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1163, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1900:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1166, - "initialValue": { - "argumentTypes": null, - "hexValue": "30", - "id": 1165, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1912:1:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "1900:13:5" - }, - "loopExpression": { - "expression": { - "argumentTypes": null, - "id": 1172, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "1934:3:5", - "subExpression": { - "argumentTypes": null, - "id": 1171, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1164, - "src": "1934:1:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1173, - "nodeType": "ExpressionStatement", - "src": "1934:3:5" - }, - "nodeType": "ForStatement", - "src": "1895:107:5" - } - ] - }, - "id": 1187, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "setup", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1146, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1142, - "name": "tokens", - "nodeType": "VariableDeclaration", - "scope": 1187, - "src": "1600:16:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - }, - "typeName": { - "baseType": { - "id": 1140, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1600:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 1141, - "length": null, - "nodeType": "ArrayTypeName", - "src": "1600:9:5", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1145, - "name": "_dailyLimits", - "nodeType": "VariableDeclaration", - "scope": 1187, - "src": "1618:22:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", - "typeString": "uint256[] memory" - }, - "typeName": { - "baseType": { - "id": 1143, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1618:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1144, - "length": null, - "nodeType": "ArrayTypeName", - "src": "1618:9:5", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", - "typeString": "uint256[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1599:42:5" - }, - "payable": false, - "returnParameters": { - "id": 1147, - "nodeType": "ParameterList", - "parameters": [], - "src": "1661:0:5" - }, - "scope": 1418, - "src": "1585:424:5", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1206, - "nodeType": "Block", - "src": "2256:85:5", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 1199, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1196, - "name": "_masterCopy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1189, - "src": "2282:11:5", - "typeDescriptions": { - "typeIdentifier": "t_contract$_DailyLimitExtension_$1418", - "typeString": "contract DailyLimitExtension" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_DailyLimitExtension_$1418", - "typeString": "contract DailyLimitExtension" - } - ], - "id": 1195, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "2274:7:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 1197, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2274:20:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1198, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2298:1:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2274:25:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1194, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "2266:7:5", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1200, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2266:34:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1201, - "nodeType": "ExpressionStatement", - "src": "2266:34:5" - }, - { - "expression": { - "argumentTypes": null, - "id": 1204, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1202, - "name": "masterCopy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1098, - "src": "2310:10:5", - "typeDescriptions": { - "typeIdentifier": "t_contract$_DailyLimitExtension_$1418", - "typeString": "contract DailyLimitExtension" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 1203, - "name": "_masterCopy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1189, - "src": "2323:11:5", - "typeDescriptions": { - "typeIdentifier": "t_contract$_DailyLimitExtension_$1418", - "typeString": "contract DailyLimitExtension" - } - }, - "src": "2310:24:5", - "typeDescriptions": { - "typeIdentifier": "t_contract$_DailyLimitExtension_$1418", - "typeString": "contract DailyLimitExtension" - } - }, - "id": 1205, - "nodeType": "ExpressionStatement", - "src": "2310:24:5" - } - ] - }, - "id": 1207, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [], - "id": 1192, - "modifierName": { - "argumentTypes": null, - "id": 1191, - "name": "onlyGnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1124, - "src": "2237:14:5", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "2237:14:5" - } - ], - "name": "changeMasterCopy", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1190, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1189, - "name": "_masterCopy", - "nodeType": "VariableDeclaration", - "scope": 1207, - "src": "2181:31:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_DailyLimitExtension_$1418", - "typeString": "contract DailyLimitExtension" - }, - "typeName": { - "contractScope": null, - "id": 1188, - "name": "DailyLimitExtension", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1418, - "src": "2181:19:5", - "typeDescriptions": { - "typeIdentifier": "t_contract$_DailyLimitExtension_$1418", - "typeString": "contract DailyLimitExtension" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "2180:33:5" - }, - "payable": false, - "returnParameters": { - "id": 1193, - "nodeType": "ParameterList", - "parameters": [], - "src": "2256:0:5" - }, - "scope": 1418, - "src": "2155:186:5", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1223, - "nodeType": "Block", - "src": "2672:59:5", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 1221, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1216, - "name": "dailyLimits", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1104, - "src": "2682:11:5", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1111_storage_$", - "typeString": "mapping(address => struct DailyLimitExtension.DailyLimit storage ref)" - } - }, - "id": 1218, - "indexExpression": { - "argumentTypes": null, - "id": 1217, - "name": "token", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1209, - "src": "2694:5:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2682:18:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1111_storage", - "typeString": "struct DailyLimitExtension.DailyLimit storage ref" - } - }, - "id": 1219, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "dailyLimit", - "nodeType": "MemberAccess", - "referencedDeclaration": 1106, - "src": "2682:29:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 1220, - "name": "dailyLimit", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1211, - "src": "2714:10:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2682:42:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1222, - "nodeType": "ExpressionStatement", - "src": "2682:42:5" - } - ] - }, - "id": 1224, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [], - "id": 1214, - "modifierName": { - "argumentTypes": null, - "id": 1213, - "name": "onlyGnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1124, - "src": "2653:14:5", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "2653:14:5" - } - ], - "name": "changeDailyLimit", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1212, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1209, - "name": "token", - "nodeType": "VariableDeclaration", - "scope": 1224, - "src": "2595:13:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1208, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2595:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1211, - "name": "dailyLimit", - "nodeType": "VariableDeclaration", - "scope": 1224, - "src": "2610:18:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1210, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2610:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "2594:35:5" - }, - "payable": false, - "returnParameters": { - "id": 1215, - "nodeType": "ParameterList", - "parameters": [], - "src": "2672:0:5" - }, - "scope": 1418, - "src": "2569:162:5", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1347, - "nodeType": "Block", - "src": "3407:1164:5", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1244, - "name": "sender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1226, - "src": "3521:6:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "expression": { - "argumentTypes": null, - "id": 1242, - "name": "gnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1100, - "src": "3502:10:5", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - "id": 1243, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "isOwner", - "nodeType": "MemberAccess", - "referencedDeclaration": 47, - "src": "3502:18:5", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", - "typeString": "function (address) view external returns (bool)" - } - }, - "id": 1245, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3502:26:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1241, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "3494:7:5", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1246, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3494:35:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1247, - "nodeType": "ExpressionStatement", - "src": "3494:35:5" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - }, - "id": 1253, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1249, - "name": "operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1234, - "src": "3547:9:5", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1250, - "name": "GnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 963, - "src": "3560:10:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_GnosisSafe_$963_$", - "typeString": "type(contract GnosisSafe)" - } - }, - "id": 1251, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "Operation", - "nodeType": "MemberAccess", - "referencedDeclaration": 61, - "src": "3560:20:5", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_Operation_$61_$", - "typeString": "type(enum GnosisSafe.Operation)" - } - }, - "id": 1252, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "Call", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "3560:25:5", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "src": "3547:38:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1248, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "3539:7:5", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1254, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3539:47:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1255, - "nodeType": "ExpressionStatement", - "src": "3539:47:5" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 1273, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 1264, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1260, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1257, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1232, - "src": "3671:4:5", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "id": 1258, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "3671:11:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1259, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3686:1:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "3671:16:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1263, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1261, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1230, - "src": "3691:5:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1262, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3699:1:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "3691:9:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "3671:29:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "||", - "rightExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 1272, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1268, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1265, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1232, - "src": "3704:4:5", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "id": 1266, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "3704:11:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1267, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3718:1:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "3704:15:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1271, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1269, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1230, - "src": "3723:5:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1270, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3732:1:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "3723:10:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "3704:29:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "3671:62:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1256, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "3663:7:5", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1274, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3663:71:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1275, - "nodeType": "ExpressionStatement", - "src": "3663:71:5" - }, - { - "assignments": [], - "declarations": [ - { - "constant": false, - "id": 1277, - "name": "token", - "nodeType": "VariableDeclaration", - "scope": 1348, - "src": "3744:13:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1276, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3744:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1278, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "3744:13:5" - }, - { - "assignments": [], - "declarations": [ - { - "constant": false, - "id": 1280, - "name": "receiver", - "nodeType": "VariableDeclaration", - "scope": 1348, - "src": "3767:16:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1279, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3767:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1281, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "3767:16:5" - }, - { - "assignments": [], - "declarations": [ - { - "constant": false, - "id": 1283, - "name": "amount", - "nodeType": "VariableDeclaration", - "scope": 1348, - "src": "3793:14:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1282, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3793:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1284, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "3793:14:5" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1288, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1285, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1232, - "src": "3821:4:5", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "id": 1286, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "3821:11:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1287, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3836:1:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "3821:16:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "id": 1316, - "nodeType": "Block", - "src": "3942:345:5", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 1304, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1302, - "name": "token", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1277, - "src": "3956:5:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 1303, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1228, - "src": "3964:2:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "3956:10:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 1305, - "nodeType": "ExpressionStatement", - "src": "3956:10:5" - }, - { - "assignments": [], - "declarations": [ - { - "constant": false, - "id": 1307, - "name": "functionIdentifier", - "nodeType": "VariableDeclaration", - "scope": 1348, - "src": "3980:25:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - "typeName": { - "id": 1306, - "name": "bytes4", - "nodeType": "ElementaryTypeName", - "src": "3980:6:5", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1308, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "3980:25:5" - }, - { - "externalReferences": [ - { - "functionIdentifier": { - "declaration": 1307, - "isOffset": false, - "isSlot": false, - "src": "4046:18:5", - "valueSize": 1 - } - }, - { - "amount": { - "declaration": 1283, - "isOffset": false, - "isSlot": false, - "src": "4158:6:5", - "valueSize": 1 - } - }, - { - "data": { - "declaration": 1232, - "isOffset": false, - "isSlot": false, - "src": "4078:4:5", - "valueSize": 1 - } - }, - { - "receiver": { - "declaration": 1280, - "isOffset": false, - "isSlot": false, - "src": "4107:8:5", - "valueSize": 1 - } - }, - { - "data": { - "declaration": 1232, - "isOffset": false, - "isSlot": false, - "src": "4129:4:5", - "valueSize": 1 - } - }, - { - "data": { - "declaration": 1232, - "isOffset": false, - "isSlot": false, - "src": "4178:4:5", - "valueSize": 1 - } - } - ], - "id": 1309, - "nodeType": "InlineAssembly", - "operations": "{\n functionIdentifier := mload(add(data, 0x20))\n receiver := mload(add(data, 0x24))\n amount := mload(add(data, 0x44))\n}", - "src": "4019:205:5" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - "id": 1313, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1311, - "name": "functionIdentifier", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1307, - "src": "4225:18:5", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 1312, - "name": "TRANSFER_FUNCTION_IDENTIFIER", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1096, - "src": "4247:28:5", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "src": "4225:50:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1310, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "4217:7:5", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1314, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4217:59:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1315, - "nodeType": "ExpressionStatement", - "src": "4217:59:5" - } - ] - }, - "id": 1317, - "nodeType": "IfStatement", - "src": "3817:470:5", - "trueBody": { - "id": 1301, - "nodeType": "Block", - "src": "3839:89:5", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 1291, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1289, - "name": "token", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1277, - "src": "3853:5:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "30", - "id": 1290, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3861:1:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "3853:9:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 1292, - "nodeType": "ExpressionStatement", - "src": "3853:9:5" - }, - { - "expression": { - "argumentTypes": null, - "id": 1295, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1293, - "name": "receiver", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1280, - "src": "3876:8:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 1294, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1228, - "src": "3887:2:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "3876:13:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 1296, - "nodeType": "ExpressionStatement", - "src": "3876:13:5" - }, - { - "expression": { - "argumentTypes": null, - "id": 1299, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1297, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1283, - "src": "3903:6:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 1298, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1230, - "src": "3912:5:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3903:14:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1300, - "nodeType": "ExpressionStatement", - "src": "3903:14:5" - } - ] - } - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 1321, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1319, - "name": "receiver", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1280, - "src": "4304:8:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1320, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4316:1:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "4304:13:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1318, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "4296:7:5", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1322, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4296:22:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1323, - "nodeType": "ExpressionStatement", - "src": "4296:22:5" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1327, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1325, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1283, - "src": "4336:6:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1326, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4345:1:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "4336:10:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1324, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "4328:7:5", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1328, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4328:19:5", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1329, - "nodeType": "ExpressionStatement", - "src": "4328:19:5" - }, - { - "condition": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1331, - "name": "token", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1277, - "src": "4438:5:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 1332, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1283, - "src": "4445:6:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1330, - "name": "isUnderLimit", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1404, - "src": "4425:12:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", - "typeString": "function (address,uint256) returns (bool)" - } - }, - "id": 1333, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4425:27:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 1344, - "nodeType": "IfStatement", - "src": "4421:122:5", - "trueBody": { - "id": 1343, - "nodeType": "Block", - "src": "4454:89:5", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 1339, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1334, - "name": "dailyLimits", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1104, - "src": "4468:11:5", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1111_storage_$", - "typeString": "mapping(address => struct DailyLimitExtension.DailyLimit storage ref)" - } - }, - "id": 1336, - "indexExpression": { - "argumentTypes": null, - "id": 1335, - "name": "token", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1277, - "src": "4480:5:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4468:18:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1111_storage", - "typeString": "struct DailyLimitExtension.DailyLimit storage ref" - } - }, - "id": 1337, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "spentToday", - "nodeType": "MemberAccess", - "referencedDeclaration": 1108, - "src": "4468:29:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "+=", - "rightHandSide": { - "argumentTypes": null, - "id": 1338, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1283, - "src": "4501:6:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4468:39:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1340, - "nodeType": "ExpressionStatement", - "src": "4468:39:5" - }, - { - "expression": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 1341, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4528:4:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "functionReturnParameters": 1240, - "id": 1342, - "nodeType": "Return", - "src": "4521:11:5" - } - ] - } - }, - { - "expression": { - "argumentTypes": null, - "hexValue": "66616c7365", - "id": 1345, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4559:5:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "functionReturnParameters": 1240, - "id": 1346, - "nodeType": "Return", - "src": "4552:12:5" - } - ] - }, - "id": 1348, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [], - "id": 1237, - "modifierName": { - "argumentTypes": null, - "id": 1236, - "name": "onlyGnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1124, - "src": "3365:14:5", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "3365:14:5" - } - ], - "name": "isExecutable", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1235, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1226, - "name": "sender", - "nodeType": "VariableDeclaration", - "scope": 1348, - "src": "3255:14:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1225, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3255:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1228, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 1348, - "src": "3271:10:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1227, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3271:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1230, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 1348, - "src": "3283:13:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1229, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3283:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1232, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 1348, - "src": "3298:10:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 1231, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "3298:5:5", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1234, - "name": "operation", - "nodeType": "VariableDeclaration", - "scope": 1348, - "src": "3310:30:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - }, - "typeName": { - "contractScope": null, - "id": 1233, - "name": "GnosisSafe.Operation", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 61, - "src": "3310:20:5", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "3254:87:5" - }, - "payable": false, - "returnParameters": { - "id": 1240, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1239, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 1348, - "src": "3397:4:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 1238, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "3397:4:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "3396:6:5" - }, - "scope": 1418, - "src": "3233:1338:5", - "stateMutability": "nonpayable", - "superFunction": 17, - "visibility": "public" - }, - { - "body": { - "id": 1403, - "nodeType": "Block", - "src": "4674:391:5", - "statements": [ - { - "assignments": [ - 1358 - ], - "declarations": [ - { - "constant": false, - "id": 1358, - "name": "dailyLimit", - "nodeType": "VariableDeclaration", - "scope": 1404, - "src": "4684:29:5", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr", - "typeString": "struct DailyLimitExtension.DailyLimit storage pointer" - }, - "typeName": { - "contractScope": null, - "id": 1357, - "name": "DailyLimit", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1111, - "src": "4684:10:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr", - "typeString": "struct DailyLimitExtension.DailyLimit storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1362, - "initialValue": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1359, - "name": "dailyLimits", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1104, - "src": "4716:11:5", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1111_storage_$", - "typeString": "mapping(address => struct DailyLimitExtension.DailyLimit storage ref)" - } - }, - "id": 1361, - "indexExpression": { - "argumentTypes": null, - "id": 1360, - "name": "token", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1350, - "src": "4728:5:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4716:18:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1111_storage", - "typeString": "struct DailyLimitExtension.DailyLimit storage ref" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "4684:50:5" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1367, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 1363, - "name": "today", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1417, - "src": "4748:5:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", - "typeString": "function () view returns (uint256)" - } - }, - "id": 1364, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4748:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1365, - "name": "dailyLimit", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1358, - "src": "4758:10:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr", - "typeString": "struct DailyLimitExtension.DailyLimit storage pointer" - } - }, - "id": 1366, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "lastDay", - "nodeType": "MemberAccess", - "referencedDeclaration": 1110, - "src": "4758:18:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4748:28:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 1382, - "nodeType": "IfStatement", - "src": "4744:126:5", - "trueBody": { - "id": 1381, - "nodeType": "Block", - "src": "4778:92:5", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 1373, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1368, - "name": "dailyLimit", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1358, - "src": "4792:10:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr", - "typeString": "struct DailyLimitExtension.DailyLimit storage pointer" - } - }, - "id": 1370, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "lastDay", - "nodeType": "MemberAccess", - "referencedDeclaration": 1110, - "src": "4792:18:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 1371, - "name": "today", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1417, - "src": "4813:5:5", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", - "typeString": "function () view returns (uint256)" - } - }, - "id": 1372, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4813:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4792:28:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1374, - "nodeType": "ExpressionStatement", - "src": "4792:28:5" - }, - { - "expression": { - "argumentTypes": null, - "id": 1379, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1375, - "name": "dailyLimit", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1358, - "src": "4834:10:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr", - "typeString": "struct DailyLimitExtension.DailyLimit storage pointer" - } - }, - "id": 1377, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "spentToday", - "nodeType": "MemberAccess", - "referencedDeclaration": 1108, - "src": "4834:21:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "30", - "id": 1378, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4858:1:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "4834:25:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1380, - "nodeType": "ExpressionStatement", - "src": "4834:25:5" - } - ] - } - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 1397, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1389, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1386, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1383, - "name": "dailyLimit", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1358, - "src": "4886:10:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr", - "typeString": "struct DailyLimitExtension.DailyLimit storage pointer" - } - }, - "id": 1384, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "spentToday", - "nodeType": "MemberAccess", - "referencedDeclaration": 1108, - "src": "4886:21:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "argumentTypes": null, - "id": 1385, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1352, - "src": "4910:6:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4886:30:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<=", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1387, - "name": "dailyLimit", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1358, - "src": "4920:10:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr", - "typeString": "struct DailyLimitExtension.DailyLimit storage pointer" - } - }, - "id": 1388, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "dailyLimit", - "nodeType": "MemberAccess", - "referencedDeclaration": 1106, - "src": "4920:21:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4886:55:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1396, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1393, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1390, - "name": "dailyLimit", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1358, - "src": "4957:10:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr", - "typeString": "struct DailyLimitExtension.DailyLimit storage pointer" - } - }, - "id": 1391, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "spentToday", - "nodeType": "MemberAccess", - "referencedDeclaration": 1108, - "src": "4957:21:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "argumentTypes": null, - "id": 1392, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1352, - "src": "4981:6:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4957:30:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1394, - "name": "dailyLimit", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1358, - "src": "4990:10:5", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1111_storage_ptr", - "typeString": "struct DailyLimitExtension.DailyLimit storage pointer" - } - }, - "id": 1395, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "spentToday", - "nodeType": "MemberAccess", - "referencedDeclaration": 1108, - "src": "4990:21:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4957:54:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "4886:125:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 1400, - "nodeType": "IfStatement", - "src": "4879:157:5", - "trueBody": { - "expression": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 1398, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5032:4:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "functionReturnParameters": 1356, - "id": 1399, - "nodeType": "Return", - "src": "5025:11:5" - } - }, - { - "expression": { - "argumentTypes": null, - "hexValue": "66616c7365", - "id": 1401, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5053:5:5", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "functionReturnParameters": 1356, - "id": 1402, - "nodeType": "Return", - "src": "5046:12:5" - } - ] - }, - "id": 1404, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "isUnderLimit", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1353, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1350, - "name": "token", - "nodeType": "VariableDeclaration", - "scope": 1404, - "src": "4599:13:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1349, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "4599:7:5", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1352, - "name": "amount", - "nodeType": "VariableDeclaration", - "scope": 1404, - "src": "4614:14:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1351, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4614:7:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "4598:31:5" - }, - "payable": false, - "returnParameters": { - "id": 1356, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1355, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 1404, - "src": "4664:4:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 1354, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "4664:4:5", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "4663:6:5" - }, - "scope": 1418, - "src": "4577:488:5", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 1416, - "nodeType": "Block", - "src": "5229:44:5", - "statements": [ - { - "expression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1414, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1409, - "name": "now", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2091, - "src": "5246:3:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1412, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1410, - "name": "now", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2091, - "src": "5253:3:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "%", - "rightExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 1411, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5259:6:5", - "subdenomination": "days", - "typeDescriptions": { - "typeIdentifier": "t_rational_86400_by_1", - "typeString": "int_const 86400" - }, - "value": "1" - }, - "src": "5253:12:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 1413, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "5252:14:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "5246:20:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 1408, - "id": 1415, - "nodeType": "Return", - "src": "5239:27:5" - } - ] - }, - "id": 1417, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "today", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1405, - "nodeType": "ParameterList", - "parameters": [], - "src": "5171:2:5" - }, - "payable": false, - "returnParameters": { - "id": 1408, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1407, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 1417, - "src": "5219:4:5", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1406, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "5219:4:5", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "5218:6:5" - }, - "scope": 1418, - "src": "5157:116:5", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - } - ], - "scope": 1419, - "src": "247:5028:5" - } - ], - "src": "0:5276:5" - }, - "compiler": { - "name": "solc", - "version": "0.4.19+commit.c4cbbb05.Emscripten.clang" - }, - "networks": { - "4": { - "events": {}, - "links": {}, - "address": "0xa79d02e23d840830c4f6c623a2b60310769c3a4b", - "transactionHash": "0xb3a98f4a3e8373b6de6b63eaf25e88a3593003119f1df8a30a020f4c9a6cc322" - }, - "42": { - "events": {}, - "links": {}, - "address": "0xd563051ec0a4aa4756dd1f0d21ef2e6ef0fae3e2", - "transactionHash": "0xdec49def750774a696ff6d1de86b27d3eac5967850d8f56e85f7c93bfaf17592" - }, - "1525342778744": { - "events": {}, - "links": {}, - "address": "0x1b701c69619a38a7b779bef1f8a72dec2b9f402f", - "transactionHash": "0xe329bfbfb0449b969df0e144a935e7f94e58f4e7188f6c6626faf1d7ee7ded84" - }, - "1525789101965": { - "events": {}, - "links": {}, - "address": "0xee471df0173d120eface5e5cf69a05cc4d1ce78a", - "transactionHash": "0xfd1473bdb9d32d9cef56f6fc22af6034ebd9f2aeb8d55ce0985f29b4086514a2" - } - }, - "schemaVersion": "2.0.0", - "updatedAt": "2018-05-08T14:18:44.022Z" -} \ No newline at end of file diff --git a/safe-contracts/build/contracts/v0/Extension.json b/safe-contracts/build/contracts/v0/Extension.json deleted file mode 100644 index 7cdcf70df3..0000000000 --- a/safe-contracts/build/contracts/v0/Extension.json +++ /dev/null @@ -1,531 +0,0 @@ -{ - "contractName": "Extension", - "abi": [ - { - "constant": false, - "inputs": [ - { - "name": "sender", - "type": "address" - }, - { - "name": "to", - "type": "address" - }, - { - "name": "value", - "type": "uint256" - }, - { - "name": "data", - "type": "bytes" - }, - { - "name": "operation", - "type": "uint8" - } - ], - "name": "isExecutable", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "0x", - "deployedBytecode": "0x", - "sourceMap": "", - "deployedSourceMap": "", - "source": "pragma solidity 0.4.19;\nimport \"./GnosisSafe.sol\";\n\n\n/// @title Abstract Extension - Functions to be implemented by extensions.\n/// @author Stefan George - \ncontract Extension {\n\n /// @dev Function to be implmeneted by extension. Returns if Safe transaction is valid and can be executed.\n /// @param sender Safe transaction sender address. This is not necessarily a Safe owner and needs to be \n /// verified in case only Safe owners are allowed.\n /// @param to Destination address.\n /// @param value Ether value.\n /// @param data Data payload.\n /// @param operation Operation type.\n /// @return Returns if transaction can be executed.\n function isExecutable(address sender, address to, uint256 value, bytes data, GnosisSafe.Operation operation) public returns (bool);\n}\n", - "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Extension.sol", - "ast": { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Extension.sol", - "exportedSymbols": { - "Extension": [ - 18 - ] - }, - "id": 19, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 1, - "literals": [ - "solidity", - "0.4", - ".19" - ], - "nodeType": "PragmaDirective", - "src": "0:23:0" - }, - { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", - "file": "./GnosisSafe.sol", - "id": 2, - "nodeType": "ImportDirective", - "scope": 19, - "sourceUnit": 964, - "src": "24:26:0", - "symbolAliases": [], - "unitAlias": "" - }, - { - "baseContracts": [], - "contractDependencies": [], - "contractKind": "contract", - "documentation": "@title Abstract Extension - Functions to be implemented by extensions.\n @author Stefan George - ", - "fullyImplemented": false, - "id": 18, - "linearizedBaseContracts": [ - 18 - ], - "name": "Extension", - "nodeType": "ContractDefinition", - "nodes": [ - { - "body": null, - "id": 17, - "implemented": false, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "isExecutable", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 13, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 4, - "name": "sender", - "nodeType": "VariableDeclaration", - "scope": 17, - "src": "710:14:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 3, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "710:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 6, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 17, - "src": "726:10:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 5, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "726:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 8, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 17, - "src": "738:13:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 7, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "738:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 10, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 17, - "src": "753:10:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 9, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "753:5:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 12, - "name": "operation", - "nodeType": "VariableDeclaration", - "scope": 17, - "src": "765:30:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - }, - "typeName": { - "contractScope": null, - "id": 11, - "name": "GnosisSafe.Operation", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 61, - "src": "765:20:0", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "709:87:0" - }, - "payable": false, - "returnParameters": { - "id": 16, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 15, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 17, - "src": "813:4:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 14, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "813:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "812:6:0" - }, - "scope": 18, - "src": "688:131:0", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - } - ], - "scope": 19, - "src": "175:646:0" - } - ], - "src": "0:822:0" - }, - "legacyAST": { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Extension.sol", - "exportedSymbols": { - "Extension": [ - 18 - ] - }, - "id": 19, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 1, - "literals": [ - "solidity", - "0.4", - ".19" - ], - "nodeType": "PragmaDirective", - "src": "0:23:0" - }, - { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", - "file": "./GnosisSafe.sol", - "id": 2, - "nodeType": "ImportDirective", - "scope": 19, - "sourceUnit": 964, - "src": "24:26:0", - "symbolAliases": [], - "unitAlias": "" - }, - { - "baseContracts": [], - "contractDependencies": [], - "contractKind": "contract", - "documentation": "@title Abstract Extension - Functions to be implemented by extensions.\n @author Stefan George - ", - "fullyImplemented": false, - "id": 18, - "linearizedBaseContracts": [ - 18 - ], - "name": "Extension", - "nodeType": "ContractDefinition", - "nodes": [ - { - "body": null, - "id": 17, - "implemented": false, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "isExecutable", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 13, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 4, - "name": "sender", - "nodeType": "VariableDeclaration", - "scope": 17, - "src": "710:14:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 3, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "710:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 6, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 17, - "src": "726:10:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 5, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "726:7:0", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 8, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 17, - "src": "738:13:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 7, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "738:7:0", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 10, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 17, - "src": "753:10:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 9, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "753:5:0", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 12, - "name": "operation", - "nodeType": "VariableDeclaration", - "scope": 17, - "src": "765:30:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - }, - "typeName": { - "contractScope": null, - "id": 11, - "name": "GnosisSafe.Operation", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 61, - "src": "765:20:0", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "709:87:0" - }, - "payable": false, - "returnParameters": { - "id": 16, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 15, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 17, - "src": "813:4:0", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 14, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "813:4:0", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "812:6:0" - }, - "scope": 18, - "src": "688:131:0", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - } - ], - "scope": 19, - "src": "175:646:0" - } - ], - "src": "0:822:0" - }, - "compiler": { - "name": "solc", - "version": "0.4.19+commit.c4cbbb05.Emscripten.clang" - }, - "networks": {}, - "schemaVersion": "2.0.0", - "updatedAt": "2018-05-04T10:42:18.365Z" -} \ No newline at end of file diff --git a/safe-contracts/build/contracts/v0/GnosisSafe.json b/safe-contracts/build/contracts/v0/GnosisSafe.json deleted file mode 100644 index 7b01ffd6b1..0000000000 --- a/safe-contracts/build/contracts/v0/GnosisSafe.json +++ /dev/null @@ -1,25235 +0,0 @@ -{ - "contractName": "GnosisSafe", - "abi": [ - { - "constant": true, - "inputs": [ - { - "name": "", - "type": "uint256" - } - ], - "name": "owners", - "outputs": [ - { - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "", - "type": "address" - } - ], - "name": "isOwner", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "threshold", - "outputs": [ - { - "name": "", - "type": "uint8" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "", - "type": "address" - }, - { - "name": "", - "type": "bytes32" - } - ], - "name": "isConfirmed", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "NAME", - "outputs": [ - { - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "nonce", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "", - "type": "uint256" - } - ], - "name": "extensions", - "outputs": [ - { - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "", - "type": "address" - } - ], - "name": "isExtension", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "VERSION", - "outputs": [ - { - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "name": "_owners", - "type": "address[]" - }, - { - "name": "_threshold", - "type": "uint8" - }, - { - "name": "to", - "type": "address" - }, - { - "name": "data", - "type": "bytes" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "payable": true, - "stateMutability": "payable", - "type": "fallback" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "newContract", - "type": "address" - } - ], - "name": "ContractCreation", - "type": "event" - }, - { - "constant": false, - "inputs": [ - { - "name": "_owners", - "type": "address[]" - }, - { - "name": "_threshold", - "type": "uint8" - }, - { - "name": "to", - "type": "address" - }, - { - "name": "data", - "type": "bytes" - } - ], - "name": "setup", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_masterCopy", - "type": "address" - } - ], - "name": "changeMasterCopy", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "owner", - "type": "address" - }, - { - "name": "_threshold", - "type": "uint8" - } - ], - "name": "addOwner", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "ownerIndex", - "type": "uint256" - }, - { - "name": "owner", - "type": "address" - }, - { - "name": "_threshold", - "type": "uint8" - } - ], - "name": "removeOwner", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "oldOwnerIndex", - "type": "uint256" - }, - { - "name": "oldOwner", - "type": "address" - }, - { - "name": "newOwner", - "type": "address" - } - ], - "name": "replaceOwner", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_threshold", - "type": "uint8" - } - ], - "name": "changeThreshold", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "extension", - "type": "address" - } - ], - "name": "addExtension", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "extensionIndex", - "type": "uint256" - }, - { - "name": "extension", - "type": "address" - } - ], - "name": "removeExtension", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "to", - "type": "address" - }, - { - "name": "value", - "type": "uint256" - }, - { - "name": "data", - "type": "bytes" - }, - { - "name": "operation", - "type": "uint8" - }, - { - "name": "_nonce", - "type": "uint256" - } - ], - "name": "confirmTransaction", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "to", - "type": "address" - }, - { - "name": "value", - "type": "uint256" - }, - { - "name": "data", - "type": "bytes" - }, - { - "name": "operation", - "type": "uint8" - }, - { - "name": "v", - "type": "uint8[]" - }, - { - "name": "r", - "type": "bytes32[]" - }, - { - "name": "s", - "type": "bytes32[]" - }, - { - "name": "_owners", - "type": "address[]" - }, - { - "name": "indices", - "type": "uint256[]" - } - ], - "name": "executeTransaction", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "to", - "type": "address" - }, - { - "name": "value", - "type": "uint256" - }, - { - "name": "data", - "type": "bytes" - }, - { - "name": "operation", - "type": "uint8" - }, - { - "name": "extension", - "type": "address" - } - ], - "name": "executeExtension", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "to", - "type": "address" - }, - { - "name": "value", - "type": "uint256" - }, - { - "name": "data", - "type": "bytes" - }, - { - "name": "operation", - "type": "uint8" - }, - { - "name": "_nonce", - "type": "uint256" - } - ], - "name": "getTransactionHash", - "outputs": [ - { - "name": "", - "type": "bytes32" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "getOwners", - "outputs": [ - { - "name": "", - "type": "address[]" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "getExtensions", - "outputs": [ - { - "name": "", - "type": "address[]" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "transactionHash", - "type": "bytes32" - } - ], - "name": "getConfirmationCount", - "outputs": [ - { - "name": "confirmationCount", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "transactionHash", - "type": "bytes32" - } - ], - "name": "getConfirmingOwners", - "outputs": [ - { - "name": "confirmingOwners", - "type": "address[]" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x606060405234156200001057600080fd5b60405162002d6738038062002d67833981016040528080518201919060200180519060200190919080519060200190919080518201919050506200006b84848484620000756401000000000262001b33176401000000009004565b5050505062000374565b600080600060149054906101000a900460ff1660ff161415156200009857600080fd5b84518460ff1611151515620000ac57600080fd5b60018460ff1610151515620000c057600080fd5b600090505b8451811015620001fe5760008582815181101515620000e057fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff16141515156200010e57600080fd5b6004600086838151811015156200012157fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156200018057600080fd5b60016004600087848151811015156200019557fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080600101915050620000c5565b8460029080519060200190620002169291906200029f565b5083600060146101000a81548160ff021916908360ff16021790555060008373ffffffffffffffffffffffffffffffffffffffff161415156200028057620002738383620002876401000000000262002698176401000000009004565b15156200027f57600080fd5b5b5050505050565b600080600083516020850186600019f4905092915050565b8280548282559060005260206000209081019282156200031b579160200282015b828111156200031a5782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190620002c0565b5b5090506200032a91906200032e565b5090565b6200037191905b808211156200036d57600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555060010162000335565b5090565b90565b6129e380620003846000396000f300606060405260043610610149576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063025e7c271461014b57806307fa7017146101ae5780630e5229b0146101f0578063113642e514610235578063170ff3e1146102705780632b500041146102a95780632b5b1f821461035f5780632f54bf6e146103f957806342cde4e81461044a57806354e99c6e146104795780637b0519f3146104da5780637de7edef1461053857806383b7db6314610571578063842b954e146105db578063a04222e114610629578063a0e67e2b146106f1578063a3f4df7e1461075b578063affed0e0146107e9578063b6a9002e14610812578063b7f3358d146108c2578063c676920a146108e8578063db85d59c14610964578063f6d3fd86146109c7578063f847ed4814610b98578063ffa1ad7414610be9575b005b341561015657600080fd5b61016c6004808035906020019091905050610c77565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156101b957600080fd5b6101ee600480803590602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cb6565b005b34156101fb57600080fd5b610233600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803560ff16906020019091905050610e71565b005b341561024057600080fd5b61025a600480803560001916906020019091905050611011565b6040518082815260200191505060405180910390f35b341561027b57600080fd5b6102a7600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506110e7565b005b34156102b457600080fd5b610341600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803560ff1690602001909190803590602001909190505061125e565b60405180826000191660001916815260200191505060405180910390f35b341561036a57600080fd5b6103f7600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803560ff1690602001909190803590602001909190505061140b565b005b341561040457600080fd5b610430600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611561565b604051808215151515815260200191505060405180910390f35b341561045557600080fd5b61045d611581565b604051808260ff1660ff16815260200191505060405180910390f35b341561048457600080fd5b6104d8600480803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611594565b005b34156104e557600080fd5b61051e600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035600019169060200190919050506117cf565b604051808215151515815260200191505060405180910390f35b341561054357600080fd5b61056f600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506117fe565b005b341561057c57600080fd5b6105846118a1565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156105c75780820151818401526020810190506105ac565b505050509050019250505060405180910390f35b34156105e657600080fd5b610627600480803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803560ff16906020019091905050611935565b005b341561063457600080fd5b6106ef60048080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190803560ff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611b33565b005b34156106fc57600080fd5b610704611d21565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561074757808201518184015260208101905061072c565b505050509050019250505060405180910390f35b341561076657600080fd5b61076e611db5565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107ae578082015181840152602081019050610793565b50505050905090810190601f1680156107db5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156107f457600080fd5b6107fc611dee565b6040518082815260200191505060405180910390f35b341561081d57600080fd5b6108c0600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803560ff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611df4565b005b34156108cd57600080fd5b6108e6600480803560ff16906020019091905050611fe7565b005b34156108f357600080fd5b61090d600480803560001916906020019091905050612069565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610950578082015181840152602081019050610935565b505050509050019250505060405180910390f35b341561096f57600080fd5b61098560048080359060200190919050506121fd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156109d257600080fd5b610b96600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803560ff16906020019091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190505061223c565b005b3415610ba357600080fd5b610bcf600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061263f565b604051808215151515815260200191505060405180910390f35b3415610bf457600080fd5b610bfc61265f565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610c3c578082015181840152602081019050610c21565b50505050905090810190601f168015610c695780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600281815481101515610c8657fe5b90600052602060002090016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610cf057600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600383815481101515610d1657fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610d6457600080fd5b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506003600160038054905003815481101515610dd357fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600383815481101515610e0e57fe5b906000526020600020900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003805480919060019003610e6c91906127ed565b505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610eab57600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614151515610ed157600080fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610f2a57600080fd5b60028054806001018281610f3e9190612819565b9160005260206000209001600084909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508060ff16600060149054906101000a900460ff1660ff1614151561100d5761100c81611fe7565b5b5050565b600080600090505b6002805490508110156110e1576006600060028381548110151561103957fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000846000191660001916815260200190815260200160002060009054906101000a900460ff16156110d45781806001019250505b8080600101915050611019565b50919050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561112157600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561114757600080fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156111a057600080fd5b600380548060010182816111b49190612845565b9160005260206000209001600083909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600060197f01000000000000000000000000000000000000000000000000000000000000000230878787878760405180887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083835b602083101515611391578051825260208201915060208101905060208303925061136c565b6001836020036101000a0380198251168184511680821785525050505050509050018360028111156113bf57fe5b60ff167f01000000000000000000000000000000000000000000000000000000000000000281526001018281526020019750505050505050506040518091039020905095945050505050565b6000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561146557600080fd5b6114748686868660015461125e565b9050600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000826000191660001916815260200190815260200160002060009054906101000a900460ff161515156114e857600080fd5b6001600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550505050505050565b60046020528060005260406000206000915054906101000a900460ff1681565b600060149054906101000a900460ff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156115ce57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156115f457600080fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561164d57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff1660028481548110151561167357fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156116c157600080fd5b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508060028481548110151561178157fe5b906000526020600020900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b60066020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561183857600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561185e57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6118a9612871565b600380548060200260200160405190810160405280929190818152602001828054801561192b57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116118e1575b5050505050905090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561196f57600080fd5b8060ff166001600280549050031015151561198957600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166002848154811015156119af57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156119fd57600080fd5b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506002600160028054905003815481101515611a6c57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600284815481101515611aa757fe5b906000526020600020900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506002805480919060019003611b059190612885565b508060ff16600060149054906101000a900460ff1660ff16141515611b2e57611b2d81611fe7565b5b505050565b600080600060149054906101000a900460ff1660ff16141515611b5557600080fd5b84518460ff1611151515611b6857600080fd5b60018460ff1610151515611b7b57600080fd5b600090505b8451811015611cb25760008582815181101515611b9957fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1614151515611bc657600080fd5b600460008683815181101515611bd857fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515611c3657600080fd5b6001600460008784815181101515611c4a57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080600101915050611b80565b8460029080519060200190611cc89291906128b1565b5083600060146101000a81548160ff021916908360ff16021790555060008373ffffffffffffffffffffffffffffffffffffffff16141515611d1a57611d0e8383612698565b1515611d1957600080fd5b5b5050505050565b611d2961293b565b6002805480602002602001604051908101604052809291908181526020018280548015611dab57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611d61575b5050505050905090565b6040805190810160405280600b81526020017f476e6f736973205361666500000000000000000000000000000000000000000081525081565b60015481565b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611e4c57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff1663cde09ca933878787876000604051602001526040518663ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001836002811115611f1f57fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b83811015611f5f578082015181840152602081019050611f44565b50505050905090810190601f168015611f8c5780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b1515611fae57600080fd5b6102c65a03f11515611fbf57600080fd5b505050604051805190501515611fd457600080fd5b611fe0858585856126b0565b5050505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561202157600080fd5b6002805490508160ff161115151561203857600080fd5b60018160ff161015151561204b57600080fd5b80600060146101000a81548160ff021916908360ff16021790555050565b61207161293b565b60008061207d84611011565b91508160405180591061208d5750595b9080825280602002602001820160405250925060009150600090505b6002805490508110156121f657600660006002838154811015156120c957fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000856000191660001916815260200190815260200160002060009054906101000a900460ff16156121e95760028181548110151561216a57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683838151811015156121a457fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505081806001019250505b80806001019150506120a9565b5050919050565b60038181548110151561220c57fe5b90600052602060002090016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008060006122538e8e8e8e60015461125e565b94506000935060009050600091505b600060149054906101000a900460ff1660ff16821015612518578086511180156122a25750858181518110151561229557fe5b9060200190602002015182145b156123a15786818151811015156122b557fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480612371575060066000888381518110151561230557fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000866000191660001916815260200190815260200160002060009054906101000a900460ff165b151561237c57600080fd5b868181518110151561238a57fe5b906020019060200201519250600181019050612476565b6001858b8385038151811015156123b457fe5b906020019060200201518b8486038151811015156123ce57fe5b906020019060200201518b8587038151811015156123e857fe5b90602001906020020151604051600081526020016040526000604051602001526040518085600019166000191681526020018460ff1660ff16815260200183600019166000191681526020018260001916600019168152602001945050505050602060405160208103908084039060008661646e5a03f1151561246a57600080fd5b50506020604051035192505b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156124ce57600080fd5b8373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1611151561250857600080fd5b8293508180600101925050612262565b60008751111561261357600091505b865182101561261257868281518110151561253e57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561260557600060066000898581518110151561259057fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000876000191660001916815260200190815260200160002060006101000a81548160ff0219169083151502179055505b8180600101925050612527565b5b6001806000828254019250508190555061262f8e8e8e8e6126b0565b5050505050505050505050505050565b60056020528060005260406000206000915054906101000a900460ff1681565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b600080600083516020850186600019f4905092915050565b60008060028111156126be57fe5b8260028111156126ca57fe5b14156126eb576126db8585856127c1565b15156126e657600080fd5b6127ba565b600160028111156126f857fe5b82600281111561270457fe5b1415612724576127148584612698565b151561271f57600080fd5b6127b9565b61272d836127db565b905060008173ffffffffffffffffffffffffffffffffffffffff161415151561275557600080fd5b7f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5050505050565b60008060008351602085018688600019f190509392505050565b60008151602083016000f09050919050565b81548183558181151161281457818360005260206000209182019101612813919061294f565b5b505050565b8154818355818115116128405781836000526020600020918201910161283f919061294f565b5b505050565b81548183558181151161286c5781836000526020600020918201910161286b919061294f565b5b505050565b602060405190810160405280600081525090565b8154818355818115116128ac578183600052602060002091820191016128ab919061294f565b5b505050565b82805482825590600052602060002090810192821561292a579160200282015b828111156129295782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550916020019190600101906128d1565b5b5090506129379190612974565b5090565b602060405190810160405280600081525090565b61297191905b8082111561296d576000816000905550600101612955565b5090565b90565b6129b491905b808211156129b057600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555060010161297a565b5090565b905600a165627a7a72305820b9309aeae0cb4d289bc66fdd1b641936b903e87d406ff75007e08dd9fd54ff590029", - "deployedBytecode": "0x606060405260043610610149576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063025e7c271461014b57806307fa7017146101ae5780630e5229b0146101f0578063113642e514610235578063170ff3e1146102705780632b500041146102a95780632b5b1f821461035f5780632f54bf6e146103f957806342cde4e81461044a57806354e99c6e146104795780637b0519f3146104da5780637de7edef1461053857806383b7db6314610571578063842b954e146105db578063a04222e114610629578063a0e67e2b146106f1578063a3f4df7e1461075b578063affed0e0146107e9578063b6a9002e14610812578063b7f3358d146108c2578063c676920a146108e8578063db85d59c14610964578063f6d3fd86146109c7578063f847ed4814610b98578063ffa1ad7414610be9575b005b341561015657600080fd5b61016c6004808035906020019091905050610c77565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156101b957600080fd5b6101ee600480803590602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610cb6565b005b34156101fb57600080fd5b610233600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803560ff16906020019091905050610e71565b005b341561024057600080fd5b61025a600480803560001916906020019091905050611011565b6040518082815260200191505060405180910390f35b341561027b57600080fd5b6102a7600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506110e7565b005b34156102b457600080fd5b610341600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803560ff1690602001909190803590602001909190505061125e565b60405180826000191660001916815260200191505060405180910390f35b341561036a57600080fd5b6103f7600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803560ff1690602001909190803590602001909190505061140b565b005b341561040457600080fd5b610430600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611561565b604051808215151515815260200191505060405180910390f35b341561045557600080fd5b61045d611581565b604051808260ff1660ff16815260200191505060405180910390f35b341561048457600080fd5b6104d8600480803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611594565b005b34156104e557600080fd5b61051e600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035600019169060200190919050506117cf565b604051808215151515815260200191505060405180910390f35b341561054357600080fd5b61056f600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506117fe565b005b341561057c57600080fd5b6105846118a1565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156105c75780820151818401526020810190506105ac565b505050509050019250505060405180910390f35b34156105e657600080fd5b610627600480803590602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803560ff16906020019091905050611935565b005b341561063457600080fd5b6106ef60048080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190803560ff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050611b33565b005b34156106fc57600080fd5b610704611d21565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561074757808201518184015260208101905061072c565b505050509050019250505060405180910390f35b341561076657600080fd5b61076e611db5565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107ae578082015181840152602081019050610793565b50505050905090810190601f1680156107db5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156107f457600080fd5b6107fc611dee565b6040518082815260200191505060405180910390f35b341561081d57600080fd5b6108c0600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803560ff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050611df4565b005b34156108cd57600080fd5b6108e6600480803560ff16906020019091905050611fe7565b005b34156108f357600080fd5b61090d600480803560001916906020019091905050612069565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610950578082015181840152602081019050610935565b505050509050019250505060405180910390f35b341561096f57600080fd5b61098560048080359060200190919050506121fd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156109d257600080fd5b610b96600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803560ff16906020019091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190505061223c565b005b3415610ba357600080fd5b610bcf600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061263f565b604051808215151515815260200191505060405180910390f35b3415610bf457600080fd5b610bfc61265f565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610c3c578082015181840152602081019050610c21565b50505050905090810190601f168015610c695780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600281815481101515610c8657fe5b90600052602060002090016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610cf057600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600383815481101515610d1657fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610d6457600080fd5b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506003600160038054905003815481101515610dd357fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600383815481101515610e0e57fe5b906000526020600020900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003805480919060019003610e6c91906127ed565b505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610eab57600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614151515610ed157600080fd5b600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610f2a57600080fd5b60028054806001018281610f3e9190612819565b9160005260206000209001600084909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506001600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508060ff16600060149054906101000a900460ff1660ff1614151561100d5761100c81611fe7565b5b5050565b600080600090505b6002805490508110156110e1576006600060028381548110151561103957fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000846000191660001916815260200190815260200160002060009054906101000a900460ff16156110d45781806001019250505b8080600101915050611019565b50919050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561112157600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561114757600080fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156111a057600080fd5b600380548060010182816111b49190612845565b9160005260206000209001600083909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600060197f01000000000000000000000000000000000000000000000000000000000000000230878787878760405180887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083835b602083101515611391578051825260208201915060208101905060208303925061136c565b6001836020036101000a0380198251168184511680821785525050505050509050018360028111156113bf57fe5b60ff167f01000000000000000000000000000000000000000000000000000000000000000281526001018281526020019750505050505050506040518091039020905095945050505050565b6000600460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561146557600080fd5b6114748686868660015461125e565b9050600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000826000191660001916815260200190815260200160002060009054906101000a900460ff161515156114e857600080fd5b6001600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550505050505050565b60046020528060005260406000206000915054906101000a900460ff1681565b600060149054906101000a900460ff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156115ce57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156115f457600080fd5b600460008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561164d57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff1660028481548110151561167357fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156116c157600080fd5b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508060028481548110151561178157fe5b906000526020600020900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b60066020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561183857600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561185e57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6118a9612871565b600380548060200260200160405190810160405280929190818152602001828054801561192b57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116118e1575b5050505050905090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561196f57600080fd5b8060ff166001600280549050031015151561198957600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166002848154811015156119af57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156119fd57600080fd5b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506002600160028054905003815481101515611a6c57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600284815481101515611aa757fe5b906000526020600020900160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506002805480919060019003611b059190612885565b508060ff16600060149054906101000a900460ff1660ff16141515611b2e57611b2d81611fe7565b5b505050565b600080600060149054906101000a900460ff1660ff16141515611b5557600080fd5b84518460ff1611151515611b6857600080fd5b60018460ff1610151515611b7b57600080fd5b600090505b8451811015611cb25760008582815181101515611b9957fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1614151515611bc657600080fd5b600460008683815181101515611bd857fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515611c3657600080fd5b6001600460008784815181101515611c4a57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080600101915050611b80565b8460029080519060200190611cc89291906128b1565b5083600060146101000a81548160ff021916908360ff16021790555060008373ffffffffffffffffffffffffffffffffffffffff16141515611d1a57611d0e8383612698565b1515611d1957600080fd5b5b5050505050565b611d2961293b565b6002805480602002602001604051908101604052809291908181526020018280548015611dab57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611d61575b5050505050905090565b6040805190810160405280600b81526020017f476e6f736973205361666500000000000000000000000000000000000000000081525081565b60015481565b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611e4c57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff1663cde09ca933878787876000604051602001526040518663ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001836002811115611f1f57fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b83811015611f5f578082015181840152602081019050611f44565b50505050905090810190601f168015611f8c5780820380516001836020036101000a031916815260200191505b509650505050505050602060405180830381600087803b1515611fae57600080fd5b6102c65a03f11515611fbf57600080fd5b505050604051805190501515611fd457600080fd5b611fe0858585856126b0565b5050505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561202157600080fd5b6002805490508160ff161115151561203857600080fd5b60018160ff161015151561204b57600080fd5b80600060146101000a81548160ff021916908360ff16021790555050565b61207161293b565b60008061207d84611011565b91508160405180591061208d5750595b9080825280602002602001820160405250925060009150600090505b6002805490508110156121f657600660006002838154811015156120c957fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000856000191660001916815260200190815260200160002060009054906101000a900460ff16156121e95760028181548110151561216a57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1683838151811015156121a457fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505081806001019250505b80806001019150506120a9565b5050919050565b60038181548110151561220c57fe5b90600052602060002090016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008060006122538e8e8e8e60015461125e565b94506000935060009050600091505b600060149054906101000a900460ff1660ff16821015612518578086511180156122a25750858181518110151561229557fe5b9060200190602002015182145b156123a15786818151811015156122b557fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480612371575060066000888381518110151561230557fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000866000191660001916815260200190815260200160002060009054906101000a900460ff165b151561237c57600080fd5b868181518110151561238a57fe5b906020019060200201519250600181019050612476565b6001858b8385038151811015156123b457fe5b906020019060200201518b8486038151811015156123ce57fe5b906020019060200201518b8587038151811015156123e857fe5b90602001906020020151604051600081526020016040526000604051602001526040518085600019166000191681526020018460ff1660ff16815260200183600019166000191681526020018260001916600019168152602001945050505050602060405160208103908084039060008661646e5a03f1151561246a57600080fd5b50506020604051035192505b600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156124ce57600080fd5b8373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1611151561250857600080fd5b8293508180600101925050612262565b60008751111561261357600091505b865182101561261257868281518110151561253e57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561260557600060066000898581518110151561259057fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000876000191660001916815260200190815260200160002060006101000a81548160ff0219169083151502179055505b8180600101925050612527565b5b6001806000828254019250508190555061262f8e8e8e8e6126b0565b5050505050505050505050505050565b60056020528060005260406000206000915054906101000a900460ff1681565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b600080600083516020850186600019f4905092915050565b60008060028111156126be57fe5b8260028111156126ca57fe5b14156126eb576126db8585856127c1565b15156126e657600080fd5b6127ba565b600160028111156126f857fe5b82600281111561270457fe5b1415612724576127148584612698565b151561271f57600080fd5b6127b9565b61272d836127db565b905060008173ffffffffffffffffffffffffffffffffffffffff161415151561275557600080fd5b7f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5050505050565b60008060008351602085018688600019f190509392505050565b60008151602083016000f09050919050565b81548183558181151161281457818360005260206000209182019101612813919061294f565b5b505050565b8154818355818115116128405781836000526020600020918201910161283f919061294f565b5b505050565b81548183558181151161286c5781836000526020600020918201910161286b919061294f565b5b505050565b602060405190810160405280600081525090565b8154818355818115116128ac578183600052602060002091820191016128ab919061294f565b5b505050565b82805482825590600052602060002090810192821561292a579160200282015b828111156129295782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550916020019190600101906128d1565b5b5090506129379190612974565b5090565b602060405190810160405280600081525090565b61297191905b8082111561296d576000816000905550600101612955565b5090565b90565b6129b491905b808211156129b057600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555060010161297a565b5090565b905600a165627a7a72305820b9309aeae0cb4d289bc66fdd1b641936b903e87d406ff75007e08dd9fd54ff590029", - "sourceMap": "218:14623:1:-;;;1567:153;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1677:36;1683:7;1692:10;1704:2;1708:4;1677:5;;;;;:36;;;:::i;:::-;1567:153;;;;218:14623;;2039:1141;2550:9;2289:1;2276:9;;;;;;;;;;;:14;;;2268:23;;;;;;;;2397:7;:14;2383:10;:28;;;;2375:37;;;;;;;;2496:1;2482:10;:15;;;;2474:24;;;;;;;;2562:1;2550:13;;2545:266;2569:7;:14;2565:1;:18;2545:266;;;2671:1;2657:7;2665:1;2657:10;;;;;;;;;;;;;;;;;;:15;;;;2649:24;;;;;;;;2740:7;:19;2748:7;2756:1;2748:10;;;;;;;;;;;;;;;;;;2740:19;;;;;;;;;;;;;;;;;;;;;;;;;2739:20;2731:29;;;;;;;;2796:4;2774:7;:19;2782:7;2790:1;2782:10;;;;;;;;;;;;;;;;;;2774:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;2585:3;;;;;;;2545:266;;;2829:7;2820:6;:16;;;;;;;;;;;;:::i;:::-;;2858:10;2846:9;;:22;;;;;;;;;;;;;;;;;;3048:1;3042:2;:7;;;;3038:135;;;3143:29;3163:2;3167:4;3143:19;;;;;:29;;;:::i;:::-;3135:38;;;;;;;;3038:135;2039:1141;;;;;:::o;12356:225::-;12443:12;12563:1;12560;12553:4;12547:5;12540:4;12534;12530:3;12526:2;12522:1;12518:3;12505:12;12494:71;;12480:95;;;;:::o;218:14623::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;", - "deployedSourceMap": "218:14623:1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;472:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7264:384;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3786:431;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13870:290;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6656:336;;;;;;;;;;;;;;;;;;;;;;;;;;;;13076:249;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7979:506;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;607:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;418:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5468:502;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;892:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3326:220;;;;;;;;;;;;;;;;;;;;;;;;;;;;13603:121;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;4548:599:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2039:1141;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13407:111;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;295:43:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;446:20:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11178:464;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6159:320;;;;;;;;;;;;;;;;;;;;;;;;;;;;14301:538;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;501:29:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9222:1531;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;729:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;344:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;472:23:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;7264:384::-;1105:4;1083:27;;:10;:27;;;1075:36;;;;;;;;7490:9;7460:39;;:10;7471:14;7460:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;:39;;;7452:48;;;;;;;;7535:5;7510:11;:22;7522:9;7510:22;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;7579:10;7610:1;7590:10;:17;;;;:21;7579:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;7550:10;7561:14;7550:26;;;;;;;;;;;;;;;;;;;:62;;;;;;;;;;;;;;;;;;7622:10;:19;;;;;;;;;;;;:::i;:::-;;7264:384;;:::o;3786:431::-;1105:4;1083:27;;:10;:27;;;1075:36;;;;;;;;3943:1;3934:5;:10;;;;3926:19;;;;;;;;4004:7;:14;4012:5;4004:14;;;;;;;;;;;;;;;;;;;;;;;;;4003:15;3995:24;;;;;;;;4029:6;:18;;;;;;;;;;;:::i;:::-;;;;;;;;;;4041:5;4029:18;;;;;;;;;;;;;;;;;;;;;;;4074:4;4057:7;:14;4065:5;4057:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;4159:10;4146:23;;:9;;;;;;;;;;;:23;;;;4142:68;;;4183:27;4199:10;4183:15;:27::i;:::-;4142:68;3786:431;;:::o;13870:290::-;13970:22;14013:6;14022:1;14013:10;;14008:146;14029:6;:13;;;;14025:1;:17;14008:146;;;14067:11;:22;14079:6;14086:1;14079:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;14067:22;;;;;;;;;;;;;;;:39;14090:15;14067:39;;;;;;;;;;;;;;;;;;;;;;;;;;;14063:80;;;14124:19;;;;;;;14063:80;14044:3;;;;;;;14008:146;;;13870:290;;;;:::o;6656:336::-;1105:4;1083:27;;:10;:27;;;1075:36;;;;;;;;6822:1;6808:9;6800:23;;;;6792:32;;;;;;;;6887:11;:22;6899:9;6887:22;;;;;;;;;;;;;;;;;;;;;;;;;6886:23;6878:32;;;;;;;;6920:10;:26;;;;;;;;;;;:::i;:::-;;;;;;;;;;6936:9;6920:26;;;;;;;;;;;;;;;;;;;;;;;6981:4;6956:11;:22;6968:9;6956:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;6656:336;:::o;13076:249::-;13225:7;13270:4;13265:10;;13277:4;13283:2;13287:5;13294:4;13300:9;13311:6;13255:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13248:70:1;;13076:249;;;;;;;:::o;7979:506::-;8220:23;8190:7;:19;8198:10;8190:19;;;;;;;;;;;;;;;;;;;;;;;;;8182:28;;;;;;;;8246:53;8265:2;8269:5;8276:4;8282:9;8293:5;;8246:18;:53::i;:::-;8220:79;;8380:11;:23;8392:10;8380:23;;;;;;;;;;;;;;;:40;8404:15;8380:40;;;;;;;;;;;;;;;;;;;;;;;;;;;8379:41;8371:50;;;;;;;;8474:4;8431:11;:23;8443:10;8431:23;;;;;;;;;;;;;;;:40;8455:15;8431:40;;;;;;;;;;;;;;;;;;:47;;;;;;;;;;;;;;;;;;7979:506;;;;;;:::o;607:40::-;;;;;;;;;;;;;;;;;;;;;;:::o;418:22::-;;;;;;;;;;;;;:::o;5468:502::-;1105:4;1083:27;;:10;:27;;;1075:36;;;;;;;;5658:1;5646:8;:13;;;;5638:22;;;;;;;;5719:7;:17;5727:8;5719:17;;;;;;;;;;;;;;;;;;;;;;;;;5718:18;5710:27;;;;;;;;5842:8;5817:33;;:6;5824:13;5817:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;:33;;;5809:42;;;;;;;;5881:5;5861:7;:17;5869:8;5861:17;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;5917:4;5896:7;:17;5904:8;5896:17;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;5955:8;5931:6;5938:13;5931:21;;;;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;5468:502;;;:::o;892:65::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3326:220::-;1105:4;1083:27;;:10;:27;;;1075:36;;;;;;;;3503:1;3487:11;3479:25;;;;3471:34;;;;;;;;3528:11;3515:10;;:24;;;;;;;;;;;;;;;;;;3326:220;:::o;13603:121::-;13673:11;;:::i;:::-;13707:10;13700:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13603:121;:::o;4548:599::-;1105:4;1083:27;;:10;:27;;;1075:36;;;;;;;;4776:10;4755:31;;4771:1;4755:6;:13;;;;:17;:31;;4747:40;;;;;;;;4889:5;4867:27;;:6;4874:10;4867:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;:27;;;4859:36;;;;;;;;4922:5;4905:7;:14;4913:5;4905:14;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;4958:6;4981:1;4965:6;:13;;;;:17;4958:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;4937:6;4944:10;4937:18;;;;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;4993:6;:15;;;;;;;;;;;;:::i;:::-;;5089:10;5076:23;;:9;;;;;;;;;;;:23;;;;5072:68;;;5113:27;5129:10;5113:15;:27::i;:::-;5072:68;4548:599;;;:::o;2039:1141::-;2550:9;2289:1;2276:9;;;;;;;;;;;:14;;;2268:23;;;;;;;;2397:7;:14;2383:10;:28;;;;2375:37;;;;;;;;2496:1;2482:10;:15;;;;2474:24;;;;;;;;2562:1;2550:13;;2545:266;2569:7;:14;2565:1;:18;2545:266;;;2671:1;2657:7;2665:1;2657:10;;;;;;;;;;;;;;;;;;:15;;;;2649:24;;;;;;;;2740:7;:19;2748:7;2756:1;2748:10;;;;;;;;;;;;;;;;;;2740:19;;;;;;;;;;;;;;;;;;;;;;;;;2739:20;2731:29;;;;;;;;2796:4;2774:7;:19;2782:7;2790:1;2782:10;;;;;;;;;;;;;;;;;;2774:19;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;2585:3;;;;;;;2545:266;;;2829:7;2820:6;:16;;;;;;;;;;;;:::i;:::-;;2858:10;2846:9;;:22;;;;;;;;;;;;;;;;;;3048:1;3042:2;:7;;;;3038:135;;;3143:29;3163:2;3167:4;3143:19;:29::i;:::-;3135:38;;;;;;;;3038:135;2039:1141;;;;;:::o;13407:111::-;13473:9;;:::i;:::-;13505:6;13498:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13407:111;:::o;295:43::-;;;;;;;;;;;;;;;;;;;;:::o;446:20::-;;;;:::o;11178:464::-;11374:11;:22;11386:9;11374:22;;;;;;;;;;;;;;;;;;;;;;;;;11366:31;;;;;;;;11464:9;:22;;;11487:10;11499:2;11503:5;11510:4;11516:9;11464:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11456:71:1;;;;;;;;11600:35;11608:2;11612:5;11619:4;11625:9;11600:7;:35::i;:::-;11178:464;;;;;:::o;6159:320::-;1105:4;1083:27;;:10;:27;;;1075:36;;;;;;;;6340:6;:13;;;;6326:10;:27;;;;6318:36;;;;;;;;6438:1;6424:10;:15;;;;6416:24;;;;;;;;6462:10;6450:9;;:22;;;;;;;;;;;;;;;;;;6159:320;:::o;14301:538::-;14400:26;;:::i;:::-;14442:22;14611:6;14467:37;14488:15;14467:20;:37::i;:::-;14442:62;;14547:17;14533:32;;;;;;;;;;;;;;;;;;;;;;;;14514:51;;14595:1;14575:21;;14620:1;14611:10;;14606:227;14627:6;:13;;;;14623:1;:17;14606:227;;;14665:11;:22;14677:6;14684:1;14677:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;14665:22;;;;;;;;;;;;;;;:39;14688:15;14665:39;;;;;;;;;;;;;;;;;;;;;;;;;;;14661:162;;;14762:6;14769:1;14762:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;14724:16;14741:17;14724:35;;;;;;;;;;;;;;;;;:47;;;;;;;;;;;14789:19;;;;;;;14661:162;14642:3;;;;;;;14606:227;;;14301:538;;;;;:::o;501:29::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;9222:1531::-;9414:23;9555:17;9595:20;9625:9;9644;9440:53;9459:2;9463:5;9470:4;9476:9;9487:5;;9440:18;:53::i;:::-;9414:79;;9583:1;9555:30;;9656:1;9644:13;;9718:1;9714:5;;9709:651;9725:9;;;;;;;;;;;9721:13;;:1;:13;9709:651;;;9860:1;9843:7;:14;:18;:37;;;;;9870:7;9878:1;9870:10;;;;;;;;;;;;;;;;;;9865:1;:15;9843:37;9839:381;;;9922:7;9930:1;9922:10;;;;;;;;;;;;;;;;;;9908:24;;:10;:24;;;:68;;;;9936:11;:23;9948:7;9956:1;9948:10;;;;;;;;;;;;;;;;;;9936:23;;;;;;;;;;;;;;;:40;9960:15;9936:40;;;;;;;;;;;;;;;;;;;;;;;;;;;9908:68;9900:77;;;;;;;;10010:7;10018:1;10010:10;;;;;;;;;;;;;;;;;;9995:25;;10043:1;10038:6;;;;9839:381;;;10170:50;10180:15;10197:1;10201;10199;:3;10197:6;;;;;;;;;;;;;;;;;;10205:1;10209;10207;:3;10205:6;;;;;;;;;;;;;;;;;;10213:1;10217;10215;:3;10213:6;;;;;;;;;;;;;;;;;;10170:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10155:65;;9839:381;10242:7;:21;10250:12;10242:21;;;;;;;;;;;;;;;;;;;;;;;;;10234:30;;;;;;;;10301:9;10286:24;;:12;:24;;;10278:33;;;;;;;;10337:12;10325:24;;9736:3;;;;;;;9709:651;;;10436:1;10419:7;:14;:18;10415:216;;;10462:1;10458:5;;10453:168;10469:7;:14;10465:1;:18;10453:168;;;10526:7;10534:1;10526:10;;;;;;;;;;;;;;;;;;10512:24;;:10;:24;;;;10508:98;;;10601:5;10558:11;:23;10570:7;10578:1;10570:10;;;;;;;;;;;;;;;;;;10558:23;;;;;;;;;;;;;;;:40;10582:15;10558:40;;;;;;;;;;;;;;;;;;:48;;;;;;;;;;;;;;;;;;10508:98;10485:3;;;;;;;10453:168;;;10415:216;10700:1;10691:5;;:10;;;;;;;;;;;10711:35;10719:2;10723:5;10730:4;10736:9;10711:7;:35::i;:::-;9222:1531;;;;;;;;;;;;;;:::o;729:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;344:40::-;;;;;;;;;;;;;;;;;;;;:::o;12356:225::-;12443:12;12563:1;12560;12553:4;12547:5;12540:4;12534;12530:3;12526:2;12522:1;12518:3;12505:12;12494:71;;12480:95;;;;:::o;11648:465::-;11973:19;11773:14;11760:27;;;;;;;;:9;:27;;;;;;;;;11756:351;;;11809:28;11821:2;11825:5;11832:4;11809:11;:28::i;:::-;11801:37;;;;;;;;11756:351;;;11870:22;11857:35;;;;;;;;:9;:35;;;;;;;;;11853:254;;;11914:29;11934:2;11938:4;11914:19;:29::i;:::-;11906:38;;;;;;;;11853:254;;;11995:19;12009:4;11995:13;:19::i;:::-;11973:41;;12051:1;12036:11;:16;;;;12028:25;;;;;;;;12067:29;12084:11;12067:29;;;;;;;;;;;;;;;;;;;;;;11853:254;11756:351;11648:465;;;;;:::o;12119:231::-;12213:12;12332:1;12329;12322:4;12316:5;12309:4;12303;12299:3;12292:5;12288:2;12284:1;12280:3;12275:4;12264:70;;12250:94;;;;;:::o;12587:197::-;12656:19;12762:4;12756:5;12749:4;12743;12739:3;12736:1;12729:6;12714:54;;12700:78;;;:::o;218:14623::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", - "source": "pragma solidity 0.4.19;\nimport \"./Extension.sol\";\n\n\n/// @title Gnosis Safe - A multisignature wallet with support for confirmations using signed messages based on ERC191.\n/// @author Stefan George - \ncontract GnosisSafe {\n\n event ContractCreation(address newContract);\n\n string public constant NAME = \"Gnosis Safe\";\n string public constant VERSION = \"0.0.1\";\n\n GnosisSafe masterCopy;\n uint8 public threshold;\n uint256 public nonce;\n address[] public owners;\n Extension[] public extensions;\n\n // isOwner mapping allows to check if an address is a Safe owner.\n mapping (address => bool) public isOwner;\n // isExtension mapping allows to check if an extension was whitelisted.\n mapping (address => bool) public isExtension;\n // isConfirmed mapping allows to check if a transaction was confirmed by an owner via a confirm transaction.\n mapping (address => mapping (bytes32 => bool)) public isConfirmed;\n\n enum Operation {\n Call,\n DelegateCall,\n Create\n }\n\n modifier onlyWallet() {\n require(msg.sender == address(this));\n _;\n }\n\n /// @dev Fallback function accepts Ether transactions.\n function ()\n external\n payable\n {\n\n }\n\n /// @dev Constructor function triggers setup function.\n /// @param _owners List of Safe owners.\n /// @param _threshold Number of required confirmations for a Safe transaction.\n /// @param to Contract address for optional delegate call.\n /// @param data Data payload for optional delegate call.\n function GnosisSafe(address[] _owners, uint8 _threshold, address to, bytes data)\n public\n {\n setup(_owners, _threshold, to, data);\n }\n\n /// @dev Setup function sets initial storage of contract.\n /// @param _owners List of Safe owners.\n /// @param _threshold Number of required confirmations for a Safe transaction.\n /// @param to Contract address for optional delegate call.\n /// @param data Data payload for optional delegate call.\n function setup(address[] _owners, uint8 _threshold, address to, bytes data)\n public\n {\n // Threshold can only be 0 at initialization.\n // Check ensures that setup function can only be called once.\n require(threshold == 0);\n // Validate that threshold is smaller than numbr of added owners.\n require(_threshold <= _owners.length);\n // There has to be at least one Safe owner.\n require(_threshold >= 1);\n // Initializing Safe owners.\n for (uint256 i = 0; i < _owners.length; i++) {\n // Owner address cannot be null.\n require(_owners[i] != 0);\n // No duplicate owners allowed.\n require(!isOwner[_owners[i]]);\n isOwner[_owners[i]] = true;\n }\n owners = _owners;\n threshold = _threshold;\n // If a to address is set, an additional delegate call is executed.\n // This call allows further contract setup steps, like adding an extension.\n if (to != 0)\n // Setup has to complete successfully or transaction fails.\n require(executeDelegateCall(to, data));\n }\n\n /// @dev Allows to upgrade the contract. This can only be done via a Safe transaction.\n /// @param _masterCopy New contract address.\n function changeMasterCopy(GnosisSafe _masterCopy)\n public\n onlyWallet\n {\n // Master copy address cannot be null.\n require(address(_masterCopy) != 0);\n masterCopy = _masterCopy;\n }\n\n /// @dev Allows to add a new owner to the Safe and update the threshold at the same time.\n /// This can only be done via a Safe transaction.\n /// @param owner New owner address.\n /// @param _threshold New threshold.\n function addOwner(address owner, uint8 _threshold)\n public\n onlyWallet\n {\n // Owner address cannot be null.\n require(owner != 0);\n // No duplicate owners allowed.\n require(!isOwner[owner]);\n owners.push(owner);\n isOwner[owner] = true;\n // Change threshold if threshold was changed.\n if (threshold != _threshold)\n changeThreshold(_threshold);\n }\n\n /// @dev Allows to remove an owner from the Safe and update the threshold at the same time.\n /// This can only be done via a Safe transaction.\n /// @param ownerIndex Array index position of owner address to be removed.\n /// @param owner Owner address to be removed.\n /// @param _threshold New threshold.\n function removeOwner(uint256 ownerIndex, address owner, uint8 _threshold)\n public\n onlyWallet\n {\n // Only allow to remove an owner, if threshold can still be reached.\n require(owners.length - 1 >= _threshold);\n // Validate owner address corresponds to owner index.\n require(owners[ownerIndex] == owner);\n isOwner[owner] = false;\n owners[ownerIndex] = owners[owners.length - 1];\n owners.length--;\n // Change threshold if threshold was changed.\n if (threshold != _threshold)\n changeThreshold(_threshold);\n }\n\n /// @dev Allows to replace an owner from the Safe with another address.\n /// This can only be done via a Safe transaction.\n /// @param oldOwnerIndex Array index position of owner address to be replaced.\n /// @param oldOwner Owner address to be replaced.\n /// @param newOwner New owner address.\n function replaceOwner(uint256 oldOwnerIndex, address oldOwner, address newOwner)\n public\n onlyWallet\n {\n // Owner address cannot be null.\n require(newOwner != 0);\n // No duplicate owners allowed.\n require(!isOwner[newOwner]);\n // Validate owner address corresponds to owner index.\n require(owners[oldOwnerIndex] == oldOwner);\n isOwner[oldOwner] = false;\n isOwner[newOwner] = true;\n owners[oldOwnerIndex] = newOwner;\n }\n\n /// @dev Allows to update the number of required confirmations by Safe owners.\n /// This can only be done via a Safe transaction.\n /// @param _threshold New threshold.\n function changeThreshold(uint8 _threshold)\n public\n onlyWallet\n {\n // Validate that threshold is smaller than numbr of owners.\n require(_threshold <= owners.length);\n // There has to be at least one Safe owner.\n require(_threshold >= 1);\n threshold = _threshold;\n }\n\n /// @dev Allows to add an extension to the whitelist.\n /// This can only be done via a Safe transaction.\n /// @param extension Extension to be whitelisted.\n function addExtension(Extension extension)\n public\n onlyWallet\n {\n // Extension address cannot be null.\n require(address(extension) != 0);\n // Extension cannot be added twice.\n require(!isExtension[extension]);\n extensions.push(extension);\n isExtension[extension] = true;\n }\n\n /// @dev Allows to remove an extension from the whitelist.\n /// This can only be done via a Safe transaction.\n /// @param extensionIndex Array index position of extension to be removed from whitelist.\n /// @param extension Extension to be removed.\n function removeExtension(uint256 extensionIndex, Extension extension)\n public\n onlyWallet\n {\n // Validate extension address corresponds to extension index.\n require(extensions[extensionIndex] == extension);\n isExtension[extension] = false;\n extensions[extensionIndex] = extensions[extensions.length - 1];\n extensions.length--;\n }\n\n /// @dev Allows to confirm a Safe transaction with a regular transaction.\n /// This can only be done from an owner address.\n /// @param to Destination address.\n /// @param value Ether value.\n /// @param data Data payload.\n /// @param operation Operation type.\n /// @param _nonce Transaction nonce.\n function confirmTransaction(address to, uint256 value, bytes data, Operation operation, uint256 _nonce)\n public\n {\n // Only Safe owners are allowed to confirm Safe transactions.\n require(isOwner[msg.sender]);\n bytes32 transactionHash = getTransactionHash(to, value, data, operation, nonce);\n // It is only possible to confirm a transaction once.\n require(!isConfirmed[msg.sender][transactionHash]);\n isConfirmed[msg.sender][transactionHash] = true;\n }\n\n /// @dev Allows to execute a Safe transaction confirmed by required number of owners.\n /// @param to Destination address of Safe transaction.\n /// @param value Ether value of Safe transaction.\n /// @param data Data payload of Safe transaction.\n /// @param operation Operation type of Safe transaction.\n /// @param v Array of signature V values sorted by owner addresses.\n /// @param r Array of signature R values sorted by owner addresses.\n /// @param s Array of signature S values sorted by owner addresses.\n /// @param _owners List of Safe owners confirming via regular transactions sorted by owner addresses.\n /// @param indices List of indeces of Safe owners confirming via regular transactions.\n function executeTransaction(address to, uint256 value, bytes data, Operation operation, uint8[] v, bytes32[] r, bytes32[] s, address[] _owners, uint256[] indices)\n public\n {\n bytes32 transactionHash = getTransactionHash(to, value, data, operation, nonce);\n // There cannot be an owner with address 0.\n address lastOwner = address(0);\n address currentOwner;\n uint256 i;\n uint256 j = 0;\n // Validate threshold is reached.\n for (i = 0; i < threshold; i++) {\n // Check confirmations done with regular transactions or by msg.sender.\n if (indices.length > j && i == indices[j]) {\n require(msg.sender == _owners[j] || isConfirmed[_owners[j]][transactionHash]);\n currentOwner = _owners[j];\n j += 1;\n }\n // Check confirmations done with signed messages.\n else\n currentOwner = ecrecover(transactionHash, v[i-j], r[i-j], s[i-j]);\n require(isOwner[currentOwner]);\n require(currentOwner > lastOwner);\n lastOwner = currentOwner;\n }\n // Delete storage to receive refunds.\n if (_owners.length > 0) {\n for (i = 0; i < _owners.length; i++) {\n if (msg.sender != _owners[i])\n isConfirmed[_owners[i]][transactionHash] = false;\n }\n }\n // Increase nonce and execute transaction.\n nonce += 1;\n execute(to, value, data, operation);\n }\n\n /// @dev Allows to execute a Safe transaction via an extension without any further confirmations.\n /// @param to Destination address of extension transaction.\n /// @param value Ether value of extension transaction.\n /// @param data Data payload of extension transaction.\n /// @param operation Operation type of extension transaction.\n /// @param extension Extension address of extension transaction.\n function executeExtension(address to, uint256 value, bytes data, Operation operation, Extension extension)\n public\n {\n // Only whitelisted extensions are allowed.\n require(isExtension[extension]);\n // Extension has to confirm transaction.\n require(extension.isExecutable(msg.sender, to, value, data, operation));\n // Exectute transaction without further confirmations.\n execute(to, value, data, operation);\n }\n\n function execute(address to, uint256 value, bytes data, Operation operation)\n internal\n {\n if (operation == Operation.Call)\n require(executeCall(to, value, data));\n else if (operation == Operation.DelegateCall)\n require(executeDelegateCall(to, data));\n else {\n address newContract = executeCreate(data);\n require(newContract != 0);\n ContractCreation(newContract);\n }\n }\n\n function executeCall(address to, uint256 value, bytes data)\n internal\n returns (bool success)\n {\n assembly {\n success := call(not(0), to, value, add(data, 0x20), mload(data), 0, 0)\n }\n }\n\n function executeDelegateCall(address to, bytes data)\n internal\n returns (bool success)\n {\n assembly {\n success := delegatecall(not(0), to, add(data, 0x20), mload(data), 0, 0)\n }\n }\n\n function executeCreate(bytes data)\n internal\n returns (address newContract)\n {\n assembly {\n newContract := create(0, add(data, 0x20), mload(data))\n }\n }\n\n /// @dev Returns transactions hash to be signed by owners.\n /// @param to Destination address.\n /// @param value Ether value.\n /// @param data Data payload.\n /// @param operation Operation type.\n /// @param _nonce Transaction nonce.\n /// @return Transaction hash.\n function getTransactionHash(address to, uint256 value, bytes data, Operation operation, uint256 _nonce)\n public\n view\n returns (bytes32)\n {\n return keccak256(byte(0x19), this, to, value, data, operation, _nonce);\n }\n\n /// @dev Returns array of owners.\n /// @return Array of Safe owners.\n function getOwners()\n public\n view\n returns (address[])\n {\n return owners;\n }\n\n /// @dev Returns array of extensions.\n /// @return Array of extensions.\n function getExtensions()\n public\n view\n returns (Extension[])\n {\n return extensions;\n }\n\n /// @dev Returns a the count of owners that have confirmed the given transaction.\n /// @param transactionHash Safe transaction hash.\n function getConfirmationCount(bytes32 transactionHash)\n public\n view\n returns (uint confirmationCount)\n {\n for (uint i = 0; i < owners.length; i++) {\n if (isConfirmed[owners[i]][transactionHash])\n confirmationCount++;\n }\n }\n\n /// @dev Returns a list of owners that have confirmed the given transaction.\n /// @param transactionHash Safe transaction hash.\n function getConfirmingOwners(bytes32 transactionHash)\n public\n view\n returns (address[] confirmingOwners)\n {\n uint confirmationCount = getConfirmationCount(transactionHash);\n confirmingOwners = new address[](confirmationCount);\n confirmationCount = 0;\n for (uint i = 0; i < owners.length; i++) {\n if (isConfirmed[owners[i]][transactionHash]) {\n confirmingOwners[confirmationCount] = owners[i];\n confirmationCount++;\n }\n }\n }\n}\n", - "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", - "ast": { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", - "exportedSymbols": { - "GnosisSafe": [ - 963 - ] - }, - "id": 964, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 20, - "literals": [ - "solidity", - "0.4", - ".19" - ], - "nodeType": "PragmaDirective", - "src": "0:23:1" - }, - { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Extension.sol", - "file": "./Extension.sol", - "id": 21, - "nodeType": "ImportDirective", - "scope": 964, - "sourceUnit": 19, - "src": "24:25:1", - "symbolAliases": [], - "unitAlias": "" - }, - { - "baseContracts": [], - "contractDependencies": [], - "contractKind": "contract", - "documentation": "@title Gnosis Safe - A multisignature wallet with support for confirmations using signed messages based on ERC191.\n @author Stefan George - ", - "fullyImplemented": true, - "id": 963, - "linearizedBaseContracts": [ - 963 - ], - "name": "GnosisSafe", - "nodeType": "ContractDefinition", - "nodes": [ - { - "anonymous": false, - "id": 25, - "name": "ContractCreation", - "nodeType": "EventDefinition", - "parameters": { - "id": 24, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 23, - "indexed": false, - "name": "newContract", - "nodeType": "VariableDeclaration", - "scope": 25, - "src": "268:19:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 22, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "268:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "267:21:1" - }, - "src": "245:44:1" - }, - { - "constant": true, - "id": 28, - "name": "NAME", - "nodeType": "VariableDeclaration", - "scope": 963, - "src": "295:43:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_string_memory", - "typeString": "string memory" - }, - "typeName": { - "id": 26, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "295:6:1", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string storage pointer" - } - }, - "value": { - "argumentTypes": null, - "hexValue": "476e6f7369732053616665", - "id": 27, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "325:13:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_72ec6775392f699e8ffd72b7c600556d49bdc746bf22bce93d3ae6019cdaff63", - "typeString": "literal_string \"Gnosis Safe\"" - }, - "value": "Gnosis Safe" - }, - "visibility": "public" - }, - { - "constant": true, - "id": 31, - "name": "VERSION", - "nodeType": "VariableDeclaration", - "scope": 963, - "src": "344:40:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_string_memory", - "typeString": "string memory" - }, - "typeName": { - "id": 29, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "344:6:1", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string storage pointer" - } - }, - "value": { - "argumentTypes": null, - "hexValue": "302e302e31", - "id": 30, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "377:7:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", - "typeString": "literal_string \"0.0.1\"" - }, - "value": "0.0.1" - }, - "visibility": "public" - }, - { - "constant": false, - "id": 33, - "name": "masterCopy", - "nodeType": "VariableDeclaration", - "scope": 963, - "src": "391:21:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - }, - "typeName": { - "contractScope": null, - "id": 32, - "name": "GnosisSafe", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 963, - "src": "391:10:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 35, - "name": "threshold", - "nodeType": "VariableDeclaration", - "scope": 963, - "src": "418:22:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 34, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "418:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "id": 37, - "name": "nonce", - "nodeType": "VariableDeclaration", - "scope": 963, - "src": "446:20:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 36, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "446:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "id": 40, - "name": "owners", - "nodeType": "VariableDeclaration", - "scope": 963, - "src": "472:23:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - }, - "typeName": { - "baseType": { - "id": 38, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "472:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 39, - "length": null, - "nodeType": "ArrayTypeName", - "src": "472:9:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[] storage pointer" - } - }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "id": 43, - "name": "extensions", - "nodeType": "VariableDeclaration", - "scope": 963, - "src": "501:29:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage", - "typeString": "contract Extension[] storage ref" - }, - "typeName": { - "baseType": { - "contractScope": null, - "id": 41, - "name": "Extension", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 18, - "src": "501:9:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "id": 42, - "length": null, - "nodeType": "ArrayTypeName", - "src": "501:11:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage_ptr", - "typeString": "contract Extension[] storage pointer" - } - }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "id": 47, - "name": "isOwner", - "nodeType": "VariableDeclaration", - "scope": 963, - "src": "607:40:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - }, - "typeName": { - "id": 46, - "keyType": { - "id": 44, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "616:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Mapping", - "src": "607:25:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - }, - "valueType": { - "id": 45, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "627:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "id": 51, - "name": "isExtension", - "nodeType": "VariableDeclaration", - "scope": 963, - "src": "729:44:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - }, - "typeName": { - "id": 50, - "keyType": { - "id": 48, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "738:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Mapping", - "src": "729:25:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - }, - "valueType": { - "id": 49, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "749:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "id": 57, - "name": "isConfirmed", - "nodeType": "VariableDeclaration", - "scope": 963, - "src": "892:65:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$", - "typeString": "mapping(address => mapping(bytes32 => bool))" - }, - "typeName": { - "id": 56, - "keyType": { - "id": 52, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "901:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Mapping", - "src": "892:46:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$", - "typeString": "mapping(address => mapping(bytes32 => bool))" - }, - "valueType": { - "id": 55, - "keyType": { - "id": 53, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "921:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Mapping", - "src": "912:25:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - }, - "valueType": { - "id": 54, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "932:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - } - }, - "value": null, - "visibility": "public" - }, - { - "canonicalName": "GnosisSafe.Operation", - "id": 61, - "members": [ - { - "id": 58, - "name": "Call", - "nodeType": "EnumValue", - "src": "989:4:1" - }, - { - "id": 59, - "name": "DelegateCall", - "nodeType": "EnumValue", - "src": "1003:12:1" - }, - { - "id": 60, - "name": "Create", - "nodeType": "EnumValue", - "src": "1025:6:1" - } - ], - "name": "Operation", - "nodeType": "EnumDefinition", - "src": "964:73:1" - }, - { - "body": { - "id": 73, - "nodeType": "Block", - "src": "1065:64:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 69, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 64, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2089, - "src": "1083:3:1", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 65, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "1083:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 67, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2100, - "src": "1105:4:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - ], - "id": 66, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "1097:7:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 68, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1097:13:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "1083:27:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 63, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "1075:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 70, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1075:36:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 71, - "nodeType": "ExpressionStatement", - "src": "1075:36:1" - }, - { - "id": 72, - "nodeType": "PlaceholderStatement", - "src": "1121:1:1" - } - ] - }, - "id": 74, - "name": "onlyWallet", - "nodeType": "ModifierDefinition", - "parameters": { - "id": 62, - "nodeType": "ParameterList", - "parameters": [], - "src": "1062:2:1" - }, - "src": "1043:86:1", - "visibility": "internal" - }, - { - "body": { - "id": 77, - "nodeType": "Block", - "src": "1243:8:1", - "statements": [] - }, - "id": 78, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 75, - "nodeType": "ParameterList", - "parameters": [], - "src": "1203:2:1" - }, - "payable": true, - "returnParameters": { - "id": 76, - "nodeType": "ParameterList", - "parameters": [], - "src": "1243:0:1" - }, - "scope": 963, - "src": "1194:57:1", - "stateMutability": "payable", - "superFunction": null, - "visibility": "external" - }, - { - "body": { - "id": 97, - "nodeType": "Block", - "src": "1667:53:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 91, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 81, - "src": "1683:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - { - "argumentTypes": null, - "id": 92, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 83, - "src": "1692:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - { - "argumentTypes": null, - "id": 93, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 85, - "src": "1704:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 94, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87, - "src": "1708:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - }, - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 90, - "name": "setup", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 187, - "src": "1677:5:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_uint8_$_t_address_$_t_bytes_memory_ptr_$returns$__$", - "typeString": "function (address[] memory,uint8,address,bytes memory)" - } - }, - "id": 95, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1677:36:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 96, - "nodeType": "ExpressionStatement", - "src": "1677:36:1" - } - ] - }, - "id": 98, - "implemented": true, - "isConstructor": true, - "isDeclaredConst": false, - "modifiers": [], - "name": "GnosisSafe", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 88, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 81, - "name": "_owners", - "nodeType": "VariableDeclaration", - "scope": 98, - "src": "1587:17:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - }, - "typeName": { - "baseType": { - "id": 79, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1587:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 80, - "length": null, - "nodeType": "ArrayTypeName", - "src": "1587:9:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 83, - "name": "_threshold", - "nodeType": "VariableDeclaration", - "scope": 98, - "src": "1606:16:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 82, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "1606:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 85, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 98, - "src": "1624:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 84, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1624:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 87, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 98, - "src": "1636:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 86, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "1636:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1586:61:1" - }, - "payable": false, - "returnParameters": { - "id": 89, - "nodeType": "ParameterList", - "parameters": [], - "src": "1667:0:1" - }, - "scope": 963, - "src": "1567:153:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 186, - "nodeType": "Block", - "src": "2134:1046:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 113, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 111, - "name": "threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 35, - "src": "2276:9:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 112, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2289:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2276:14:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 110, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "2268:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 114, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2268:23:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 115, - "nodeType": "ExpressionStatement", - "src": "2268:23:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 120, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 117, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 103, - "src": "2383:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": "<=", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 118, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 101, - "src": "2397:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 119, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2397:14:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2383:28:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 116, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "2375:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 121, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2375:37:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 122, - "nodeType": "ExpressionStatement", - "src": "2375:37:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 126, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 124, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 103, - "src": "2482:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 125, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2496:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "2482:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 123, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "2474:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 127, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2474:24:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 128, - "nodeType": "ExpressionStatement", - "src": "2474:24:1" - }, - { - "body": { - "id": 165, - "nodeType": "Block", - "src": "2590:221:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 145, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 141, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 101, - "src": "2657:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 143, - "indexExpression": { - "argumentTypes": null, - "id": 142, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 130, - "src": "2665:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2657:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 144, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2671:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2657:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 140, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "2649:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 146, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2649:24:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 147, - "nodeType": "ExpressionStatement", - "src": "2649:24:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 154, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "2739:20:1", - "subExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 149, - "name": "isOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 47, - "src": "2740:7:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 153, - "indexExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 150, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 101, - "src": "2748:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 152, - "indexExpression": { - "argumentTypes": null, - "id": 151, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 130, - "src": "2756:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2748:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2740:19:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 148, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "2731:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 155, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2731:29:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 156, - "nodeType": "ExpressionStatement", - "src": "2731:29:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 163, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 157, - "name": "isOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 47, - "src": "2774:7:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 161, - "indexExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 158, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 101, - "src": "2782:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 160, - "indexExpression": { - "argumentTypes": null, - "id": 159, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 130, - "src": "2790:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2782:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "2774:19:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 162, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2796:4:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "2774:26:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 164, - "nodeType": "ExpressionStatement", - "src": "2774:26:1" - } - ] - }, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 136, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 133, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 130, - "src": "2565:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 134, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 101, - "src": "2569:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 135, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2569:14:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2565:18:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 166, - "initializationExpression": { - "assignments": [ - 130 - ], - "declarations": [ - { - "constant": false, - "id": 130, - "name": "i", - "nodeType": "VariableDeclaration", - "scope": 187, - "src": "2550:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 129, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2550:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 132, - "initialValue": { - "argumentTypes": null, - "hexValue": "30", - "id": 131, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2562:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "2550:13:1" - }, - "loopExpression": { - "expression": { - "argumentTypes": null, - "id": 138, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "2585:3:1", - "subExpression": { - "argumentTypes": null, - "id": 137, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 130, - "src": "2585:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 139, - "nodeType": "ExpressionStatement", - "src": "2585:3:1" - }, - "nodeType": "ForStatement", - "src": "2545:266:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 169, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 167, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "2820:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 168, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 101, - "src": "2829:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "src": "2820:16:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 170, - "nodeType": "ExpressionStatement", - "src": "2820:16:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 173, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 171, - "name": "threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 35, - "src": "2846:9:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 172, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 103, - "src": "2858:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "2846:22:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "id": 174, - "nodeType": "ExpressionStatement", - "src": "2846:22:1" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 177, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 175, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 105, - "src": "3042:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 176, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3048:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "3042:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 185, - "nodeType": "IfStatement", - "src": "3038:135:1", - "trueBody": { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 180, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 105, - "src": "3163:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 181, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 107, - "src": "3167:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 179, - "name": "executeDelegateCall", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 815, - "src": "3143:19:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bool_$", - "typeString": "function (address,bytes memory) returns (bool)" - } - }, - "id": 182, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3143:29:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 178, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "3135:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 183, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3135:38:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 184, - "nodeType": "ExpressionStatement", - "src": "3135:38:1" - } - } - ] - }, - "id": 187, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "setup", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 108, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 101, - "name": "_owners", - "nodeType": "VariableDeclaration", - "scope": 187, - "src": "2054:17:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - }, - "typeName": { - "baseType": { - "id": 99, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2054:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 100, - "length": null, - "nodeType": "ArrayTypeName", - "src": "2054:9:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 103, - "name": "_threshold", - "nodeType": "VariableDeclaration", - "scope": 187, - "src": "2073:16:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 102, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "2073:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 105, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 187, - "src": "2091:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 104, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2091:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 107, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 187, - "src": "2103:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 106, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "2103:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "2053:61:1" - }, - "payable": false, - "returnParameters": { - "id": 109, - "nodeType": "ParameterList", - "parameters": [], - "src": "2134:0:1" - }, - "scope": 963, - "src": "2039:1141:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 206, - "nodeType": "Block", - "src": "3414:132:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 199, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 196, - "name": "_masterCopy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 189, - "src": "3487:11:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - ], - "id": 195, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "3479:7:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 197, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3479:20:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 198, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3503:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "3479:25:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 194, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "3471:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 200, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3471:34:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 201, - "nodeType": "ExpressionStatement", - "src": "3471:34:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 204, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 202, - "name": "masterCopy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33, - "src": "3515:10:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 203, - "name": "_masterCopy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 189, - "src": "3528:11:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - "src": "3515:24:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - "id": 205, - "nodeType": "ExpressionStatement", - "src": "3515:24:1" - } - ] - }, - "id": 207, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [], - "id": 192, - "modifierName": { - "argumentTypes": null, - "id": 191, - "name": "onlyWallet", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 74, - "src": "3399:10:1", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "3399:10:1" - } - ], - "name": "changeMasterCopy", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 190, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 189, - "name": "_masterCopy", - "nodeType": "VariableDeclaration", - "scope": 207, - "src": "3352:22:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - }, - "typeName": { - "contractScope": null, - "id": 188, - "name": "GnosisSafe", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 963, - "src": "3352:10:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "3351:24:1" - }, - "payable": false, - "returnParameters": { - "id": 193, - "nodeType": "ParameterList", - "parameters": [], - "src": "3414:0:1" - }, - "scope": 963, - "src": "3326:220:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 249, - "nodeType": "Block", - "src": "3875:342:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 219, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 217, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 209, - "src": "3934:5:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 218, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3943:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "3934:10:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 216, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "3926:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 220, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3926:19:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 221, - "nodeType": "ExpressionStatement", - "src": "3926:19:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 226, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "4003:15:1", - "subExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 223, - "name": "isOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 47, - "src": "4004:7:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 225, - "indexExpression": { - "argumentTypes": null, - "id": 224, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 209, - "src": "4012:5:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4004:14:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 222, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "3995:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 227, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3995:24:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 228, - "nodeType": "ExpressionStatement", - "src": "3995:24:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 232, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 209, - "src": "4041:5:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "expression": { - "argumentTypes": null, - "id": 229, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "4029:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 231, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "push", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "4029:11:1", - "typeDescriptions": { - "typeIdentifier": "t_function_arraypush_nonpayable$_t_address_$returns$_t_uint256_$", - "typeString": "function (address) returns (uint256)" - } - }, - "id": 233, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4029:18:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 234, - "nodeType": "ExpressionStatement", - "src": "4029:18:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 239, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 235, - "name": "isOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 47, - "src": "4057:7:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 237, - "indexExpression": { - "argumentTypes": null, - "id": 236, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 209, - "src": "4065:5:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "4057:14:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 238, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4074:4:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "4057:21:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 240, - "nodeType": "ExpressionStatement", - "src": "4057:21:1" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 243, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 241, - "name": "threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 35, - "src": "4146:9:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "id": 242, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 211, - "src": "4159:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "4146:23:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 248, - "nodeType": "IfStatement", - "src": "4142:68:1", - "trueBody": { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 245, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 211, - "src": "4199:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - ], - "id": 244, - "name": "changeThreshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 385, - "src": "4183:15:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$returns$__$", - "typeString": "function (uint8)" - } - }, - "id": 246, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4183:27:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 247, - "nodeType": "ExpressionStatement", - "src": "4183:27:1" - } - } - ] - }, - "id": 250, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [], - "id": 214, - "modifierName": { - "argumentTypes": null, - "id": 213, - "name": "onlyWallet", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 74, - "src": "3860:10:1", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "3860:10:1" - } - ], - "name": "addOwner", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 212, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 209, - "name": "owner", - "nodeType": "VariableDeclaration", - "scope": 250, - "src": "3804:13:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 208, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3804:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 211, - "name": "_threshold", - "nodeType": "VariableDeclaration", - "scope": 250, - "src": "3819:16:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 210, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "3819:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "3803:33:1" - }, - "payable": false, - "returnParameters": { - "id": 215, - "nodeType": "ParameterList", - "parameters": [], - "src": "3875:0:1" - }, - "scope": 963, - "src": "3786:431:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 308, - "nodeType": "Block", - "src": "4660:487:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 267, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 265, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 262, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "4755:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 263, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "4755:13:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 264, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4771:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "4755:17:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "argumentTypes": null, - "id": 266, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 256, - "src": "4776:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "4755:31:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 261, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "4747:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 268, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4747:40:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 269, - "nodeType": "ExpressionStatement", - "src": "4747:40:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 275, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 271, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "4867:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 273, - "indexExpression": { - "argumentTypes": null, - "id": 272, - "name": "ownerIndex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 252, - "src": "4874:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4867:18:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 274, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 254, - "src": "4889:5:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "4867:27:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 270, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "4859:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 276, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4859:36:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 277, - "nodeType": "ExpressionStatement", - "src": "4859:36:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 282, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 278, - "name": "isOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 47, - "src": "4905:7:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 280, - "indexExpression": { - "argumentTypes": null, - "id": 279, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 254, - "src": "4913:5:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "4905:14:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "66616c7365", - "id": 281, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4922:5:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "src": "4905:22:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 283, - "nodeType": "ExpressionStatement", - "src": "4905:22:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 293, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 284, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "4937:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 286, - "indexExpression": { - "argumentTypes": null, - "id": 285, - "name": "ownerIndex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 252, - "src": "4944:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "4937:18:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 287, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "4958:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 292, - "indexExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 291, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 288, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "4965:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 289, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "4965:13:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 290, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4981:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "4965:17:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4958:25:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "4937:46:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 294, - "nodeType": "ExpressionStatement", - "src": "4937:46:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 298, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "--", - "prefix": false, - "src": "4993:15:1", - "subExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 295, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "4993:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 297, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "4993:13:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 299, - "nodeType": "ExpressionStatement", - "src": "4993:15:1" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 302, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 300, - "name": "threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 35, - "src": "5076:9:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "id": 301, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 256, - "src": "5089:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "5076:23:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 307, - "nodeType": "IfStatement", - "src": "5072:68:1", - "trueBody": { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 304, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 256, - "src": "5129:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - ], - "id": 303, - "name": "changeThreshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 385, - "src": "5113:15:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$returns$__$", - "typeString": "function (uint8)" - } - }, - "id": 305, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5113:27:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 306, - "nodeType": "ExpressionStatement", - "src": "5113:27:1" - } - } - ] - }, - "id": 309, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [], - "id": 259, - "modifierName": { - "argumentTypes": null, - "id": 258, - "name": "onlyWallet", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 74, - "src": "4645:10:1", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "4645:10:1" - } - ], - "name": "removeOwner", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 257, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 252, - "name": "ownerIndex", - "nodeType": "VariableDeclaration", - "scope": 309, - "src": "4569:18:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 251, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4569:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 254, - "name": "owner", - "nodeType": "VariableDeclaration", - "scope": 309, - "src": "4589:13:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 253, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "4589:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 256, - "name": "_threshold", - "nodeType": "VariableDeclaration", - "scope": 309, - "src": "4604:16:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 255, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "4604:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "4568:53:1" - }, - "payable": false, - "returnParameters": { - "id": 260, - "nodeType": "ParameterList", - "parameters": [], - "src": "4660:0:1" - }, - "scope": 963, - "src": "4548:599:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 359, - "nodeType": "Block", - "src": "5587:383:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 323, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 321, - "name": "newOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 315, - "src": "5646:8:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 322, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5658:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "5646:13:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 320, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "5638:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 324, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5638:22:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 325, - "nodeType": "ExpressionStatement", - "src": "5638:22:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 330, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "5718:18:1", - "subExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 327, - "name": "isOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 47, - "src": "5719:7:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 329, - "indexExpression": { - "argumentTypes": null, - "id": 328, - "name": "newOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 315, - "src": "5727:8:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "5719:17:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 326, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "5710:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 331, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5710:27:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 332, - "nodeType": "ExpressionStatement", - "src": "5710:27:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 338, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 334, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "5817:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 336, - "indexExpression": { - "argumentTypes": null, - "id": 335, - "name": "oldOwnerIndex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 311, - "src": "5824:13:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "5817:21:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 337, - "name": "oldOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 313, - "src": "5842:8:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "5817:33:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 333, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "5809:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 339, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5809:42:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 340, - "nodeType": "ExpressionStatement", - "src": "5809:42:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 345, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 341, - "name": "isOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 47, - "src": "5861:7:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 343, - "indexExpression": { - "argumentTypes": null, - "id": 342, - "name": "oldOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 313, - "src": "5869:8:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "5861:17:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "66616c7365", - "id": 344, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5881:5:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "src": "5861:25:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 346, - "nodeType": "ExpressionStatement", - "src": "5861:25:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 351, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 347, - "name": "isOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 47, - "src": "5896:7:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 349, - "indexExpression": { - "argumentTypes": null, - "id": 348, - "name": "newOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 315, - "src": "5904:8:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "5896:17:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 350, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5917:4:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "5896:25:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 352, - "nodeType": "ExpressionStatement", - "src": "5896:25:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 357, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 353, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "5931:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 355, - "indexExpression": { - "argumentTypes": null, - "id": 354, - "name": "oldOwnerIndex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 311, - "src": "5938:13:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "5931:21:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 356, - "name": "newOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 315, - "src": "5955:8:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "5931:32:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 358, - "nodeType": "ExpressionStatement", - "src": "5931:32:1" - } - ] - }, - "id": 360, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [], - "id": 318, - "modifierName": { - "argumentTypes": null, - "id": 317, - "name": "onlyWallet", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 74, - "src": "5572:10:1", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "5572:10:1" - } - ], - "name": "replaceOwner", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 316, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 311, - "name": "oldOwnerIndex", - "nodeType": "VariableDeclaration", - "scope": 360, - "src": "5490:21:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 310, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "5490:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 313, - "name": "oldOwner", - "nodeType": "VariableDeclaration", - "scope": 360, - "src": "5513:16:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 312, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "5513:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 315, - "name": "newOwner", - "nodeType": "VariableDeclaration", - "scope": 360, - "src": "5531:16:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 314, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "5531:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "5489:59:1" - }, - "payable": false, - "returnParameters": { - "id": 319, - "nodeType": "ParameterList", - "parameters": [], - "src": "5587:0:1" - }, - "scope": 963, - "src": "5468:502:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 384, - "nodeType": "Block", - "src": "6240:239:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 371, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 368, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 362, - "src": "6326:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": "<=", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 369, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "6340:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 370, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "6340:13:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "6326:27:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 367, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "6318:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 372, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6318:36:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 373, - "nodeType": "ExpressionStatement", - "src": "6318:36:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 377, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 375, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 362, - "src": "6424:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 376, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6438:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "6424:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 374, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "6416:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 378, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6416:24:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 379, - "nodeType": "ExpressionStatement", - "src": "6416:24:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 382, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 380, - "name": "threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 35, - "src": "6450:9:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 381, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 362, - "src": "6462:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "6450:22:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "id": 383, - "nodeType": "ExpressionStatement", - "src": "6450:22:1" - } - ] - }, - "id": 385, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [], - "id": 365, - "modifierName": { - "argumentTypes": null, - "id": 364, - "name": "onlyWallet", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 74, - "src": "6225:10:1", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "6225:10:1" - } - ], - "name": "changeThreshold", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 363, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 362, - "name": "_threshold", - "nodeType": "VariableDeclaration", - "scope": 385, - "src": "6184:16:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 361, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "6184:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "6183:18:1" - }, - "payable": false, - "returnParameters": { - "id": 366, - "nodeType": "ParameterList", - "parameters": [], - "src": "6240:0:1" - }, - "scope": 963, - "src": "6159:320:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 419, - "nodeType": "Block", - "src": "6737:255:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 397, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 394, - "name": "extension", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 387, - "src": "6808:9:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - ], - "id": 393, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "6800:7:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 395, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6800:18:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 396, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6822:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "6800:23:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 392, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "6792:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 398, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6792:32:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 399, - "nodeType": "ExpressionStatement", - "src": "6792:32:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 404, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "6886:23:1", - "subExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 401, - "name": "isExtension", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51, - "src": "6887:11:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 403, - "indexExpression": { - "argumentTypes": null, - "id": 402, - "name": "extension", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 387, - "src": "6899:9:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "6887:22:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 400, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "6878:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 405, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6878:32:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 406, - "nodeType": "ExpressionStatement", - "src": "6878:32:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 410, - "name": "extension", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 387, - "src": "6936:9:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - ], - "expression": { - "argumentTypes": null, - "id": 407, - "name": "extensions", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 43, - "src": "6920:10:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage", - "typeString": "contract Extension[] storage ref" - } - }, - "id": 409, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "push", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "6920:15:1", - "typeDescriptions": { - "typeIdentifier": "t_function_arraypush_nonpayable$_t_contract$_Extension_$18_$returns$_t_uint256_$", - "typeString": "function (contract Extension) returns (uint256)" - } - }, - "id": 411, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6920:26:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 412, - "nodeType": "ExpressionStatement", - "src": "6920:26:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 417, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 413, - "name": "isExtension", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51, - "src": "6956:11:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 415, - "indexExpression": { - "argumentTypes": null, - "id": 414, - "name": "extension", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 387, - "src": "6968:9:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "6956:22:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 416, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6981:4:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "6956:29:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 418, - "nodeType": "ExpressionStatement", - "src": "6956:29:1" - } - ] - }, - "id": 420, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [], - "id": 390, - "modifierName": { - "argumentTypes": null, - "id": 389, - "name": "onlyWallet", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 74, - "src": "6722:10:1", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "6722:10:1" - } - ], - "name": "addExtension", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 388, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 387, - "name": "extension", - "nodeType": "VariableDeclaration", - "scope": 420, - "src": "6678:19:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - }, - "typeName": { - "contractScope": null, - "id": 386, - "name": "Extension", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 18, - "src": "6678:9:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "6677:21:1" - }, - "payable": false, - "returnParameters": { - "id": 391, - "nodeType": "ParameterList", - "parameters": [], - "src": "6737:0:1" - }, - "scope": 963, - "src": "6656:336:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 459, - "nodeType": "Block", - "src": "7372:276:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - }, - "id": 434, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 430, - "name": "extensions", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 43, - "src": "7460:10:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage", - "typeString": "contract Extension[] storage ref" - } - }, - "id": 432, - "indexExpression": { - "argumentTypes": null, - "id": 431, - "name": "extensionIndex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 422, - "src": "7471:14:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "7460:26:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 433, - "name": "extension", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 424, - "src": "7490:9:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "src": "7460:39:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 429, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "7452:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 435, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7452:48:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 436, - "nodeType": "ExpressionStatement", - "src": "7452:48:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 441, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 437, - "name": "isExtension", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51, - "src": "7510:11:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 439, - "indexExpression": { - "argumentTypes": null, - "id": 438, - "name": "extension", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 424, - "src": "7522:9:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "7510:22:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "66616c7365", - "id": 440, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7535:5:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "src": "7510:30:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 442, - "nodeType": "ExpressionStatement", - "src": "7510:30:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 452, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 443, - "name": "extensions", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 43, - "src": "7550:10:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage", - "typeString": "contract Extension[] storage ref" - } - }, - "id": 445, - "indexExpression": { - "argumentTypes": null, - "id": 444, - "name": "extensionIndex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 422, - "src": "7561:14:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "7550:26:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 446, - "name": "extensions", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 43, - "src": "7579:10:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage", - "typeString": "contract Extension[] storage ref" - } - }, - "id": 451, - "indexExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 450, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 447, - "name": "extensions", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 43, - "src": "7590:10:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage", - "typeString": "contract Extension[] storage ref" - } - }, - "id": 448, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "7590:17:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 449, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7610:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "7590:21:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "7579:33:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "src": "7550:62:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "id": 453, - "nodeType": "ExpressionStatement", - "src": "7550:62:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 457, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "--", - "prefix": false, - "src": "7622:19:1", - "subExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 454, - "name": "extensions", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 43, - "src": "7622:10:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage", - "typeString": "contract Extension[] storage ref" - } - }, - "id": 456, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "7622:17:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 458, - "nodeType": "ExpressionStatement", - "src": "7622:19:1" - } - ] - }, - "id": 460, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [], - "id": 427, - "modifierName": { - "argumentTypes": null, - "id": 426, - "name": "onlyWallet", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 74, - "src": "7357:10:1", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "7357:10:1" - } - ], - "name": "removeExtension", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 425, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 422, - "name": "extensionIndex", - "nodeType": "VariableDeclaration", - "scope": 460, - "src": "7289:22:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 421, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "7289:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 424, - "name": "extension", - "nodeType": "VariableDeclaration", - "scope": 460, - "src": "7313:19:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - }, - "typeName": { - "contractScope": null, - "id": 423, - "name": "Extension", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 18, - "src": "7313:9:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "7288:45:1" - }, - "payable": false, - "returnParameters": { - "id": 428, - "nodeType": "ParameterList", - "parameters": [], - "src": "7372:0:1" - }, - "scope": 963, - "src": "7264:384:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 509, - "nodeType": "Block", - "src": "8102:383:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 474, - "name": "isOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 47, - "src": "8190:7:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 477, - "indexExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 475, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2089, - "src": "8198:3:1", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 476, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "8198:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8190:19:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 473, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "8182:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 478, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8182:28:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 479, - "nodeType": "ExpressionStatement", - "src": "8182:28:1" - }, - { - "assignments": [ - 481 - ], - "declarations": [ - { - "constant": false, - "id": 481, - "name": "transactionHash", - "nodeType": "VariableDeclaration", - "scope": 510, - "src": "8220:23:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 480, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "8220:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 489, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 483, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 462, - "src": "8265:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 484, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 464, - "src": "8269:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 485, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 466, - "src": "8276:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "id": 486, - "name": "operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 468, - "src": "8282:9:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - { - "argumentTypes": null, - "id": 487, - "name": "nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 37, - "src": "8293:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 482, - "name": "getTransactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 852, - "src": "8246:18:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$61_$_t_uint256_$returns$_t_bytes32_$", - "typeString": "function (address,uint256,bytes memory,enum GnosisSafe.Operation,uint256) view returns (bytes32)" - } - }, - "id": 488, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8246:53:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "8220:79:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 497, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "8379:41:1", - "subExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 491, - "name": "isConfirmed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 57, - "src": "8380:11:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$", - "typeString": "mapping(address => mapping(bytes32 => bool))" - } - }, - "id": 494, - "indexExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 492, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2089, - "src": "8392:3:1", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 493, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "8392:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8380:23:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 496, - "indexExpression": { - "argumentTypes": null, - "id": 495, - "name": "transactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 481, - "src": "8404:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8380:40:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 490, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "8371:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 498, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8371:50:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 499, - "nodeType": "ExpressionStatement", - "src": "8371:50:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 507, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 500, - "name": "isConfirmed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 57, - "src": "8431:11:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$", - "typeString": "mapping(address => mapping(bytes32 => bool))" - } - }, - "id": 504, - "indexExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 501, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2089, - "src": "8443:3:1", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 502, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "8443:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8431:23:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 505, - "indexExpression": { - "argumentTypes": null, - "id": 503, - "name": "transactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 481, - "src": "8455:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "8431:40:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 506, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8474:4:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "8431:47:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 508, - "nodeType": "ExpressionStatement", - "src": "8431:47:1" - } - ] - }, - "id": 510, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "confirmTransaction", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 471, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 462, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 510, - "src": "8007:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 461, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "8007:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 464, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 510, - "src": "8019:13:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 463, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "8019:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 466, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 510, - "src": "8034:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 465, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "8034:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 468, - "name": "operation", - "nodeType": "VariableDeclaration", - "scope": 510, - "src": "8046:19:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - }, - "typeName": { - "contractScope": null, - "id": 467, - "name": "Operation", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 61, - "src": "8046:9:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 470, - "name": "_nonce", - "nodeType": "VariableDeclaration", - "scope": 510, - "src": "8067:14:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 469, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "8067:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "8006:76:1" - }, - "payable": false, - "returnParameters": { - "id": 472, - "nodeType": "ParameterList", - "parameters": [], - "src": "8102:0:1" - }, - "scope": 963, - "src": "7979:506:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 697, - "nodeType": "Block", - "src": "9404:1349:1", - "statements": [ - { - "assignments": [ - 537 - ], - "declarations": [ - { - "constant": false, - "id": 537, - "name": "transactionHash", - "nodeType": "VariableDeclaration", - "scope": 698, - "src": "9414:23:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 536, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "9414:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 545, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 539, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 512, - "src": "9459:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 540, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 514, - "src": "9463:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 541, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 516, - "src": "9470:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "id": 542, - "name": "operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 518, - "src": "9476:9:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - { - "argumentTypes": null, - "id": 543, - "name": "nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 37, - "src": "9487:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 538, - "name": "getTransactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 852, - "src": "9440:18:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$61_$_t_uint256_$returns$_t_bytes32_$", - "typeString": "function (address,uint256,bytes memory,enum GnosisSafe.Operation,uint256) view returns (bytes32)" - } - }, - "id": 544, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9440:53:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "9414:79:1" - }, - { - "assignments": [ - 547 - ], - "declarations": [ - { - "constant": false, - "id": 547, - "name": "lastOwner", - "nodeType": "VariableDeclaration", - "scope": 698, - "src": "9555:17:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 546, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "9555:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 551, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30", - "id": 549, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9583:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 548, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "9575:7:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 550, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9575:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "9555:30:1" - }, - { - "assignments": [], - "declarations": [ - { - "constant": false, - "id": 553, - "name": "currentOwner", - "nodeType": "VariableDeclaration", - "scope": 698, - "src": "9595:20:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 552, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "9595:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 554, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "9595:20:1" - }, - { - "assignments": [], - "declarations": [ - { - "constant": false, - "id": 556, - "name": "i", - "nodeType": "VariableDeclaration", - "scope": 698, - "src": "9625:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 555, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "9625:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 557, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "9625:9:1" - }, - { - "assignments": [ - 559 - ], - "declarations": [ - { - "constant": false, - "id": 559, - "name": "j", - "nodeType": "VariableDeclaration", - "scope": 698, - "src": "9644:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 558, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "9644:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 561, - "initialValue": { - "argumentTypes": null, - "hexValue": "30", - "id": 560, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9656:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "9644:13:1" - }, - { - "body": { - "id": 648, - "nodeType": "Block", - "src": "9741:619:1", - "statements": [ - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 581, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 575, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 572, - "name": "indices", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 533, - "src": "9843:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", - "typeString": "uint256[] memory" - } - }, - "id": 573, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "9843:14:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "id": 574, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 559, - "src": "9860:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "9843:18:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 580, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 576, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "9865:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 577, - "name": "indices", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 533, - "src": "9870:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", - "typeString": "uint256[] memory" - } - }, - "id": 579, - "indexExpression": { - "argumentTypes": null, - "id": 578, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 559, - "src": "9878:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9870:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "9865:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "9843:37:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "expression": { - "argumentTypes": null, - "id": 629, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 610, - "name": "currentOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 553, - "src": "10155:12:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 612, - "name": "transactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 537, - "src": "10180:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 613, - "name": "v", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 521, - "src": "10197:1:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", - "typeString": "uint8[] memory" - } - }, - "id": 617, - "indexExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 616, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 614, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "10199:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "id": 615, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 559, - "src": "10201:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "10199:3:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "10197:6:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 618, - "name": "r", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 524, - "src": "10205:1:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[] memory" - } - }, - "id": 622, - "indexExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 621, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 619, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "10207:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "id": 620, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 559, - "src": "10209:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "10207:3:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "10205:6:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 623, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 527, - "src": "10213:1:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[] memory" - } - }, - "id": 627, - "indexExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 626, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 624, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "10215:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "id": 625, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 559, - "src": "10217:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "10215:3:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "10213:6:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 611, - "name": "ecrecover", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2082, - "src": "10170:9:1", - "typeDescriptions": { - "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", - "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)" - } - }, - "id": 628, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "10170:50:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "10155:65:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 630, - "nodeType": "ExpressionStatement", - "src": "10155:65:1" - }, - "id": 631, - "nodeType": "IfStatement", - "src": "9839:381:1", - "trueBody": { - "id": 609, - "nodeType": "Block", - "src": "9882:177:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 596, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 588, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 583, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2089, - "src": "9908:3:1", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 584, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "9908:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 585, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 530, - "src": "9922:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 587, - "indexExpression": { - "argumentTypes": null, - "id": 586, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 559, - "src": "9930:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9922:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "9908:24:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "||", - "rightExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 589, - "name": "isConfirmed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 57, - "src": "9936:11:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$", - "typeString": "mapping(address => mapping(bytes32 => bool))" - } - }, - "id": 593, - "indexExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 590, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 530, - "src": "9948:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 592, - "indexExpression": { - "argumentTypes": null, - "id": 591, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 559, - "src": "9956:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9948:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9936:23:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 595, - "indexExpression": { - "argumentTypes": null, - "id": 594, - "name": "transactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 537, - "src": "9960:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9936:40:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "9908:68:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 582, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "9900:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 597, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9900:77:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 598, - "nodeType": "ExpressionStatement", - "src": "9900:77:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 603, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 599, - "name": "currentOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 553, - "src": "9995:12:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 600, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 530, - "src": "10010:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 602, - "indexExpression": { - "argumentTypes": null, - "id": 601, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 559, - "src": "10018:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "10010:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "9995:25:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 604, - "nodeType": "ExpressionStatement", - "src": "9995:25:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 607, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 605, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 559, - "src": "10038:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "+=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "31", - "id": 606, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "10043:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "10038:6:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 608, - "nodeType": "ExpressionStatement", - "src": "10038:6:1" - } - ] - } - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 633, - "name": "isOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 47, - "src": "10242:7:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 635, - "indexExpression": { - "argumentTypes": null, - "id": 634, - "name": "currentOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 553, - "src": "10250:12:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "10242:21:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 632, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "10234:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 636, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "10234:30:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 637, - "nodeType": "ExpressionStatement", - "src": "10234:30:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 641, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 639, - "name": "currentOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 553, - "src": "10286:12:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "id": 640, - "name": "lastOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 547, - "src": "10301:9:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "10286:24:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 638, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "10278:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 642, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "10278:33:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 643, - "nodeType": "ExpressionStatement", - "src": "10278:33:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 646, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 644, - "name": "lastOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 547, - "src": "10325:9:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 645, - "name": "currentOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 553, - "src": "10337:12:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "10325:24:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 647, - "nodeType": "ExpressionStatement", - "src": "10325:24:1" - } - ] - }, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 568, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 566, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "9721:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, - "id": 567, - "name": "threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 35, - "src": "9725:9:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "9721:13:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 649, - "initializationExpression": { - "expression": { - "argumentTypes": null, - "id": 564, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 562, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "9714:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "30", - "id": 563, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9718:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "9714:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 565, - "nodeType": "ExpressionStatement", - "src": "9714:5:1" - }, - "loopExpression": { - "expression": { - "argumentTypes": null, - "id": 570, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "9736:3:1", - "subExpression": { - "argumentTypes": null, - "id": 569, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "9736:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 571, - "nodeType": "ExpressionStatement", - "src": "9736:3:1" - }, - "nodeType": "ForStatement", - "src": "9709:651:1" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 653, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 650, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 530, - "src": "10419:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 651, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "10419:14:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 652, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "10436:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "10419:18:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 685, - "nodeType": "IfStatement", - "src": "10415:216:1", - "trueBody": { - "id": 684, - "nodeType": "Block", - "src": "10439:192:1", - "statements": [ - { - "body": { - "id": 682, - "nodeType": "Block", - "src": "10490:131:1", - "statements": [ - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 670, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 665, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2089, - "src": "10512:3:1", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 666, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "10512:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 667, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 530, - "src": "10526:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 669, - "indexExpression": { - "argumentTypes": null, - "id": 668, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "10534:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "10526:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "10512:24:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 681, - "nodeType": "IfStatement", - "src": "10508:98:1", - "trueBody": { - "expression": { - "argumentTypes": null, - "id": 679, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 671, - "name": "isConfirmed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 57, - "src": "10558:11:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$", - "typeString": "mapping(address => mapping(bytes32 => bool))" - } - }, - "id": 676, - "indexExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 672, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 530, - "src": "10570:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 674, - "indexExpression": { - "argumentTypes": null, - "id": 673, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "10578:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "10570:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "10558:23:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 677, - "indexExpression": { - "argumentTypes": null, - "id": 675, - "name": "transactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 537, - "src": "10582:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "10558:40:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "66616c7365", - "id": 678, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "10601:5:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "src": "10558:48:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 680, - "nodeType": "ExpressionStatement", - "src": "10558:48:1" - } - } - ] - }, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 661, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 658, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "10465:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 659, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 530, - "src": "10469:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 660, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "10469:14:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "10465:18:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 683, - "initializationExpression": { - "expression": { - "argumentTypes": null, - "id": 656, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 654, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "10458:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "30", - "id": 655, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "10462:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "10458:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 657, - "nodeType": "ExpressionStatement", - "src": "10458:5:1" - }, - "loopExpression": { - "expression": { - "argumentTypes": null, - "id": 663, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "10485:3:1", - "subExpression": { - "argumentTypes": null, - "id": 662, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "10485:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 664, - "nodeType": "ExpressionStatement", - "src": "10485:3:1" - }, - "nodeType": "ForStatement", - "src": "10453:168:1" - } - ] - } - }, - { - "expression": { - "argumentTypes": null, - "id": 688, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 686, - "name": "nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 37, - "src": "10691:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "+=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "31", - "id": 687, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "10700:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "10691:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 689, - "nodeType": "ExpressionStatement", - "src": "10691:10:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 691, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 512, - "src": "10719:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 692, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 514, - "src": "10723:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 693, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 516, - "src": "10730:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "id": 694, - "name": "operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 518, - "src": "10736:9:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - ], - "id": 690, - "name": "execute", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 791, - "src": "10711:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$61_$returns$__$", - "typeString": "function (address,uint256,bytes memory,enum GnosisSafe.Operation)" - } - }, - "id": 695, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "10711:35:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 696, - "nodeType": "ExpressionStatement", - "src": "10711:35:1" - } - ] - }, - "id": 698, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "executeTransaction", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 534, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 512, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 698, - "src": "9250:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 511, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "9250:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 514, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 698, - "src": "9262:13:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 513, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "9262:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 516, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 698, - "src": "9277:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 515, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "9277:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 518, - "name": "operation", - "nodeType": "VariableDeclaration", - "scope": 698, - "src": "9289:19:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - }, - "typeName": { - "contractScope": null, - "id": 517, - "name": "Operation", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 61, - "src": "9289:9:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 521, - "name": "v", - "nodeType": "VariableDeclaration", - "scope": 698, - "src": "9310:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", - "typeString": "uint8[] memory" - }, - "typeName": { - "baseType": { - "id": 519, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "9310:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "id": 520, - "length": null, - "nodeType": "ArrayTypeName", - "src": "9310:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr", - "typeString": "uint8[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 524, - "name": "r", - "nodeType": "VariableDeclaration", - "scope": 698, - "src": "9321:11:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[] memory" - }, - "typeName": { - "baseType": { - "id": 522, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "9321:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 523, - "length": null, - "nodeType": "ArrayTypeName", - "src": "9321:9:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", - "typeString": "bytes32[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 527, - "name": "s", - "nodeType": "VariableDeclaration", - "scope": 698, - "src": "9334:11:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[] memory" - }, - "typeName": { - "baseType": { - "id": 525, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "9334:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 526, - "length": null, - "nodeType": "ArrayTypeName", - "src": "9334:9:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", - "typeString": "bytes32[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 530, - "name": "_owners", - "nodeType": "VariableDeclaration", - "scope": 698, - "src": "9347:17:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - }, - "typeName": { - "baseType": { - "id": 528, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "9347:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 529, - "length": null, - "nodeType": "ArrayTypeName", - "src": "9347:9:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 533, - "name": "indices", - "nodeType": "VariableDeclaration", - "scope": 698, - "src": "9366:17:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", - "typeString": "uint256[] memory" - }, - "typeName": { - "baseType": { - "id": 531, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "9366:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 532, - "length": null, - "nodeType": "ArrayTypeName", - "src": "9366:9:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", - "typeString": "uint256[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "9249:135:1" - }, - "payable": false, - "returnParameters": { - "id": 535, - "nodeType": "ParameterList", - "parameters": [], - "src": "9404:0:1" - }, - "scope": 963, - "src": "9222:1531:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 736, - "nodeType": "Block", - "src": "11304:338:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 712, - "name": "isExtension", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51, - "src": "11374:11:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 714, - "indexExpression": { - "argumentTypes": null, - "id": 713, - "name": "extension", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 708, - "src": "11386:9:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "11374:22:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 711, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "11366:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 715, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11366:31:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 716, - "nodeType": "ExpressionStatement", - "src": "11366:31:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 720, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2089, - "src": "11487:3:1", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 721, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "11487:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 722, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 700, - "src": "11499:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 723, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 702, - "src": "11503:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 724, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 704, - "src": "11510:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "id": 725, - "name": "operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 706, - "src": "11516:9:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - ], - "expression": { - "argumentTypes": null, - "id": 718, - "name": "extension", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 708, - "src": "11464:9:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "id": 719, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "isExecutable", - "nodeType": "MemberAccess", - "referencedDeclaration": 17, - "src": "11464:22:1", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$61_$returns$_t_bool_$", - "typeString": "function (address,address,uint256,bytes memory,enum GnosisSafe.Operation) external returns (bool)" - } - }, - "id": 726, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11464:62:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 717, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "11456:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 727, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11456:71:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 728, - "nodeType": "ExpressionStatement", - "src": "11456:71:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 730, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 700, - "src": "11608:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 731, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 702, - "src": "11612:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 732, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 704, - "src": "11619:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "id": 733, - "name": "operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 706, - "src": "11625:9:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - ], - "id": 729, - "name": "execute", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 791, - "src": "11600:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$61_$returns$__$", - "typeString": "function (address,uint256,bytes memory,enum GnosisSafe.Operation)" - } - }, - "id": 734, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11600:35:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 735, - "nodeType": "ExpressionStatement", - "src": "11600:35:1" - } - ] - }, - "id": 737, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "executeExtension", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 709, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 700, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 737, - "src": "11204:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 699, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "11204:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 702, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 737, - "src": "11216:13:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 701, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "11216:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 704, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 737, - "src": "11231:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 703, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "11231:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 706, - "name": "operation", - "nodeType": "VariableDeclaration", - "scope": 737, - "src": "11243:19:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - }, - "typeName": { - "contractScope": null, - "id": 705, - "name": "Operation", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 61, - "src": "11243:9:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 708, - "name": "extension", - "nodeType": "VariableDeclaration", - "scope": 737, - "src": "11264:19:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - }, - "typeName": { - "contractScope": null, - "id": 707, - "name": "Extension", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 18, - "src": "11264:9:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "11203:81:1" - }, - "payable": false, - "returnParameters": { - "id": 710, - "nodeType": "ParameterList", - "parameters": [], - "src": "11304:0:1" - }, - "scope": 963, - "src": "11178:464:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 790, - "nodeType": "Block", - "src": "11746:367:1", - "statements": [ - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - }, - "id": 751, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 748, - "name": "operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 745, - "src": "11760:9:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 749, - "name": "Operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 61, - "src": "11773:9:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_Operation_$61_$", - "typeString": "type(enum GnosisSafe.Operation)" - } - }, - "id": 750, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "Call", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "11773:14:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "src": "11760:27:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - }, - "id": 763, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 760, - "name": "operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 745, - "src": "11857:9:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 761, - "name": "Operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 61, - "src": "11870:9:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_Operation_$61_$", - "typeString": "type(enum GnosisSafe.Operation)" - } - }, - "id": 762, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "DelegateCall", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "11870:22:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "src": "11857:35:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "id": 787, - "nodeType": "Block", - "src": "11959:148:1", - "statements": [ - { - "assignments": [ - 772 - ], - "declarations": [ - { - "constant": false, - "id": 772, - "name": "newContract", - "nodeType": "VariableDeclaration", - "scope": 791, - "src": "11973:19:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 771, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "11973:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 776, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 774, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 743, - "src": "12009:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 773, - "name": "executeCreate", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 824, - "src": "11995:13:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$_t_address_$", - "typeString": "function (bytes memory) returns (address)" - } - }, - "id": 775, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11995:19:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "11973:41:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 780, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 778, - "name": "newContract", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 772, - "src": "12036:11:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 779, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "12051:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "12036:16:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 777, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "12028:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 781, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "12028:25:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 782, - "nodeType": "ExpressionStatement", - "src": "12028:25:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 784, - "name": "newContract", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 772, - "src": "12084:11:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 783, - "name": "ContractCreation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 25, - "src": "12067:16:1", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", - "typeString": "function (address)" - } - }, - "id": 785, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "12067:29:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 786, - "nodeType": "ExpressionStatement", - "src": "12067:29:1" - } - ] - }, - "id": 788, - "nodeType": "IfStatement", - "src": "11853:254:1", - "trueBody": { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 766, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 739, - "src": "11934:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 767, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 743, - "src": "11938:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 765, - "name": "executeDelegateCall", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 815, - "src": "11914:19:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bool_$", - "typeString": "function (address,bytes memory) returns (bool)" - } - }, - "id": 768, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11914:29:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 764, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "11906:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 769, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11906:38:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 770, - "nodeType": "ExpressionStatement", - "src": "11906:38:1" - } - }, - "id": 789, - "nodeType": "IfStatement", - "src": "11756:351:1", - "trueBody": { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 754, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 739, - "src": "11821:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 755, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 741, - "src": "11825:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 756, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 743, - "src": "11832:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 753, - "name": "executeCall", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 804, - "src": "11809:11:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$", - "typeString": "function (address,uint256,bytes memory) returns (bool)" - } - }, - "id": 757, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11809:28:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 752, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "11801:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 758, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11801:37:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 759, - "nodeType": "ExpressionStatement", - "src": "11801:37:1" - } - } - ] - }, - "id": 791, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "execute", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 746, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 739, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 791, - "src": "11665:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 738, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "11665:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 741, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 791, - "src": "11677:13:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 740, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "11677:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 743, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 791, - "src": "11692:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 742, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "11692:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 745, - "name": "operation", - "nodeType": "VariableDeclaration", - "scope": 791, - "src": "11704:19:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - }, - "typeName": { - "contractScope": null, - "id": 744, - "name": "Operation", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 61, - "src": "11704:9:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "11664:60:1" - }, - "payable": false, - "returnParameters": { - "id": 747, - "nodeType": "ParameterList", - "parameters": [], - "src": "11746:0:1" - }, - "scope": 963, - "src": "11648:465:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 803, - "nodeType": "Block", - "src": "12231:119:1", - "statements": [ - { - "externalReferences": [ - { - "data": { - "declaration": 797, - "isOffset": false, - "isSlot": false, - "src": "12303:4:1", - "valueSize": 1 - } - }, - { - "data": { - "declaration": 797, - "isOffset": false, - "isSlot": false, - "src": "12322:4:1", - "valueSize": 1 - } - }, - { - "success": { - "declaration": 800, - "isOffset": false, - "isSlot": false, - "src": "12264:7:1", - "valueSize": 1 - } - }, - { - "to": { - "declaration": 793, - "isOffset": false, - "isSlot": false, - "src": "12288:2:1", - "valueSize": 1 - } - }, - { - "value": { - "declaration": 795, - "isOffset": false, - "isSlot": false, - "src": "12292:5:1", - "valueSize": 1 - } - } - ], - "id": 802, - "nodeType": "InlineAssembly", - "operations": "{\n success := call(not(0), to, value, add(data, 0x20), mload(data), 0, 0)\n}", - "src": "12241:109:1" - } - ] - }, - "id": 804, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "executeCall", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 798, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 793, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 804, - "src": "12140:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 792, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "12140:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 795, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 804, - "src": "12152:13:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 794, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "12152:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 797, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 804, - "src": "12167:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 796, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "12167:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "12139:39:1" - }, - "payable": false, - "returnParameters": { - "id": 801, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 800, - "name": "success", - "nodeType": "VariableDeclaration", - "scope": 804, - "src": "12213:12:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 799, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "12213:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "12212:14:1" - }, - "scope": 963, - "src": "12119:231:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 814, - "nodeType": "Block", - "src": "12461:120:1", - "statements": [ - { - "externalReferences": [ - { - "data": { - "declaration": 808, - "isOffset": false, - "isSlot": false, - "src": "12534:4:1", - "valueSize": 1 - } - }, - { - "data": { - "declaration": 808, - "isOffset": false, - "isSlot": false, - "src": "12553:4:1", - "valueSize": 1 - } - }, - { - "success": { - "declaration": 811, - "isOffset": false, - "isSlot": false, - "src": "12494:7:1", - "valueSize": 1 - } - }, - { - "to": { - "declaration": 806, - "isOffset": false, - "isSlot": false, - "src": "12526:2:1", - "valueSize": 1 - } - } - ], - "id": 813, - "nodeType": "InlineAssembly", - "operations": "{\n success := delegatecall(not(0), to, add(data, 0x20), mload(data), 0, 0)\n}", - "src": "12471:110:1" - } - ] - }, - "id": 815, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "executeDelegateCall", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 809, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 806, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 815, - "src": "12385:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 805, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "12385:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 808, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 815, - "src": "12397:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 807, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "12397:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "12384:24:1" - }, - "payable": false, - "returnParameters": { - "id": 812, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 811, - "name": "success", - "nodeType": "VariableDeclaration", - "scope": 815, - "src": "12443:12:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 810, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "12443:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "12442:14:1" - }, - "scope": 963, - "src": "12356:225:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 823, - "nodeType": "Block", - "src": "12681:103:1", - "statements": [ - { - "externalReferences": [ - { - "data": { - "declaration": 817, - "isOffset": false, - "isSlot": false, - "src": "12762:4:1", - "valueSize": 1 - } - }, - { - "newContract": { - "declaration": 820, - "isOffset": false, - "isSlot": false, - "src": "12714:11:1", - "valueSize": 1 - } - }, - { - "data": { - "declaration": 817, - "isOffset": false, - "isSlot": false, - "src": "12743:4:1", - "valueSize": 1 - } - } - ], - "id": 822, - "nodeType": "InlineAssembly", - "operations": "{\n newContract := create(0, add(data, 0x20), mload(data))\n}", - "src": "12691:93:1" - } - ] - }, - "id": 824, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "executeCreate", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 818, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 817, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 824, - "src": "12610:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 816, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "12610:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "12609:12:1" - }, - "payable": false, - "returnParameters": { - "id": 821, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 820, - "name": "newContract", - "nodeType": "VariableDeclaration", - "scope": 824, - "src": "12656:19:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 819, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "12656:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "12655:21:1" - }, - "scope": 963, - "src": "12587:197:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 851, - "nodeType": "Block", - "src": "13238:87:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30783139", - "id": 841, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "13270:4:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_25_by_1", - "typeString": "int_const 25" - }, - "value": "0x19" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_25_by_1", - "typeString": "int_const 25" - } - ], - "id": 840, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "13265:4:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes1_$", - "typeString": "type(bytes1)" - }, - "typeName": "byte" - }, - "id": 842, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "13265:10:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - } - }, - { - "argumentTypes": null, - "id": 843, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2100, - "src": "13277:4:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - { - "argumentTypes": null, - "id": 844, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 826, - "src": "13283:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 845, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 828, - "src": "13287:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 846, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 830, - "src": "13294:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "id": 847, - "name": "operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 832, - "src": "13300:9:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - { - "argumentTypes": null, - "id": 848, - "name": "_nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 834, - "src": "13311:6:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - }, - { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 839, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2083, - "src": "13255:9:1", - "typeDescriptions": { - "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", - "typeString": "function () pure returns (bytes32)" - } - }, - "id": 849, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "13255:63:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "functionReturnParameters": 838, - "id": 850, - "nodeType": "Return", - "src": "13248:70:1" - } - ] - }, - "id": 852, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "getTransactionHash", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 835, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 826, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 852, - "src": "13104:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 825, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "13104:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 828, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 852, - "src": "13116:13:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 827, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "13116:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 830, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 852, - "src": "13131:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 829, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "13131:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 832, - "name": "operation", - "nodeType": "VariableDeclaration", - "scope": 852, - "src": "13143:19:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - }, - "typeName": { - "contractScope": null, - "id": 831, - "name": "Operation", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 61, - "src": "13143:9:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 834, - "name": "_nonce", - "nodeType": "VariableDeclaration", - "scope": 852, - "src": "13164:14:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 833, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "13164:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "13103:76:1" - }, - "payable": false, - "returnParameters": { - "id": 838, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 837, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 852, - "src": "13225:7:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 836, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "13225:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "13224:9:1" - }, - "scope": 963, - "src": "13076:249:1", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 860, - "nodeType": "Block", - "src": "13488:30:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 858, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "13505:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "functionReturnParameters": 857, - "id": 859, - "nodeType": "Return", - "src": "13498:13:1" - } - ] - }, - "id": 861, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "getOwners", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 853, - "nodeType": "ParameterList", - "parameters": [], - "src": "13425:2:1" - }, - "payable": false, - "returnParameters": { - "id": 857, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 856, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 861, - "src": "13473:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - }, - "typeName": { - "baseType": { - "id": 854, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "13473:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 855, - "length": null, - "nodeType": "ArrayTypeName", - "src": "13473:9:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "13472:11:1" - }, - "scope": 963, - "src": "13407:111:1", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 869, - "nodeType": "Block", - "src": "13690:34:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 867, - "name": "extensions", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 43, - "src": "13707:10:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage", - "typeString": "contract Extension[] storage ref" - } - }, - "functionReturnParameters": 866, - "id": 868, - "nodeType": "Return", - "src": "13700:17:1" - } - ] - }, - "id": 870, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "getExtensions", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 862, - "nodeType": "ParameterList", - "parameters": [], - "src": "13625:2:1" - }, - "payable": false, - "returnParameters": { - "id": 866, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 865, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 870, - "src": "13673:11:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_memory_ptr", - "typeString": "contract Extension[] memory" - }, - "typeName": { - "baseType": { - "contractScope": null, - "id": 863, - "name": "Extension", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 18, - "src": "13673:9:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "id": 864, - "length": null, - "nodeType": "ArrayTypeName", - "src": "13673:11:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage_ptr", - "typeString": "contract Extension[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "13672:13:1" - }, - "scope": 963, - "src": "13603:121:1", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 901, - "nodeType": "Block", - "src": "13998:162:1", - "statements": [ - { - "body": { - "id": 899, - "nodeType": "Block", - "src": "14049:105:1", - "statements": [ - { - "condition": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 888, - "name": "isConfirmed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 57, - "src": "14067:11:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$", - "typeString": "mapping(address => mapping(bytes32 => bool))" - } - }, - "id": 892, - "indexExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 889, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "14079:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 891, - "indexExpression": { - "argumentTypes": null, - "id": 890, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 878, - "src": "14086:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "14079:9:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "14067:22:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 894, - "indexExpression": { - "argumentTypes": null, - "id": 893, - "name": "transactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 872, - "src": "14090:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "14067:39:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 898, - "nodeType": "IfStatement", - "src": "14063:80:1", - "trueBody": { - "expression": { - "argumentTypes": null, - "id": 896, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "14124:19:1", - "subExpression": { - "argumentTypes": null, - "id": 895, - "name": "confirmationCount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 875, - "src": "14124:17:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 897, - "nodeType": "ExpressionStatement", - "src": "14124:19:1" - } - } - ] - }, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 884, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 881, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 878, - "src": "14025:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 882, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "14029:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 883, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "14029:13:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "14025:17:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 900, - "initializationExpression": { - "assignments": [ - 878 - ], - "declarations": [ - { - "constant": false, - "id": 878, - "name": "i", - "nodeType": "VariableDeclaration", - "scope": 902, - "src": "14013:6:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 877, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "14013:4:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 880, - "initialValue": { - "argumentTypes": null, - "hexValue": "30", - "id": 879, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "14022:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "14013:10:1" - }, - "loopExpression": { - "expression": { - "argumentTypes": null, - "id": 886, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "14044:3:1", - "subExpression": { - "argumentTypes": null, - "id": 885, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 878, - "src": "14044:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 887, - "nodeType": "ExpressionStatement", - "src": "14044:3:1" - }, - "nodeType": "ForStatement", - "src": "14008:146:1" - } - ] - }, - "id": 902, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "getConfirmationCount", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 873, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 872, - "name": "transactionHash", - "nodeType": "VariableDeclaration", - "scope": 902, - "src": "13900:23:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 871, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "13900:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "13899:25:1" - }, - "payable": false, - "returnParameters": { - "id": 876, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 875, - "name": "confirmationCount", - "nodeType": "VariableDeclaration", - "scope": 902, - "src": "13970:22:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 874, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "13970:4:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "13969:24:1" - }, - "scope": 963, - "src": "13870:290:1", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 961, - "nodeType": "Block", - "src": "14432:407:1", - "statements": [ - { - "assignments": [ - 911 - ], - "declarations": [ - { - "constant": false, - "id": 911, - "name": "confirmationCount", - "nodeType": "VariableDeclaration", - "scope": 962, - "src": "14442:22:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 910, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "14442:4:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 915, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 913, - "name": "transactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 904, - "src": "14488:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 912, - "name": "getConfirmationCount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 902, - "src": "14467:20:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$", - "typeString": "function (bytes32) view returns (uint256)" - } - }, - "id": 914, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "14467:37:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "14442:62:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 922, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 916, - "name": "confirmingOwners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 908, - "src": "14514:16:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 920, - "name": "confirmationCount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 911, - "src": "14547:17:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 919, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "NewExpression", - "src": "14533:13:1", - "typeDescriptions": { - "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_$", - "typeString": "function (uint256) pure returns (address[] memory)" - }, - "typeName": { - "baseType": { - "id": 917, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "14537:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 918, - "length": null, - "nodeType": "ArrayTypeName", - "src": "14537:9:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[] storage pointer" - } - } - }, - "id": 921, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "14533:32:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory", - "typeString": "address[] memory" - } - }, - "src": "14514:51:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 923, - "nodeType": "ExpressionStatement", - "src": "14514:51:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 926, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 924, - "name": "confirmationCount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 911, - "src": "14575:17:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "30", - "id": 925, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "14595:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "14575:21:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 927, - "nodeType": "ExpressionStatement", - "src": "14575:21:1" - }, - { - "body": { - "id": 959, - "nodeType": "Block", - "src": "14647:186:1", - "statements": [ - { - "condition": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 939, - "name": "isConfirmed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 57, - "src": "14665:11:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$", - "typeString": "mapping(address => mapping(bytes32 => bool))" - } - }, - "id": 943, - "indexExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 940, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "14677:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 942, - "indexExpression": { - "argumentTypes": null, - "id": 941, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 929, - "src": "14684:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "14677:9:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "14665:22:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 945, - "indexExpression": { - "argumentTypes": null, - "id": 944, - "name": "transactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 904, - "src": "14688:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "14665:39:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 958, - "nodeType": "IfStatement", - "src": "14661:162:1", - "trueBody": { - "id": 957, - "nodeType": "Block", - "src": "14706:117:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 952, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 946, - "name": "confirmingOwners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 908, - "src": "14724:16:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 948, - "indexExpression": { - "argumentTypes": null, - "id": 947, - "name": "confirmationCount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 911, - "src": "14741:17:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "14724:35:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 949, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "14762:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 951, - "indexExpression": { - "argumentTypes": null, - "id": 950, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 929, - "src": "14769:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "14762:9:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "14724:47:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 953, - "nodeType": "ExpressionStatement", - "src": "14724:47:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 955, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "14789:19:1", - "subExpression": { - "argumentTypes": null, - "id": 954, - "name": "confirmationCount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 911, - "src": "14789:17:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 956, - "nodeType": "ExpressionStatement", - "src": "14789:19:1" - } - ] - } - } - ] - }, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 935, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 932, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 929, - "src": "14623:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 933, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "14627:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 934, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "14627:13:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "14623:17:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 960, - "initializationExpression": { - "assignments": [ - 929 - ], - "declarations": [ - { - "constant": false, - "id": 929, - "name": "i", - "nodeType": "VariableDeclaration", - "scope": 962, - "src": "14611:6:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 928, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "14611:4:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 931, - "initialValue": { - "argumentTypes": null, - "hexValue": "30", - "id": 930, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "14620:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "14611:10:1" - }, - "loopExpression": { - "expression": { - "argumentTypes": null, - "id": 937, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "14642:3:1", - "subExpression": { - "argumentTypes": null, - "id": 936, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 929, - "src": "14642:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 938, - "nodeType": "ExpressionStatement", - "src": "14642:3:1" - }, - "nodeType": "ForStatement", - "src": "14606:227:1" - } - ] - }, - "id": 962, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "getConfirmingOwners", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 905, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 904, - "name": "transactionHash", - "nodeType": "VariableDeclaration", - "scope": 962, - "src": "14330:23:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 903, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "14330:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "14329:25:1" - }, - "payable": false, - "returnParameters": { - "id": 909, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 908, - "name": "confirmingOwners", - "nodeType": "VariableDeclaration", - "scope": 962, - "src": "14400:26:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - }, - "typeName": { - "baseType": { - "id": 906, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "14400:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 907, - "length": null, - "nodeType": "ArrayTypeName", - "src": "14400:9:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "14399:28:1" - }, - "scope": 963, - "src": "14301:538:1", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - } - ], - "scope": 964, - "src": "218:14623:1" - } - ], - "src": "0:14842:1" - }, - "legacyAST": { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", - "exportedSymbols": { - "GnosisSafe": [ - 963 - ] - }, - "id": 964, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 20, - "literals": [ - "solidity", - "0.4", - ".19" - ], - "nodeType": "PragmaDirective", - "src": "0:23:1" - }, - { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Extension.sol", - "file": "./Extension.sol", - "id": 21, - "nodeType": "ImportDirective", - "scope": 964, - "sourceUnit": 19, - "src": "24:25:1", - "symbolAliases": [], - "unitAlias": "" - }, - { - "baseContracts": [], - "contractDependencies": [], - "contractKind": "contract", - "documentation": "@title Gnosis Safe - A multisignature wallet with support for confirmations using signed messages based on ERC191.\n @author Stefan George - ", - "fullyImplemented": true, - "id": 963, - "linearizedBaseContracts": [ - 963 - ], - "name": "GnosisSafe", - "nodeType": "ContractDefinition", - "nodes": [ - { - "anonymous": false, - "id": 25, - "name": "ContractCreation", - "nodeType": "EventDefinition", - "parameters": { - "id": 24, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 23, - "indexed": false, - "name": "newContract", - "nodeType": "VariableDeclaration", - "scope": 25, - "src": "268:19:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 22, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "268:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "267:21:1" - }, - "src": "245:44:1" - }, - { - "constant": true, - "id": 28, - "name": "NAME", - "nodeType": "VariableDeclaration", - "scope": 963, - "src": "295:43:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_string_memory", - "typeString": "string memory" - }, - "typeName": { - "id": 26, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "295:6:1", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string storage pointer" - } - }, - "value": { - "argumentTypes": null, - "hexValue": "476e6f7369732053616665", - "id": 27, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "325:13:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_72ec6775392f699e8ffd72b7c600556d49bdc746bf22bce93d3ae6019cdaff63", - "typeString": "literal_string \"Gnosis Safe\"" - }, - "value": "Gnosis Safe" - }, - "visibility": "public" - }, - { - "constant": true, - "id": 31, - "name": "VERSION", - "nodeType": "VariableDeclaration", - "scope": 963, - "src": "344:40:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_string_memory", - "typeString": "string memory" - }, - "typeName": { - "id": 29, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "344:6:1", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string storage pointer" - } - }, - "value": { - "argumentTypes": null, - "hexValue": "302e302e31", - "id": 30, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "377:7:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", - "typeString": "literal_string \"0.0.1\"" - }, - "value": "0.0.1" - }, - "visibility": "public" - }, - { - "constant": false, - "id": 33, - "name": "masterCopy", - "nodeType": "VariableDeclaration", - "scope": 963, - "src": "391:21:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - }, - "typeName": { - "contractScope": null, - "id": 32, - "name": "GnosisSafe", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 963, - "src": "391:10:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 35, - "name": "threshold", - "nodeType": "VariableDeclaration", - "scope": 963, - "src": "418:22:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 34, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "418:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "id": 37, - "name": "nonce", - "nodeType": "VariableDeclaration", - "scope": 963, - "src": "446:20:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 36, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "446:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "id": 40, - "name": "owners", - "nodeType": "VariableDeclaration", - "scope": 963, - "src": "472:23:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - }, - "typeName": { - "baseType": { - "id": 38, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "472:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 39, - "length": null, - "nodeType": "ArrayTypeName", - "src": "472:9:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[] storage pointer" - } - }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "id": 43, - "name": "extensions", - "nodeType": "VariableDeclaration", - "scope": 963, - "src": "501:29:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage", - "typeString": "contract Extension[] storage ref" - }, - "typeName": { - "baseType": { - "contractScope": null, - "id": 41, - "name": "Extension", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 18, - "src": "501:9:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "id": 42, - "length": null, - "nodeType": "ArrayTypeName", - "src": "501:11:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage_ptr", - "typeString": "contract Extension[] storage pointer" - } - }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "id": 47, - "name": "isOwner", - "nodeType": "VariableDeclaration", - "scope": 963, - "src": "607:40:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - }, - "typeName": { - "id": 46, - "keyType": { - "id": 44, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "616:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Mapping", - "src": "607:25:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - }, - "valueType": { - "id": 45, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "627:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "id": 51, - "name": "isExtension", - "nodeType": "VariableDeclaration", - "scope": 963, - "src": "729:44:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - }, - "typeName": { - "id": 50, - "keyType": { - "id": 48, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "738:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Mapping", - "src": "729:25:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - }, - "valueType": { - "id": 49, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "749:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "id": 57, - "name": "isConfirmed", - "nodeType": "VariableDeclaration", - "scope": 963, - "src": "892:65:1", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$", - "typeString": "mapping(address => mapping(bytes32 => bool))" - }, - "typeName": { - "id": 56, - "keyType": { - "id": 52, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "901:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Mapping", - "src": "892:46:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$", - "typeString": "mapping(address => mapping(bytes32 => bool))" - }, - "valueType": { - "id": 55, - "keyType": { - "id": 53, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "921:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Mapping", - "src": "912:25:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - }, - "valueType": { - "id": 54, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "932:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - } - }, - "value": null, - "visibility": "public" - }, - { - "canonicalName": "GnosisSafe.Operation", - "id": 61, - "members": [ - { - "id": 58, - "name": "Call", - "nodeType": "EnumValue", - "src": "989:4:1" - }, - { - "id": 59, - "name": "DelegateCall", - "nodeType": "EnumValue", - "src": "1003:12:1" - }, - { - "id": 60, - "name": "Create", - "nodeType": "EnumValue", - "src": "1025:6:1" - } - ], - "name": "Operation", - "nodeType": "EnumDefinition", - "src": "964:73:1" - }, - { - "body": { - "id": 73, - "nodeType": "Block", - "src": "1065:64:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 69, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 64, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2089, - "src": "1083:3:1", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 65, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "1083:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 67, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2100, - "src": "1105:4:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - ], - "id": 66, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "1097:7:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 68, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1097:13:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "1083:27:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 63, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "1075:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 70, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1075:36:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 71, - "nodeType": "ExpressionStatement", - "src": "1075:36:1" - }, - { - "id": 72, - "nodeType": "PlaceholderStatement", - "src": "1121:1:1" - } - ] - }, - "id": 74, - "name": "onlyWallet", - "nodeType": "ModifierDefinition", - "parameters": { - "id": 62, - "nodeType": "ParameterList", - "parameters": [], - "src": "1062:2:1" - }, - "src": "1043:86:1", - "visibility": "internal" - }, - { - "body": { - "id": 77, - "nodeType": "Block", - "src": "1243:8:1", - "statements": [] - }, - "id": 78, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 75, - "nodeType": "ParameterList", - "parameters": [], - "src": "1203:2:1" - }, - "payable": true, - "returnParameters": { - "id": 76, - "nodeType": "ParameterList", - "parameters": [], - "src": "1243:0:1" - }, - "scope": 963, - "src": "1194:57:1", - "stateMutability": "payable", - "superFunction": null, - "visibility": "external" - }, - { - "body": { - "id": 97, - "nodeType": "Block", - "src": "1667:53:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 91, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 81, - "src": "1683:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - { - "argumentTypes": null, - "id": 92, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 83, - "src": "1692:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - { - "argumentTypes": null, - "id": 93, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 85, - "src": "1704:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 94, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 87, - "src": "1708:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - }, - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 90, - "name": "setup", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 187, - "src": "1677:5:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_uint8_$_t_address_$_t_bytes_memory_ptr_$returns$__$", - "typeString": "function (address[] memory,uint8,address,bytes memory)" - } - }, - "id": 95, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1677:36:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 96, - "nodeType": "ExpressionStatement", - "src": "1677:36:1" - } - ] - }, - "id": 98, - "implemented": true, - "isConstructor": true, - "isDeclaredConst": false, - "modifiers": [], - "name": "GnosisSafe", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 88, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 81, - "name": "_owners", - "nodeType": "VariableDeclaration", - "scope": 98, - "src": "1587:17:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - }, - "typeName": { - "baseType": { - "id": 79, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1587:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 80, - "length": null, - "nodeType": "ArrayTypeName", - "src": "1587:9:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 83, - "name": "_threshold", - "nodeType": "VariableDeclaration", - "scope": 98, - "src": "1606:16:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 82, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "1606:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 85, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 98, - "src": "1624:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 84, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1624:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 87, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 98, - "src": "1636:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 86, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "1636:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1586:61:1" - }, - "payable": false, - "returnParameters": { - "id": 89, - "nodeType": "ParameterList", - "parameters": [], - "src": "1667:0:1" - }, - "scope": 963, - "src": "1567:153:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 186, - "nodeType": "Block", - "src": "2134:1046:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 113, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 111, - "name": "threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 35, - "src": "2276:9:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 112, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2289:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2276:14:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 110, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "2268:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 114, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2268:23:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 115, - "nodeType": "ExpressionStatement", - "src": "2268:23:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 120, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 117, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 103, - "src": "2383:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": "<=", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 118, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 101, - "src": "2397:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 119, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2397:14:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2383:28:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 116, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "2375:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 121, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2375:37:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 122, - "nodeType": "ExpressionStatement", - "src": "2375:37:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 126, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 124, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 103, - "src": "2482:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 125, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2496:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "2482:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 123, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "2474:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 127, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2474:24:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 128, - "nodeType": "ExpressionStatement", - "src": "2474:24:1" - }, - { - "body": { - "id": 165, - "nodeType": "Block", - "src": "2590:221:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 145, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 141, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 101, - "src": "2657:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 143, - "indexExpression": { - "argumentTypes": null, - "id": 142, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 130, - "src": "2665:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2657:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 144, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2671:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2657:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 140, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "2649:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 146, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2649:24:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 147, - "nodeType": "ExpressionStatement", - "src": "2649:24:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 154, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "2739:20:1", - "subExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 149, - "name": "isOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 47, - "src": "2740:7:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 153, - "indexExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 150, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 101, - "src": "2748:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 152, - "indexExpression": { - "argumentTypes": null, - "id": 151, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 130, - "src": "2756:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2748:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2740:19:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 148, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "2731:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 155, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2731:29:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 156, - "nodeType": "ExpressionStatement", - "src": "2731:29:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 163, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 157, - "name": "isOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 47, - "src": "2774:7:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 161, - "indexExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 158, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 101, - "src": "2782:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 160, - "indexExpression": { - "argumentTypes": null, - "id": 159, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 130, - "src": "2790:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2782:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "2774:19:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 162, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2796:4:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "2774:26:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 164, - "nodeType": "ExpressionStatement", - "src": "2774:26:1" - } - ] - }, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 136, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 133, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 130, - "src": "2565:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 134, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 101, - "src": "2569:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 135, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2569:14:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2565:18:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 166, - "initializationExpression": { - "assignments": [ - 130 - ], - "declarations": [ - { - "constant": false, - "id": 130, - "name": "i", - "nodeType": "VariableDeclaration", - "scope": 187, - "src": "2550:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 129, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2550:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 132, - "initialValue": { - "argumentTypes": null, - "hexValue": "30", - "id": 131, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2562:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "2550:13:1" - }, - "loopExpression": { - "expression": { - "argumentTypes": null, - "id": 138, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "2585:3:1", - "subExpression": { - "argumentTypes": null, - "id": 137, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 130, - "src": "2585:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 139, - "nodeType": "ExpressionStatement", - "src": "2585:3:1" - }, - "nodeType": "ForStatement", - "src": "2545:266:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 169, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 167, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "2820:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 168, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 101, - "src": "2829:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "src": "2820:16:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 170, - "nodeType": "ExpressionStatement", - "src": "2820:16:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 173, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 171, - "name": "threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 35, - "src": "2846:9:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 172, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 103, - "src": "2858:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "2846:22:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "id": 174, - "nodeType": "ExpressionStatement", - "src": "2846:22:1" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 177, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 175, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 105, - "src": "3042:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 176, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3048:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "3042:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 185, - "nodeType": "IfStatement", - "src": "3038:135:1", - "trueBody": { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 180, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 105, - "src": "3163:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 181, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 107, - "src": "3167:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 179, - "name": "executeDelegateCall", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 815, - "src": "3143:19:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bool_$", - "typeString": "function (address,bytes memory) returns (bool)" - } - }, - "id": 182, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3143:29:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 178, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "3135:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 183, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3135:38:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 184, - "nodeType": "ExpressionStatement", - "src": "3135:38:1" - } - } - ] - }, - "id": 187, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "setup", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 108, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 101, - "name": "_owners", - "nodeType": "VariableDeclaration", - "scope": 187, - "src": "2054:17:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - }, - "typeName": { - "baseType": { - "id": 99, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2054:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 100, - "length": null, - "nodeType": "ArrayTypeName", - "src": "2054:9:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 103, - "name": "_threshold", - "nodeType": "VariableDeclaration", - "scope": 187, - "src": "2073:16:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 102, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "2073:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 105, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 187, - "src": "2091:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 104, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2091:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 107, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 187, - "src": "2103:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 106, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "2103:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "2053:61:1" - }, - "payable": false, - "returnParameters": { - "id": 109, - "nodeType": "ParameterList", - "parameters": [], - "src": "2134:0:1" - }, - "scope": 963, - "src": "2039:1141:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 206, - "nodeType": "Block", - "src": "3414:132:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 199, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 196, - "name": "_masterCopy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 189, - "src": "3487:11:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - ], - "id": 195, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "3479:7:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 197, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3479:20:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 198, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3503:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "3479:25:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 194, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "3471:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 200, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3471:34:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 201, - "nodeType": "ExpressionStatement", - "src": "3471:34:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 204, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 202, - "name": "masterCopy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 33, - "src": "3515:10:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 203, - "name": "_masterCopy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 189, - "src": "3528:11:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - "src": "3515:24:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - "id": 205, - "nodeType": "ExpressionStatement", - "src": "3515:24:1" - } - ] - }, - "id": 207, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [], - "id": 192, - "modifierName": { - "argumentTypes": null, - "id": 191, - "name": "onlyWallet", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 74, - "src": "3399:10:1", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "3399:10:1" - } - ], - "name": "changeMasterCopy", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 190, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 189, - "name": "_masterCopy", - "nodeType": "VariableDeclaration", - "scope": 207, - "src": "3352:22:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - }, - "typeName": { - "contractScope": null, - "id": 188, - "name": "GnosisSafe", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 963, - "src": "3352:10:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "3351:24:1" - }, - "payable": false, - "returnParameters": { - "id": 193, - "nodeType": "ParameterList", - "parameters": [], - "src": "3414:0:1" - }, - "scope": 963, - "src": "3326:220:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 249, - "nodeType": "Block", - "src": "3875:342:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 219, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 217, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 209, - "src": "3934:5:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 218, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3943:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "3934:10:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 216, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "3926:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 220, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3926:19:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 221, - "nodeType": "ExpressionStatement", - "src": "3926:19:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 226, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "4003:15:1", - "subExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 223, - "name": "isOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 47, - "src": "4004:7:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 225, - "indexExpression": { - "argumentTypes": null, - "id": 224, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 209, - "src": "4012:5:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4004:14:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 222, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "3995:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 227, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3995:24:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 228, - "nodeType": "ExpressionStatement", - "src": "3995:24:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 232, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 209, - "src": "4041:5:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "expression": { - "argumentTypes": null, - "id": 229, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "4029:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 231, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "push", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "4029:11:1", - "typeDescriptions": { - "typeIdentifier": "t_function_arraypush_nonpayable$_t_address_$returns$_t_uint256_$", - "typeString": "function (address) returns (uint256)" - } - }, - "id": 233, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4029:18:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 234, - "nodeType": "ExpressionStatement", - "src": "4029:18:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 239, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 235, - "name": "isOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 47, - "src": "4057:7:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 237, - "indexExpression": { - "argumentTypes": null, - "id": 236, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 209, - "src": "4065:5:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "4057:14:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 238, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4074:4:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "4057:21:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 240, - "nodeType": "ExpressionStatement", - "src": "4057:21:1" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 243, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 241, - "name": "threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 35, - "src": "4146:9:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "id": 242, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 211, - "src": "4159:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "4146:23:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 248, - "nodeType": "IfStatement", - "src": "4142:68:1", - "trueBody": { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 245, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 211, - "src": "4199:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - ], - "id": 244, - "name": "changeThreshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 385, - "src": "4183:15:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$returns$__$", - "typeString": "function (uint8)" - } - }, - "id": 246, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4183:27:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 247, - "nodeType": "ExpressionStatement", - "src": "4183:27:1" - } - } - ] - }, - "id": 250, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [], - "id": 214, - "modifierName": { - "argumentTypes": null, - "id": 213, - "name": "onlyWallet", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 74, - "src": "3860:10:1", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "3860:10:1" - } - ], - "name": "addOwner", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 212, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 209, - "name": "owner", - "nodeType": "VariableDeclaration", - "scope": 250, - "src": "3804:13:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 208, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3804:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 211, - "name": "_threshold", - "nodeType": "VariableDeclaration", - "scope": 250, - "src": "3819:16:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 210, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "3819:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "3803:33:1" - }, - "payable": false, - "returnParameters": { - "id": 215, - "nodeType": "ParameterList", - "parameters": [], - "src": "3875:0:1" - }, - "scope": 963, - "src": "3786:431:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 308, - "nodeType": "Block", - "src": "4660:487:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 267, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 265, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 262, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "4755:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 263, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "4755:13:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 264, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4771:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "4755:17:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "argumentTypes": null, - "id": 266, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 256, - "src": "4776:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "4755:31:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 261, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "4747:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 268, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4747:40:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 269, - "nodeType": "ExpressionStatement", - "src": "4747:40:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 275, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 271, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "4867:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 273, - "indexExpression": { - "argumentTypes": null, - "id": 272, - "name": "ownerIndex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 252, - "src": "4874:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4867:18:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 274, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 254, - "src": "4889:5:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "4867:27:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 270, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "4859:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 276, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4859:36:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 277, - "nodeType": "ExpressionStatement", - "src": "4859:36:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 282, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 278, - "name": "isOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 47, - "src": "4905:7:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 280, - "indexExpression": { - "argumentTypes": null, - "id": 279, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 254, - "src": "4913:5:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "4905:14:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "66616c7365", - "id": 281, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4922:5:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "src": "4905:22:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 283, - "nodeType": "ExpressionStatement", - "src": "4905:22:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 293, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 284, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "4937:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 286, - "indexExpression": { - "argumentTypes": null, - "id": 285, - "name": "ownerIndex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 252, - "src": "4944:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "4937:18:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 287, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "4958:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 292, - "indexExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 291, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 288, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "4965:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 289, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "4965:13:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 290, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4981:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "4965:17:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4958:25:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "4937:46:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 294, - "nodeType": "ExpressionStatement", - "src": "4937:46:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 298, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "--", - "prefix": false, - "src": "4993:15:1", - "subExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 295, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "4993:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 297, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "4993:13:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 299, - "nodeType": "ExpressionStatement", - "src": "4993:15:1" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 302, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 300, - "name": "threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 35, - "src": "5076:9:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "id": 301, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 256, - "src": "5089:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "5076:23:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 307, - "nodeType": "IfStatement", - "src": "5072:68:1", - "trueBody": { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 304, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 256, - "src": "5129:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - ], - "id": 303, - "name": "changeThreshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 385, - "src": "5113:15:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$returns$__$", - "typeString": "function (uint8)" - } - }, - "id": 305, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5113:27:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 306, - "nodeType": "ExpressionStatement", - "src": "5113:27:1" - } - } - ] - }, - "id": 309, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [], - "id": 259, - "modifierName": { - "argumentTypes": null, - "id": 258, - "name": "onlyWallet", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 74, - "src": "4645:10:1", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "4645:10:1" - } - ], - "name": "removeOwner", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 257, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 252, - "name": "ownerIndex", - "nodeType": "VariableDeclaration", - "scope": 309, - "src": "4569:18:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 251, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4569:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 254, - "name": "owner", - "nodeType": "VariableDeclaration", - "scope": 309, - "src": "4589:13:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 253, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "4589:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 256, - "name": "_threshold", - "nodeType": "VariableDeclaration", - "scope": 309, - "src": "4604:16:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 255, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "4604:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "4568:53:1" - }, - "payable": false, - "returnParameters": { - "id": 260, - "nodeType": "ParameterList", - "parameters": [], - "src": "4660:0:1" - }, - "scope": 963, - "src": "4548:599:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 359, - "nodeType": "Block", - "src": "5587:383:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 323, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 321, - "name": "newOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 315, - "src": "5646:8:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 322, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5658:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "5646:13:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 320, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "5638:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 324, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5638:22:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 325, - "nodeType": "ExpressionStatement", - "src": "5638:22:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 330, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "5718:18:1", - "subExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 327, - "name": "isOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 47, - "src": "5719:7:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 329, - "indexExpression": { - "argumentTypes": null, - "id": 328, - "name": "newOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 315, - "src": "5727:8:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "5719:17:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 326, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "5710:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 331, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5710:27:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 332, - "nodeType": "ExpressionStatement", - "src": "5710:27:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 338, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 334, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "5817:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 336, - "indexExpression": { - "argumentTypes": null, - "id": 335, - "name": "oldOwnerIndex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 311, - "src": "5824:13:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "5817:21:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 337, - "name": "oldOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 313, - "src": "5842:8:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "5817:33:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 333, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "5809:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 339, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5809:42:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 340, - "nodeType": "ExpressionStatement", - "src": "5809:42:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 345, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 341, - "name": "isOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 47, - "src": "5861:7:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 343, - "indexExpression": { - "argumentTypes": null, - "id": 342, - "name": "oldOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 313, - "src": "5869:8:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "5861:17:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "66616c7365", - "id": 344, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5881:5:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "src": "5861:25:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 346, - "nodeType": "ExpressionStatement", - "src": "5861:25:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 351, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 347, - "name": "isOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 47, - "src": "5896:7:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 349, - "indexExpression": { - "argumentTypes": null, - "id": 348, - "name": "newOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 315, - "src": "5904:8:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "5896:17:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 350, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5917:4:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "5896:25:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 352, - "nodeType": "ExpressionStatement", - "src": "5896:25:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 357, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 353, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "5931:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 355, - "indexExpression": { - "argumentTypes": null, - "id": 354, - "name": "oldOwnerIndex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 311, - "src": "5938:13:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "5931:21:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 356, - "name": "newOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 315, - "src": "5955:8:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "5931:32:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 358, - "nodeType": "ExpressionStatement", - "src": "5931:32:1" - } - ] - }, - "id": 360, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [], - "id": 318, - "modifierName": { - "argumentTypes": null, - "id": 317, - "name": "onlyWallet", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 74, - "src": "5572:10:1", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "5572:10:1" - } - ], - "name": "replaceOwner", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 316, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 311, - "name": "oldOwnerIndex", - "nodeType": "VariableDeclaration", - "scope": 360, - "src": "5490:21:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 310, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "5490:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 313, - "name": "oldOwner", - "nodeType": "VariableDeclaration", - "scope": 360, - "src": "5513:16:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 312, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "5513:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 315, - "name": "newOwner", - "nodeType": "VariableDeclaration", - "scope": 360, - "src": "5531:16:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 314, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "5531:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "5489:59:1" - }, - "payable": false, - "returnParameters": { - "id": 319, - "nodeType": "ParameterList", - "parameters": [], - "src": "5587:0:1" - }, - "scope": 963, - "src": "5468:502:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 384, - "nodeType": "Block", - "src": "6240:239:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 371, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 368, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 362, - "src": "6326:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": "<=", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 369, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "6340:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 370, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "6340:13:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "6326:27:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 367, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "6318:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 372, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6318:36:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 373, - "nodeType": "ExpressionStatement", - "src": "6318:36:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 377, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 375, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 362, - "src": "6424:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 376, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6438:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "6424:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 374, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "6416:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 378, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6416:24:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 379, - "nodeType": "ExpressionStatement", - "src": "6416:24:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 382, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 380, - "name": "threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 35, - "src": "6450:9:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 381, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 362, - "src": "6462:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "6450:22:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "id": 383, - "nodeType": "ExpressionStatement", - "src": "6450:22:1" - } - ] - }, - "id": 385, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [], - "id": 365, - "modifierName": { - "argumentTypes": null, - "id": 364, - "name": "onlyWallet", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 74, - "src": "6225:10:1", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "6225:10:1" - } - ], - "name": "changeThreshold", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 363, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 362, - "name": "_threshold", - "nodeType": "VariableDeclaration", - "scope": 385, - "src": "6184:16:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 361, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "6184:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "6183:18:1" - }, - "payable": false, - "returnParameters": { - "id": 366, - "nodeType": "ParameterList", - "parameters": [], - "src": "6240:0:1" - }, - "scope": 963, - "src": "6159:320:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 419, - "nodeType": "Block", - "src": "6737:255:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 397, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 394, - "name": "extension", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 387, - "src": "6808:9:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - ], - "id": 393, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "6800:7:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 395, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6800:18:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 396, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6822:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "6800:23:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 392, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "6792:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 398, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6792:32:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 399, - "nodeType": "ExpressionStatement", - "src": "6792:32:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 404, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "6886:23:1", - "subExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 401, - "name": "isExtension", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51, - "src": "6887:11:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 403, - "indexExpression": { - "argumentTypes": null, - "id": 402, - "name": "extension", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 387, - "src": "6899:9:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "6887:22:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 400, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "6878:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 405, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6878:32:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 406, - "nodeType": "ExpressionStatement", - "src": "6878:32:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 410, - "name": "extension", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 387, - "src": "6936:9:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - ], - "expression": { - "argumentTypes": null, - "id": 407, - "name": "extensions", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 43, - "src": "6920:10:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage", - "typeString": "contract Extension[] storage ref" - } - }, - "id": 409, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "push", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "6920:15:1", - "typeDescriptions": { - "typeIdentifier": "t_function_arraypush_nonpayable$_t_contract$_Extension_$18_$returns$_t_uint256_$", - "typeString": "function (contract Extension) returns (uint256)" - } - }, - "id": 411, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "6920:26:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 412, - "nodeType": "ExpressionStatement", - "src": "6920:26:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 417, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 413, - "name": "isExtension", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51, - "src": "6956:11:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 415, - "indexExpression": { - "argumentTypes": null, - "id": 414, - "name": "extension", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 387, - "src": "6968:9:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "6956:22:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 416, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "6981:4:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "6956:29:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 418, - "nodeType": "ExpressionStatement", - "src": "6956:29:1" - } - ] - }, - "id": 420, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [], - "id": 390, - "modifierName": { - "argumentTypes": null, - "id": 389, - "name": "onlyWallet", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 74, - "src": "6722:10:1", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "6722:10:1" - } - ], - "name": "addExtension", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 388, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 387, - "name": "extension", - "nodeType": "VariableDeclaration", - "scope": 420, - "src": "6678:19:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - }, - "typeName": { - "contractScope": null, - "id": 386, - "name": "Extension", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 18, - "src": "6678:9:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "6677:21:1" - }, - "payable": false, - "returnParameters": { - "id": 391, - "nodeType": "ParameterList", - "parameters": [], - "src": "6737:0:1" - }, - "scope": 963, - "src": "6656:336:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 459, - "nodeType": "Block", - "src": "7372:276:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - }, - "id": 434, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 430, - "name": "extensions", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 43, - "src": "7460:10:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage", - "typeString": "contract Extension[] storage ref" - } - }, - "id": 432, - "indexExpression": { - "argumentTypes": null, - "id": 431, - "name": "extensionIndex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 422, - "src": "7471:14:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "7460:26:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 433, - "name": "extension", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 424, - "src": "7490:9:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "src": "7460:39:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 429, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "7452:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 435, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "7452:48:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 436, - "nodeType": "ExpressionStatement", - "src": "7452:48:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 441, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 437, - "name": "isExtension", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51, - "src": "7510:11:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 439, - "indexExpression": { - "argumentTypes": null, - "id": 438, - "name": "extension", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 424, - "src": "7522:9:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "7510:22:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "66616c7365", - "id": 440, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7535:5:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "src": "7510:30:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 442, - "nodeType": "ExpressionStatement", - "src": "7510:30:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 452, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 443, - "name": "extensions", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 43, - "src": "7550:10:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage", - "typeString": "contract Extension[] storage ref" - } - }, - "id": 445, - "indexExpression": { - "argumentTypes": null, - "id": 444, - "name": "extensionIndex", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 422, - "src": "7561:14:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "7550:26:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 446, - "name": "extensions", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 43, - "src": "7579:10:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage", - "typeString": "contract Extension[] storage ref" - } - }, - "id": 451, - "indexExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 450, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 447, - "name": "extensions", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 43, - "src": "7590:10:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage", - "typeString": "contract Extension[] storage ref" - } - }, - "id": 448, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "7590:17:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 449, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "7610:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "7590:21:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "7579:33:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "src": "7550:62:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "id": 453, - "nodeType": "ExpressionStatement", - "src": "7550:62:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 457, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "--", - "prefix": false, - "src": "7622:19:1", - "subExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 454, - "name": "extensions", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 43, - "src": "7622:10:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage", - "typeString": "contract Extension[] storage ref" - } - }, - "id": 456, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "7622:17:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 458, - "nodeType": "ExpressionStatement", - "src": "7622:19:1" - } - ] - }, - "id": 460, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [], - "id": 427, - "modifierName": { - "argumentTypes": null, - "id": 426, - "name": "onlyWallet", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 74, - "src": "7357:10:1", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "7357:10:1" - } - ], - "name": "removeExtension", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 425, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 422, - "name": "extensionIndex", - "nodeType": "VariableDeclaration", - "scope": 460, - "src": "7289:22:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 421, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "7289:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 424, - "name": "extension", - "nodeType": "VariableDeclaration", - "scope": 460, - "src": "7313:19:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - }, - "typeName": { - "contractScope": null, - "id": 423, - "name": "Extension", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 18, - "src": "7313:9:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "7288:45:1" - }, - "payable": false, - "returnParameters": { - "id": 428, - "nodeType": "ParameterList", - "parameters": [], - "src": "7372:0:1" - }, - "scope": 963, - "src": "7264:384:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 509, - "nodeType": "Block", - "src": "8102:383:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 474, - "name": "isOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 47, - "src": "8190:7:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 477, - "indexExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 475, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2089, - "src": "8198:3:1", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 476, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "8198:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8190:19:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 473, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "8182:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 478, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8182:28:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 479, - "nodeType": "ExpressionStatement", - "src": "8182:28:1" - }, - { - "assignments": [ - 481 - ], - "declarations": [ - { - "constant": false, - "id": 481, - "name": "transactionHash", - "nodeType": "VariableDeclaration", - "scope": 510, - "src": "8220:23:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 480, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "8220:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 489, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 483, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 462, - "src": "8265:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 484, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 464, - "src": "8269:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 485, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 466, - "src": "8276:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "id": 486, - "name": "operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 468, - "src": "8282:9:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - { - "argumentTypes": null, - "id": 487, - "name": "nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 37, - "src": "8293:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 482, - "name": "getTransactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 852, - "src": "8246:18:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$61_$_t_uint256_$returns$_t_bytes32_$", - "typeString": "function (address,uint256,bytes memory,enum GnosisSafe.Operation,uint256) view returns (bytes32)" - } - }, - "id": 488, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8246:53:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "8220:79:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 497, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "8379:41:1", - "subExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 491, - "name": "isConfirmed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 57, - "src": "8380:11:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$", - "typeString": "mapping(address => mapping(bytes32 => bool))" - } - }, - "id": 494, - "indexExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 492, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2089, - "src": "8392:3:1", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 493, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "8392:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8380:23:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 496, - "indexExpression": { - "argumentTypes": null, - "id": 495, - "name": "transactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 481, - "src": "8404:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8380:40:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 490, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "8371:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 498, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "8371:50:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 499, - "nodeType": "ExpressionStatement", - "src": "8371:50:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 507, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 500, - "name": "isConfirmed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 57, - "src": "8431:11:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$", - "typeString": "mapping(address => mapping(bytes32 => bool))" - } - }, - "id": 504, - "indexExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 501, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2089, - "src": "8443:3:1", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 502, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "8443:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "8431:23:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 505, - "indexExpression": { - "argumentTypes": null, - "id": 503, - "name": "transactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 481, - "src": "8455:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "8431:40:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 506, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "8474:4:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "8431:47:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 508, - "nodeType": "ExpressionStatement", - "src": "8431:47:1" - } - ] - }, - "id": 510, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "confirmTransaction", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 471, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 462, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 510, - "src": "8007:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 461, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "8007:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 464, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 510, - "src": "8019:13:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 463, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "8019:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 466, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 510, - "src": "8034:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 465, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "8034:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 468, - "name": "operation", - "nodeType": "VariableDeclaration", - "scope": 510, - "src": "8046:19:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - }, - "typeName": { - "contractScope": null, - "id": 467, - "name": "Operation", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 61, - "src": "8046:9:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 470, - "name": "_nonce", - "nodeType": "VariableDeclaration", - "scope": 510, - "src": "8067:14:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 469, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "8067:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "8006:76:1" - }, - "payable": false, - "returnParameters": { - "id": 472, - "nodeType": "ParameterList", - "parameters": [], - "src": "8102:0:1" - }, - "scope": 963, - "src": "7979:506:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 697, - "nodeType": "Block", - "src": "9404:1349:1", - "statements": [ - { - "assignments": [ - 537 - ], - "declarations": [ - { - "constant": false, - "id": 537, - "name": "transactionHash", - "nodeType": "VariableDeclaration", - "scope": 698, - "src": "9414:23:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 536, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "9414:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 545, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 539, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 512, - "src": "9459:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 540, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 514, - "src": "9463:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 541, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 516, - "src": "9470:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "id": 542, - "name": "operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 518, - "src": "9476:9:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - { - "argumentTypes": null, - "id": 543, - "name": "nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 37, - "src": "9487:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 538, - "name": "getTransactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 852, - "src": "9440:18:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$61_$_t_uint256_$returns$_t_bytes32_$", - "typeString": "function (address,uint256,bytes memory,enum GnosisSafe.Operation,uint256) view returns (bytes32)" - } - }, - "id": 544, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9440:53:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "9414:79:1" - }, - { - "assignments": [ - 547 - ], - "declarations": [ - { - "constant": false, - "id": 547, - "name": "lastOwner", - "nodeType": "VariableDeclaration", - "scope": 698, - "src": "9555:17:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 546, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "9555:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 551, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30", - "id": 549, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9583:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 548, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "9575:7:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 550, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9575:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "9555:30:1" - }, - { - "assignments": [], - "declarations": [ - { - "constant": false, - "id": 553, - "name": "currentOwner", - "nodeType": "VariableDeclaration", - "scope": 698, - "src": "9595:20:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 552, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "9595:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 554, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "9595:20:1" - }, - { - "assignments": [], - "declarations": [ - { - "constant": false, - "id": 556, - "name": "i", - "nodeType": "VariableDeclaration", - "scope": 698, - "src": "9625:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 555, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "9625:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 557, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "9625:9:1" - }, - { - "assignments": [ - 559 - ], - "declarations": [ - { - "constant": false, - "id": 559, - "name": "j", - "nodeType": "VariableDeclaration", - "scope": 698, - "src": "9644:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 558, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "9644:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 561, - "initialValue": { - "argumentTypes": null, - "hexValue": "30", - "id": 560, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9656:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "9644:13:1" - }, - { - "body": { - "id": 648, - "nodeType": "Block", - "src": "9741:619:1", - "statements": [ - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 581, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 575, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 572, - "name": "indices", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 533, - "src": "9843:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", - "typeString": "uint256[] memory" - } - }, - "id": 573, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "9843:14:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "id": 574, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 559, - "src": "9860:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "9843:18:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 580, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 576, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "9865:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 577, - "name": "indices", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 533, - "src": "9870:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", - "typeString": "uint256[] memory" - } - }, - "id": 579, - "indexExpression": { - "argumentTypes": null, - "id": 578, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 559, - "src": "9878:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9870:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "9865:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "9843:37:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "expression": { - "argumentTypes": null, - "id": 629, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 610, - "name": "currentOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 553, - "src": "10155:12:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 612, - "name": "transactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 537, - "src": "10180:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 613, - "name": "v", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 521, - "src": "10197:1:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", - "typeString": "uint8[] memory" - } - }, - "id": 617, - "indexExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 616, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 614, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "10199:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "id": 615, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 559, - "src": "10201:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "10199:3:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "10197:6:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 618, - "name": "r", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 524, - "src": "10205:1:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[] memory" - } - }, - "id": 622, - "indexExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 621, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 619, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "10207:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "id": 620, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 559, - "src": "10209:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "10207:3:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "10205:6:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 623, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 527, - "src": "10213:1:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[] memory" - } - }, - "id": 627, - "indexExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 626, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 624, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "10215:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "id": 625, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 559, - "src": "10217:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "10215:3:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "10213:6:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 611, - "name": "ecrecover", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2082, - "src": "10170:9:1", - "typeDescriptions": { - "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", - "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)" - } - }, - "id": 628, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "10170:50:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "10155:65:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 630, - "nodeType": "ExpressionStatement", - "src": "10155:65:1" - }, - "id": 631, - "nodeType": "IfStatement", - "src": "9839:381:1", - "trueBody": { - "id": 609, - "nodeType": "Block", - "src": "9882:177:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 596, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 588, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 583, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2089, - "src": "9908:3:1", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 584, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "9908:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 585, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 530, - "src": "9922:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 587, - "indexExpression": { - "argumentTypes": null, - "id": 586, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 559, - "src": "9930:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9922:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "9908:24:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "||", - "rightExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 589, - "name": "isConfirmed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 57, - "src": "9936:11:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$", - "typeString": "mapping(address => mapping(bytes32 => bool))" - } - }, - "id": 593, - "indexExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 590, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 530, - "src": "9948:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 592, - "indexExpression": { - "argumentTypes": null, - "id": 591, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 559, - "src": "9956:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9948:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9936:23:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 595, - "indexExpression": { - "argumentTypes": null, - "id": 594, - "name": "transactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 537, - "src": "9960:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "9936:40:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "9908:68:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 582, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "9900:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 597, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "9900:77:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 598, - "nodeType": "ExpressionStatement", - "src": "9900:77:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 603, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 599, - "name": "currentOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 553, - "src": "9995:12:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 600, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 530, - "src": "10010:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 602, - "indexExpression": { - "argumentTypes": null, - "id": 601, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 559, - "src": "10018:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "10010:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "9995:25:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 604, - "nodeType": "ExpressionStatement", - "src": "9995:25:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 607, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 605, - "name": "j", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 559, - "src": "10038:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "+=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "31", - "id": 606, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "10043:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "10038:6:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 608, - "nodeType": "ExpressionStatement", - "src": "10038:6:1" - } - ] - } - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 633, - "name": "isOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 47, - "src": "10242:7:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 635, - "indexExpression": { - "argumentTypes": null, - "id": 634, - "name": "currentOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 553, - "src": "10250:12:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "10242:21:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 632, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "10234:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 636, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "10234:30:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 637, - "nodeType": "ExpressionStatement", - "src": "10234:30:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 641, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 639, - "name": "currentOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 553, - "src": "10286:12:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "id": 640, - "name": "lastOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 547, - "src": "10301:9:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "10286:24:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 638, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "10278:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 642, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "10278:33:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 643, - "nodeType": "ExpressionStatement", - "src": "10278:33:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 646, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 644, - "name": "lastOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 547, - "src": "10325:9:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 645, - "name": "currentOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 553, - "src": "10337:12:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "10325:24:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 647, - "nodeType": "ExpressionStatement", - "src": "10325:24:1" - } - ] - }, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 568, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 566, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "9721:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, - "id": 567, - "name": "threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 35, - "src": "9725:9:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "9721:13:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 649, - "initializationExpression": { - "expression": { - "argumentTypes": null, - "id": 564, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 562, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "9714:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "30", - "id": 563, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "9718:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "9714:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 565, - "nodeType": "ExpressionStatement", - "src": "9714:5:1" - }, - "loopExpression": { - "expression": { - "argumentTypes": null, - "id": 570, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "9736:3:1", - "subExpression": { - "argumentTypes": null, - "id": 569, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "9736:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 571, - "nodeType": "ExpressionStatement", - "src": "9736:3:1" - }, - "nodeType": "ForStatement", - "src": "9709:651:1" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 653, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 650, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 530, - "src": "10419:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 651, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "10419:14:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 652, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "10436:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "10419:18:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 685, - "nodeType": "IfStatement", - "src": "10415:216:1", - "trueBody": { - "id": 684, - "nodeType": "Block", - "src": "10439:192:1", - "statements": [ - { - "body": { - "id": 682, - "nodeType": "Block", - "src": "10490:131:1", - "statements": [ - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 670, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 665, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2089, - "src": "10512:3:1", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 666, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "10512:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 667, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 530, - "src": "10526:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 669, - "indexExpression": { - "argumentTypes": null, - "id": 668, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "10534:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "10526:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "10512:24:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 681, - "nodeType": "IfStatement", - "src": "10508:98:1", - "trueBody": { - "expression": { - "argumentTypes": null, - "id": 679, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 671, - "name": "isConfirmed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 57, - "src": "10558:11:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$", - "typeString": "mapping(address => mapping(bytes32 => bool))" - } - }, - "id": 676, - "indexExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 672, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 530, - "src": "10570:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 674, - "indexExpression": { - "argumentTypes": null, - "id": 673, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "10578:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "10570:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "10558:23:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 677, - "indexExpression": { - "argumentTypes": null, - "id": 675, - "name": "transactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 537, - "src": "10582:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "10558:40:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "66616c7365", - "id": 678, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "10601:5:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "src": "10558:48:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 680, - "nodeType": "ExpressionStatement", - "src": "10558:48:1" - } - } - ] - }, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 661, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 658, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "10465:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 659, - "name": "_owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 530, - "src": "10469:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 660, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "10469:14:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "10465:18:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 683, - "initializationExpression": { - "expression": { - "argumentTypes": null, - "id": 656, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 654, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "10458:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "30", - "id": 655, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "10462:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "10458:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 657, - "nodeType": "ExpressionStatement", - "src": "10458:5:1" - }, - "loopExpression": { - "expression": { - "argumentTypes": null, - "id": 663, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "10485:3:1", - "subExpression": { - "argumentTypes": null, - "id": 662, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 556, - "src": "10485:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 664, - "nodeType": "ExpressionStatement", - "src": "10485:3:1" - }, - "nodeType": "ForStatement", - "src": "10453:168:1" - } - ] - } - }, - { - "expression": { - "argumentTypes": null, - "id": 688, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 686, - "name": "nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 37, - "src": "10691:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "+=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "31", - "id": 687, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "10700:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "10691:10:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 689, - "nodeType": "ExpressionStatement", - "src": "10691:10:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 691, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 512, - "src": "10719:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 692, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 514, - "src": "10723:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 693, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 516, - "src": "10730:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "id": 694, - "name": "operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 518, - "src": "10736:9:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - ], - "id": 690, - "name": "execute", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 791, - "src": "10711:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$61_$returns$__$", - "typeString": "function (address,uint256,bytes memory,enum GnosisSafe.Operation)" - } - }, - "id": 695, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "10711:35:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 696, - "nodeType": "ExpressionStatement", - "src": "10711:35:1" - } - ] - }, - "id": 698, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "executeTransaction", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 534, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 512, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 698, - "src": "9250:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 511, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "9250:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 514, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 698, - "src": "9262:13:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 513, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "9262:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 516, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 698, - "src": "9277:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 515, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "9277:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 518, - "name": "operation", - "nodeType": "VariableDeclaration", - "scope": 698, - "src": "9289:19:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - }, - "typeName": { - "contractScope": null, - "id": 517, - "name": "Operation", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 61, - "src": "9289:9:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 521, - "name": "v", - "nodeType": "VariableDeclaration", - "scope": 698, - "src": "9310:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", - "typeString": "uint8[] memory" - }, - "typeName": { - "baseType": { - "id": 519, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "9310:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "id": 520, - "length": null, - "nodeType": "ArrayTypeName", - "src": "9310:7:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr", - "typeString": "uint8[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 524, - "name": "r", - "nodeType": "VariableDeclaration", - "scope": 698, - "src": "9321:11:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[] memory" - }, - "typeName": { - "baseType": { - "id": 522, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "9321:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 523, - "length": null, - "nodeType": "ArrayTypeName", - "src": "9321:9:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", - "typeString": "bytes32[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 527, - "name": "s", - "nodeType": "VariableDeclaration", - "scope": 698, - "src": "9334:11:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[] memory" - }, - "typeName": { - "baseType": { - "id": 525, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "9334:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 526, - "length": null, - "nodeType": "ArrayTypeName", - "src": "9334:9:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", - "typeString": "bytes32[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 530, - "name": "_owners", - "nodeType": "VariableDeclaration", - "scope": 698, - "src": "9347:17:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - }, - "typeName": { - "baseType": { - "id": 528, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "9347:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 529, - "length": null, - "nodeType": "ArrayTypeName", - "src": "9347:9:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 533, - "name": "indices", - "nodeType": "VariableDeclaration", - "scope": 698, - "src": "9366:17:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", - "typeString": "uint256[] memory" - }, - "typeName": { - "baseType": { - "id": 531, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "9366:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 532, - "length": null, - "nodeType": "ArrayTypeName", - "src": "9366:9:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", - "typeString": "uint256[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "9249:135:1" - }, - "payable": false, - "returnParameters": { - "id": 535, - "nodeType": "ParameterList", - "parameters": [], - "src": "9404:0:1" - }, - "scope": 963, - "src": "9222:1531:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 736, - "nodeType": "Block", - "src": "11304:338:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 712, - "name": "isExtension", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 51, - "src": "11374:11:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 714, - "indexExpression": { - "argumentTypes": null, - "id": 713, - "name": "extension", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 708, - "src": "11386:9:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "11374:22:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 711, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "11366:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 715, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11366:31:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 716, - "nodeType": "ExpressionStatement", - "src": "11366:31:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 720, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2089, - "src": "11487:3:1", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 721, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "11487:10:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 722, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 700, - "src": "11499:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 723, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 702, - "src": "11503:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 724, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 704, - "src": "11510:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "id": 725, - "name": "operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 706, - "src": "11516:9:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - ], - "expression": { - "argumentTypes": null, - "id": 718, - "name": "extension", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 708, - "src": "11464:9:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "id": 719, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "isExecutable", - "nodeType": "MemberAccess", - "referencedDeclaration": 17, - "src": "11464:22:1", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$61_$returns$_t_bool_$", - "typeString": "function (address,address,uint256,bytes memory,enum GnosisSafe.Operation) external returns (bool)" - } - }, - "id": 726, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11464:62:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 717, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "11456:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 727, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11456:71:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 728, - "nodeType": "ExpressionStatement", - "src": "11456:71:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 730, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 700, - "src": "11608:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 731, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 702, - "src": "11612:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 732, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 704, - "src": "11619:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "id": 733, - "name": "operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 706, - "src": "11625:9:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - ], - "id": 729, - "name": "execute", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 791, - "src": "11600:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$61_$returns$__$", - "typeString": "function (address,uint256,bytes memory,enum GnosisSafe.Operation)" - } - }, - "id": 734, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11600:35:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 735, - "nodeType": "ExpressionStatement", - "src": "11600:35:1" - } - ] - }, - "id": 737, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "executeExtension", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 709, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 700, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 737, - "src": "11204:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 699, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "11204:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 702, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 737, - "src": "11216:13:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 701, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "11216:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 704, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 737, - "src": "11231:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 703, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "11231:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 706, - "name": "operation", - "nodeType": "VariableDeclaration", - "scope": 737, - "src": "11243:19:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - }, - "typeName": { - "contractScope": null, - "id": 705, - "name": "Operation", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 61, - "src": "11243:9:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 708, - "name": "extension", - "nodeType": "VariableDeclaration", - "scope": 737, - "src": "11264:19:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - }, - "typeName": { - "contractScope": null, - "id": 707, - "name": "Extension", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 18, - "src": "11264:9:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "11203:81:1" - }, - "payable": false, - "returnParameters": { - "id": 710, - "nodeType": "ParameterList", - "parameters": [], - "src": "11304:0:1" - }, - "scope": 963, - "src": "11178:464:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 790, - "nodeType": "Block", - "src": "11746:367:1", - "statements": [ - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - }, - "id": 751, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 748, - "name": "operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 745, - "src": "11760:9:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 749, - "name": "Operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 61, - "src": "11773:9:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_Operation_$61_$", - "typeString": "type(enum GnosisSafe.Operation)" - } - }, - "id": 750, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "Call", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "11773:14:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "src": "11760:27:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - }, - "id": 763, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 760, - "name": "operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 745, - "src": "11857:9:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 761, - "name": "Operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 61, - "src": "11870:9:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_Operation_$61_$", - "typeString": "type(enum GnosisSafe.Operation)" - } - }, - "id": 762, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "DelegateCall", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "11870:22:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "src": "11857:35:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": { - "id": 787, - "nodeType": "Block", - "src": "11959:148:1", - "statements": [ - { - "assignments": [ - 772 - ], - "declarations": [ - { - "constant": false, - "id": 772, - "name": "newContract", - "nodeType": "VariableDeclaration", - "scope": 791, - "src": "11973:19:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 771, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "11973:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 776, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 774, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 743, - "src": "12009:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 773, - "name": "executeCreate", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 824, - "src": "11995:13:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$_t_address_$", - "typeString": "function (bytes memory) returns (address)" - } - }, - "id": 775, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11995:19:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "11973:41:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 780, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 778, - "name": "newContract", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 772, - "src": "12036:11:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 779, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "12051:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "12036:16:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 777, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "12028:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 781, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "12028:25:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 782, - "nodeType": "ExpressionStatement", - "src": "12028:25:1" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 784, - "name": "newContract", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 772, - "src": "12084:11:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 783, - "name": "ContractCreation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 25, - "src": "12067:16:1", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", - "typeString": "function (address)" - } - }, - "id": 785, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "12067:29:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 786, - "nodeType": "ExpressionStatement", - "src": "12067:29:1" - } - ] - }, - "id": 788, - "nodeType": "IfStatement", - "src": "11853:254:1", - "trueBody": { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 766, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 739, - "src": "11934:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 767, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 743, - "src": "11938:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 765, - "name": "executeDelegateCall", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 815, - "src": "11914:19:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_bool_$", - "typeString": "function (address,bytes memory) returns (bool)" - } - }, - "id": 768, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11914:29:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 764, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "11906:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 769, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11906:38:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 770, - "nodeType": "ExpressionStatement", - "src": "11906:38:1" - } - }, - "id": 789, - "nodeType": "IfStatement", - "src": "11756:351:1", - "trueBody": { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 754, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 739, - "src": "11821:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 755, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 741, - "src": "11825:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 756, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 743, - "src": "11832:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 753, - "name": "executeCall", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 804, - "src": "11809:11:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$", - "typeString": "function (address,uint256,bytes memory) returns (bool)" - } - }, - "id": 757, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11809:28:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 752, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "11801:7:1", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 758, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "11801:37:1", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 759, - "nodeType": "ExpressionStatement", - "src": "11801:37:1" - } - } - ] - }, - "id": 791, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "execute", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 746, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 739, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 791, - "src": "11665:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 738, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "11665:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 741, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 791, - "src": "11677:13:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 740, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "11677:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 743, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 791, - "src": "11692:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 742, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "11692:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 745, - "name": "operation", - "nodeType": "VariableDeclaration", - "scope": 791, - "src": "11704:19:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - }, - "typeName": { - "contractScope": null, - "id": 744, - "name": "Operation", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 61, - "src": "11704:9:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "11664:60:1" - }, - "payable": false, - "returnParameters": { - "id": 747, - "nodeType": "ParameterList", - "parameters": [], - "src": "11746:0:1" - }, - "scope": 963, - "src": "11648:465:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 803, - "nodeType": "Block", - "src": "12231:119:1", - "statements": [ - { - "externalReferences": [ - { - "data": { - "declaration": 797, - "isOffset": false, - "isSlot": false, - "src": "12303:4:1", - "valueSize": 1 - } - }, - { - "data": { - "declaration": 797, - "isOffset": false, - "isSlot": false, - "src": "12322:4:1", - "valueSize": 1 - } - }, - { - "success": { - "declaration": 800, - "isOffset": false, - "isSlot": false, - "src": "12264:7:1", - "valueSize": 1 - } - }, - { - "to": { - "declaration": 793, - "isOffset": false, - "isSlot": false, - "src": "12288:2:1", - "valueSize": 1 - } - }, - { - "value": { - "declaration": 795, - "isOffset": false, - "isSlot": false, - "src": "12292:5:1", - "valueSize": 1 - } - } - ], - "id": 802, - "nodeType": "InlineAssembly", - "operations": "{\n success := call(not(0), to, value, add(data, 0x20), mload(data), 0, 0)\n}", - "src": "12241:109:1" - } - ] - }, - "id": 804, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "executeCall", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 798, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 793, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 804, - "src": "12140:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 792, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "12140:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 795, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 804, - "src": "12152:13:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 794, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "12152:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 797, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 804, - "src": "12167:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 796, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "12167:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "12139:39:1" - }, - "payable": false, - "returnParameters": { - "id": 801, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 800, - "name": "success", - "nodeType": "VariableDeclaration", - "scope": 804, - "src": "12213:12:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 799, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "12213:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "12212:14:1" - }, - "scope": 963, - "src": "12119:231:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 814, - "nodeType": "Block", - "src": "12461:120:1", - "statements": [ - { - "externalReferences": [ - { - "data": { - "declaration": 808, - "isOffset": false, - "isSlot": false, - "src": "12534:4:1", - "valueSize": 1 - } - }, - { - "data": { - "declaration": 808, - "isOffset": false, - "isSlot": false, - "src": "12553:4:1", - "valueSize": 1 - } - }, - { - "success": { - "declaration": 811, - "isOffset": false, - "isSlot": false, - "src": "12494:7:1", - "valueSize": 1 - } - }, - { - "to": { - "declaration": 806, - "isOffset": false, - "isSlot": false, - "src": "12526:2:1", - "valueSize": 1 - } - } - ], - "id": 813, - "nodeType": "InlineAssembly", - "operations": "{\n success := delegatecall(not(0), to, add(data, 0x20), mload(data), 0, 0)\n}", - "src": "12471:110:1" - } - ] - }, - "id": 815, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "executeDelegateCall", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 809, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 806, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 815, - "src": "12385:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 805, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "12385:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 808, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 815, - "src": "12397:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 807, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "12397:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "12384:24:1" - }, - "payable": false, - "returnParameters": { - "id": 812, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 811, - "name": "success", - "nodeType": "VariableDeclaration", - "scope": 815, - "src": "12443:12:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 810, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "12443:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "12442:14:1" - }, - "scope": 963, - "src": "12356:225:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 823, - "nodeType": "Block", - "src": "12681:103:1", - "statements": [ - { - "externalReferences": [ - { - "data": { - "declaration": 817, - "isOffset": false, - "isSlot": false, - "src": "12762:4:1", - "valueSize": 1 - } - }, - { - "newContract": { - "declaration": 820, - "isOffset": false, - "isSlot": false, - "src": "12714:11:1", - "valueSize": 1 - } - }, - { - "data": { - "declaration": 817, - "isOffset": false, - "isSlot": false, - "src": "12743:4:1", - "valueSize": 1 - } - } - ], - "id": 822, - "nodeType": "InlineAssembly", - "operations": "{\n newContract := create(0, add(data, 0x20), mload(data))\n}", - "src": "12691:93:1" - } - ] - }, - "id": 824, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "executeCreate", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 818, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 817, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 824, - "src": "12610:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 816, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "12610:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "12609:12:1" - }, - "payable": false, - "returnParameters": { - "id": 821, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 820, - "name": "newContract", - "nodeType": "VariableDeclaration", - "scope": 824, - "src": "12656:19:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 819, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "12656:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "12655:21:1" - }, - "scope": 963, - "src": "12587:197:1", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 851, - "nodeType": "Block", - "src": "13238:87:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30783139", - "id": 841, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "13270:4:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_25_by_1", - "typeString": "int_const 25" - }, - "value": "0x19" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_25_by_1", - "typeString": "int_const 25" - } - ], - "id": 840, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "13265:4:1", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes1_$", - "typeString": "type(bytes1)" - }, - "typeName": "byte" - }, - "id": 842, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "13265:10:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - } - }, - { - "argumentTypes": null, - "id": 843, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2100, - "src": "13277:4:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - { - "argumentTypes": null, - "id": 844, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 826, - "src": "13283:2:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 845, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 828, - "src": "13287:5:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 846, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 830, - "src": "13294:4:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "id": 847, - "name": "operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 832, - "src": "13300:9:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - { - "argumentTypes": null, - "id": 848, - "name": "_nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 834, - "src": "13311:6:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - }, - { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 839, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2083, - "src": "13255:9:1", - "typeDescriptions": { - "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", - "typeString": "function () pure returns (bytes32)" - } - }, - "id": 849, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "13255:63:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "functionReturnParameters": 838, - "id": 850, - "nodeType": "Return", - "src": "13248:70:1" - } - ] - }, - "id": 852, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "getTransactionHash", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 835, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 826, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 852, - "src": "13104:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 825, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "13104:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 828, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 852, - "src": "13116:13:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 827, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "13116:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 830, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 852, - "src": "13131:10:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 829, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "13131:5:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 832, - "name": "operation", - "nodeType": "VariableDeclaration", - "scope": 852, - "src": "13143:19:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - }, - "typeName": { - "contractScope": null, - "id": 831, - "name": "Operation", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 61, - "src": "13143:9:1", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 834, - "name": "_nonce", - "nodeType": "VariableDeclaration", - "scope": 852, - "src": "13164:14:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 833, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "13164:7:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "13103:76:1" - }, - "payable": false, - "returnParameters": { - "id": 838, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 837, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 852, - "src": "13225:7:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 836, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "13225:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "13224:9:1" - }, - "scope": 963, - "src": "13076:249:1", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 860, - "nodeType": "Block", - "src": "13488:30:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 858, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "13505:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "functionReturnParameters": 857, - "id": 859, - "nodeType": "Return", - "src": "13498:13:1" - } - ] - }, - "id": 861, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "getOwners", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 853, - "nodeType": "ParameterList", - "parameters": [], - "src": "13425:2:1" - }, - "payable": false, - "returnParameters": { - "id": 857, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 856, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 861, - "src": "13473:9:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - }, - "typeName": { - "baseType": { - "id": 854, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "13473:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 855, - "length": null, - "nodeType": "ArrayTypeName", - "src": "13473:9:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "13472:11:1" - }, - "scope": 963, - "src": "13407:111:1", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 869, - "nodeType": "Block", - "src": "13690:34:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 867, - "name": "extensions", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 43, - "src": "13707:10:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage", - "typeString": "contract Extension[] storage ref" - } - }, - "functionReturnParameters": 866, - "id": 868, - "nodeType": "Return", - "src": "13700:17:1" - } - ] - }, - "id": 870, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "getExtensions", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 862, - "nodeType": "ParameterList", - "parameters": [], - "src": "13625:2:1" - }, - "payable": false, - "returnParameters": { - "id": 866, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 865, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 870, - "src": "13673:11:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_memory_ptr", - "typeString": "contract Extension[] memory" - }, - "typeName": { - "baseType": { - "contractScope": null, - "id": 863, - "name": "Extension", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 18, - "src": "13673:9:1", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "id": 864, - "length": null, - "nodeType": "ArrayTypeName", - "src": "13673:11:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_contract$_Extension_$18_$dyn_storage_ptr", - "typeString": "contract Extension[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "13672:13:1" - }, - "scope": 963, - "src": "13603:121:1", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 901, - "nodeType": "Block", - "src": "13998:162:1", - "statements": [ - { - "body": { - "id": 899, - "nodeType": "Block", - "src": "14049:105:1", - "statements": [ - { - "condition": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 888, - "name": "isConfirmed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 57, - "src": "14067:11:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$", - "typeString": "mapping(address => mapping(bytes32 => bool))" - } - }, - "id": 892, - "indexExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 889, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "14079:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 891, - "indexExpression": { - "argumentTypes": null, - "id": 890, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 878, - "src": "14086:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "14079:9:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "14067:22:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 894, - "indexExpression": { - "argumentTypes": null, - "id": 893, - "name": "transactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 872, - "src": "14090:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "14067:39:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 898, - "nodeType": "IfStatement", - "src": "14063:80:1", - "trueBody": { - "expression": { - "argumentTypes": null, - "id": 896, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "14124:19:1", - "subExpression": { - "argumentTypes": null, - "id": 895, - "name": "confirmationCount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 875, - "src": "14124:17:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 897, - "nodeType": "ExpressionStatement", - "src": "14124:19:1" - } - } - ] - }, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 884, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 881, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 878, - "src": "14025:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 882, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "14029:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 883, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "14029:13:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "14025:17:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 900, - "initializationExpression": { - "assignments": [ - 878 - ], - "declarations": [ - { - "constant": false, - "id": 878, - "name": "i", - "nodeType": "VariableDeclaration", - "scope": 902, - "src": "14013:6:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 877, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "14013:4:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 880, - "initialValue": { - "argumentTypes": null, - "hexValue": "30", - "id": 879, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "14022:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "14013:10:1" - }, - "loopExpression": { - "expression": { - "argumentTypes": null, - "id": 886, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "14044:3:1", - "subExpression": { - "argumentTypes": null, - "id": 885, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 878, - "src": "14044:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 887, - "nodeType": "ExpressionStatement", - "src": "14044:3:1" - }, - "nodeType": "ForStatement", - "src": "14008:146:1" - } - ] - }, - "id": 902, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "getConfirmationCount", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 873, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 872, - "name": "transactionHash", - "nodeType": "VariableDeclaration", - "scope": 902, - "src": "13900:23:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 871, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "13900:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "13899:25:1" - }, - "payable": false, - "returnParameters": { - "id": 876, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 875, - "name": "confirmationCount", - "nodeType": "VariableDeclaration", - "scope": 902, - "src": "13970:22:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 874, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "13970:4:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "13969:24:1" - }, - "scope": 963, - "src": "13870:290:1", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 961, - "nodeType": "Block", - "src": "14432:407:1", - "statements": [ - { - "assignments": [ - 911 - ], - "declarations": [ - { - "constant": false, - "id": 911, - "name": "confirmationCount", - "nodeType": "VariableDeclaration", - "scope": 962, - "src": "14442:22:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 910, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "14442:4:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 915, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 913, - "name": "transactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 904, - "src": "14488:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 912, - "name": "getConfirmationCount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 902, - "src": "14467:20:1", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$", - "typeString": "function (bytes32) view returns (uint256)" - } - }, - "id": 914, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "14467:37:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "14442:62:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 922, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 916, - "name": "confirmingOwners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 908, - "src": "14514:16:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 920, - "name": "confirmationCount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 911, - "src": "14547:17:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 919, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "NewExpression", - "src": "14533:13:1", - "typeDescriptions": { - "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_$", - "typeString": "function (uint256) pure returns (address[] memory)" - }, - "typeName": { - "baseType": { - "id": 917, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "14537:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 918, - "length": null, - "nodeType": "ArrayTypeName", - "src": "14537:9:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[] storage pointer" - } - } - }, - "id": 921, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "14533:32:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory", - "typeString": "address[] memory" - } - }, - "src": "14514:51:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 923, - "nodeType": "ExpressionStatement", - "src": "14514:51:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 926, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 924, - "name": "confirmationCount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 911, - "src": "14575:17:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "30", - "id": 925, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "14595:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "14575:21:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 927, - "nodeType": "ExpressionStatement", - "src": "14575:21:1" - }, - { - "body": { - "id": 959, - "nodeType": "Block", - "src": "14647:186:1", - "statements": [ - { - "condition": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 939, - "name": "isConfirmed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 57, - "src": "14665:11:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_bytes32_$_t_bool_$_$", - "typeString": "mapping(address => mapping(bytes32 => bool))" - } - }, - "id": 943, - "indexExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 940, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "14677:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 942, - "indexExpression": { - "argumentTypes": null, - "id": 941, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 929, - "src": "14684:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "14677:9:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "14665:22:1", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 945, - "indexExpression": { - "argumentTypes": null, - "id": 944, - "name": "transactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 904, - "src": "14688:15:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "14665:39:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 958, - "nodeType": "IfStatement", - "src": "14661:162:1", - "trueBody": { - "id": 957, - "nodeType": "Block", - "src": "14706:117:1", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 952, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 946, - "name": "confirmingOwners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 908, - "src": "14724:16:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 948, - "indexExpression": { - "argumentTypes": null, - "id": 947, - "name": "confirmationCount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 911, - "src": "14741:17:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "14724:35:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 949, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "14762:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 951, - "indexExpression": { - "argumentTypes": null, - "id": 950, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 929, - "src": "14769:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "14762:9:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "14724:47:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 953, - "nodeType": "ExpressionStatement", - "src": "14724:47:1" - }, - { - "expression": { - "argumentTypes": null, - "id": 955, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "14789:19:1", - "subExpression": { - "argumentTypes": null, - "id": 954, - "name": "confirmationCount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 911, - "src": "14789:17:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 956, - "nodeType": "ExpressionStatement", - "src": "14789:19:1" - } - ] - } - } - ] - }, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 935, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 932, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 929, - "src": "14623:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 933, - "name": "owners", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 40, - "src": "14627:6:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 934, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "14627:13:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "14623:17:1", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 960, - "initializationExpression": { - "assignments": [ - 929 - ], - "declarations": [ - { - "constant": false, - "id": 929, - "name": "i", - "nodeType": "VariableDeclaration", - "scope": 962, - "src": "14611:6:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 928, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "14611:4:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 931, - "initialValue": { - "argumentTypes": null, - "hexValue": "30", - "id": 930, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "14620:1:1", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "14611:10:1" - }, - "loopExpression": { - "expression": { - "argumentTypes": null, - "id": 937, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "14642:3:1", - "subExpression": { - "argumentTypes": null, - "id": 936, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 929, - "src": "14642:1:1", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 938, - "nodeType": "ExpressionStatement", - "src": "14642:3:1" - }, - "nodeType": "ForStatement", - "src": "14606:227:1" - } - ] - }, - "id": 962, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "getConfirmingOwners", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 905, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 904, - "name": "transactionHash", - "nodeType": "VariableDeclaration", - "scope": 962, - "src": "14330:23:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 903, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "14330:7:1", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "14329:25:1" - }, - "payable": false, - "returnParameters": { - "id": 909, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 908, - "name": "confirmingOwners", - "nodeType": "VariableDeclaration", - "scope": 962, - "src": "14400:26:1", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - }, - "typeName": { - "baseType": { - "id": 906, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "14400:7:1", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 907, - "length": null, - "nodeType": "ArrayTypeName", - "src": "14400:9:1", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "14399:28:1" - }, - "scope": 963, - "src": "14301:538:1", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - } - ], - "scope": 964, - "src": "218:14623:1" - } - ], - "src": "0:14842:1" - }, - "compiler": { - "name": "solc", - "version": "0.4.19+commit.c4cbbb05.Emscripten.clang" - }, - "networks": { - "4": { - "events": {}, - "links": {}, - "address": "0x90bbec32c6d045b37b2ee32a2bbbef640b3972d1", - "transactionHash": "0x2f6d1570cc556eef41a2d5e6d0410188979b61cbd580084cc7451a5776009204" - }, - "42": { - "events": {}, - "links": {}, - "address": "0xaefa715af8a64d96f8619daa663fd72d78a0bf28", - "transactionHash": "0x13a8bc9539b1b6652ad74f4b3cbe2ec19d48cbbe578b7496e95379e12aca1862" - }, - "1525342778744": { - "events": {}, - "links": {}, - "address": "0x84c8db395337da2e3d4fb3e26af6bf35739d49b8", - "transactionHash": "0x5b64197eda9ffa97845a6a77ff7bfb134b37c81fa74b3eef652bffbcd6879f6a" - }, - "1525789101965": { - "events": {}, - "links": {}, - "address": "0x6ad761ab330a930f611c0a19226e39ae5da5122d", - "transactionHash": "0x2030f160032d1cea96610c0485dc0fc03426ab66de7f3582cd5fd02a60b14f52" - } - }, - "schemaVersion": "2.0.0", - "updatedAt": "2018-05-08T14:18:44.047Z" -} \ No newline at end of file diff --git a/safe-contracts/build/contracts/v0/Migrations.json b/safe-contracts/build/contracts/v0/Migrations.json deleted file mode 100644 index e6b99e6ecf..0000000000 --- a/safe-contracts/build/contracts/v0/Migrations.json +++ /dev/null @@ -1,1397 +0,0 @@ -{ - "contractName": "Migrations", - "abi": [ - { - "constant": true, - "inputs": [], - "name": "last_completed_migration", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "owner", - "outputs": [ - { - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "constant": false, - "inputs": [ - { - "name": "completed", - "type": "uint256" - } - ], - "name": "setCompleted", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "new_address", - "type": "address" - } - ], - "name": "upgrade", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "0x6060604052341561000f57600080fd5b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506102db8061005e6000396000f300606060405260043610610062576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630900f01014610067578063445df0ac146100a05780638da5cb5b146100c9578063fdacd5761461011e575b600080fd5b341561007257600080fd5b61009e600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610141565b005b34156100ab57600080fd5b6100b3610224565b6040518082815260200191505060405180910390f35b34156100d457600080fd5b6100dc61022a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561012957600080fd5b61013f600480803590602001909190505061024f565b005b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610220578190508073ffffffffffffffffffffffffffffffffffffffff1663fdacd5766001546040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b151561020b57600080fd5b6102c65a03f1151561021c57600080fd5b5050505b5050565b60015481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156102ac57806001819055505b505600a165627a7a723058201cc1585f9df7ab81426097daac394849e8580cf9e44d78be5b645de915c388300029", - "deployedBytecode": "0x606060405260043610610062576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630900f01014610067578063445df0ac146100a05780638da5cb5b146100c9578063fdacd5761461011e575b600080fd5b341561007257600080fd5b61009e600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610141565b005b34156100ab57600080fd5b6100b3610224565b6040518082815260200191505060405180910390f35b34156100d457600080fd5b6100dc61022a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561012957600080fd5b61013f600480803590602001909190505061024f565b005b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415610220578190508073ffffffffffffffffffffffffffffffffffffffff1663fdacd5766001546040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b151561020b57600080fd5b6102c65a03f1151561021c57600080fd5b5050505b5050565b60015481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156102ac57806001819055505b505600a165627a7a723058201cc1585f9df7ab81426097daac394849e8580cf9e44d78be5b645de915c388300029", - "sourceMap": "25:580:2:-;;;191:76;;;;;;;;250:10;242:5;;:18;;;;;;;;;;;;;;;;;;25:580;;;;;;", - "deployedSourceMap": "25:580:2:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;408:195;;;;;;;;;;;;;;;;;;;;;;;;;;;;77:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;51:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;273:129;;;;;;;;;;;;;;;;;;;;;;;;;;408:195;494:19;170:5;;;;;;;;;;;156:19;;:10;:19;;;152:26;;;527:11;494:45;;549:8;:21;;;571:24;;549:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;152:26;408:195;;:::o;77:36::-;;;;:::o;51:20::-;;;;;;;;;;;;;:::o;273:129::-;170:5;;;;;;;;;;;156:19;;:10;:19;;;152:26;;;386:9;359:24;:36;;;;152:26;273:129;:::o", - "source": "pragma solidity ^0.4.4;\n\ncontract Migrations {\n address public owner;\n uint public last_completed_migration;\n\n modifier restricted() {\n if (msg.sender == owner) _;\n }\n\n function Migrations()\n public\n {\n owner = msg.sender;\n }\n\n function setCompleted(uint completed)\n public\n restricted\n {\n last_completed_migration = completed;\n }\n\n function upgrade(address new_address)\n public\n restricted\n {\n Migrations upgraded = Migrations(new_address);\n upgraded.setCompleted(last_completed_migration);\n }\n}\n", - "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Migrations.sol", - "ast": { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Migrations.sol", - "exportedSymbols": { - "Migrations": [ - 1020 - ] - }, - "id": 1021, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 965, - "literals": [ - "solidity", - "^", - "0.4", - ".4" - ], - "nodeType": "PragmaDirective", - "src": "0:23:2" - }, - { - "baseContracts": [], - "contractDependencies": [], - "contractKind": "contract", - "documentation": null, - "fullyImplemented": true, - "id": 1020, - "linearizedBaseContracts": [ - 1020 - ], - "name": "Migrations", - "nodeType": "ContractDefinition", - "nodes": [ - { - "constant": false, - "id": 967, - "name": "owner", - "nodeType": "VariableDeclaration", - "scope": 1020, - "src": "51:20:2", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 966, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "51:7:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "id": 969, - "name": "last_completed_migration", - "nodeType": "VariableDeclaration", - "scope": 1020, - "src": "77:36:2", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 968, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "77:4:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "public" - }, - { - "body": { - "id": 977, - "nodeType": "Block", - "src": "142:43:2", - "statements": [ - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 974, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 971, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2089, - "src": "156:3:2", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 972, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "156:10:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 973, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 967, - "src": "170:5:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "156:19:2", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 976, - "nodeType": "IfStatement", - "src": "152:26:2", - "trueBody": { - "id": 975, - "nodeType": "PlaceholderStatement", - "src": "177:1:2" - } - } - ] - }, - "id": 978, - "name": "restricted", - "nodeType": "ModifierDefinition", - "parameters": { - "id": 970, - "nodeType": "ParameterList", - "parameters": [], - "src": "139:2:2" - }, - "src": "120:65:2", - "visibility": "internal" - }, - { - "body": { - "id": 986, - "nodeType": "Block", - "src": "232:35:2", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 984, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 981, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 967, - "src": "242:5:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 982, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2089, - "src": "250:3:2", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 983, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "250:10:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "242:18:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 985, - "nodeType": "ExpressionStatement", - "src": "242:18:2" - } - ] - }, - "id": 987, - "implemented": true, - "isConstructor": true, - "isDeclaredConst": false, - "modifiers": [], - "name": "Migrations", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 979, - "nodeType": "ParameterList", - "parameters": [], - "src": "210:2:2" - }, - "payable": false, - "returnParameters": { - "id": 980, - "nodeType": "ParameterList", - "parameters": [], - "src": "232:0:2" - }, - "scope": 1020, - "src": "191:76:2", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 998, - "nodeType": "Block", - "src": "349:53:2", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 996, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 994, - "name": "last_completed_migration", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 969, - "src": "359:24:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 995, - "name": "completed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 989, - "src": "386:9:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "359:36:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 997, - "nodeType": "ExpressionStatement", - "src": "359:36:2" - } - ] - }, - "id": 999, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [], - "id": 992, - "modifierName": { - "argumentTypes": null, - "id": 991, - "name": "restricted", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 978, - "src": "334:10:2", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "334:10:2" - } - ], - "name": "setCompleted", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 990, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 989, - "name": "completed", - "nodeType": "VariableDeclaration", - "scope": 999, - "src": "295:14:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 988, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "295:4:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "294:16:2" - }, - "payable": false, - "returnParameters": { - "id": 993, - "nodeType": "ParameterList", - "parameters": [], - "src": "349:0:2" - }, - "scope": 1020, - "src": "273:129:2", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1018, - "nodeType": "Block", - "src": "484:119:2", - "statements": [ - { - "assignments": [ - 1007 - ], - "declarations": [ - { - "constant": false, - "id": 1007, - "name": "upgraded", - "nodeType": "VariableDeclaration", - "scope": 1019, - "src": "494:19:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Migrations_$1020", - "typeString": "contract Migrations" - }, - "typeName": { - "contractScope": null, - "id": 1006, - "name": "Migrations", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1020, - "src": "494:10:2", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Migrations_$1020", - "typeString": "contract Migrations" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1011, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1009, - "name": "new_address", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1001, - "src": "527:11:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 1008, - "name": "Migrations", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1020, - "src": "516:10:2", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Migrations_$1020_$", - "typeString": "type(contract Migrations)" - } - }, - "id": 1010, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "516:23:2", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Migrations_$1020", - "typeString": "contract Migrations" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "494:45:2" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1015, - "name": "last_completed_migration", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 969, - "src": "571:24:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "id": 1012, - "name": "upgraded", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1007, - "src": "549:8:2", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Migrations_$1020", - "typeString": "contract Migrations" - } - }, - "id": 1014, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "setCompleted", - "nodeType": "MemberAccess", - "referencedDeclaration": 999, - "src": "549:21:2", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", - "typeString": "function (uint256) external" - } - }, - "id": 1016, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "549:47:2", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1017, - "nodeType": "ExpressionStatement", - "src": "549:47:2" - } - ] - }, - "id": 1019, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [], - "id": 1004, - "modifierName": { - "argumentTypes": null, - "id": 1003, - "name": "restricted", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 978, - "src": "469:10:2", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "469:10:2" - } - ], - "name": "upgrade", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1002, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1001, - "name": "new_address", - "nodeType": "VariableDeclaration", - "scope": 1019, - "src": "425:19:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1000, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "425:7:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "424:21:2" - }, - "payable": false, - "returnParameters": { - "id": 1005, - "nodeType": "ParameterList", - "parameters": [], - "src": "484:0:2" - }, - "scope": 1020, - "src": "408:195:2", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - } - ], - "scope": 1021, - "src": "25:580:2" - } - ], - "src": "0:606:2" - }, - "legacyAST": { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Migrations.sol", - "exportedSymbols": { - "Migrations": [ - 1020 - ] - }, - "id": 1021, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 965, - "literals": [ - "solidity", - "^", - "0.4", - ".4" - ], - "nodeType": "PragmaDirective", - "src": "0:23:2" - }, - { - "baseContracts": [], - "contractDependencies": [], - "contractKind": "contract", - "documentation": null, - "fullyImplemented": true, - "id": 1020, - "linearizedBaseContracts": [ - 1020 - ], - "name": "Migrations", - "nodeType": "ContractDefinition", - "nodes": [ - { - "constant": false, - "id": 967, - "name": "owner", - "nodeType": "VariableDeclaration", - "scope": 1020, - "src": "51:20:2", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 966, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "51:7:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "id": 969, - "name": "last_completed_migration", - "nodeType": "VariableDeclaration", - "scope": 1020, - "src": "77:36:2", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 968, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "77:4:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "public" - }, - { - "body": { - "id": 977, - "nodeType": "Block", - "src": "142:43:2", - "statements": [ - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 974, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 971, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2089, - "src": "156:3:2", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 972, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "156:10:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 973, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 967, - "src": "170:5:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "156:19:2", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 976, - "nodeType": "IfStatement", - "src": "152:26:2", - "trueBody": { - "id": 975, - "nodeType": "PlaceholderStatement", - "src": "177:1:2" - } - } - ] - }, - "id": 978, - "name": "restricted", - "nodeType": "ModifierDefinition", - "parameters": { - "id": 970, - "nodeType": "ParameterList", - "parameters": [], - "src": "139:2:2" - }, - "src": "120:65:2", - "visibility": "internal" - }, - { - "body": { - "id": 986, - "nodeType": "Block", - "src": "232:35:2", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 984, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 981, - "name": "owner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 967, - "src": "242:5:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 982, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2089, - "src": "250:3:2", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 983, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "250:10:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "242:18:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 985, - "nodeType": "ExpressionStatement", - "src": "242:18:2" - } - ] - }, - "id": 987, - "implemented": true, - "isConstructor": true, - "isDeclaredConst": false, - "modifiers": [], - "name": "Migrations", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 979, - "nodeType": "ParameterList", - "parameters": [], - "src": "210:2:2" - }, - "payable": false, - "returnParameters": { - "id": 980, - "nodeType": "ParameterList", - "parameters": [], - "src": "232:0:2" - }, - "scope": 1020, - "src": "191:76:2", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 998, - "nodeType": "Block", - "src": "349:53:2", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 996, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 994, - "name": "last_completed_migration", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 969, - "src": "359:24:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 995, - "name": "completed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 989, - "src": "386:9:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "359:36:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 997, - "nodeType": "ExpressionStatement", - "src": "359:36:2" - } - ] - }, - "id": 999, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [], - "id": 992, - "modifierName": { - "argumentTypes": null, - "id": 991, - "name": "restricted", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 978, - "src": "334:10:2", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "334:10:2" - } - ], - "name": "setCompleted", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 990, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 989, - "name": "completed", - "nodeType": "VariableDeclaration", - "scope": 999, - "src": "295:14:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 988, - "name": "uint", - "nodeType": "ElementaryTypeName", - "src": "295:4:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "294:16:2" - }, - "payable": false, - "returnParameters": { - "id": 993, - "nodeType": "ParameterList", - "parameters": [], - "src": "349:0:2" - }, - "scope": 1020, - "src": "273:129:2", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1018, - "nodeType": "Block", - "src": "484:119:2", - "statements": [ - { - "assignments": [ - 1007 - ], - "declarations": [ - { - "constant": false, - "id": 1007, - "name": "upgraded", - "nodeType": "VariableDeclaration", - "scope": 1019, - "src": "494:19:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Migrations_$1020", - "typeString": "contract Migrations" - }, - "typeName": { - "contractScope": null, - "id": 1006, - "name": "Migrations", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1020, - "src": "494:10:2", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Migrations_$1020", - "typeString": "contract Migrations" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1011, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1009, - "name": "new_address", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1001, - "src": "527:11:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 1008, - "name": "Migrations", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1020, - "src": "516:10:2", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Migrations_$1020_$", - "typeString": "type(contract Migrations)" - } - }, - "id": 1010, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "516:23:2", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Migrations_$1020", - "typeString": "contract Migrations" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "494:45:2" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1015, - "name": "last_completed_migration", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 969, - "src": "571:24:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "id": 1012, - "name": "upgraded", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1007, - "src": "549:8:2", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Migrations_$1020", - "typeString": "contract Migrations" - } - }, - "id": 1014, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "setCompleted", - "nodeType": "MemberAccess", - "referencedDeclaration": 999, - "src": "549:21:2", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", - "typeString": "function (uint256) external" - } - }, - "id": 1016, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "549:47:2", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1017, - "nodeType": "ExpressionStatement", - "src": "549:47:2" - } - ] - }, - "id": 1019, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [], - "id": 1004, - "modifierName": { - "argumentTypes": null, - "id": 1003, - "name": "restricted", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 978, - "src": "469:10:2", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "469:10:2" - } - ], - "name": "upgrade", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1002, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1001, - "name": "new_address", - "nodeType": "VariableDeclaration", - "scope": 1019, - "src": "425:19:2", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1000, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "425:7:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "424:21:2" - }, - "payable": false, - "returnParameters": { - "id": 1005, - "nodeType": "ParameterList", - "parameters": [], - "src": "484:0:2" - }, - "scope": 1020, - "src": "408:195:2", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - } - ], - "scope": 1021, - "src": "25:580:2" - } - ], - "src": "0:606:2" - }, - "compiler": { - "name": "solc", - "version": "0.4.19+commit.c4cbbb05.Emscripten.clang" - }, - "networks": { - "4": { - "events": {}, - "links": {}, - "address": "0x8130ece7b262aa6e6a63a6d05b115247ba35a9ec", - "transactionHash": "0xdac98c9134a0828ac6bcf5a69d4d4154e890f197bdad53924cfdeaef1d29d363" - }, - "42": { - "events": {}, - "links": {}, - "address": "0xa31ae2d8f41b3b5a5a748c88a3dcec0640582182", - "transactionHash": "0x9f7a4b1f8709150b7efd2c2a4b31708410f3f3ad0f938d67bcef3c52d1033672" - }, - "1525342778744": { - "events": {}, - "links": {}, - "address": "0xced15a6a3e7f4f182667bf7dd3e0403b8229a97b", - "transactionHash": "0x8efec3bf60df6831ec5c77ceec27654c94b84005dfee1cb7dfae8d51c847ca93" - }, - "1525789101965": { - "events": {}, - "links": {}, - "address": "0x9cafa36304f4ce89fadc9894820e8a7684cabe02", - "transactionHash": "0xa757776d7b9eac962d1c4e89161441d296a8153da49efa8ee43d0202d894df5d" - } - }, - "schemaVersion": "2.0.0", - "updatedAt": "2018-05-08T14:18:44.026Z" -} \ No newline at end of file diff --git a/safe-contracts/build/contracts/v0/MultiSend.json b/safe-contracts/build/contracts/v0/MultiSend.json deleted file mode 100644 index e7c98caa04..0000000000 --- a/safe-contracts/build/contracts/v0/MultiSend.json +++ /dev/null @@ -1,365 +0,0 @@ -{ - "contractName": "MultiSend", - "abi": [ - { - "constant": false, - "inputs": [ - { - "name": "transactions", - "type": "bytes" - } - ], - "name": "multiSend", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "0x6060604052341561000f57600080fd5b6101278061001e6000396000f300606060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680638d80ff0a146044575b600080fd5b3415604e57600080fd5b609c600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050609e565b005b805160205b8181101560f65780830151602082018401516060830185015160808401860160008083838688600019f16000811460d85760dd565b600080fd5b50602080602084010402608001850194505050505060a3565b5050505600a165627a7a723058207fe7130b5215c2b7fb5987a9e0c21a2085684d930840ac75e4e7c62730c93cfc0029", - "deployedBytecode": "0x606060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680638d80ff0a146044575b600080fd5b3415604e57600080fd5b609c600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050609e565b005b805160205b8181101560f65780830151602082018401516060830185015160808401860160008083838688600019f16000811460d85760dd565b600080fd5b50602080602084010402608001850194505050505060a3565b5050505600a165627a7a723058207fe7130b5215c2b7fb5987a9e0c21a2085684d930840ac75e4e7c62730c93cfc0029", - "sourceMap": "253:1012:9:-;;;;;;;;;;;;;;;;;", - "deployedSourceMap": "253:1012:9:-;;;;;;;;;;;;;;;;;;;;;;;;593:670;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;704:12;698:5;739:4;756:491;770:6;767:1;764:2;756:491;;;834:1;820:12;816:3;810:5;898:4;895:1;891:3;877:12;873:3;867:5;971:4;968:1;964:3;950:12;946:3;940:5;1032:4;1029:1;1025:3;1011:12;1007:3;1107:1;1104;1092:10;1086:4;1079:5;1075:2;1071:1;1067:3;1062:4;1131:1;1126:23;;;;1055:94;;1126:23;1145:1;1142;1135:6;1055:94;;1226:4;1219;1212;1200:10;1196:3;1192;1188;1182:4;1178:3;1175:1;1171:3;1166:67;;782:465;;;;756:491;;;670:587;;;:::o", - "source": "pragma solidity 0.4.19;\n\n\n/// @title Multi Send - Allows to batch multiple transactions into one.\n/// @author Nick Dodson - \n/// @author Gonçalo Sá - \n/// @author Stefan George - \ncontract MultiSend {\n\n /// @dev Sends multiple transactions and reverts all if one fails.\n /// @param transactions Encoded transactions. Each transaction is encoded as\n /// a tuple(address,uint256,bytes). The bytes of all\n /// encoded transactions are concatenated to form the input.\n function multiSend(bytes transactions)\n public\n {\n assembly {\n let length := mload(transactions)\n let i := 0x20\n for { } lt(i, length) { } {\n let to := mload(add(transactions, i))\n let value := mload(add(transactions, add(i, 0x20)))\n let dataLength := mload(add(transactions, add(i, 0x60)))\n let data := add(transactions, add(i, 0x80))\n switch call(not(0), to, value, data, dataLength, 0, 0)\n case 0 { revert(0, 0) }\n i := add(i, add(0x80, mul(div(add(dataLength, 0x20), 0x20), 0x20)))\n }\n }\n }\n}\n", - "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/libraries/MultiSend.sol", - "ast": { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/libraries/MultiSend.sol", - "exportedSymbols": { - "MultiSend": [ - 2016 - ] - }, - "id": 2017, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 2008, - "literals": [ - "solidity", - "0.4", - ".19" - ], - "nodeType": "PragmaDirective", - "src": "0:23:9" - }, - { - "baseContracts": [], - "contractDependencies": [], - "contractKind": "contract", - "documentation": "@title Multi Send - Allows to batch multiple transactions into one.\n @author Nick Dodson - \n @author Gonçalo Sá - \n @author Stefan George - ", - "fullyImplemented": true, - "id": 2016, - "linearizedBaseContracts": [ - 2016 - ], - "name": "MultiSend", - "nodeType": "ContractDefinition", - "nodes": [ - { - "body": { - "id": 2014, - "nodeType": "Block", - "src": "651:612:9", - "statements": [ - { - "externalReferences": [ - { - "transactions": { - "declaration": 2010, - "isOffset": false, - "isSlot": false, - "src": "704:12:9", - "valueSize": 1 - } - }, - { - "transactions": { - "declaration": 2010, - "isOffset": false, - "isSlot": false, - "src": "820:12:9", - "valueSize": 1 - } - }, - { - "transactions": { - "declaration": 2010, - "isOffset": false, - "isSlot": false, - "src": "877:12:9", - "valueSize": 1 - } - }, - { - "transactions": { - "declaration": 2010, - "isOffset": false, - "isSlot": false, - "src": "950:12:9", - "valueSize": 1 - } - }, - { - "transactions": { - "declaration": 2010, - "isOffset": false, - "isSlot": false, - "src": "1011:12:9", - "valueSize": 1 - } - } - ], - "id": 2013, - "nodeType": "InlineAssembly", - "operations": "{\n let length := mload(transactions)\n let i := 0x20\n for {\n }\n lt(i, length)\n {\n }\n {\n let to := mload(add(transactions, i))\n let value := mload(add(transactions, add(i, 0x20)))\n let dataLength := mload(add(transactions, add(i, 0x60)))\n let data := add(transactions, add(i, 0x80))\n switch call(not(0), to, value, data, dataLength, 0, 0)\n case 0 {\n revert(0, 0)\n }\n i := add(i, add(0x80, mul(div(add(dataLength, 0x20), 0x20), 0x20)))\n }\n}", - "src": "661:602:9" - } - ] - }, - "id": 2015, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "multiSend", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 2011, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2010, - "name": "transactions", - "nodeType": "VariableDeclaration", - "scope": 2015, - "src": "612:18:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 2009, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "612:5:9", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "611:20:9" - }, - "payable": false, - "returnParameters": { - "id": 2012, - "nodeType": "ParameterList", - "parameters": [], - "src": "651:0:9" - }, - "scope": 2016, - "src": "593:670:9", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - } - ], - "scope": 2017, - "src": "253:1012:9" - } - ], - "src": "0:1266:9" - }, - "legacyAST": { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/libraries/MultiSend.sol", - "exportedSymbols": { - "MultiSend": [ - 2016 - ] - }, - "id": 2017, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 2008, - "literals": [ - "solidity", - "0.4", - ".19" - ], - "nodeType": "PragmaDirective", - "src": "0:23:9" - }, - { - "baseContracts": [], - "contractDependencies": [], - "contractKind": "contract", - "documentation": "@title Multi Send - Allows to batch multiple transactions into one.\n @author Nick Dodson - \n @author Gonçalo Sá - \n @author Stefan George - ", - "fullyImplemented": true, - "id": 2016, - "linearizedBaseContracts": [ - 2016 - ], - "name": "MultiSend", - "nodeType": "ContractDefinition", - "nodes": [ - { - "body": { - "id": 2014, - "nodeType": "Block", - "src": "651:612:9", - "statements": [ - { - "externalReferences": [ - { - "transactions": { - "declaration": 2010, - "isOffset": false, - "isSlot": false, - "src": "704:12:9", - "valueSize": 1 - } - }, - { - "transactions": { - "declaration": 2010, - "isOffset": false, - "isSlot": false, - "src": "820:12:9", - "valueSize": 1 - } - }, - { - "transactions": { - "declaration": 2010, - "isOffset": false, - "isSlot": false, - "src": "877:12:9", - "valueSize": 1 - } - }, - { - "transactions": { - "declaration": 2010, - "isOffset": false, - "isSlot": false, - "src": "950:12:9", - "valueSize": 1 - } - }, - { - "transactions": { - "declaration": 2010, - "isOffset": false, - "isSlot": false, - "src": "1011:12:9", - "valueSize": 1 - } - } - ], - "id": 2013, - "nodeType": "InlineAssembly", - "operations": "{\n let length := mload(transactions)\n let i := 0x20\n for {\n }\n lt(i, length)\n {\n }\n {\n let to := mload(add(transactions, i))\n let value := mload(add(transactions, add(i, 0x20)))\n let dataLength := mload(add(transactions, add(i, 0x60)))\n let data := add(transactions, add(i, 0x80))\n switch call(not(0), to, value, data, dataLength, 0, 0)\n case 0 {\n revert(0, 0)\n }\n i := add(i, add(0x80, mul(div(add(dataLength, 0x20), 0x20), 0x20)))\n }\n}", - "src": "661:602:9" - } - ] - }, - "id": 2015, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "multiSend", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 2011, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2010, - "name": "transactions", - "nodeType": "VariableDeclaration", - "scope": 2015, - "src": "612:18:9", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 2009, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "612:5:9", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "611:20:9" - }, - "payable": false, - "returnParameters": { - "id": 2012, - "nodeType": "ParameterList", - "parameters": [], - "src": "651:0:9" - }, - "scope": 2016, - "src": "593:670:9", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - } - ], - "scope": 2017, - "src": "253:1012:9" - } - ], - "src": "0:1266:9" - }, - "compiler": { - "name": "solc", - "version": "0.4.19+commit.c4cbbb05.Emscripten.clang" - }, - "networks": { - "4": { - "events": {}, - "links": {}, - "address": "0xb42ea77ed35188c3d9f478ede1883c7fc3889bf4", - "transactionHash": "0x49884b2c77b96bd8fab92acb25cb6c1d31322f8d8a5285168b629d02ff0942df" - }, - "42": { - "events": {}, - "links": {}, - "address": "0xa64866921fa040d96080a66327b57d3659aa3cb2", - "transactionHash": "0x0976055636f5f47833e456b68bbd3bd73497c17c1b51072795ee7ca472c7a1ee" - }, - "1525342778744": { - "events": {}, - "links": {}, - "address": "0x1751f194e16ab8cc857b37bbbca9b796b182691b", - "transactionHash": "0xf406441274f4472d909145b4145733064edd26a8ef0c5cd1b00d19a481cec4fd" - }, - "1525789101965": { - "events": {}, - "links": {}, - "address": "0x1e2dee6ce961ee356fd4382bf3e34e9b7f3876ce", - "transactionHash": "0x03595ae31f80fbcd00b5c0e5c51593841fe78041c8750420decf364f0f3d724c" - } - }, - "schemaVersion": "2.0.0", - "updatedAt": "2018-05-08T14:18:44.025Z" -} \ No newline at end of file diff --git a/safe-contracts/build/contracts/v0/MultiSendStruct.json b/safe-contracts/build/contracts/v0/MultiSendStruct.json deleted file mode 100644 index 58264cc55e..0000000000 --- a/safe-contracts/build/contracts/v0/MultiSendStruct.json +++ /dev/null @@ -1,1678 +0,0 @@ -{ - "contractName": "MultiSendStruct", - "abi": [ - { - "constant": false, - "inputs": [ - { - "components": [ - { - "name": "to", - "type": "address" - }, - { - "name": "value", - "type": "uint256" - }, - { - "name": "data", - "type": "bytes" - } - ], - "name": "transactions", - "type": "tuple[]" - } - ], - "name": "multiSend", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "0x6060604052341561000f57600080fd5b6104338061001e6000396000f300606060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632f6fda4a14610046575b600080fd5b341561005157600080fd5b61006660046100619036906102d1565b610068565b005b60006100726100e8565b600091505b82518210156100c957828281518110151561008e57fe5b9060200190602002015190506100b18160000151826020015183604001516100ce565b15156100bc57600080fd5b8180600101925050610077565b505050565b60008060008351602085018688600019f190509392505050565b606060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001610120610126565b81525090565b602060405190810160405280600081525090565b600061014682356103c0565b905092915050565b600082601f8301126000811461016357610168565b600080fd5b50813561017c6101778261035a565b610324565b9150818183526020840193506020810190508360005b838110156101c257813586016101a88882610233565b845260208401935060208301925050600181019050610192565b5050505092915050565b600082601f830112600081146101e1576101e6565b600080fd5b5081356101fa6101f58261038b565b610324565b915080825260208301602083018583830111600181146102195761021e565b600080fd5b5061022a8382846103ea565b50505092915050565b6000606082840312600181146102485761024d565b600080fd5b506102586060610324565b905060006102688482850161013a565b600083015250602061027c848285016102bd565b602083015250604082013567ffffffffffffffff81116001811461029f576102a4565b600080fd5b506102b1848285016101cc565b60408301525092915050565b60006102c982356103e0565b905092915050565b6000602082840312600181146102e6576102eb565b600080fd5b50600082013567ffffffffffffffff8111600181146103095761030e565b600080fd5b5061031b8482850161014e565b91505092915050565b6000604051905081810181811067ffffffffffffffff8211176001811461034a5761034f565b600080fd5b508060405250919050565b600067ffffffffffffffff82116001811461037457610379565b600080fd5b50602082029050602081019050919050565b600067ffffffffffffffff8211600181146103a5576103aa565b600080fd5b50601f19601f8301169050602081019050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b828183376000838301525050505600a265627a7a72305820484c17df168e13c63e6cab3910c3609158f4993315f595b990932cc0a3f27c726c6578706572696d656e74616cf50037", - "deployedBytecode": "0x606060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632f6fda4a14610046575b600080fd5b341561005157600080fd5b61006660046100619036906102d1565b610068565b005b60006100726100e8565b600091505b82518210156100c957828281518110151561008e57fe5b9060200190602002015190506100b18160000151826020015183604001516100ce565b15156100bc57600080fd5b8180600101925050610077565b505050565b60008060008351602085018688600019f190509392505050565b606060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001610120610126565b81525090565b602060405190810160405280600081525090565b600061014682356103c0565b905092915050565b600082601f8301126000811461016357610168565b600080fd5b50813561017c6101778261035a565b610324565b9150818183526020840193506020810190508360005b838110156101c257813586016101a88882610233565b845260208401935060208301925050600181019050610192565b5050505092915050565b600082601f830112600081146101e1576101e6565b600080fd5b5081356101fa6101f58261038b565b610324565b915080825260208301602083018583830111600181146102195761021e565b600080fd5b5061022a8382846103ea565b50505092915050565b6000606082840312600181146102485761024d565b600080fd5b506102586060610324565b905060006102688482850161013a565b600083015250602061027c848285016102bd565b602083015250604082013567ffffffffffffffff81116001811461029f576102a4565b600080fd5b506102b1848285016101cc565b60408301525092915050565b60006102c982356103e0565b905092915050565b6000602082840312600181146102e6576102eb565b600080fd5b50600082013567ffffffffffffffff8111600181146103095761030e565b600080fd5b5061031b8482850161014e565b91505092915050565b6000604051905081810181811067ffffffffffffffff8211176001811461034a5761034f565b600080fd5b508060405250919050565b600067ffffffffffffffff82116001811461037457610379565b600080fd5b50602082029050602081019050919050565b600067ffffffffffffffff8211600181146103a5576103aa565b600080fd5b50601f19601f8301169050602081019050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b828183376000838301525050505600a265627a7a72305820484c17df168e13c63e6cab3910c3609158f4993315f595b990932cc0a3f27c726c6578706572696d656e74616cf50037", - "sourceMap": "339:772:10:-;;;;;;;;;;;;;;;;;", - "deployedSourceMap": "339:772:10:-;;;;;;;;;;;;;;;;;;;;;;;;581:291;;;;;;;;;;;;;;;;;;;;;;;661:9;720:30;;:::i;:::-;673:1;661:13;;657:209;680:12;:19;676:1;:23;657:209;;;753:12;766:1;753:15;;;;;;;;;;;;;;;;;;720:48;;790:64;802:11;:14;;;818:11;:17;;;837:11;:16;;;790:11;:64::i;:::-;782:73;;;;;;;;701:3;;;;;;;657:209;;;581:291;;;:::o;878:231::-;972:12;1091:1;1088;1081:4;1075:5;1068:4;1062;1058:3;1051:5;1047:2;1043:1;1039:3;1034:4;1023:70;;1009:94;;;;;:::o;339:772::-;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;5:118:-1:-;;72:46;110:6;97:12;72:46;;;63:55;;57:66;;;;;175:756;;314:3;307:4;299:6;295:3;291;324:1;319:23;;;;284:58;;319:23;338:1;335;328:6;284:58;;375:6;362:12;397:105;412:89;494:6;412:89;;;397:105;;;388:114;;519:5;544:6;537:5;530:6;574:4;566:6;562:3;552:27;;596:4;591:3;587;580:21;;649:6;682:1;667:258;692:6;689:1;686:2;667:258;;;775:3;762:12;754:6;750:3;799:62;857:3;845:10;799:62;;;794:3;787:6;885:4;880:3;876;869:21;;913:4;908:3;904;897:21;;724:201;714:1;711;707:3;702:14;;667:258;;;671:14;277:654;;;;;;;;940:446;;1034:3;1027:4;1019:6;1015:3;1011;1044:1;1039:23;;;;1004:58;;1039:23;1058:1;1055;1048:6;1004:58;;1095:6;1082:12;1117:60;1132:44;1169:6;1132:44;;;1117:60;;;1108:69;;1197:6;1190:5;1183:6;1233:4;1225:6;1221:3;1266:4;1259:5;1255:3;1305;1296:6;1291:3;1287;1284:2;1315:1;1310:23;;;;1277:56;;1310:23;1329:1;1326;1319:6;1277:56;;1339:41;1373:6;1368:3;1363;1339:41;;;997:389;;;;;;;;1435:722;;1553:4;1541:9;1536:3;1532;1528;1564:1;1559:23;;;;1521:61;;1559:23;1578:1;1575;1568:6;1521:61;;1596:20;1611:4;1596:20;;;1587:29;;1664:1;1695:49;1740:3;1731:6;1720:9;1716:3;1695:49;;;1689:3;1682:5;1678:3;1671:6;1626:130;1807:2;1840:49;1885:3;1876:6;1865:9;1861:3;1840:49;;;1833:4;1826:5;1822:3;1815:6;1766:135;1979:2;1968:9;1964:3;1951:12;2007:18;1999:6;1996:2;2032:1;2027:23;;;;1989:61;;2027:23;2046:1;2043;2036:6;1989:61;;2081:54;2131:3;2122:6;2111:9;2107:3;2081:54;;;2074:4;2067:5;2063:3;2056:6;1911:236;1515:642;;;;;2164:118;;2231:46;2269:6;2256:12;2231:46;;;2222:55;;2216:66;;;;;2289:449;;2447:2;2435:9;2426:7;2422:3;2418;2456:1;2451:23;;;;2411:63;;2451:23;2470:1;2467;2460:6;2411:63;;2533:1;2522:9;2518:3;2505:12;2560:18;2552:6;2549:2;2585:1;2580:23;;;;2542:61;;2580:23;2599:1;2596;2589:6;2542:61;;2619:103;2714:7;2705:6;2694:9;2690:3;2619:103;;;2609:113;;2484:244;2405:333;;;;;2745:267;;2807:2;2801:5;2791:19;;2845:4;2837:6;2833:3;2948:6;2936:10;2933:2;2912:18;2900:10;2897:2;2894;2962:1;2957:23;;;;2887:93;;2957:23;2976:1;2973;2966:6;2887:93;;2996:10;2992:2;2985:6;2785:227;;;;;3019:294;;3207:18;3199:6;3196:2;3232:1;3227:23;;;;3189:61;;3227:23;3246:1;3243;3236:6;3189:61;;3275:4;3267:6;3263:3;3255:25;;3303:4;3297;3293:3;3285:23;;3126:187;;;;3320:265;;3463:18;3455:6;3452:2;3488:1;3483:23;;;;3445:61;;3483:23;3502:1;3499;3492:6;3445:61;;3546:4;3542:3;3535:4;3527:6;3523:3;3519;3511:41;;3575:4;3569;3565:3;3557:23;;3382:203;;;;3592:128;;3672:42;3665:5;3661:3;3650:65;;3644:76;;;;3727:79;;3796:5;3785:16;;3779:27;;;;3814:145;3895:6;3890:3;3885;3872:12;3951:1;3942:6;3937:3;3933;3926:6;3865:94;;;", - "source": "pragma solidity ^0.4.19;\npragma experimental ABIEncoderV2;\n\n\n/// @title Multi Send - Allows to batch multiple transactions into one.\n/// @author Nick Dodson - \n/// @author Gonçalo Sá - \n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract MultiSendStruct {\n\n struct Transaction {\n address to;\n uint256 value;\n bytes data;\n }\n\n /// @dev Sends multiple transactions and reverts all if one fails.\n /// @param transactions Encoded transactions.\n function multiSend(Transaction[] transactions)\n public\n {\n for(uint256 i = 0; i < transactions.length; i++) {\n Transaction memory transaction = transactions[i];\n require(executeCall(transaction.to, transaction.value, transaction.data));\n }\n }\n\n function executeCall(address to, uint256 value, bytes data)\n internal\n returns (bool success)\n {\n assembly {\n success := call(not(0), to, value, add(data, 0x20), mload(data), 0, 0)\n }\n }\n}\n", - "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/libraries/MultiSendStruct.sol", - "ast": { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/libraries/MultiSendStruct.sol", - "exportedSymbols": { - "MultiSendStruct": [ - 2077 - ] - }, - "id": 2078, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 2018, - "literals": [ - "solidity", - "^", - "0.4", - ".19" - ], - "nodeType": "PragmaDirective", - "src": "0:24:10" - }, - { - "id": 2019, - "literals": [ - "experimental", - "ABIEncoderV2" - ], - "nodeType": "PragmaDirective", - "src": "25:33:10" - }, - { - "baseContracts": [], - "contractDependencies": [], - "contractKind": "contract", - "documentation": "@title Multi Send - Allows to batch multiple transactions into one.\n @author Nick Dodson - \n @author Gonçalo Sá - \n @author Stefan George - \n @author Richard Meissner - ", - "fullyImplemented": true, - "id": 2077, - "linearizedBaseContracts": [ - 2077 - ], - "name": "MultiSendStruct", - "nodeType": "ContractDefinition", - "nodes": [ - { - "canonicalName": "MultiSendStruct.Transaction", - "id": 2026, - "members": [ - { - "constant": false, - "id": 2021, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 2026, - "src": "398:10:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 2020, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "398:7:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 2023, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 2026, - "src": "416:13:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 2022, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "416:7:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 2025, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 2026, - "src": "437:10:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - }, - "typeName": { - "id": 2024, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "437:5:10", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "name": "Transaction", - "nodeType": "StructDefinition", - "scope": 2077, - "src": "371:83:10", - "visibility": "public" - }, - { - "body": { - "id": 2062, - "nodeType": "Block", - "src": "647:225:10", - "statements": [ - { - "body": { - "id": 2060, - "nodeType": "Block", - "src": "706:160:10", - "statements": [ - { - "assignments": [ - 2044 - ], - "declarations": [ - { - "constant": false, - "id": 2044, - "name": "transaction", - "nodeType": "VariableDeclaration", - "scope": 2063, - "src": "720:30:10", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$2026_memory_ptr", - "typeString": "struct MultiSendStruct.Transaction memory" - }, - "typeName": { - "contractScope": null, - "id": 2043, - "name": "Transaction", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 2026, - "src": "720:11:10", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$2026_storage_ptr", - "typeString": "struct MultiSendStruct.Transaction storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 2048, - "initialValue": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 2045, - "name": "transactions", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2029, - "src": "753:12:10", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Transaction_$2026_memory_$dyn_memory_ptr", - "typeString": "struct MultiSendStruct.Transaction memory[] memory" - } - }, - "id": 2047, - "indexExpression": { - "argumentTypes": null, - "id": 2046, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2033, - "src": "766:1:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "753:15:10", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$2026_memory", - "typeString": "struct MultiSendStruct.Transaction memory" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "720:48:10" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 2051, - "name": "transaction", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2044, - "src": "802:11:10", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$2026_memory_ptr", - "typeString": "struct MultiSendStruct.Transaction memory" - } - }, - "id": 2052, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "to", - "nodeType": "MemberAccess", - "referencedDeclaration": 2021, - "src": "802:14:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 2053, - "name": "transaction", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2044, - "src": "818:11:10", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$2026_memory_ptr", - "typeString": "struct MultiSendStruct.Transaction memory" - } - }, - "id": 2054, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "value", - "nodeType": "MemberAccess", - "referencedDeclaration": 2023, - "src": "818:17:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 2055, - "name": "transaction", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2044, - "src": "837:11:10", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$2026_memory_ptr", - "typeString": "struct MultiSendStruct.Transaction memory" - } - }, - "id": 2056, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "data", - "nodeType": "MemberAccess", - "referencedDeclaration": 2025, - "src": "837:16:10", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory", - "typeString": "bytes memory" - } - ], - "id": 2050, - "name": "executeCall", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2076, - "src": "790:11:10", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$", - "typeString": "function (address,uint256,bytes memory) returns (bool)" - } - }, - "id": 2057, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "790:64:10", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 2049, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "782:7:10", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 2058, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "782:73:10", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 2059, - "nodeType": "ExpressionStatement", - "src": "782:73:10" - } - ] - }, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 2039, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 2036, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2033, - "src": "676:1:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 2037, - "name": "transactions", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2029, - "src": "680:12:10", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Transaction_$2026_memory_$dyn_memory_ptr", - "typeString": "struct MultiSendStruct.Transaction memory[] memory" - } - }, - "id": 2038, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "680:19:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "676:23:10", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 2061, - "initializationExpression": { - "assignments": [ - 2033 - ], - "declarations": [ - { - "constant": false, - "id": 2033, - "name": "i", - "nodeType": "VariableDeclaration", - "scope": 2063, - "src": "661:9:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 2032, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "661:7:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 2035, - "initialValue": { - "argumentTypes": null, - "hexValue": "30", - "id": 2034, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "673:1:10", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "661:13:10" - }, - "loopExpression": { - "expression": { - "argumentTypes": null, - "id": 2041, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "701:3:10", - "subExpression": { - "argumentTypes": null, - "id": 2040, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2033, - "src": "701:1:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 2042, - "nodeType": "ExpressionStatement", - "src": "701:3:10" - }, - "nodeType": "ForStatement", - "src": "657:209:10" - } - ] - }, - "id": 2063, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "multiSend", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 2030, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2029, - "name": "transactions", - "nodeType": "VariableDeclaration", - "scope": 2063, - "src": "600:26:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Transaction_$2026_memory_$dyn_memory_ptr", - "typeString": "struct MultiSendStruct.Transaction memory[] memory" - }, - "typeName": { - "baseType": { - "contractScope": null, - "id": 2027, - "name": "Transaction", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 2026, - "src": "600:11:10", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$2026_storage_ptr", - "typeString": "struct MultiSendStruct.Transaction storage pointer" - } - }, - "id": 2028, - "length": null, - "nodeType": "ArrayTypeName", - "src": "600:13:10", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Transaction_$2026_storage_$dyn_storage_ptr", - "typeString": "struct MultiSendStruct.Transaction storage ref[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "599:28:10" - }, - "payable": false, - "returnParameters": { - "id": 2031, - "nodeType": "ParameterList", - "parameters": [], - "src": "647:0:10" - }, - "scope": 2077, - "src": "581:291:10", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 2075, - "nodeType": "Block", - "src": "990:119:10", - "statements": [ - { - "externalReferences": [ - { - "data": { - "declaration": 2069, - "isOffset": false, - "isSlot": false, - "src": "1062:4:10", - "valueSize": 1 - } - }, - { - "data": { - "declaration": 2069, - "isOffset": false, - "isSlot": false, - "src": "1081:4:10", - "valueSize": 1 - } - }, - { - "success": { - "declaration": 2072, - "isOffset": false, - "isSlot": false, - "src": "1023:7:10", - "valueSize": 1 - } - }, - { - "to": { - "declaration": 2065, - "isOffset": false, - "isSlot": false, - "src": "1047:2:10", - "valueSize": 1 - } - }, - { - "value": { - "declaration": 2067, - "isOffset": false, - "isSlot": false, - "src": "1051:5:10", - "valueSize": 1 - } - } - ], - "id": 2074, - "nodeType": "InlineAssembly", - "operations": "{\n success := call(not(0), to, value, add(data, 0x20), mload(data), 0, 0)\n}", - "src": "1000:109:10" - } - ] - }, - "id": 2076, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "executeCall", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 2070, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2065, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 2076, - "src": "899:10:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 2064, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "899:7:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 2067, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 2076, - "src": "911:13:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 2066, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "911:7:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 2069, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 2076, - "src": "926:10:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 2068, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "926:5:10", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "898:39:10" - }, - "payable": false, - "returnParameters": { - "id": 2073, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2072, - "name": "success", - "nodeType": "VariableDeclaration", - "scope": 2076, - "src": "972:12:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 2071, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "972:4:10", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "971:14:10" - }, - "scope": 2077, - "src": "878:231:10", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - } - ], - "scope": 2078, - "src": "339:772:10" - } - ], - "src": "0:1112:10" - }, - "legacyAST": { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/libraries/MultiSendStruct.sol", - "exportedSymbols": { - "MultiSendStruct": [ - 2077 - ] - }, - "id": 2078, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 2018, - "literals": [ - "solidity", - "^", - "0.4", - ".19" - ], - "nodeType": "PragmaDirective", - "src": "0:24:10" - }, - { - "id": 2019, - "literals": [ - "experimental", - "ABIEncoderV2" - ], - "nodeType": "PragmaDirective", - "src": "25:33:10" - }, - { - "baseContracts": [], - "contractDependencies": [], - "contractKind": "contract", - "documentation": "@title Multi Send - Allows to batch multiple transactions into one.\n @author Nick Dodson - \n @author Gonçalo Sá - \n @author Stefan George - \n @author Richard Meissner - ", - "fullyImplemented": true, - "id": 2077, - "linearizedBaseContracts": [ - 2077 - ], - "name": "MultiSendStruct", - "nodeType": "ContractDefinition", - "nodes": [ - { - "canonicalName": "MultiSendStruct.Transaction", - "id": 2026, - "members": [ - { - "constant": false, - "id": 2021, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 2026, - "src": "398:10:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 2020, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "398:7:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 2023, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 2026, - "src": "416:13:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 2022, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "416:7:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 2025, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 2026, - "src": "437:10:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - }, - "typeName": { - "id": 2024, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "437:5:10", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "name": "Transaction", - "nodeType": "StructDefinition", - "scope": 2077, - "src": "371:83:10", - "visibility": "public" - }, - { - "body": { - "id": 2062, - "nodeType": "Block", - "src": "647:225:10", - "statements": [ - { - "body": { - "id": 2060, - "nodeType": "Block", - "src": "706:160:10", - "statements": [ - { - "assignments": [ - 2044 - ], - "declarations": [ - { - "constant": false, - "id": 2044, - "name": "transaction", - "nodeType": "VariableDeclaration", - "scope": 2063, - "src": "720:30:10", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$2026_memory_ptr", - "typeString": "struct MultiSendStruct.Transaction memory" - }, - "typeName": { - "contractScope": null, - "id": 2043, - "name": "Transaction", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 2026, - "src": "720:11:10", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$2026_storage_ptr", - "typeString": "struct MultiSendStruct.Transaction storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 2048, - "initialValue": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 2045, - "name": "transactions", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2029, - "src": "753:12:10", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Transaction_$2026_memory_$dyn_memory_ptr", - "typeString": "struct MultiSendStruct.Transaction memory[] memory" - } - }, - "id": 2047, - "indexExpression": { - "argumentTypes": null, - "id": 2046, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2033, - "src": "766:1:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "753:15:10", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$2026_memory", - "typeString": "struct MultiSendStruct.Transaction memory" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "720:48:10" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 2051, - "name": "transaction", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2044, - "src": "802:11:10", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$2026_memory_ptr", - "typeString": "struct MultiSendStruct.Transaction memory" - } - }, - "id": 2052, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "to", - "nodeType": "MemberAccess", - "referencedDeclaration": 2021, - "src": "802:14:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 2053, - "name": "transaction", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2044, - "src": "818:11:10", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$2026_memory_ptr", - "typeString": "struct MultiSendStruct.Transaction memory" - } - }, - "id": 2054, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "value", - "nodeType": "MemberAccess", - "referencedDeclaration": 2023, - "src": "818:17:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 2055, - "name": "transaction", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2044, - "src": "837:11:10", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$2026_memory_ptr", - "typeString": "struct MultiSendStruct.Transaction memory" - } - }, - "id": 2056, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "data", - "nodeType": "MemberAccess", - "referencedDeclaration": 2025, - "src": "837:16:10", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory", - "typeString": "bytes memory" - } - ], - "id": 2050, - "name": "executeCall", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2076, - "src": "790:11:10", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$", - "typeString": "function (address,uint256,bytes memory) returns (bool)" - } - }, - "id": 2057, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "790:64:10", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 2049, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "782:7:10", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 2058, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "782:73:10", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 2059, - "nodeType": "ExpressionStatement", - "src": "782:73:10" - } - ] - }, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 2039, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 2036, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2033, - "src": "676:1:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 2037, - "name": "transactions", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2029, - "src": "680:12:10", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Transaction_$2026_memory_$dyn_memory_ptr", - "typeString": "struct MultiSendStruct.Transaction memory[] memory" - } - }, - "id": 2038, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "680:19:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "676:23:10", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 2061, - "initializationExpression": { - "assignments": [ - 2033 - ], - "declarations": [ - { - "constant": false, - "id": 2033, - "name": "i", - "nodeType": "VariableDeclaration", - "scope": 2063, - "src": "661:9:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 2032, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "661:7:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 2035, - "initialValue": { - "argumentTypes": null, - "hexValue": "30", - "id": 2034, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "673:1:10", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "661:13:10" - }, - "loopExpression": { - "expression": { - "argumentTypes": null, - "id": 2041, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "701:3:10", - "subExpression": { - "argumentTypes": null, - "id": 2040, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2033, - "src": "701:1:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 2042, - "nodeType": "ExpressionStatement", - "src": "701:3:10" - }, - "nodeType": "ForStatement", - "src": "657:209:10" - } - ] - }, - "id": 2063, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "multiSend", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 2030, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2029, - "name": "transactions", - "nodeType": "VariableDeclaration", - "scope": 2063, - "src": "600:26:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Transaction_$2026_memory_$dyn_memory_ptr", - "typeString": "struct MultiSendStruct.Transaction memory[] memory" - }, - "typeName": { - "baseType": { - "contractScope": null, - "id": 2027, - "name": "Transaction", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 2026, - "src": "600:11:10", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$2026_storage_ptr", - "typeString": "struct MultiSendStruct.Transaction storage pointer" - } - }, - "id": 2028, - "length": null, - "nodeType": "ArrayTypeName", - "src": "600:13:10", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Transaction_$2026_storage_$dyn_storage_ptr", - "typeString": "struct MultiSendStruct.Transaction storage ref[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "599:28:10" - }, - "payable": false, - "returnParameters": { - "id": 2031, - "nodeType": "ParameterList", - "parameters": [], - "src": "647:0:10" - }, - "scope": 2077, - "src": "581:291:10", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 2075, - "nodeType": "Block", - "src": "990:119:10", - "statements": [ - { - "externalReferences": [ - { - "data": { - "declaration": 2069, - "isOffset": false, - "isSlot": false, - "src": "1062:4:10", - "valueSize": 1 - } - }, - { - "data": { - "declaration": 2069, - "isOffset": false, - "isSlot": false, - "src": "1081:4:10", - "valueSize": 1 - } - }, - { - "success": { - "declaration": 2072, - "isOffset": false, - "isSlot": false, - "src": "1023:7:10", - "valueSize": 1 - } - }, - { - "to": { - "declaration": 2065, - "isOffset": false, - "isSlot": false, - "src": "1047:2:10", - "valueSize": 1 - } - }, - { - "value": { - "declaration": 2067, - "isOffset": false, - "isSlot": false, - "src": "1051:5:10", - "valueSize": 1 - } - } - ], - "id": 2074, - "nodeType": "InlineAssembly", - "operations": "{\n success := call(not(0), to, value, add(data, 0x20), mload(data), 0, 0)\n}", - "src": "1000:109:10" - } - ] - }, - "id": 2076, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "executeCall", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 2070, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2065, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 2076, - "src": "899:10:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 2064, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "899:7:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 2067, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 2076, - "src": "911:13:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 2066, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "911:7:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 2069, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 2076, - "src": "926:10:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 2068, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "926:5:10", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "898:39:10" - }, - "payable": false, - "returnParameters": { - "id": 2073, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 2072, - "name": "success", - "nodeType": "VariableDeclaration", - "scope": 2076, - "src": "972:12:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 2071, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "972:4:10", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "971:14:10" - }, - "scope": 2077, - "src": "878:231:10", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - } - ], - "scope": 2078, - "src": "339:772:10" - } - ], - "src": "0:1112:10" - }, - "compiler": { - "name": "solc", - "version": "0.4.19+commit.c4cbbb05.Emscripten.clang" - }, - "networks": {}, - "schemaVersion": "2.0.0", - "updatedAt": "2018-05-04T10:42:18.395Z" -} \ No newline at end of file diff --git a/safe-contracts/build/contracts/v0/Proxy.json b/safe-contracts/build/contracts/v0/Proxy.json deleted file mode 100644 index ddba9fa348..0000000000 --- a/safe-contracts/build/contracts/v0/Proxy.json +++ /dev/null @@ -1,644 +0,0 @@ -{ - "contractName": "Proxy", - "abi": [ - { - "inputs": [ - { - "name": "_masterCopy", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "payable": true, - "stateMutability": "payable", - "type": "fallback" - } - ], - "bytecode": "0x6060604052341561000f57600080fd5b6040516020806101108339810160405280805190602001909190505060008173ffffffffffffffffffffffffffffffffffffffff161415151561005157600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506070806100a06000396000f300606060405273ffffffffffffffffffffffffffffffffffffffff60005416366000803760008036600084600019f43d6000803e8060008114603f573d6000f35b3d6000fd00a165627a7a72305820daad8330a1c74b6650ef400638bc3fcb59dcd0b0341bff33bbe640bd2ffdaff60029", - "deployedBytecode": "0x606060405273ffffffffffffffffffffffffffffffffffffffff60005416366000803760008036600084600019f43d6000803e8060008114603f573d6000f35b3d6000fd00a165627a7a72305820daad8330a1c74b6650ef400638bc3fcb59dcd0b0341bff33bbe640bd2ffdaff60029", - "sourceMap": "190:887:3:-;;;357:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;445:1;430:11;:16;;;;422:25;;;;;;;;470:11;457:10;;:24;;;;;;;;;;;;;;;;;;357:131;190:887;;;;;;", - "deployedSourceMap": "190:887:3:-;;;703:42;699:1;693:5;689:3;778:12;775:1;772;759:12;876:1;873;857:12;854:1;842:10;838:1;834:3;821:12;912:14;909:1;906;891:14;949:7;974:1;969:38;;;;1040:14;1037:1;1030:6;969:38;988:14;985:1;978:6", - "source": "pragma solidity 0.4.19;\n\n\n/// @title Proxy - Generic proxy contract allows to execute all transactions applying the code of a master contract.\n/// @author Stefan George - \ncontract Proxy {\n\n address masterCopy;\n\n /// @dev Constructor function sets address of master copy contract.\n /// @param _masterCopy Master copy address.\n function Proxy(address _masterCopy)\n public\n {\n require(_masterCopy != 0);\n masterCopy = _masterCopy;\n }\n\n /// @dev Fallback function forwards all transactions and returns all received return data.\n function ()\n external\n payable\n {\n assembly {\n let masterCopy := and(sload(0), 0xffffffffffffffffffffffffffffffffffffffff)\n calldatacopy(0, 0, calldatasize())\n let success := delegatecall(not(0), masterCopy, 0, calldatasize(), 0, 0)\n returndatacopy(0, 0, returndatasize())\n switch success\n case 0 { revert(0, returndatasize()) }\n default { return(0, returndatasize()) }\n }\n }\n}\n", - "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Proxy.sol", - "ast": { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Proxy.sol", - "exportedSymbols": { - "Proxy": [ - 1046 - ] - }, - "id": 1047, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 1022, - "literals": [ - "solidity", - "0.4", - ".19" - ], - "nodeType": "PragmaDirective", - "src": "0:23:3" - }, - { - "baseContracts": [], - "contractDependencies": [], - "contractKind": "contract", - "documentation": "@title Proxy - Generic proxy contract allows to execute all transactions applying the code of a master contract.\n @author Stefan George - ", - "fullyImplemented": true, - "id": 1046, - "linearizedBaseContracts": [ - 1046 - ], - "name": "Proxy", - "nodeType": "ContractDefinition", - "nodes": [ - { - "constant": false, - "id": 1024, - "name": "masterCopy", - "nodeType": "VariableDeclaration", - "scope": 1046, - "src": "212:18:3", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1023, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "212:7:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "body": { - "id": 1039, - "nodeType": "Block", - "src": "412:76:3", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 1032, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1030, - "name": "_masterCopy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1026, - "src": "430:11:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1031, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "445:1:3", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "430:16:3", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1029, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "422:7:3", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1033, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "422:25:3", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1034, - "nodeType": "ExpressionStatement", - "src": "422:25:3" - }, - { - "expression": { - "argumentTypes": null, - "id": 1037, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1035, - "name": "masterCopy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1024, - "src": "457:10:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 1036, - "name": "_masterCopy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1026, - "src": "470:11:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "457:24:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 1038, - "nodeType": "ExpressionStatement", - "src": "457:24:3" - } - ] - }, - "id": 1040, - "implemented": true, - "isConstructor": true, - "isDeclaredConst": false, - "modifiers": [], - "name": "Proxy", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1027, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1026, - "name": "_masterCopy", - "nodeType": "VariableDeclaration", - "scope": 1040, - "src": "372:19:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1025, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "372:7:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "371:21:3" - }, - "payable": false, - "returnParameters": { - "id": 1028, - "nodeType": "ParameterList", - "parameters": [], - "src": "412:0:3" - }, - "scope": 1046, - "src": "357:131:3", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1044, - "nodeType": "Block", - "src": "638:437:3", - "statements": [ - { - "externalReferences": [], - "id": 1043, - "nodeType": "InlineAssembly", - "operations": "{\n let masterCopy := and(sload(0), 0xffffffffffffffffffffffffffffffffffffffff)\n calldatacopy(0, 0, calldatasize())\n let success := delegatecall(not(0), masterCopy, 0, calldatasize(), 0, 0)\n returndatacopy(0, 0, returndatasize())\n switch success\n case 0 {\n revert(0, returndatasize())\n }\n default {\n return(0, returndatasize())\n }\n}", - "src": "648:427:3" - } - ] - }, - "id": 1045, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1041, - "nodeType": "ParameterList", - "parameters": [], - "src": "598:2:3" - }, - "payable": true, - "returnParameters": { - "id": 1042, - "nodeType": "ParameterList", - "parameters": [], - "src": "638:0:3" - }, - "scope": 1046, - "src": "589:486:3", - "stateMutability": "payable", - "superFunction": null, - "visibility": "external" - } - ], - "scope": 1047, - "src": "190:887:3" - } - ], - "src": "0:1078:3" - }, - "legacyAST": { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Proxy.sol", - "exportedSymbols": { - "Proxy": [ - 1046 - ] - }, - "id": 1047, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 1022, - "literals": [ - "solidity", - "0.4", - ".19" - ], - "nodeType": "PragmaDirective", - "src": "0:23:3" - }, - { - "baseContracts": [], - "contractDependencies": [], - "contractKind": "contract", - "documentation": "@title Proxy - Generic proxy contract allows to execute all transactions applying the code of a master contract.\n @author Stefan George - ", - "fullyImplemented": true, - "id": 1046, - "linearizedBaseContracts": [ - 1046 - ], - "name": "Proxy", - "nodeType": "ContractDefinition", - "nodes": [ - { - "constant": false, - "id": 1024, - "name": "masterCopy", - "nodeType": "VariableDeclaration", - "scope": 1046, - "src": "212:18:3", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1023, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "212:7:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "body": { - "id": 1039, - "nodeType": "Block", - "src": "412:76:3", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 1032, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1030, - "name": "_masterCopy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1026, - "src": "430:11:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1031, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "445:1:3", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "430:16:3", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1029, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "422:7:3", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1033, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "422:25:3", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1034, - "nodeType": "ExpressionStatement", - "src": "422:25:3" - }, - { - "expression": { - "argumentTypes": null, - "id": 1037, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1035, - "name": "masterCopy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1024, - "src": "457:10:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 1036, - "name": "_masterCopy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1026, - "src": "470:11:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "457:24:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 1038, - "nodeType": "ExpressionStatement", - "src": "457:24:3" - } - ] - }, - "id": 1040, - "implemented": true, - "isConstructor": true, - "isDeclaredConst": false, - "modifiers": [], - "name": "Proxy", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1027, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1026, - "name": "_masterCopy", - "nodeType": "VariableDeclaration", - "scope": 1040, - "src": "372:19:3", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1025, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "372:7:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "371:21:3" - }, - "payable": false, - "returnParameters": { - "id": 1028, - "nodeType": "ParameterList", - "parameters": [], - "src": "412:0:3" - }, - "scope": 1046, - "src": "357:131:3", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1044, - "nodeType": "Block", - "src": "638:437:3", - "statements": [ - { - "externalReferences": [], - "id": 1043, - "nodeType": "InlineAssembly", - "operations": "{\n let masterCopy := and(sload(0), 0xffffffffffffffffffffffffffffffffffffffff)\n calldatacopy(0, 0, calldatasize())\n let success := delegatecall(not(0), masterCopy, 0, calldatasize(), 0, 0)\n returndatacopy(0, 0, returndatasize())\n switch success\n case 0 {\n revert(0, returndatasize())\n }\n default {\n return(0, returndatasize())\n }\n}", - "src": "648:427:3" - } - ] - }, - "id": 1045, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1041, - "nodeType": "ParameterList", - "parameters": [], - "src": "598:2:3" - }, - "payable": true, - "returnParameters": { - "id": 1042, - "nodeType": "ParameterList", - "parameters": [], - "src": "638:0:3" - }, - "scope": 1046, - "src": "589:486:3", - "stateMutability": "payable", - "superFunction": null, - "visibility": "external" - } - ], - "scope": 1047, - "src": "190:887:3" - } - ], - "src": "0:1078:3" - }, - "compiler": { - "name": "solc", - "version": "0.4.19+commit.c4cbbb05.Emscripten.clang" - }, - "networks": {}, - "schemaVersion": "2.0.0", - "updatedAt": "2018-05-04T10:42:18.368Z" -} \ No newline at end of file diff --git a/safe-contracts/build/contracts/v0/ProxyFactory.json b/safe-contracts/build/contracts/v0/ProxyFactory.json deleted file mode 100644 index ad986eb501..0000000000 --- a/safe-contracts/build/contracts/v0/ProxyFactory.json +++ /dev/null @@ -1,1014 +0,0 @@ -{ - "contractName": "ProxyFactory", - "abi": [ - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "proxy", - "type": "address" - } - ], - "name": "ProxyCreation", - "type": "event" - }, - { - "constant": false, - "inputs": [ - { - "name": "masterCopy", - "type": "address" - }, - { - "name": "data", - "type": "bytes" - } - ], - "name": "createProxy", - "outputs": [ - { - "name": "proxy", - "type": "address" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "0x6060604052341561000f57600080fd5b61033e8061001e6000396000f300606060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806361b69abd14610046575b600080fd5b341561005157600080fd5b6100c0600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050610102565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008261010d6101f2565b808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f080151561015957600080fd5b905060008251111561018957600080835160208501600085600019f16000811461018257610187565b600080fd5b505b7fa38789425dbeee0239e16ff2d2567e31720127fbc6430758c1a4efc6aef29f8081604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a192915050565b604051610110806102038339019056006060604052341561000f57600080fd5b6040516020806101108339810160405280805190602001909190505060008173ffffffffffffffffffffffffffffffffffffffff161415151561005157600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506070806100a06000396000f300606060405273ffffffffffffffffffffffffffffffffffffffff60005416366000803760008036600084600019f43d6000803e8060008114603f573d6000f35b3d6000fd00a165627a7a72305820daad8330a1c74b6650ef400638bc3fcb59dcd0b0341bff33bbe640bd2ffdaff60029a165627a7a7230582016c17d280f9b2d074d821cd6f6e791d8a9100e0da9af1a0cc86af635d90935070029", - "deployedBytecode": "0x606060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806361b69abd14610046575b600080fd5b341561005157600080fd5b6100c0600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050610102565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008261010d6101f2565b808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f080151561015957600080fd5b905060008251111561018957600080835160208501600085600019f16000811461018257610187565b600080fd5b505b7fa38789425dbeee0239e16ff2d2567e31720127fbc6430758c1a4efc6aef29f8081604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a192915050565b604051610110806102038339019056006060604052341561000f57600080fd5b6040516020806101108339810160405280805190602001909190505060008173ffffffffffffffffffffffffffffffffffffffff161415151561005157600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506070806100a06000396000f300606060405273ffffffffffffffffffffffffffffffffffffffff60005416366000803760008036600084600019f43d6000803e8060008114603f573d6000f35b3d6000fd00a165627a7a72305820daad8330a1c74b6650ef400638bc3fcb59dcd0b0341bff33bbe640bd2ffdaff60029a165627a7a7230582016c17d280f9b2d074d821cd6f6e791d8a9100e0da9af1a0cc86af635d90935070029", - "sourceMap": "225:675:4:-;;;;;;;;;;;;;;;;;", - "deployedSourceMap": "225:675:4:-;;;;;;;;;;;;;;;;;;;;;;;;532:366;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;617:11;662:10;652:21;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;644:29;;701:1;687:4;:11;:15;683:201;;;806:1;803;796:4;790:5;783:4;777;773:3;770:1;763:5;759:1;755:3;750:4;830:1;825:23;;;;743:105;;825:23;844:1;841;834:6;743:105;;725:137;871:20;885:5;871:20;;;;;;;;;;;;;;;;;;;;;;532:366;;;;:::o;225:675::-;;;;;;;;;;:::o", - "source": "pragma solidity 0.4.19;\nimport \"./Proxy.sol\";\n\n\n/// @title Proxy Factory - Allows to create new proxy contact and execute a message call to the new proxy within one transaction.\n/// @author Stefan George - \ncontract ProxyFactory {\n\n event ProxyCreation(Proxy proxy);\n\n /// @dev Allows to create new proxy contact and execute a message call to the new proxy within one transaction.\n /// @param masterCopy Address of master copy.\n /// @param data Payload for message call sent to new proxy contract.\n function createProxy(address masterCopy, bytes data)\n public\n returns (Proxy proxy)\n {\n proxy = new Proxy(masterCopy);\n if (data.length > 0)\n assembly {\n switch call(not(0), proxy, 0, add(data, 0x20), mload(data), 0, 0)\n case 0 { revert(0, 0) }\n }\n ProxyCreation(proxy);\n }\n}\n", - "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ProxyFactory.sol", - "ast": { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ProxyFactory.sol", - "exportedSymbols": { - "ProxyFactory": [ - 1081 - ] - }, - "id": 1082, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 1048, - "literals": [ - "solidity", - "0.4", - ".19" - ], - "nodeType": "PragmaDirective", - "src": "0:23:4" - }, - { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Proxy.sol", - "file": "./Proxy.sol", - "id": 1049, - "nodeType": "ImportDirective", - "scope": 1082, - "sourceUnit": 1047, - "src": "24:21:4", - "symbolAliases": [], - "unitAlias": "" - }, - { - "baseContracts": [], - "contractDependencies": [ - 1046 - ], - "contractKind": "contract", - "documentation": "@title Proxy Factory - Allows to create new proxy contact and execute a message call to the new proxy within one transaction.\n @author Stefan George - ", - "fullyImplemented": true, - "id": 1081, - "linearizedBaseContracts": [ - 1081 - ], - "name": "ProxyFactory", - "nodeType": "ContractDefinition", - "nodes": [ - { - "anonymous": false, - "id": 1053, - "name": "ProxyCreation", - "nodeType": "EventDefinition", - "parameters": { - "id": 1052, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1051, - "indexed": false, - "name": "proxy", - "nodeType": "VariableDeclaration", - "scope": 1053, - "src": "274:11:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1046", - "typeString": "contract Proxy" - }, - "typeName": { - "contractScope": null, - "id": 1050, - "name": "Proxy", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1046, - "src": "274:5:4", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1046", - "typeString": "contract Proxy" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "273:13:4" - }, - "src": "254:33:4" - }, - { - "body": { - "id": 1079, - "nodeType": "Block", - "src": "634:264:4", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 1067, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1062, - "name": "proxy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1060, - "src": "644:5:4", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1046", - "typeString": "contract Proxy" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1065, - "name": "masterCopy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1055, - "src": "662:10:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 1064, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "NewExpression", - "src": "652:9:4", - "typeDescriptions": { - "typeIdentifier": "t_function_creation_nonpayable$_t_address_$returns$_t_contract$_Proxy_$1046_$", - "typeString": "function (address) returns (contract Proxy)" - }, - "typeName": { - "contractScope": null, - "id": 1063, - "name": "Proxy", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1046, - "src": "656:5:4", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1046", - "typeString": "contract Proxy" - } - } - }, - "id": 1066, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "652:21:4", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1046", - "typeString": "contract Proxy" - } - }, - "src": "644:29:4", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1046", - "typeString": "contract Proxy" - } - }, - "id": 1068, - "nodeType": "ExpressionStatement", - "src": "644:29:4" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1072, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1069, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1057, - "src": "687:4:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "id": 1070, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "687:11:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1071, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "701:1:4", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "687:15:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 1074, - "nodeType": "IfStatement", - "src": "683:201:4", - "trueBody": { - "externalReferences": [ - { - "data": { - "declaration": 1057, - "isOffset": false, - "isSlot": false, - "src": "777:4:4", - "valueSize": 1 - } - }, - { - "data": { - "declaration": 1057, - "isOffset": false, - "isSlot": false, - "src": "796:4:4", - "valueSize": 1 - } - }, - { - "proxy": { - "declaration": 1060, - "isOffset": false, - "isSlot": false, - "src": "763:5:4", - "valueSize": 1 - } - } - ], - "id": 1073, - "nodeType": "InlineAssembly", - "operations": "{\n switch call(not(0), proxy, 0, add(data, 0x20), mload(data), 0, 0)\n case 0 {\n revert(0, 0)\n }\n}", - "src": "716:168:4" - } - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1076, - "name": "proxy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1060, - "src": "885:5:4", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1046", - "typeString": "contract Proxy" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_Proxy_$1046", - "typeString": "contract Proxy" - } - ], - "id": 1075, - "name": "ProxyCreation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1053, - "src": "871:13:4", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_contract$_Proxy_$1046_$returns$__$", - "typeString": "function (contract Proxy)" - } - }, - "id": 1077, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "871:20:4", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1078, - "nodeType": "ExpressionStatement", - "src": "871:20:4" - } - ] - }, - "id": 1080, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "createProxy", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1058, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1055, - "name": "masterCopy", - "nodeType": "VariableDeclaration", - "scope": 1080, - "src": "553:18:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1054, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "553:7:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1057, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 1080, - "src": "573:10:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 1056, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "573:5:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "552:32:4" - }, - "payable": false, - "returnParameters": { - "id": 1061, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1060, - "name": "proxy", - "nodeType": "VariableDeclaration", - "scope": 1080, - "src": "617:11:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1046", - "typeString": "contract Proxy" - }, - "typeName": { - "contractScope": null, - "id": 1059, - "name": "Proxy", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1046, - "src": "617:5:4", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1046", - "typeString": "contract Proxy" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "616:13:4" - }, - "scope": 1081, - "src": "532:366:4", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - } - ], - "scope": 1082, - "src": "225:675:4" - } - ], - "src": "0:901:4" - }, - "legacyAST": { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ProxyFactory.sol", - "exportedSymbols": { - "ProxyFactory": [ - 1081 - ] - }, - "id": 1082, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 1048, - "literals": [ - "solidity", - "0.4", - ".19" - ], - "nodeType": "PragmaDirective", - "src": "0:23:4" - }, - { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Proxy.sol", - "file": "./Proxy.sol", - "id": 1049, - "nodeType": "ImportDirective", - "scope": 1082, - "sourceUnit": 1047, - "src": "24:21:4", - "symbolAliases": [], - "unitAlias": "" - }, - { - "baseContracts": [], - "contractDependencies": [ - 1046 - ], - "contractKind": "contract", - "documentation": "@title Proxy Factory - Allows to create new proxy contact and execute a message call to the new proxy within one transaction.\n @author Stefan George - ", - "fullyImplemented": true, - "id": 1081, - "linearizedBaseContracts": [ - 1081 - ], - "name": "ProxyFactory", - "nodeType": "ContractDefinition", - "nodes": [ - { - "anonymous": false, - "id": 1053, - "name": "ProxyCreation", - "nodeType": "EventDefinition", - "parameters": { - "id": 1052, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1051, - "indexed": false, - "name": "proxy", - "nodeType": "VariableDeclaration", - "scope": 1053, - "src": "274:11:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1046", - "typeString": "contract Proxy" - }, - "typeName": { - "contractScope": null, - "id": 1050, - "name": "Proxy", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1046, - "src": "274:5:4", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1046", - "typeString": "contract Proxy" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "273:13:4" - }, - "src": "254:33:4" - }, - { - "body": { - "id": 1079, - "nodeType": "Block", - "src": "634:264:4", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 1067, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1062, - "name": "proxy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1060, - "src": "644:5:4", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1046", - "typeString": "contract Proxy" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1065, - "name": "masterCopy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1055, - "src": "662:10:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 1064, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "NewExpression", - "src": "652:9:4", - "typeDescriptions": { - "typeIdentifier": "t_function_creation_nonpayable$_t_address_$returns$_t_contract$_Proxy_$1046_$", - "typeString": "function (address) returns (contract Proxy)" - }, - "typeName": { - "contractScope": null, - "id": 1063, - "name": "Proxy", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1046, - "src": "656:5:4", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1046", - "typeString": "contract Proxy" - } - } - }, - "id": 1066, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "652:21:4", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1046", - "typeString": "contract Proxy" - } - }, - "src": "644:29:4", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1046", - "typeString": "contract Proxy" - } - }, - "id": 1068, - "nodeType": "ExpressionStatement", - "src": "644:29:4" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1072, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1069, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1057, - "src": "687:4:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "id": 1070, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "687:11:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1071, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "701:1:4", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "687:15:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 1074, - "nodeType": "IfStatement", - "src": "683:201:4", - "trueBody": { - "externalReferences": [ - { - "data": { - "declaration": 1057, - "isOffset": false, - "isSlot": false, - "src": "777:4:4", - "valueSize": 1 - } - }, - { - "data": { - "declaration": 1057, - "isOffset": false, - "isSlot": false, - "src": "796:4:4", - "valueSize": 1 - } - }, - { - "proxy": { - "declaration": 1060, - "isOffset": false, - "isSlot": false, - "src": "763:5:4", - "valueSize": 1 - } - } - ], - "id": 1073, - "nodeType": "InlineAssembly", - "operations": "{\n switch call(not(0), proxy, 0, add(data, 0x20), mload(data), 0, 0)\n case 0 {\n revert(0, 0)\n }\n}", - "src": "716:168:4" - } - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1076, - "name": "proxy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1060, - "src": "885:5:4", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1046", - "typeString": "contract Proxy" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_Proxy_$1046", - "typeString": "contract Proxy" - } - ], - "id": 1075, - "name": "ProxyCreation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1053, - "src": "871:13:4", - "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_contract$_Proxy_$1046_$returns$__$", - "typeString": "function (contract Proxy)" - } - }, - "id": 1077, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "871:20:4", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1078, - "nodeType": "ExpressionStatement", - "src": "871:20:4" - } - ] - }, - "id": 1080, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "createProxy", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1058, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1055, - "name": "masterCopy", - "nodeType": "VariableDeclaration", - "scope": 1080, - "src": "553:18:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1054, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "553:7:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1057, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 1080, - "src": "573:10:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 1056, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "573:5:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "552:32:4" - }, - "payable": false, - "returnParameters": { - "id": 1061, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1060, - "name": "proxy", - "nodeType": "VariableDeclaration", - "scope": 1080, - "src": "617:11:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1046", - "typeString": "contract Proxy" - }, - "typeName": { - "contractScope": null, - "id": 1059, - "name": "Proxy", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1046, - "src": "617:5:4", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1046", - "typeString": "contract Proxy" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "616:13:4" - }, - "scope": 1081, - "src": "532:366:4", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - } - ], - "scope": 1082, - "src": "225:675:4" - } - ], - "src": "0:901:4" - }, - "compiler": { - "name": "solc", - "version": "0.4.19+commit.c4cbbb05.Emscripten.clang" - }, - "networks": { - "4": { - "events": {}, - "links": {}, - "address": "0x28442b8a4c6ffbe02fa75a1d1524b7c38ef79194", - "transactionHash": "0xc0e9f6268bb1b4e75e1683d0d93175523c18a23ef01bf660f6332d54ca03ad92" - }, - "42": { - "events": {}, - "links": {}, - "address": "0x53294c9c8def7e613c5bc68ac232125c0a60bef7", - "transactionHash": "0x641afc57ac89b6f66587df51dda6b602bf35fc0feef170b48e8a047729eb8784" - }, - "1525342778744": { - "events": {}, - "links": {}, - "address": "0xba6fb7147e7586b483610639adf7ad72ca52bb0f", - "transactionHash": "0x9eef5bbd728a1a1add6215268dd534fda491d32af43574c029fefa98eb798e03" - }, - "1525789101965": { - "events": {}, - "links": {}, - "address": "0x6fc8a87bf7e3499f14c21396b773cc92adb7d1e6", - "transactionHash": "0x70d96a3ae7424f041f6d56773e5500d9eecc075b3ec5b9fb63ee06b91354965c" - } - }, - "schemaVersion": "2.0.0", - "updatedAt": "2018-05-08T14:18:44.019Z" -} \ No newline at end of file diff --git a/safe-contracts/build/contracts/v0/SocialRecoveryExtension.json b/safe-contracts/build/contracts/v0/SocialRecoveryExtension.json deleted file mode 100644 index 0d19870f1f..0000000000 --- a/safe-contracts/build/contracts/v0/SocialRecoveryExtension.json +++ /dev/null @@ -1,9121 +0,0 @@ -{ - "contractName": "SocialRecoveryExtension", - "abi": [ - { - "constant": true, - "inputs": [], - "name": "REPLACE_OWNER_FUNCTION_IDENTIFIER", - "outputs": [ - { - "name": "", - "type": "bytes4" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "threshold", - "outputs": [ - { - "name": "", - "type": "uint8" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "", - "type": "address" - } - ], - "name": "isFriend", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "NAME", - "outputs": [ - { - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "gnosisSafe", - "outputs": [ - { - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "", - "type": "bytes32" - }, - { - "name": "", - "type": "address" - } - ], - "name": "isConfirmed", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "", - "type": "uint256" - } - ], - "name": "friends", - "outputs": [ - { - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "", - "type": "bytes32" - } - ], - "name": "isExecuted", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "VERSION", - "outputs": [ - { - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "name": "_friends", - "type": "address[]" - }, - { - "name": "_threshold", - "type": "uint8" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "constant": false, - "inputs": [ - { - "name": "_friends", - "type": "address[]" - }, - { - "name": "_threshold", - "type": "uint8" - } - ], - "name": "setup", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_masterCopy", - "type": "address" - } - ], - "name": "changeMasterCopy", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "dataHash", - "type": "bytes32" - } - ], - "name": "confirmTransaction", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "sender", - "type": "address" - }, - { - "name": "to", - "type": "address" - }, - { - "name": "value", - "type": "uint256" - }, - { - "name": "data", - "type": "bytes" - }, - { - "name": "operation", - "type": "uint8" - } - ], - "name": "isExecutable", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "dataHash", - "type": "bytes32" - } - ], - "name": "isConfirmedByRequiredFriends", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "data", - "type": "bytes" - } - ], - "name": "getDataHash", - "outputs": [ - { - "name": "", - "type": "bytes32" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x606060405234156200001057600080fd5b6040516200140738038062001407833981016040528080518201919060200180519060200190919050506200005a82826200006264010000000002620006a2176401000000009004565b505062000360565b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515620000ab57600080fd5b82518260ff1611151515620000bf57600080fd5b60028260ff1610151515620000d357600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600090505b82518110156200025257600083828151811015156200013457fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff16141515156200016257600080fd5b6003600084838151811015156200017557fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515620001d457600080fd5b6001600360008584815181101515620001e957fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808060010191505062000119565b82600290805190602001906200026a9291906200028b565b5081600160146101000a81548160ff021916908360ff160217905550505050565b82805482825590600052602060002090810192821562000307579160200282015b82811115620003065782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190620002ac565b5b5090506200031691906200031a565b5090565b6200035d91905b808211156200035957600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555060010162000321565b5090565b90565b61109780620003706000396000f3006060604052600436106100db576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806336749c1a146100e05780633cf5b3091461014757806342cde4e8146101ad57806368125a1b146101dc57806379716e431461022d5780637de7edef146102545780639ca89d0d1461028d578063a3f4df7e146102cc578063a84173ae1461035a578063ae68b056146103af578063b79ffaff14610428578063cde09ca914610486578063ce1468281461054e578063e52cb36a146105b1578063ffa1ad74146105f0575b600080fd5b34156100eb57600080fd5b6100f361067e565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b341561015257600080fd5b6101ab60048080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190803560ff169060200190919050506106a2565b005b34156101b857600080fd5b6101c06108bf565b604051808260ff1660ff16815260200191505060405180910390f35b34156101e757600080fd5b610213600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506108d2565b604051808215151515815260200191505060405180910390f35b341561023857600080fd5b6102526004808035600019169060200190919050506108f2565b005b341561025f57600080fd5b61028b600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506109f3565b005b341561029857600080fd5b6102b2600480803560001916906020019091905050610ab8565b604051808215151515815260200191505060405180910390f35b34156102d757600080fd5b6102df610bb8565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561031f578082015181840152602081019050610304565b50505050905090810190601f16801561034c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561036557600080fd5b61036d610bf1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156103ba57600080fd5b61040a600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050610c17565b60405180826000191660001916815260200191505060405180910390f35b341561043357600080fd5b61046c60048080356000191690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c83565b604051808215151515815260200191505060405180910390f35b341561049157600080fd5b610534600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803560ff16906020019091905050610cb2565b604051808215151515815260200191505060405180910390f35b341561055957600080fd5b61056f6004808035906020019091905050610f06565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156105bc57600080fd5b6105d6600480803560001916906020019091905050610f45565b604051808215151515815260200191505060405180910390f35b34156105fb57600080fd5b610603610f65565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610643578082015181840152602081019050610628565b50505050905090810190601f1680156106705780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b7f54e99c6e0000000000000000000000000000000000000000000000000000000081565b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156106ea57600080fd5b82518260ff16111515156106fd57600080fd5b60028260ff161015151561071057600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600090505b8251811015610888576000838281518110151561076f57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff161415151561079c57600080fd5b6003600084838151811015156107ae57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561080c57600080fd5b600160036000858481518110151561082057fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080600101915050610756565b826002908051906020019061089e929190610f9e565b5081600160146101000a81548160ff021916908360ff160217905550505050565b600160149054906101000a900460ff1681565b60036020528060005260406000206000915054906101000a900460ff1681565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561094a57600080fd5b60046000826000191660001916815260200190815260200160002060009054906101000a900460ff1615151561097f57600080fd5b600160056000836000191660001916815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610a4f57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610a7557600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060008090505b600280549050811015610bac576005600085600019166000191681526020019081526020016000206000600283815481101515610afa57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610b7c5781806001019250505b600160149054906101000a900460ff1660ff16821415610b9f5760019250610bb1565b8080600101915050610ac1565b600092505b5050919050565b6040805190810160405280601981526020017f536f6369616c205265636f7665727920457874656e73696f6e0000000000000081525081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000816040518082805190602001908083835b602083101515610c4f5780518252602082019150602081019050602083039250610c2a565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209050919050565b60056020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b6000806000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610d1357600080fd5b600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610d6b57600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16141515610dc757600080fd5b600086141515610dd657600080fd5b60006002811115610de357fe5b846002811115610def57fe5b141515610dfb57600080fd5b602085015191507f54e99c6e000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141515610e6e57600080fd5b610e7785610c17565b905060046000826000191660001916815260200190815260200160002060009054906101000a900460ff16158015610eb45750610eb381610ab8565b5b15610ef657600160046000836000191660001916815260200190815260200160002060006101000a81548160ff02191690831515021790555060019250610efb565b600092505b505095945050505050565b600281815481101515610f1557fe5b90600052602060002090016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60046020528060005260406000206000915054906101000a900460ff1681565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b828054828255906000526020600020908101928215611017579160200282015b828111156110165782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190610fbe565b5b5090506110249190611028565b5090565b61106891905b8082111561106457600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555060010161102e565b5090565b905600a165627a7a72305820f9a7137ea400c3cdaa59bb893ba2ca5055de1db780c2f3b4099da379d1b4ee460029", - "deployedBytecode": "0x6060604052600436106100db576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806336749c1a146100e05780633cf5b3091461014757806342cde4e8146101ad57806368125a1b146101dc57806379716e431461022d5780637de7edef146102545780639ca89d0d1461028d578063a3f4df7e146102cc578063a84173ae1461035a578063ae68b056146103af578063b79ffaff14610428578063cde09ca914610486578063ce1468281461054e578063e52cb36a146105b1578063ffa1ad74146105f0575b600080fd5b34156100eb57600080fd5b6100f361067e565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b341561015257600080fd5b6101ab60048080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509190803560ff169060200190919050506106a2565b005b34156101b857600080fd5b6101c06108bf565b604051808260ff1660ff16815260200191505060405180910390f35b34156101e757600080fd5b610213600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506108d2565b604051808215151515815260200191505060405180910390f35b341561023857600080fd5b6102526004808035600019169060200190919050506108f2565b005b341561025f57600080fd5b61028b600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506109f3565b005b341561029857600080fd5b6102b2600480803560001916906020019091905050610ab8565b604051808215151515815260200191505060405180910390f35b34156102d757600080fd5b6102df610bb8565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561031f578082015181840152602081019050610304565b50505050905090810190601f16801561034c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561036557600080fd5b61036d610bf1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156103ba57600080fd5b61040a600480803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091905050610c17565b60405180826000191660001916815260200191505060405180910390f35b341561043357600080fd5b61046c60048080356000191690602001909190803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610c83565b604051808215151515815260200191505060405180910390f35b341561049157600080fd5b610534600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803560ff16906020019091905050610cb2565b604051808215151515815260200191505060405180910390f35b341561055957600080fd5b61056f6004808035906020019091905050610f06565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156105bc57600080fd5b6105d6600480803560001916906020019091905050610f45565b604051808215151515815260200191505060405180910390f35b34156105fb57600080fd5b610603610f65565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610643578082015181840152602081019050610628565b50505050905090810190601f1680156106705780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b7f54e99c6e0000000000000000000000000000000000000000000000000000000081565b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156106ea57600080fd5b82518260ff16111515156106fd57600080fd5b60028260ff161015151561071057600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600090505b8251811015610888576000838281518110151561076f57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff161415151561079c57600080fd5b6003600084838151811015156107ae57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561080c57600080fd5b600160036000858481518110151561082057fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080600101915050610756565b826002908051906020019061089e929190610f9e565b5081600160146101000a81548160ff021916908360ff160217905550505050565b600160149054906101000a900460ff1681565b60036020528060005260406000206000915054906101000a900460ff1681565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561094a57600080fd5b60046000826000191660001916815260200190815260200160002060009054906101000a900460ff1615151561097f57600080fd5b600160056000836000191660001916815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610a4f57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610a7557600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060008090505b600280549050811015610bac576005600085600019166000191681526020019081526020016000206000600283815481101515610afa57fe5b906000526020600020900160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610b7c5781806001019250505b600160149054906101000a900460ff1660ff16821415610b9f5760019250610bb1565b8080600101915050610ac1565b600092505b5050919050565b6040805190810160405280601981526020017f536f6369616c205265636f7665727920457874656e73696f6e0000000000000081525081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000816040518082805190602001908083835b602083101515610c4f5780518252602082019150602081019050602083039250610c2a565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209050919050565b60056020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b6000806000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610d1357600080fd5b600360008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610d6b57600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16141515610dc757600080fd5b600086141515610dd657600080fd5b60006002811115610de357fe5b846002811115610def57fe5b141515610dfb57600080fd5b602085015191507f54e99c6e000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141515610e6e57600080fd5b610e7785610c17565b905060046000826000191660001916815260200190815260200160002060009054906101000a900460ff16158015610eb45750610eb381610ab8565b5b15610ef657600160046000836000191660001916815260200190815260200160002060006101000a81548160ff02191690831515021790555060019250610efb565b600092505b505095945050505050565b600281815481101515610f1557fe5b90600052602060002090016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60046020528060005260406000206000915054906101000a900460ff1681565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b828054828255906000526020600020908101928215611017579160200282015b828111156110165782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190610fbe565b5b5090506110249190611028565b5090565b61106891905b8082111561106457600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555060010161102e565b5090565b905600a165627a7a72305820f9a7137ea400c3cdaa59bb893ba2ca5055de1db780c2f3b4099da379d1b4ee460029", - "sourceMap": "257:4890:6:-;;;1386:134;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1486:27;1492:8;1502:10;1486:5;;;;;:27;;;:::i;:::-;1386:134;;257:4890;;1717:669;2142:9;1966:1;1951:10;;;;;;;;;;;1943:24;;;1935:33;;;;;;;;2000:8;:15;1986:10;:29;;;;1978:38;;;;;;;;2048:1;2034:10;:15;;;;2026:24;;;;;;;;2084:10;2060;;:35;;;;;;;;;;;;;;;;;;2154:1;2142:13;;2137:183;2161:8;:15;2157:1;:19;2137:183;;;2220:1;2205:8;2214:1;2205:11;;;;;;;;;;;;;;;;;;:16;;;;2197:25;;;;;;;;2245:8;:21;2254:8;2263:1;2254:11;;;;;;;;;;;;;;;;;;2245:21;;;;;;;;;;;;;;;;;;;;;;;;;2244:22;2236:31;;;;;;;;2305:4;2281:8;:21;2290:8;2299:1;2290:11;;;;;;;;;;;;;;;;;;2281:21;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;2178:3;;;;;;;2137:183;;;2339:8;2329:7;:18;;;;;;;;;;;;:::i;:::-;;2369:10;2357:9;;:22;;;;;;;;;;;;;;;;;;1717:669;;;:::o;257:4890::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;", - "deployedSourceMap": "257:4890:6:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;419:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1717:669;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;572:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;695:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2835:181;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2532:190;;;;;;;;;;;;;;;;;;;;;;;;;;;;4481:405;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;310:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;538:28:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5015:130;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;939:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3404:916;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;600:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;804:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;373:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;419:72:6;;;:::o;1717:669::-;2142:9;1966:1;1951:10;;;;;;;;;;;1943:24;;;1935:33;;;;;;;;2000:8;:15;1986:10;:29;;;;1978:38;;;;;;;;2048:1;2034:10;:15;;;;2026:24;;;;;;;;2084:10;2060;;:35;;;;;;;;;;;;;;;;;;2154:1;2142:13;;2137:183;2161:8;:15;2157:1;:19;2137:183;;;2220:1;2205:8;2214:1;2205:11;;;;;;;;;;;;;;;;;;:16;;;;2197:25;;;;;;;;2245:8;:21;2254:8;2263:1;2254:11;;;;;;;;;;;;;;;;;;2245:21;;;;;;;;;;;;;;;;;;;;;;;;;2244:22;2236:31;;;;;;;;2305:4;2281:8;:21;2290:8;2299:1;2290:11;;;;;;;;;;;;;;;;;;2281:21;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;2178:3;;;;;;;2137:183;;;2339:8;2329:7;:18;;;;;;;;;;;;:::i;:::-;;2369:10;2357:9;;:22;;;;;;;;;;;;;;;;;;1717:669;;;:::o;572:22::-;;;;;;;;;;;;;:::o;695:41::-;;;;;;;;;;;;;;;;;;;;;;:::o;2835:181::-;1153:8;:20;1162:10;1153:20;;;;;;;;;;;;;;;;;;;;;;;;;1145:29;;;;;;;;2938:10;:20;2949:8;2938:20;;;;;;;;;;;;;;;;;;;;;;;;;;;2937:21;2929:30;;;;;;;;3005:4;2969:11;:21;2981:8;2969:21;;;;;;;;;;;;;;;;;:33;2991:10;2969:33;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;2835:181;:::o;2532:190::-;1077:10;;;;;;;;;;;1055:33;;:10;:33;;;1047:42;;;;;;;;2679:1;2663:11;2655:25;;;;2647:34;;;;;;;;2704:11;2691:10;;:24;;;;;;;;;;;;;;;;;;2532:190;:::o;4481:405::-;4582:4;4602:25;4642:9;4654:1;4642:13;;4637:221;4661:7;:14;;;;4657:1;:18;4637:221;;;4700:11;:21;4712:8;4700:21;;;;;;;;;;;;;;;;;:33;4722:7;4730:1;4722:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;4700:33;;;;;;;;;;;;;;;;;;;;;;;;;4696:74;;;4751:19;;;;;;;4696:74;4809:9;;;;;;;;;;;4788:30;;:17;:30;4784:63;;;4843:4;4836:11;;;;4784:63;4677:3;;;;;;;4637:221;;;4874:5;4867:12;;4481:405;;;;;;:::o;310:57::-;;;;;;;;;;;;;;;;;;;;:::o;538:28::-;;;;;;;;;;;;;:::o;5015:130::-;5093:7;5133:4;5123:15;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:2;51:6;36:153;;;182:3;176:5;171:3;164:6;98:2;93:3;89;82:19;;123:2;118:3;114;107:19;;148:2;143:3;139;132:19;;36:153;;;274:1;267:3;263:2;259:3;254;250;246;315:4;311:3;305;299:5;295:3;356:4;350:3;344:5;340:3;389:7;380;377:2;372:3;365:6;3:399;;;;;;;;;;;;;;;;;;;5116:22:6;;5015:130;;;:::o;939:65::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3404:916::-;3568:4;3890:25;4085:16;1077:10;;;;;;;;;;;1055:33;;:10;:33;;;1047:42;;;;;;;;3660:8;:16;3669:6;3660:16;;;;;;;;;;;;;;;;;;;;;;;;;3652:25;;;;;;;;3709:10;;;;;;;;;;;3695:25;;:2;:25;;;3687:34;;;;;;;;3748:1;3739:5;:10;3731:19;;;;;;;;3781:25;3768:38;;;;;;;;:9;:38;;;;;;;;;3760:47;;;;;;;;3986:4;3980;3976:3;3970:5;3948:44;;4041:33;4019:55;;;:18;:55;;;;4011:64;;;;;;;;4104:17;4116:4;4104:11;:17::i;:::-;4085:36;;4139:10;:20;4150:8;4139:20;;;;;;;;;;;;;;;;;;;;;;;;;;;4138:21;:75;;;;;4175:38;4204:8;4175:28;:38::i;:::-;4138:75;4131:161;;;4252:4;4229:10;:20;4240:8;4229:20;;;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;4277:4;4270:11;;;;4131:161;4308:5;4301:12;;1099:1;3404:916;;;;;;;;;:::o;600:24::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;804:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;373:40::-;;;;;;;;;;;;;;;;;;;;:::o;257:4890::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", - "source": "pragma solidity 0.4.19;\nimport \"../Extension.sol\";\nimport \"../GnosisSafe.sol\";\n\n\n/// @title Social Recovery Extension - Allows to replace an owner without Safe confirmations if friends approve the replacement.\n/// @author Stefan George - \ncontract SocialRecoveryExtension is Extension {\n\n string public constant NAME = \"Social Recovery Extension\";\n string public constant VERSION = \"0.0.1\";\n bytes4 public constant REPLACE_OWNER_FUNCTION_IDENTIFIER = hex\"54e99c6e\";\n\n SocialRecoveryExtension masterCopy;\n GnosisSafe public gnosisSafe;\n uint8 public threshold;\n address[] public friends;\n\n // isFriend mapping maps friend's address to friend status.\n mapping (address => bool) public isFriend;\n // isExecuted mapping maps data hash to execution status.\n mapping (bytes32 => bool) public isExecuted;\n // isConfirmed mapping maps data hash to friend's address to confirmation status.\n mapping (bytes32 => mapping (address => bool)) public isConfirmed;\n\n modifier onlyGnosisSafe() {\n require(msg.sender == address(gnosisSafe));\n _;\n }\n\n modifier onlyFriend() {\n require(isFriend[msg.sender]);\n _;\n }\n\n /// @dev Constructor function triggers setup function.\n /// @param _friends List of friends' addresses.\n /// @param _threshold Required number of friends to confirm replacement.\n function SocialRecoveryExtension(address[] _friends, uint8 _threshold)\n public\n {\n setup(_friends, _threshold);\n }\n\n /// @dev Setup function sets initial storage of contract.\n /// @param _friends List of friends' addresses.\n /// @param _threshold Required number of friends to confirm replacement.\n function setup(address[] _friends, uint8 _threshold)\n public\n {\n // gnosisSafe can only be 0 at initalization of contract.\n // Check ensures that setup function can only be called once.\n require(address(gnosisSafe) == 0);\n require(_threshold <= _friends.length);\n require(_threshold >= 2);\n gnosisSafe = GnosisSafe(msg.sender);\n // Set allowed friends.\n for (uint256 i = 0; i < _friends.length; i++) {\n require(_friends[i] != 0);\n require(!isFriend[_friends[i]]);\n isFriend[_friends[i]] = true;\n }\n friends = _friends;\n threshold = _threshold;\n }\n\n /// @dev Allows to upgrade the contract. This can only be done via a Safe transaction.\n /// @param _masterCopy New contract address.\n function changeMasterCopy(SocialRecoveryExtension _masterCopy)\n public\n onlyGnosisSafe\n {\n require(address(_masterCopy) != 0);\n masterCopy = _masterCopy;\n }\n\n /// @dev Allows a friend to confirm a Safe transaction.\n /// @param dataHash Safe transaction hash.\n function confirmTransaction(bytes32 dataHash)\n public\n onlyFriend\n {\n require(!isExecuted[dataHash]);\n isConfirmed[dataHash][msg.sender] = true;\n }\n\n /// @dev Returns if Safe transaction is a valid owner replacement transaction.\n /// @param sender Friend's address.\n /// @param to Gnosis Safe address.\n /// @param value No Ether should be send.\n /// @param data Encoded owner replacement transaction.\n /// @param operation Only Call operations are allowed.\n /// @return Returns if transaction can be executed.\n function isExecutable(address sender, address to, uint256 value, bytes data, GnosisSafe.Operation operation)\n public\n onlyGnosisSafe\n returns (bool)\n {\n // Only friends are allowed to execute the replacement.\n require(isFriend[sender]);\n require(to == address(gnosisSafe));\n require(value == 0);\n require(operation == GnosisSafe.Operation.Call);\n // Validate that transaction is a owner replacement transaction.\n bytes4 functionIdentifier;\n assembly {\n functionIdentifier := mload(add(data, 0x20))\n }\n require(functionIdentifier == REPLACE_OWNER_FUNCTION_IDENTIFIER);\n bytes32 dataHash = getDataHash(data);\n if ( !isExecuted[dataHash]\n && isConfirmedByRequiredFriends(dataHash)) {\n isExecuted[dataHash] = true;\n return true;\n }\n return false;\n }\n\n /// @dev Returns if Safe transaction is a valid owner replacement transaction.\n /// @param dataHash Data hash.\n /// @return Confirmation status.\n function isConfirmedByRequiredFriends(bytes32 dataHash)\n public\n view\n returns (bool)\n {\n uint256 confirmationCount;\n for (uint256 i = 0; i < friends.length; i++) {\n if (isConfirmed[dataHash][friends[i]])\n confirmationCount++;\n if (confirmationCount == threshold)\n return true;\n }\n return false;\n }\n\n /// @dev Returns hash of data encoding owner replacement.\n /// @param data Data payload.\n /// @return Data hash.\n function getDataHash(bytes data)\n public\n view\n returns (bytes32)\n {\n return keccak256(data);\n }\n}\n", - "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/extensions/SocialRecoveryExtension.sol", - "ast": { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/extensions/SocialRecoveryExtension.sol", - "exportedSymbols": { - "SocialRecoveryExtension": [ - 1759 - ] - }, - "id": 1760, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 1420, - "literals": [ - "solidity", - "0.4", - ".19" - ], - "nodeType": "PragmaDirective", - "src": "0:23:6" - }, - { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Extension.sol", - "file": "../Extension.sol", - "id": 1421, - "nodeType": "ImportDirective", - "scope": 1760, - "sourceUnit": 19, - "src": "24:26:6", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", - "file": "../GnosisSafe.sol", - "id": 1422, - "nodeType": "ImportDirective", - "scope": 1760, - "sourceUnit": 964, - "src": "51:27:6", - "symbolAliases": [], - "unitAlias": "" - }, - { - "baseContracts": [ - { - "arguments": [], - "baseName": { - "contractScope": null, - "id": 1423, - "name": "Extension", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 18, - "src": "293:9:6", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "id": 1424, - "nodeType": "InheritanceSpecifier", - "src": "293:9:6" - } - ], - "contractDependencies": [ - 18 - ], - "contractKind": "contract", - "documentation": "@title Social Recovery Extension - Allows to replace an owner without Safe confirmations if friends approve the replacement.\n @author Stefan George - ", - "fullyImplemented": true, - "id": 1759, - "linearizedBaseContracts": [ - 1759, - 18 - ], - "name": "SocialRecoveryExtension", - "nodeType": "ContractDefinition", - "nodes": [ - { - "constant": true, - "id": 1427, - "name": "NAME", - "nodeType": "VariableDeclaration", - "scope": 1759, - "src": "310:57:6", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_string_memory", - "typeString": "string memory" - }, - "typeName": { - "id": 1425, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "310:6:6", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string storage pointer" - } - }, - "value": { - "argumentTypes": null, - "hexValue": "536f6369616c205265636f7665727920457874656e73696f6e", - "id": 1426, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "340:27:6", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_995be5b755f102e2c36520d5037cfd901f504498d7c57ded40542623e7cc2eda", - "typeString": "literal_string \"Social Recovery Extension\"" - }, - "value": "Social Recovery Extension" - }, - "visibility": "public" - }, - { - "constant": true, - "id": 1430, - "name": "VERSION", - "nodeType": "VariableDeclaration", - "scope": 1759, - "src": "373:40:6", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_string_memory", - "typeString": "string memory" - }, - "typeName": { - "id": 1428, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "373:6:6", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string storage pointer" - } - }, - "value": { - "argumentTypes": null, - "hexValue": "302e302e31", - "id": 1429, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "406:7:6", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", - "typeString": "literal_string \"0.0.1\"" - }, - "value": "0.0.1" - }, - "visibility": "public" - }, - { - "constant": true, - "id": 1433, - "name": "REPLACE_OWNER_FUNCTION_IDENTIFIER", - "nodeType": "VariableDeclaration", - "scope": 1759, - "src": "419:72:6", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - "typeName": { - "id": 1431, - "name": "bytes4", - "nodeType": "ElementaryTypeName", - "src": "419:6:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "value": { - "argumentTypes": null, - "hexValue": "54e99c6e", - "id": 1432, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "478:13:6", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_c9d777df93ed5e148240dbbfbc0215def5044b10739d563ea8310789d1317911", - "typeString": "literal_string (contains invalid UTF-8 sequence at position 4)" - }, - "value": null - }, - "visibility": "public" - }, - { - "constant": false, - "id": 1435, - "name": "masterCopy", - "nodeType": "VariableDeclaration", - "scope": 1759, - "src": "498:34:6", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759", - "typeString": "contract SocialRecoveryExtension" - }, - "typeName": { - "contractScope": null, - "id": 1434, - "name": "SocialRecoveryExtension", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1759, - "src": "498:23:6", - "typeDescriptions": { - "typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759", - "typeString": "contract SocialRecoveryExtension" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1437, - "name": "gnosisSafe", - "nodeType": "VariableDeclaration", - "scope": 1759, - "src": "538:28:6", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - }, - "typeName": { - "contractScope": null, - "id": 1436, - "name": "GnosisSafe", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 963, - "src": "538:10:6", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "id": 1439, - "name": "threshold", - "nodeType": "VariableDeclaration", - "scope": 1759, - "src": "572:22:6", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 1438, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "572:5:6", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "id": 1442, - "name": "friends", - "nodeType": "VariableDeclaration", - "scope": 1759, - "src": "600:24:6", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - }, - "typeName": { - "baseType": { - "id": 1440, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "600:7:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 1441, - "length": null, - "nodeType": "ArrayTypeName", - "src": "600:9:6", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[] storage pointer" - } - }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "id": 1446, - "name": "isFriend", - "nodeType": "VariableDeclaration", - "scope": 1759, - "src": "695:41:6", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - }, - "typeName": { - "id": 1445, - "keyType": { - "id": 1443, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "704:7:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Mapping", - "src": "695:25:6", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - }, - "valueType": { - "id": 1444, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "715:4:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "id": 1450, - "name": "isExecuted", - "nodeType": "VariableDeclaration", - "scope": 1759, - "src": "804:43:6", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - }, - "typeName": { - "id": 1449, - "keyType": { - "id": 1447, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "813:7:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Mapping", - "src": "804:25:6", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - }, - "valueType": { - "id": 1448, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "824:4:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "id": 1456, - "name": "isConfirmed", - "nodeType": "VariableDeclaration", - "scope": 1759, - "src": "939:65:6", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", - "typeString": "mapping(bytes32 => mapping(address => bool))" - }, - "typeName": { - "id": 1455, - "keyType": { - "id": 1451, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "948:7:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Mapping", - "src": "939:46:6", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", - "typeString": "mapping(bytes32 => mapping(address => bool))" - }, - "valueType": { - "id": 1454, - "keyType": { - "id": 1452, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "968:7:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Mapping", - "src": "959:25:6", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - }, - "valueType": { - "id": 1453, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "979:4:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - } - }, - "value": null, - "visibility": "public" - }, - { - "body": { - "id": 1468, - "nodeType": "Block", - "src": "1037:70:6", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 1464, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1459, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2089, - "src": "1055:3:6", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1460, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "1055:10:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1462, - "name": "gnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1437, - "src": "1077:10:6", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - ], - "id": 1461, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "1069:7:6", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 1463, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1069:19:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "1055:33:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1458, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "1047:7:6", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1465, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1047:42:6", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1466, - "nodeType": "ExpressionStatement", - "src": "1047:42:6" - }, - { - "id": 1467, - "nodeType": "PlaceholderStatement", - "src": "1099:1:6" - } - ] - }, - "id": 1469, - "name": "onlyGnosisSafe", - "nodeType": "ModifierDefinition", - "parameters": { - "id": 1457, - "nodeType": "ParameterList", - "parameters": [], - "src": "1034:2:6" - }, - "src": "1011:96:6", - "visibility": "internal" - }, - { - "body": { - "id": 1479, - "nodeType": "Block", - "src": "1135:57:6", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1472, - "name": "isFriend", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1446, - "src": "1153:8:6", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 1475, - "indexExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1473, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2089, - "src": "1162:3:6", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1474, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "1162:10:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1153:20:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1471, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "1145:7:6", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1476, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1145:29:6", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1477, - "nodeType": "ExpressionStatement", - "src": "1145:29:6" - }, - { - "id": 1478, - "nodeType": "PlaceholderStatement", - "src": "1184:1:6" - } - ] - }, - "id": 1480, - "name": "onlyFriend", - "nodeType": "ModifierDefinition", - "parameters": { - "id": 1470, - "nodeType": "ParameterList", - "parameters": [], - "src": "1132:2:6" - }, - "src": "1113:79:6", - "visibility": "internal" - }, - { - "body": { - "id": 1493, - "nodeType": "Block", - "src": "1476:44:6", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1489, - "name": "_friends", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1483, - "src": "1492:8:6", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - { - "argumentTypes": null, - "id": 1490, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1485, - "src": "1502:10:6", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - }, - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - ], - "id": 1488, - "name": "setup", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1577, - "src": "1486:5:6", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_uint8_$returns$__$", - "typeString": "function (address[] memory,uint8)" - } - }, - "id": 1491, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1486:27:6", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1492, - "nodeType": "ExpressionStatement", - "src": "1486:27:6" - } - ] - }, - "id": 1494, - "implemented": true, - "isConstructor": true, - "isDeclaredConst": false, - "modifiers": [], - "name": "SocialRecoveryExtension", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1486, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1483, - "name": "_friends", - "nodeType": "VariableDeclaration", - "scope": 1494, - "src": "1419:18:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - }, - "typeName": { - "baseType": { - "id": 1481, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1419:7:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 1482, - "length": null, - "nodeType": "ArrayTypeName", - "src": "1419:9:6", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1485, - "name": "_threshold", - "nodeType": "VariableDeclaration", - "scope": 1494, - "src": "1439:16:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 1484, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "1439:5:6", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1418:38:6" - }, - "payable": false, - "returnParameters": { - "id": 1487, - "nodeType": "ParameterList", - "parameters": [], - "src": "1476:0:6" - }, - "scope": 1759, - "src": "1386:134:6", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1576, - "nodeType": "Block", - "src": "1789:597:6", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 1507, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1504, - "name": "gnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1437, - "src": "1951:10:6", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - ], - "id": 1503, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "1943:7:6", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 1505, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1943:19:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1506, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1966:1:6", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1943:24:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1502, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "1935:7:6", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1508, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1935:33:6", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1509, - "nodeType": "ExpressionStatement", - "src": "1935:33:6" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1514, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1511, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1499, - "src": "1986:10:6", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": "<=", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1512, - "name": "_friends", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1497, - "src": "2000:8:6", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 1513, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2000:15:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1986:29:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1510, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "1978:7:6", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1515, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1978:38:6", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1516, - "nodeType": "ExpressionStatement", - "src": "1978:38:6" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 1520, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1518, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1499, - "src": "2034:10:6", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 1519, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2048:1:6", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "src": "2034:15:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1517, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "2026:7:6", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1521, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2026:24:6", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1522, - "nodeType": "ExpressionStatement", - "src": "2026:24:6" - }, - { - "expression": { - "argumentTypes": null, - "id": 1528, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1523, - "name": "gnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1437, - "src": "2060:10:6", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1525, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2089, - "src": "2084:3:6", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1526, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2084:10:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 1524, - "name": "GnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 963, - "src": "2073:10:6", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_GnosisSafe_$963_$", - "typeString": "type(contract GnosisSafe)" - } - }, - "id": 1527, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2073:22:6", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - "src": "2060:35:6", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - "id": 1529, - "nodeType": "ExpressionStatement", - "src": "2060:35:6" - }, - { - "body": { - "id": 1566, - "nodeType": "Block", - "src": "2183:137:6", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 1546, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1542, - "name": "_friends", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1497, - "src": "2205:8:6", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 1544, - "indexExpression": { - "argumentTypes": null, - "id": 1543, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1531, - "src": "2214:1:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2205:11:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1545, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2220:1:6", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2205:16:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1541, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "2197:7:6", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1547, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2197:25:6", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1548, - "nodeType": "ExpressionStatement", - "src": "2197:25:6" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1555, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "2244:22:6", - "subExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1550, - "name": "isFriend", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1446, - "src": "2245:8:6", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 1554, - "indexExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1551, - "name": "_friends", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1497, - "src": "2254:8:6", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 1553, - "indexExpression": { - "argumentTypes": null, - "id": 1552, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1531, - "src": "2263:1:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2254:11:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2245:21:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1549, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "2236:7:6", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1556, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2236:31:6", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1557, - "nodeType": "ExpressionStatement", - "src": "2236:31:6" - }, - { - "expression": { - "argumentTypes": null, - "id": 1564, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1558, - "name": "isFriend", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1446, - "src": "2281:8:6", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 1562, - "indexExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1559, - "name": "_friends", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1497, - "src": "2290:8:6", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 1561, - "indexExpression": { - "argumentTypes": null, - "id": 1560, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1531, - "src": "2299:1:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2290:11:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "2281:21:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 1563, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2305:4:6", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "2281:28:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1565, - "nodeType": "ExpressionStatement", - "src": "2281:28:6" - } - ] - }, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1537, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1534, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1531, - "src": "2157:1:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1535, - "name": "_friends", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1497, - "src": "2161:8:6", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 1536, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2161:15:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2157:19:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1567, - "initializationExpression": { - "assignments": [ - 1531 - ], - "declarations": [ - { - "constant": false, - "id": 1531, - "name": "i", - "nodeType": "VariableDeclaration", - "scope": 1577, - "src": "2142:9:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1530, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2142:7:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1533, - "initialValue": { - "argumentTypes": null, - "hexValue": "30", - "id": 1532, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2154:1:6", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "2142:13:6" - }, - "loopExpression": { - "expression": { - "argumentTypes": null, - "id": 1539, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "2178:3:6", - "subExpression": { - "argumentTypes": null, - "id": 1538, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1531, - "src": "2178:1:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1540, - "nodeType": "ExpressionStatement", - "src": "2178:3:6" - }, - "nodeType": "ForStatement", - "src": "2137:183:6" - }, - { - "expression": { - "argumentTypes": null, - "id": 1570, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1568, - "name": "friends", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1442, - "src": "2329:7:6", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 1569, - "name": "_friends", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1497, - "src": "2339:8:6", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "src": "2329:18:6", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 1571, - "nodeType": "ExpressionStatement", - "src": "2329:18:6" - }, - { - "expression": { - "argumentTypes": null, - "id": 1574, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1572, - "name": "threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1439, - "src": "2357:9:6", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 1573, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1499, - "src": "2369:10:6", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "2357:22:6", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "id": 1575, - "nodeType": "ExpressionStatement", - "src": "2357:22:6" - } - ] - }, - "id": 1577, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "setup", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1500, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1497, - "name": "_friends", - "nodeType": "VariableDeclaration", - "scope": 1577, - "src": "1732:18:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - }, - "typeName": { - "baseType": { - "id": 1495, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1732:7:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 1496, - "length": null, - "nodeType": "ArrayTypeName", - "src": "1732:9:6", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1499, - "name": "_threshold", - "nodeType": "VariableDeclaration", - "scope": 1577, - "src": "1752:16:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 1498, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "1752:5:6", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1731:38:6" - }, - "payable": false, - "returnParameters": { - "id": 1501, - "nodeType": "ParameterList", - "parameters": [], - "src": "1789:0:6" - }, - "scope": 1759, - "src": "1717:669:6", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1596, - "nodeType": "Block", - "src": "2637:85:6", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 1589, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1586, - "name": "_masterCopy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1579, - "src": "2663:11:6", - "typeDescriptions": { - "typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759", - "typeString": "contract SocialRecoveryExtension" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759", - "typeString": "contract SocialRecoveryExtension" - } - ], - "id": 1585, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "2655:7:6", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 1587, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2655:20:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1588, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2679:1:6", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2655:25:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1584, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "2647:7:6", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1590, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2647:34:6", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1591, - "nodeType": "ExpressionStatement", - "src": "2647:34:6" - }, - { - "expression": { - "argumentTypes": null, - "id": 1594, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1592, - "name": "masterCopy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1435, - "src": "2691:10:6", - "typeDescriptions": { - "typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759", - "typeString": "contract SocialRecoveryExtension" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 1593, - "name": "_masterCopy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1579, - "src": "2704:11:6", - "typeDescriptions": { - "typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759", - "typeString": "contract SocialRecoveryExtension" - } - }, - "src": "2691:24:6", - "typeDescriptions": { - "typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759", - "typeString": "contract SocialRecoveryExtension" - } - }, - "id": 1595, - "nodeType": "ExpressionStatement", - "src": "2691:24:6" - } - ] - }, - "id": 1597, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [], - "id": 1582, - "modifierName": { - "argumentTypes": null, - "id": 1581, - "name": "onlyGnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1469, - "src": "2618:14:6", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "2618:14:6" - } - ], - "name": "changeMasterCopy", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1580, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1579, - "name": "_masterCopy", - "nodeType": "VariableDeclaration", - "scope": 1597, - "src": "2558:35:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759", - "typeString": "contract SocialRecoveryExtension" - }, - "typeName": { - "contractScope": null, - "id": 1578, - "name": "SocialRecoveryExtension", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1759, - "src": "2558:23:6", - "typeDescriptions": { - "typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759", - "typeString": "contract SocialRecoveryExtension" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "2557:37:6" - }, - "payable": false, - "returnParameters": { - "id": 1583, - "nodeType": "ParameterList", - "parameters": [], - "src": "2637:0:6" - }, - "scope": 1759, - "src": "2532:190:6", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1620, - "nodeType": "Block", - "src": "2919:97:6", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1608, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "2937:21:6", - "subExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1605, - "name": "isExecuted", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1450, - "src": "2938:10:6", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 1607, - "indexExpression": { - "argumentTypes": null, - "id": 1606, - "name": "dataHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1599, - "src": "2949:8:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2938:20:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1604, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "2929:7:6", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1609, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2929:30:6", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1610, - "nodeType": "ExpressionStatement", - "src": "2929:30:6" - }, - { - "expression": { - "argumentTypes": null, - "id": 1618, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1611, - "name": "isConfirmed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1456, - "src": "2969:11:6", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", - "typeString": "mapping(bytes32 => mapping(address => bool))" - } - }, - "id": 1615, - "indexExpression": { - "argumentTypes": null, - "id": 1612, - "name": "dataHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1599, - "src": "2981:8:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2969:21:6", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 1616, - "indexExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1613, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2089, - "src": "2991:3:6", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1614, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2991:10:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "2969:33:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 1617, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3005:4:6", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "2969:40:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1619, - "nodeType": "ExpressionStatement", - "src": "2969:40:6" - } - ] - }, - "id": 1621, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [], - "id": 1602, - "modifierName": { - "argumentTypes": null, - "id": 1601, - "name": "onlyFriend", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1480, - "src": "2904:10:6", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "2904:10:6" - } - ], - "name": "confirmTransaction", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1600, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1599, - "name": "dataHash", - "nodeType": "VariableDeclaration", - "scope": 1621, - "src": "2863:16:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1598, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2863:7:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "2862:18:6" - }, - "payable": false, - "returnParameters": { - "id": 1603, - "nodeType": "ParameterList", - "parameters": [], - "src": "2919:0:6" - }, - "scope": 1759, - "src": "2835:181:6", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1702, - "nodeType": "Block", - "src": "3578:742:6", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1639, - "name": "isFriend", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1446, - "src": "3660:8:6", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 1641, - "indexExpression": { - "argumentTypes": null, - "id": 1640, - "name": "sender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1623, - "src": "3669:6:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3660:16:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1638, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "3652:7:6", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1642, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3652:25:6", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1643, - "nodeType": "ExpressionStatement", - "src": "3652:25:6" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 1649, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1645, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1625, - "src": "3695:2:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1647, - "name": "gnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1437, - "src": "3709:10:6", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - ], - "id": 1646, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "3701:7:6", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 1648, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3701:19:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "3695:25:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1644, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "3687:7:6", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1650, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3687:34:6", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1651, - "nodeType": "ExpressionStatement", - "src": "3687:34:6" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1655, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1653, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1627, - "src": "3739:5:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1654, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3748:1:6", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "3739:10:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1652, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "3731:7:6", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1656, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3731:19:6", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1657, - "nodeType": "ExpressionStatement", - "src": "3731:19:6" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - }, - "id": 1663, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1659, - "name": "operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1631, - "src": "3768:9:6", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1660, - "name": "GnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 963, - "src": "3781:10:6", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_GnosisSafe_$963_$", - "typeString": "type(contract GnosisSafe)" - } - }, - "id": 1661, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "Operation", - "nodeType": "MemberAccess", - "referencedDeclaration": 61, - "src": "3781:20:6", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_Operation_$61_$", - "typeString": "type(enum GnosisSafe.Operation)" - } - }, - "id": 1662, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "Call", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "3781:25:6", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "src": "3768:38:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1658, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "3760:7:6", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1664, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3760:47:6", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1665, - "nodeType": "ExpressionStatement", - "src": "3760:47:6" - }, - { - "assignments": [], - "declarations": [ - { - "constant": false, - "id": 1667, - "name": "functionIdentifier", - "nodeType": "VariableDeclaration", - "scope": 1703, - "src": "3890:25:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - "typeName": { - "id": 1666, - "name": "bytes4", - "nodeType": "ElementaryTypeName", - "src": "3890:6:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1668, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "3890:25:6" - }, - { - "externalReferences": [ - { - "functionIdentifier": { - "declaration": 1667, - "isOffset": false, - "isSlot": false, - "src": "3948:18:6", - "valueSize": 1 - } - }, - { - "data": { - "declaration": 1629, - "isOffset": false, - "isSlot": false, - "src": "3980:4:6", - "valueSize": 1 - } - } - ], - "id": 1669, - "nodeType": "InlineAssembly", - "operations": "{\n functionIdentifier := mload(add(data, 0x20))\n}", - "src": "3925:93:6" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - "id": 1673, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1671, - "name": "functionIdentifier", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1667, - "src": "4019:18:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 1672, - "name": "REPLACE_OWNER_FUNCTION_IDENTIFIER", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1433, - "src": "4041:33:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "src": "4019:55:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1670, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "4011:7:6", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1674, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4011:64:6", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1675, - "nodeType": "ExpressionStatement", - "src": "4011:64:6" - }, - { - "assignments": [ - 1677 - ], - "declarations": [ - { - "constant": false, - "id": 1677, - "name": "dataHash", - "nodeType": "VariableDeclaration", - "scope": 1703, - "src": "4085:16:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1676, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "4085:7:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1681, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1679, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1629, - "src": "4116:4:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 1678, - "name": "getDataHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1758, - "src": "4104:11:6", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$_t_bytes32_$", - "typeString": "function (bytes memory) view returns (bytes32)" - } - }, - "id": 1680, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4104:17:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "4085:36:6" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 1689, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1685, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "4138:21:6", - "subExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1682, - "name": "isExecuted", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1450, - "src": "4139:10:6", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 1684, - "indexExpression": { - "argumentTypes": null, - "id": 1683, - "name": "dataHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1677, - "src": "4150:8:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4139:20:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1687, - "name": "dataHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1677, - "src": "4204:8:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 1686, - "name": "isConfirmedByRequiredFriends", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1746, - "src": "4175:28:6", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$", - "typeString": "function (bytes32) view returns (bool)" - } - }, - "id": 1688, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4175:38:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "4138:75:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 1699, - "nodeType": "IfStatement", - "src": "4131:161:6", - "trueBody": { - "id": 1698, - "nodeType": "Block", - "src": "4215:77:6", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 1694, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1690, - "name": "isExecuted", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1450, - "src": "4229:10:6", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 1692, - "indexExpression": { - "argumentTypes": null, - "id": 1691, - "name": "dataHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1677, - "src": "4240:8:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "4229:20:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 1693, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4252:4:6", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "4229:27:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1695, - "nodeType": "ExpressionStatement", - "src": "4229:27:6" - }, - { - "expression": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 1696, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4277:4:6", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "functionReturnParameters": 1637, - "id": 1697, - "nodeType": "Return", - "src": "4270:11:6" - } - ] - } - }, - { - "expression": { - "argumentTypes": null, - "hexValue": "66616c7365", - "id": 1700, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4308:5:6", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "functionReturnParameters": 1637, - "id": 1701, - "nodeType": "Return", - "src": "4301:12:6" - } - ] - }, - "id": 1703, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [], - "id": 1634, - "modifierName": { - "argumentTypes": null, - "id": 1633, - "name": "onlyGnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1469, - "src": "3536:14:6", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "3536:14:6" - } - ], - "name": "isExecutable", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1632, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1623, - "name": "sender", - "nodeType": "VariableDeclaration", - "scope": 1703, - "src": "3426:14:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1622, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3426:7:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1625, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 1703, - "src": "3442:10:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1624, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3442:7:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1627, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 1703, - "src": "3454:13:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1626, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3454:7:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1629, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 1703, - "src": "3469:10:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 1628, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "3469:5:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1631, - "name": "operation", - "nodeType": "VariableDeclaration", - "scope": 1703, - "src": "3481:30:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - }, - "typeName": { - "contractScope": null, - "id": 1630, - "name": "GnosisSafe.Operation", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 61, - "src": "3481:20:6", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "3425:87:6" - }, - "payable": false, - "returnParameters": { - "id": 1637, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1636, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 1703, - "src": "3568:4:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 1635, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "3568:4:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "3567:6:6" - }, - "scope": 1759, - "src": "3404:916:6", - "stateMutability": "nonpayable", - "superFunction": 17, - "visibility": "public" - }, - { - "body": { - "id": 1745, - "nodeType": "Block", - "src": "4592:294:6", - "statements": [ - { - "assignments": [], - "declarations": [ - { - "constant": false, - "id": 1711, - "name": "confirmationCount", - "nodeType": "VariableDeclaration", - "scope": 1746, - "src": "4602:25:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1710, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4602:7:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1712, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "4602:25:6" - }, - { - "body": { - "id": 1741, - "nodeType": "Block", - "src": "4682:176:6", - "statements": [ - { - "condition": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1724, - "name": "isConfirmed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1456, - "src": "4700:11:6", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", - "typeString": "mapping(bytes32 => mapping(address => bool))" - } - }, - "id": 1726, - "indexExpression": { - "argumentTypes": null, - "id": 1725, - "name": "dataHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1705, - "src": "4712:8:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4700:21:6", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 1730, - "indexExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1727, - "name": "friends", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1442, - "src": "4722:7:6", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 1729, - "indexExpression": { - "argumentTypes": null, - "id": 1728, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1714, - "src": "4730:1:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4722:10:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4700:33:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 1734, - "nodeType": "IfStatement", - "src": "4696:74:6", - "trueBody": { - "expression": { - "argumentTypes": null, - "id": 1732, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "4751:19:6", - "subExpression": { - "argumentTypes": null, - "id": 1731, - "name": "confirmationCount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1711, - "src": "4751:17:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1733, - "nodeType": "ExpressionStatement", - "src": "4751:19:6" - } - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1737, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1735, - "name": "confirmationCount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1711, - "src": "4788:17:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 1736, - "name": "threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1439, - "src": "4809:9:6", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "4788:30:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 1740, - "nodeType": "IfStatement", - "src": "4784:63:6", - "trueBody": { - "expression": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 1738, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4843:4:6", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "functionReturnParameters": 1709, - "id": 1739, - "nodeType": "Return", - "src": "4836:11:6" - } - } - ] - }, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1720, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1717, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1714, - "src": "4657:1:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1718, - "name": "friends", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1442, - "src": "4661:7:6", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 1719, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "4661:14:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4657:18:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1742, - "initializationExpression": { - "assignments": [ - 1714 - ], - "declarations": [ - { - "constant": false, - "id": 1714, - "name": "i", - "nodeType": "VariableDeclaration", - "scope": 1746, - "src": "4642:9:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1713, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4642:7:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1716, - "initialValue": { - "argumentTypes": null, - "hexValue": "30", - "id": 1715, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4654:1:6", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "4642:13:6" - }, - "loopExpression": { - "expression": { - "argumentTypes": null, - "id": 1722, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "4677:3:6", - "subExpression": { - "argumentTypes": null, - "id": 1721, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1714, - "src": "4677:1:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1723, - "nodeType": "ExpressionStatement", - "src": "4677:3:6" - }, - "nodeType": "ForStatement", - "src": "4637:221:6" - }, - { - "expression": { - "argumentTypes": null, - "hexValue": "66616c7365", - "id": 1743, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4874:5:6", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "functionReturnParameters": 1709, - "id": 1744, - "nodeType": "Return", - "src": "4867:12:6" - } - ] - }, - "id": 1746, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "isConfirmedByRequiredFriends", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1706, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1705, - "name": "dataHash", - "nodeType": "VariableDeclaration", - "scope": 1746, - "src": "4519:16:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1704, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "4519:7:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "4518:18:6" - }, - "payable": false, - "returnParameters": { - "id": 1709, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1708, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 1746, - "src": "4582:4:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 1707, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "4582:4:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "4581:6:6" - }, - "scope": 1759, - "src": "4481:405:6", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1757, - "nodeType": "Block", - "src": "5106:39:6", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1754, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1748, - "src": "5133:4:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 1753, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2083, - "src": "5123:9:6", - "typeDescriptions": { - "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", - "typeString": "function () pure returns (bytes32)" - } - }, - "id": 1755, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5123:15:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "functionReturnParameters": 1752, - "id": 1756, - "nodeType": "Return", - "src": "5116:22:6" - } - ] - }, - "id": 1758, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "getDataHash", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1749, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1748, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 1758, - "src": "5036:10:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 1747, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "5036:5:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "5035:12:6" - }, - "payable": false, - "returnParameters": { - "id": 1752, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1751, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 1758, - "src": "5093:7:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1750, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "5093:7:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "5092:9:6" - }, - "scope": 1759, - "src": "5015:130:6", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - } - ], - "scope": 1760, - "src": "257:4890:6" - } - ], - "src": "0:5148:6" - }, - "legacyAST": { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/extensions/SocialRecoveryExtension.sol", - "exportedSymbols": { - "SocialRecoveryExtension": [ - 1759 - ] - }, - "id": 1760, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 1420, - "literals": [ - "solidity", - "0.4", - ".19" - ], - "nodeType": "PragmaDirective", - "src": "0:23:6" - }, - { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Extension.sol", - "file": "../Extension.sol", - "id": 1421, - "nodeType": "ImportDirective", - "scope": 1760, - "sourceUnit": 19, - "src": "24:26:6", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", - "file": "../GnosisSafe.sol", - "id": 1422, - "nodeType": "ImportDirective", - "scope": 1760, - "sourceUnit": 964, - "src": "51:27:6", - "symbolAliases": [], - "unitAlias": "" - }, - { - "baseContracts": [ - { - "arguments": [], - "baseName": { - "contractScope": null, - "id": 1423, - "name": "Extension", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 18, - "src": "293:9:6", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "id": 1424, - "nodeType": "InheritanceSpecifier", - "src": "293:9:6" - } - ], - "contractDependencies": [ - 18 - ], - "contractKind": "contract", - "documentation": "@title Social Recovery Extension - Allows to replace an owner without Safe confirmations if friends approve the replacement.\n @author Stefan George - ", - "fullyImplemented": true, - "id": 1759, - "linearizedBaseContracts": [ - 1759, - 18 - ], - "name": "SocialRecoveryExtension", - "nodeType": "ContractDefinition", - "nodes": [ - { - "constant": true, - "id": 1427, - "name": "NAME", - "nodeType": "VariableDeclaration", - "scope": 1759, - "src": "310:57:6", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_string_memory", - "typeString": "string memory" - }, - "typeName": { - "id": 1425, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "310:6:6", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string storage pointer" - } - }, - "value": { - "argumentTypes": null, - "hexValue": "536f6369616c205265636f7665727920457874656e73696f6e", - "id": 1426, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "340:27:6", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_995be5b755f102e2c36520d5037cfd901f504498d7c57ded40542623e7cc2eda", - "typeString": "literal_string \"Social Recovery Extension\"" - }, - "value": "Social Recovery Extension" - }, - "visibility": "public" - }, - { - "constant": true, - "id": 1430, - "name": "VERSION", - "nodeType": "VariableDeclaration", - "scope": 1759, - "src": "373:40:6", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_string_memory", - "typeString": "string memory" - }, - "typeName": { - "id": 1428, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "373:6:6", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string storage pointer" - } - }, - "value": { - "argumentTypes": null, - "hexValue": "302e302e31", - "id": 1429, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "406:7:6", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", - "typeString": "literal_string \"0.0.1\"" - }, - "value": "0.0.1" - }, - "visibility": "public" - }, - { - "constant": true, - "id": 1433, - "name": "REPLACE_OWNER_FUNCTION_IDENTIFIER", - "nodeType": "VariableDeclaration", - "scope": 1759, - "src": "419:72:6", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - "typeName": { - "id": 1431, - "name": "bytes4", - "nodeType": "ElementaryTypeName", - "src": "419:6:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "value": { - "argumentTypes": null, - "hexValue": "54e99c6e", - "id": 1432, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "478:13:6", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_c9d777df93ed5e148240dbbfbc0215def5044b10739d563ea8310789d1317911", - "typeString": "literal_string (contains invalid UTF-8 sequence at position 4)" - }, - "value": null - }, - "visibility": "public" - }, - { - "constant": false, - "id": 1435, - "name": "masterCopy", - "nodeType": "VariableDeclaration", - "scope": 1759, - "src": "498:34:6", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759", - "typeString": "contract SocialRecoveryExtension" - }, - "typeName": { - "contractScope": null, - "id": 1434, - "name": "SocialRecoveryExtension", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1759, - "src": "498:23:6", - "typeDescriptions": { - "typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759", - "typeString": "contract SocialRecoveryExtension" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1437, - "name": "gnosisSafe", - "nodeType": "VariableDeclaration", - "scope": 1759, - "src": "538:28:6", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - }, - "typeName": { - "contractScope": null, - "id": 1436, - "name": "GnosisSafe", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 963, - "src": "538:10:6", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "id": 1439, - "name": "threshold", - "nodeType": "VariableDeclaration", - "scope": 1759, - "src": "572:22:6", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 1438, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "572:5:6", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "id": 1442, - "name": "friends", - "nodeType": "VariableDeclaration", - "scope": 1759, - "src": "600:24:6", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - }, - "typeName": { - "baseType": { - "id": 1440, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "600:7:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 1441, - "length": null, - "nodeType": "ArrayTypeName", - "src": "600:9:6", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[] storage pointer" - } - }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "id": 1446, - "name": "isFriend", - "nodeType": "VariableDeclaration", - "scope": 1759, - "src": "695:41:6", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - }, - "typeName": { - "id": 1445, - "keyType": { - "id": 1443, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "704:7:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Mapping", - "src": "695:25:6", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - }, - "valueType": { - "id": 1444, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "715:4:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "id": 1450, - "name": "isExecuted", - "nodeType": "VariableDeclaration", - "scope": 1759, - "src": "804:43:6", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - }, - "typeName": { - "id": 1449, - "keyType": { - "id": 1447, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "813:7:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Mapping", - "src": "804:25:6", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - }, - "valueType": { - "id": 1448, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "824:4:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "id": 1456, - "name": "isConfirmed", - "nodeType": "VariableDeclaration", - "scope": 1759, - "src": "939:65:6", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", - "typeString": "mapping(bytes32 => mapping(address => bool))" - }, - "typeName": { - "id": 1455, - "keyType": { - "id": 1451, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "948:7:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Mapping", - "src": "939:46:6", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", - "typeString": "mapping(bytes32 => mapping(address => bool))" - }, - "valueType": { - "id": 1454, - "keyType": { - "id": 1452, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "968:7:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Mapping", - "src": "959:25:6", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - }, - "valueType": { - "id": 1453, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "979:4:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - } - }, - "value": null, - "visibility": "public" - }, - { - "body": { - "id": 1468, - "nodeType": "Block", - "src": "1037:70:6", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 1464, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1459, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2089, - "src": "1055:3:6", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1460, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "1055:10:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1462, - "name": "gnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1437, - "src": "1077:10:6", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - ], - "id": 1461, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "1069:7:6", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 1463, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1069:19:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "1055:33:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1458, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "1047:7:6", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1465, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1047:42:6", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1466, - "nodeType": "ExpressionStatement", - "src": "1047:42:6" - }, - { - "id": 1467, - "nodeType": "PlaceholderStatement", - "src": "1099:1:6" - } - ] - }, - "id": 1469, - "name": "onlyGnosisSafe", - "nodeType": "ModifierDefinition", - "parameters": { - "id": 1457, - "nodeType": "ParameterList", - "parameters": [], - "src": "1034:2:6" - }, - "src": "1011:96:6", - "visibility": "internal" - }, - { - "body": { - "id": 1479, - "nodeType": "Block", - "src": "1135:57:6", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1472, - "name": "isFriend", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1446, - "src": "1153:8:6", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 1475, - "indexExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1473, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2089, - "src": "1162:3:6", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1474, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "1162:10:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1153:20:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1471, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "1145:7:6", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1476, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1145:29:6", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1477, - "nodeType": "ExpressionStatement", - "src": "1145:29:6" - }, - { - "id": 1478, - "nodeType": "PlaceholderStatement", - "src": "1184:1:6" - } - ] - }, - "id": 1480, - "name": "onlyFriend", - "nodeType": "ModifierDefinition", - "parameters": { - "id": 1470, - "nodeType": "ParameterList", - "parameters": [], - "src": "1132:2:6" - }, - "src": "1113:79:6", - "visibility": "internal" - }, - { - "body": { - "id": 1493, - "nodeType": "Block", - "src": "1476:44:6", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1489, - "name": "_friends", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1483, - "src": "1492:8:6", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - { - "argumentTypes": null, - "id": 1490, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1485, - "src": "1502:10:6", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - }, - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - ], - "id": 1488, - "name": "setup", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1577, - "src": "1486:5:6", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_uint8_$returns$__$", - "typeString": "function (address[] memory,uint8)" - } - }, - "id": 1491, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1486:27:6", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1492, - "nodeType": "ExpressionStatement", - "src": "1486:27:6" - } - ] - }, - "id": 1494, - "implemented": true, - "isConstructor": true, - "isDeclaredConst": false, - "modifiers": [], - "name": "SocialRecoveryExtension", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1486, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1483, - "name": "_friends", - "nodeType": "VariableDeclaration", - "scope": 1494, - "src": "1419:18:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - }, - "typeName": { - "baseType": { - "id": 1481, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1419:7:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 1482, - "length": null, - "nodeType": "ArrayTypeName", - "src": "1419:9:6", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1485, - "name": "_threshold", - "nodeType": "VariableDeclaration", - "scope": 1494, - "src": "1439:16:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 1484, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "1439:5:6", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1418:38:6" - }, - "payable": false, - "returnParameters": { - "id": 1487, - "nodeType": "ParameterList", - "parameters": [], - "src": "1476:0:6" - }, - "scope": 1759, - "src": "1386:134:6", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1576, - "nodeType": "Block", - "src": "1789:597:6", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 1507, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1504, - "name": "gnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1437, - "src": "1951:10:6", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - ], - "id": 1503, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "1943:7:6", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 1505, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1943:19:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1506, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1966:1:6", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1943:24:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1502, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "1935:7:6", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1508, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1935:33:6", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1509, - "nodeType": "ExpressionStatement", - "src": "1935:33:6" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1514, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1511, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1499, - "src": "1986:10:6", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": "<=", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1512, - "name": "_friends", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1497, - "src": "2000:8:6", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 1513, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2000:15:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1986:29:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1510, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "1978:7:6", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1515, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1978:38:6", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1516, - "nodeType": "ExpressionStatement", - "src": "1978:38:6" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "id": 1520, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1518, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1499, - "src": "2034:10:6", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "BinaryOperation", - "operator": ">=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "32", - "id": 1519, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2048:1:6", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_2_by_1", - "typeString": "int_const 2" - }, - "value": "2" - }, - "src": "2034:15:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1517, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "2026:7:6", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1521, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2026:24:6", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1522, - "nodeType": "ExpressionStatement", - "src": "2026:24:6" - }, - { - "expression": { - "argumentTypes": null, - "id": 1528, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1523, - "name": "gnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1437, - "src": "2060:10:6", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1525, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2089, - "src": "2084:3:6", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1526, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2084:10:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 1524, - "name": "GnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 963, - "src": "2073:10:6", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_GnosisSafe_$963_$", - "typeString": "type(contract GnosisSafe)" - } - }, - "id": 1527, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2073:22:6", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - "src": "2060:35:6", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - "id": 1529, - "nodeType": "ExpressionStatement", - "src": "2060:35:6" - }, - { - "body": { - "id": 1566, - "nodeType": "Block", - "src": "2183:137:6", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 1546, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1542, - "name": "_friends", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1497, - "src": "2205:8:6", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 1544, - "indexExpression": { - "argumentTypes": null, - "id": 1543, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1531, - "src": "2214:1:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2205:11:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1545, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2220:1:6", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2205:16:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1541, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "2197:7:6", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1547, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2197:25:6", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1548, - "nodeType": "ExpressionStatement", - "src": "2197:25:6" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1555, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "2244:22:6", - "subExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1550, - "name": "isFriend", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1446, - "src": "2245:8:6", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 1554, - "indexExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1551, - "name": "_friends", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1497, - "src": "2254:8:6", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 1553, - "indexExpression": { - "argumentTypes": null, - "id": 1552, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1531, - "src": "2263:1:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2254:11:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2245:21:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1549, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "2236:7:6", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1556, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2236:31:6", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1557, - "nodeType": "ExpressionStatement", - "src": "2236:31:6" - }, - { - "expression": { - "argumentTypes": null, - "id": 1564, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1558, - "name": "isFriend", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1446, - "src": "2281:8:6", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 1562, - "indexExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1559, - "name": "_friends", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1497, - "src": "2290:8:6", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 1561, - "indexExpression": { - "argumentTypes": null, - "id": 1560, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1531, - "src": "2299:1:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2290:11:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "2281:21:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 1563, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2305:4:6", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "2281:28:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1565, - "nodeType": "ExpressionStatement", - "src": "2281:28:6" - } - ] - }, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1537, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1534, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1531, - "src": "2157:1:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1535, - "name": "_friends", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1497, - "src": "2161:8:6", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 1536, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2161:15:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2157:19:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1567, - "initializationExpression": { - "assignments": [ - 1531 - ], - "declarations": [ - { - "constant": false, - "id": 1531, - "name": "i", - "nodeType": "VariableDeclaration", - "scope": 1577, - "src": "2142:9:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1530, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2142:7:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1533, - "initialValue": { - "argumentTypes": null, - "hexValue": "30", - "id": 1532, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2154:1:6", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "2142:13:6" - }, - "loopExpression": { - "expression": { - "argumentTypes": null, - "id": 1539, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "2178:3:6", - "subExpression": { - "argumentTypes": null, - "id": 1538, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1531, - "src": "2178:1:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1540, - "nodeType": "ExpressionStatement", - "src": "2178:3:6" - }, - "nodeType": "ForStatement", - "src": "2137:183:6" - }, - { - "expression": { - "argumentTypes": null, - "id": 1570, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1568, - "name": "friends", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1442, - "src": "2329:7:6", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 1569, - "name": "_friends", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1497, - "src": "2339:8:6", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "src": "2329:18:6", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 1571, - "nodeType": "ExpressionStatement", - "src": "2329:18:6" - }, - { - "expression": { - "argumentTypes": null, - "id": 1574, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1572, - "name": "threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1439, - "src": "2357:9:6", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 1573, - "name": "_threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1499, - "src": "2369:10:6", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "2357:22:6", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "id": 1575, - "nodeType": "ExpressionStatement", - "src": "2357:22:6" - } - ] - }, - "id": 1577, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "setup", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1500, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1497, - "name": "_friends", - "nodeType": "VariableDeclaration", - "scope": 1577, - "src": "1732:18:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - }, - "typeName": { - "baseType": { - "id": 1495, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1732:7:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 1496, - "length": null, - "nodeType": "ArrayTypeName", - "src": "1732:9:6", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1499, - "name": "_threshold", - "nodeType": "VariableDeclaration", - "scope": 1577, - "src": "1752:16:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 1498, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "1752:5:6", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1731:38:6" - }, - "payable": false, - "returnParameters": { - "id": 1501, - "nodeType": "ParameterList", - "parameters": [], - "src": "1789:0:6" - }, - "scope": 1759, - "src": "1717:669:6", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1596, - "nodeType": "Block", - "src": "2637:85:6", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 1589, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1586, - "name": "_masterCopy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1579, - "src": "2663:11:6", - "typeDescriptions": { - "typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759", - "typeString": "contract SocialRecoveryExtension" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759", - "typeString": "contract SocialRecoveryExtension" - } - ], - "id": 1585, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "2655:7:6", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 1587, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2655:20:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1588, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2679:1:6", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2655:25:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1584, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "2647:7:6", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1590, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2647:34:6", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1591, - "nodeType": "ExpressionStatement", - "src": "2647:34:6" - }, - { - "expression": { - "argumentTypes": null, - "id": 1594, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1592, - "name": "masterCopy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1435, - "src": "2691:10:6", - "typeDescriptions": { - "typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759", - "typeString": "contract SocialRecoveryExtension" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 1593, - "name": "_masterCopy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1579, - "src": "2704:11:6", - "typeDescriptions": { - "typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759", - "typeString": "contract SocialRecoveryExtension" - } - }, - "src": "2691:24:6", - "typeDescriptions": { - "typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759", - "typeString": "contract SocialRecoveryExtension" - } - }, - "id": 1595, - "nodeType": "ExpressionStatement", - "src": "2691:24:6" - } - ] - }, - "id": 1597, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [], - "id": 1582, - "modifierName": { - "argumentTypes": null, - "id": 1581, - "name": "onlyGnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1469, - "src": "2618:14:6", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "2618:14:6" - } - ], - "name": "changeMasterCopy", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1580, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1579, - "name": "_masterCopy", - "nodeType": "VariableDeclaration", - "scope": 1597, - "src": "2558:35:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759", - "typeString": "contract SocialRecoveryExtension" - }, - "typeName": { - "contractScope": null, - "id": 1578, - "name": "SocialRecoveryExtension", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1759, - "src": "2558:23:6", - "typeDescriptions": { - "typeIdentifier": "t_contract$_SocialRecoveryExtension_$1759", - "typeString": "contract SocialRecoveryExtension" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "2557:37:6" - }, - "payable": false, - "returnParameters": { - "id": 1583, - "nodeType": "ParameterList", - "parameters": [], - "src": "2637:0:6" - }, - "scope": 1759, - "src": "2532:190:6", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1620, - "nodeType": "Block", - "src": "2919:97:6", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1608, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "2937:21:6", - "subExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1605, - "name": "isExecuted", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1450, - "src": "2938:10:6", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 1607, - "indexExpression": { - "argumentTypes": null, - "id": 1606, - "name": "dataHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1599, - "src": "2949:8:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2938:20:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1604, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "2929:7:6", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1609, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2929:30:6", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1610, - "nodeType": "ExpressionStatement", - "src": "2929:30:6" - }, - { - "expression": { - "argumentTypes": null, - "id": 1618, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1611, - "name": "isConfirmed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1456, - "src": "2969:11:6", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", - "typeString": "mapping(bytes32 => mapping(address => bool))" - } - }, - "id": 1615, - "indexExpression": { - "argumentTypes": null, - "id": 1612, - "name": "dataHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1599, - "src": "2981:8:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2969:21:6", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 1616, - "indexExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1613, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2089, - "src": "2991:3:6", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1614, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2991:10:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "2969:33:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 1617, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3005:4:6", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "2969:40:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1619, - "nodeType": "ExpressionStatement", - "src": "2969:40:6" - } - ] - }, - "id": 1621, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [], - "id": 1602, - "modifierName": { - "argumentTypes": null, - "id": 1601, - "name": "onlyFriend", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1480, - "src": "2904:10:6", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "2904:10:6" - } - ], - "name": "confirmTransaction", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1600, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1599, - "name": "dataHash", - "nodeType": "VariableDeclaration", - "scope": 1621, - "src": "2863:16:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1598, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2863:7:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "2862:18:6" - }, - "payable": false, - "returnParameters": { - "id": 1603, - "nodeType": "ParameterList", - "parameters": [], - "src": "2919:0:6" - }, - "scope": 1759, - "src": "2835:181:6", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1702, - "nodeType": "Block", - "src": "3578:742:6", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1639, - "name": "isFriend", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1446, - "src": "3660:8:6", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 1641, - "indexExpression": { - "argumentTypes": null, - "id": 1640, - "name": "sender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1623, - "src": "3669:6:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3660:16:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1638, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "3652:7:6", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1642, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3652:25:6", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1643, - "nodeType": "ExpressionStatement", - "src": "3652:25:6" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 1649, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1645, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1625, - "src": "3695:2:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1647, - "name": "gnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1437, - "src": "3709:10:6", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - ], - "id": 1646, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "3701:7:6", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 1648, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3701:19:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "3695:25:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1644, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "3687:7:6", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1650, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3687:34:6", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1651, - "nodeType": "ExpressionStatement", - "src": "3687:34:6" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1655, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1653, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1627, - "src": "3739:5:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1654, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3748:1:6", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "3739:10:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1652, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "3731:7:6", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1656, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3731:19:6", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1657, - "nodeType": "ExpressionStatement", - "src": "3731:19:6" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - }, - "id": 1663, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1659, - "name": "operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1631, - "src": "3768:9:6", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1660, - "name": "GnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 963, - "src": "3781:10:6", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_GnosisSafe_$963_$", - "typeString": "type(contract GnosisSafe)" - } - }, - "id": 1661, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "Operation", - "nodeType": "MemberAccess", - "referencedDeclaration": 61, - "src": "3781:20:6", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_Operation_$61_$", - "typeString": "type(enum GnosisSafe.Operation)" - } - }, - "id": 1662, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "Call", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "3781:25:6", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "src": "3768:38:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1658, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "3760:7:6", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1664, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3760:47:6", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1665, - "nodeType": "ExpressionStatement", - "src": "3760:47:6" - }, - { - "assignments": [], - "declarations": [ - { - "constant": false, - "id": 1667, - "name": "functionIdentifier", - "nodeType": "VariableDeclaration", - "scope": 1703, - "src": "3890:25:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - "typeName": { - "id": 1666, - "name": "bytes4", - "nodeType": "ElementaryTypeName", - "src": "3890:6:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1668, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "3890:25:6" - }, - { - "externalReferences": [ - { - "functionIdentifier": { - "declaration": 1667, - "isOffset": false, - "isSlot": false, - "src": "3948:18:6", - "valueSize": 1 - } - }, - { - "data": { - "declaration": 1629, - "isOffset": false, - "isSlot": false, - "src": "3980:4:6", - "valueSize": 1 - } - } - ], - "id": 1669, - "nodeType": "InlineAssembly", - "operations": "{\n functionIdentifier := mload(add(data, 0x20))\n}", - "src": "3925:93:6" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - "id": 1673, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1671, - "name": "functionIdentifier", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1667, - "src": "4019:18:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 1672, - "name": "REPLACE_OWNER_FUNCTION_IDENTIFIER", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1433, - "src": "4041:33:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "src": "4019:55:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1670, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "4011:7:6", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1674, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4011:64:6", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1675, - "nodeType": "ExpressionStatement", - "src": "4011:64:6" - }, - { - "assignments": [ - 1677 - ], - "declarations": [ - { - "constant": false, - "id": 1677, - "name": "dataHash", - "nodeType": "VariableDeclaration", - "scope": 1703, - "src": "4085:16:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1676, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "4085:7:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1681, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1679, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1629, - "src": "4116:4:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 1678, - "name": "getDataHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1758, - "src": "4104:11:6", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$_t_bytes32_$", - "typeString": "function (bytes memory) view returns (bytes32)" - } - }, - "id": 1680, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4104:17:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "4085:36:6" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 1689, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1685, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "4138:21:6", - "subExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1682, - "name": "isExecuted", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1450, - "src": "4139:10:6", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 1684, - "indexExpression": { - "argumentTypes": null, - "id": 1683, - "name": "dataHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1677, - "src": "4150:8:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4139:20:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1687, - "name": "dataHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1677, - "src": "4204:8:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 1686, - "name": "isConfirmedByRequiredFriends", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1746, - "src": "4175:28:6", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$", - "typeString": "function (bytes32) view returns (bool)" - } - }, - "id": 1688, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4175:38:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "4138:75:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 1699, - "nodeType": "IfStatement", - "src": "4131:161:6", - "trueBody": { - "id": 1698, - "nodeType": "Block", - "src": "4215:77:6", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 1694, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1690, - "name": "isExecuted", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1450, - "src": "4229:10:6", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 1692, - "indexExpression": { - "argumentTypes": null, - "id": 1691, - "name": "dataHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1677, - "src": "4240:8:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "4229:20:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 1693, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4252:4:6", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "4229:27:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1695, - "nodeType": "ExpressionStatement", - "src": "4229:27:6" - }, - { - "expression": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 1696, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4277:4:6", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "functionReturnParameters": 1637, - "id": 1697, - "nodeType": "Return", - "src": "4270:11:6" - } - ] - } - }, - { - "expression": { - "argumentTypes": null, - "hexValue": "66616c7365", - "id": 1700, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4308:5:6", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "functionReturnParameters": 1637, - "id": 1701, - "nodeType": "Return", - "src": "4301:12:6" - } - ] - }, - "id": 1703, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [], - "id": 1634, - "modifierName": { - "argumentTypes": null, - "id": 1633, - "name": "onlyGnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1469, - "src": "3536:14:6", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "3536:14:6" - } - ], - "name": "isExecutable", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1632, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1623, - "name": "sender", - "nodeType": "VariableDeclaration", - "scope": 1703, - "src": "3426:14:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1622, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3426:7:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1625, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 1703, - "src": "3442:10:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1624, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3442:7:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1627, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 1703, - "src": "3454:13:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1626, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3454:7:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1629, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 1703, - "src": "3469:10:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 1628, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "3469:5:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1631, - "name": "operation", - "nodeType": "VariableDeclaration", - "scope": 1703, - "src": "3481:30:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - }, - "typeName": { - "contractScope": null, - "id": 1630, - "name": "GnosisSafe.Operation", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 61, - "src": "3481:20:6", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "3425:87:6" - }, - "payable": false, - "returnParameters": { - "id": 1637, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1636, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 1703, - "src": "3568:4:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 1635, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "3568:4:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "3567:6:6" - }, - "scope": 1759, - "src": "3404:916:6", - "stateMutability": "nonpayable", - "superFunction": 17, - "visibility": "public" - }, - { - "body": { - "id": 1745, - "nodeType": "Block", - "src": "4592:294:6", - "statements": [ - { - "assignments": [], - "declarations": [ - { - "constant": false, - "id": 1711, - "name": "confirmationCount", - "nodeType": "VariableDeclaration", - "scope": 1746, - "src": "4602:25:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1710, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4602:7:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1712, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "4602:25:6" - }, - { - "body": { - "id": 1741, - "nodeType": "Block", - "src": "4682:176:6", - "statements": [ - { - "condition": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1724, - "name": "isConfirmed", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1456, - "src": "4700:11:6", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", - "typeString": "mapping(bytes32 => mapping(address => bool))" - } - }, - "id": 1726, - "indexExpression": { - "argumentTypes": null, - "id": 1725, - "name": "dataHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1705, - "src": "4712:8:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4700:21:6", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 1730, - "indexExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1727, - "name": "friends", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1442, - "src": "4722:7:6", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 1729, - "indexExpression": { - "argumentTypes": null, - "id": 1728, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1714, - "src": "4730:1:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4722:10:6", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "4700:33:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 1734, - "nodeType": "IfStatement", - "src": "4696:74:6", - "trueBody": { - "expression": { - "argumentTypes": null, - "id": 1732, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "4751:19:6", - "subExpression": { - "argumentTypes": null, - "id": 1731, - "name": "confirmationCount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1711, - "src": "4751:17:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1733, - "nodeType": "ExpressionStatement", - "src": "4751:19:6" - } - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1737, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1735, - "name": "confirmationCount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1711, - "src": "4788:17:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 1736, - "name": "threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1439, - "src": "4809:9:6", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "4788:30:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 1740, - "nodeType": "IfStatement", - "src": "4784:63:6", - "trueBody": { - "expression": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 1738, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4843:4:6", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "functionReturnParameters": 1709, - "id": 1739, - "nodeType": "Return", - "src": "4836:11:6" - } - } - ] - }, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1720, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1717, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1714, - "src": "4657:1:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1718, - "name": "friends", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1442, - "src": "4661:7:6", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage", - "typeString": "address[] storage ref" - } - }, - "id": 1719, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "4661:14:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4657:18:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1742, - "initializationExpression": { - "assignments": [ - 1714 - ], - "declarations": [ - { - "constant": false, - "id": 1714, - "name": "i", - "nodeType": "VariableDeclaration", - "scope": 1746, - "src": "4642:9:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1713, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "4642:7:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1716, - "initialValue": { - "argumentTypes": null, - "hexValue": "30", - "id": 1715, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4654:1:6", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "4642:13:6" - }, - "loopExpression": { - "expression": { - "argumentTypes": null, - "id": 1722, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "4677:3:6", - "subExpression": { - "argumentTypes": null, - "id": 1721, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1714, - "src": "4677:1:6", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1723, - "nodeType": "ExpressionStatement", - "src": "4677:3:6" - }, - "nodeType": "ForStatement", - "src": "4637:221:6" - }, - { - "expression": { - "argumentTypes": null, - "hexValue": "66616c7365", - "id": 1743, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4874:5:6", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "functionReturnParameters": 1709, - "id": 1744, - "nodeType": "Return", - "src": "4867:12:6" - } - ] - }, - "id": 1746, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "isConfirmedByRequiredFriends", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1706, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1705, - "name": "dataHash", - "nodeType": "VariableDeclaration", - "scope": 1746, - "src": "4519:16:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1704, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "4519:7:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "4518:18:6" - }, - "payable": false, - "returnParameters": { - "id": 1709, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1708, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 1746, - "src": "4582:4:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 1707, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "4582:4:6", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "4581:6:6" - }, - "scope": 1759, - "src": "4481:405:6", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1757, - "nodeType": "Block", - "src": "5106:39:6", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1754, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1748, - "src": "5133:4:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 1753, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2083, - "src": "5123:9:6", - "typeDescriptions": { - "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", - "typeString": "function () pure returns (bytes32)" - } - }, - "id": 1755, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5123:15:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "functionReturnParameters": 1752, - "id": 1756, - "nodeType": "Return", - "src": "5116:22:6" - } - ] - }, - "id": 1758, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "getDataHash", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1749, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1748, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 1758, - "src": "5036:10:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 1747, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "5036:5:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "5035:12:6" - }, - "payable": false, - "returnParameters": { - "id": 1752, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1751, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 1758, - "src": "5093:7:6", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1750, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "5093:7:6", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "5092:9:6" - }, - "scope": 1759, - "src": "5015:130:6", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - } - ], - "scope": 1760, - "src": "257:4890:6" - } - ], - "src": "0:5148:6" - }, - "compiler": { - "name": "solc", - "version": "0.4.19+commit.c4cbbb05.Emscripten.clang" - }, - "networks": { - "4": { - "events": {}, - "links": {}, - "address": "0x0297aeb84568d3ab9d7b382240250dd0db22e05d", - "transactionHash": "0x85a0a0d054ba5a10091dabe072894eb0bc5f45b84927e8313094a600cabff0c6" - }, - "42": { - "events": {}, - "links": {}, - "address": "0x1f3c28359e6018304b28fa46f5ef87f4b295939c", - "transactionHash": "0x9c32de35cd9321dbb7c9bb2aa35fd3a4199b08db6aae909ace4a5bf93392fd87" - }, - "1525342778744": { - "events": {}, - "links": {}, - "address": "0x38ba6d49ff8d62e729429947e2381f8e1b01933b", - "transactionHash": "0x6ade3e6ed704785b52fedb81d093263eeaccdcb3dd3883a7c040679c6c8096fc" - }, - "1525789101965": { - "events": {}, - "links": {}, - "address": "0xf24ba0f83a48b995c7cac0d028e7db00bad3e42c", - "transactionHash": "0xeae217ba71df737e9f757f2a8918a4fe5f0e1c862ebe2a74f655e8f7ae25be15" - } - }, - "schemaVersion": "2.0.0", - "updatedAt": "2018-05-08T14:18:44.029Z" -} \ No newline at end of file diff --git a/safe-contracts/build/contracts/v0/WhitelistExtension.json b/safe-contracts/build/contracts/v0/WhitelistExtension.json deleted file mode 100644 index f08d455228..0000000000 --- a/safe-contracts/build/contracts/v0/WhitelistExtension.json +++ /dev/null @@ -1,5406 +0,0 @@ -{ - "contractName": "WhitelistExtension", - "abi": [ - { - "constant": true, - "inputs": [ - { - "name": "", - "type": "address" - } - ], - "name": "isWhitelisted", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "NAME", - "outputs": [ - { - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "gnosisSafe", - "outputs": [ - { - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "VERSION", - "outputs": [ - { - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { - "name": "accounts", - "type": "address[]" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "constant": false, - "inputs": [ - { - "name": "accounts", - "type": "address[]" - } - ], - "name": "setup", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_masterCopy", - "type": "address" - } - ], - "name": "changeMasterCopy", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "account", - "type": "address" - } - ], - "name": "addToWhitelist", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "account", - "type": "address" - } - ], - "name": "removeFromWhitelist", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "sender", - "type": "address" - }, - { - "name": "to", - "type": "address" - }, - { - "name": "value", - "type": "uint256" - }, - { - "name": "data", - "type": "bytes" - }, - { - "name": "operation", - "type": "uint8" - } - ], - "name": "isExecutable", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "0x6060604052341561000f57600080fd5b604051610c9a380380610c9a833981016040528080518201919050506100478161004d64010000000002610680176401000000009004565b506101a1565b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561009557600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600090505b815181101561019d57600082828151811015156100f457fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff161415151561012157600080fd5b600160026000848481518110151561013557fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806001019150506100db565b5050565b610aea806101b06000396000f300606060405260043610610099576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680633af32abf1461009e5780637de7edef146100ef5780638ab1d68114610128578063a3f4df7e14610161578063a84173ae146101ef578063bd5b853b14610244578063cde09ca91461029e578063e43252d714610366578063ffa1ad741461039f575b600080fd5b34156100a957600080fd5b6100d5600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061042d565b604051808215151515815260200191505060405180910390f35b34156100fa57600080fd5b610126600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061044d565b005b341561013357600080fd5b61015f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610512565b005b341561016c57600080fd5b610174610621565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101b4578082015181840152602081019050610199565b50505050905090810190601f1680156101e15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156101fa57600080fd5b61020261065a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561024f57600080fd5b61029c600480803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091905050610680565b005b34156102a957600080fd5b61034c600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803560ff169060200190919050506107d4565b604051808215151515815260200191505060405180910390f35b341561037157600080fd5b61039d600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061094f565b005b34156103aa57600080fd5b6103b2610a85565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103f25780820151818401526020810190506103d7565b50505050905090810190601f16801561041f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60026020528060005260406000206000915054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156104a957600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156104cf57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561056e57600080fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156105c657600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6040805190810160405280601381526020017f57686974656c69737420457874656e73696f6e0000000000000000000000000081525081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156106c857600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600090505b81518110156107d0576000828281518110151561072757fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff161415151561075457600080fd5b600160026000848481518110151561076857fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808060010191505061070e565b5050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e876000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b151561089b57600080fd5b6102c65a03f115156108ac57600080fd5b5050506040518051905015156108c157600080fd5b600060028111156108ce57fe5b8260028111156108da57fe5b1415156108e657600080fd5b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156109415760019050610946565b600090505b95945050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156109ab57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156109d157600080fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610a2a57600080fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6040805190810160405280600581526020017f302e302e31000000000000000000000000000000000000000000000000000000815250815600a165627a7a723058201b57b6ee7b9d50f85b4f4aef604b3f927644cd770495870aa4014654c521c72a0029", - "deployedBytecode": "0x606060405260043610610099576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680633af32abf1461009e5780637de7edef146100ef5780638ab1d68114610128578063a3f4df7e14610161578063a84173ae146101ef578063bd5b853b14610244578063cde09ca91461029e578063e43252d714610366578063ffa1ad741461039f575b600080fd5b34156100a957600080fd5b6100d5600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061042d565b604051808215151515815260200191505060405180910390f35b34156100fa57600080fd5b610126600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061044d565b005b341561013357600080fd5b61015f600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610512565b005b341561016c57600080fd5b610174610621565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101b4578082015181840152602081019050610199565b50505050905090810190601f1680156101e15780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34156101fa57600080fd5b61020261065a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561024f57600080fd5b61029c600480803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091905050610680565b005b34156102a957600080fd5b61034c600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509190803560ff169060200190919050506107d4565b604051808215151515815260200191505060405180910390f35b341561037157600080fd5b61039d600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190505061094f565b005b34156103aa57600080fd5b6103b2610a85565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103f25780820151818401526020810190506103d7565b50505050905090810190601f16801561041f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60026020528060005260406000206000915054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156104a957600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156104cf57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561056e57600080fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156105c657600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6040805190810160405280601381526020017f57686974656c69737420457874656e73696f6e0000000000000000000000000081525081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156106c857600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600090505b81518110156107d0576000828281518110151561072757fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff161415151561075457600080fd5b600160026000848481518110151561076857fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808060010191505061070e565b5050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e876000604051602001526040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b151561089b57600080fd5b6102c65a03f115156108ac57600080fd5b5050506040518051905015156108c157600080fd5b600060028111156108ce57fe5b8260028111156108da57fe5b1415156108e657600080fd5b600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156109415760019050610946565b600090505b95945050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156109ab57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156109d157600080fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610a2a57600080fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6040805190810160405280600581526020017f302e302e31000000000000000000000000000000000000000000000000000000815250815600a165627a7a723058201b57b6ee7b9d50f85b4f4aef604b3f927644cd770495870aa4014654c521c72a0029", - "sourceMap": "240:3067:7:-;;;796:99;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;873:15;879:8;873:5;;;;;:15;;;:::i;:::-;796:99;240:3067;;1017:477;1351:9;1248:1;1233:10;;;;;;;;;;;1225:24;;;1217:33;;;;;;;;1325:10;1301;;:35;;;;;;;;;;;;;;;;;;1363:1;1351:13;;1346:142;1370:8;:15;1366:1;:19;1346:142;;;1429:1;1414:8;1423:1;1414:11;;;;;;;;;;;;;;;;;;:16;;;;1406:25;;;;;;;;1473:4;1445:13;:26;1459:8;1468:1;1459:11;;;;;;;;;;;;;;;;;;1445:26;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;1387:3;;;;;;;1346:142;;;1017:477;;:::o;240:3067::-;;;;;;;", - "deployedSourceMap": "240:3067:7:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;528:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1640:185;;;;;;;;;;;;;;;;;;;;;;;;;;;;2330:176;;;;;;;;;;;;;;;;;;;;;;;;;;;;288:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;427:28:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1017:477;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2878:427;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1974:202;;;;;;;;;;;;;;;;;;;;;;;;;;;;345:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;80:1;75:3;71;64:6;52:2;49:1;45:3;40:15;;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;528:46:7;;;;;;;;;;;;;;;;;;;;;;:::o;1640:185::-;647:10;;;;;;;;;;;625:33;;:10;:33;;;617:42;;;;;;;;1782:1;1766:11;1758:25;;;;1750:34;;;;;;;;1807:11;1794:10;;:24;;;;;;;;;;;;;;;;;;1640:185;:::o;2330:176::-;647:10;;;;;;;;;;;625:33;;:10;:33;;;617:42;;;;;;;;2436:13;:22;2450:7;2436:22;;;;;;;;;;;;;;;;;;;;;;;;;2428:31;;;;;;;;2494:5;2469:13;:22;2483:7;2469:22;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;2330:176;:::o;288:51::-;;;;;;;;;;;;;;;;;;;;:::o;427:28::-;;;;;;;;;;;;;:::o;1017:477::-;1351:9;1248:1;1233:10;;;;;;;;;;;1225:24;;;1217:33;;;;;;;;1325:10;1301;;:35;;;;;;;;;;;;;;;;;;1363:1;1351:13;;1346:142;1370:8;:15;1366:1;:19;1346:142;;;1429:1;1414:8;1423:1;1414:11;;;;;;;;;;;;;;;;;;:16;;;;1406:25;;;;;;;;1473:4;1445:13;:26;1459:8;1468:1;1459:11;;;;;;;;;;;;;;;;;;1445:26;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;1387:3;;;;;;;1346:142;;;1017:477;;:::o;2878:427::-;3019:4;3136:10;;;;;;;;;;;:18;;;3155:6;3136:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3128:35;;;;;;;;3194:25;3181:38;;;;;;;;:9;:38;;;;;;;;;3173:47;;;;;;;;3234:13;:17;3248:2;3234:17;;;;;;;;;;;;;;;;;;;;;;;;;3230:46;;;3272:4;3265:11;;;;3230:46;3293:5;3286:12;;2878:427;;;;;;;;:::o;1974:202::-;647:10;;;;;;;;;;;625:33;;:10;:33;;;617:42;;;;;;;;2086:1;2075:7;:12;;;;2067:21;;;;;;;;2107:13;:22;2121:7;2107:22;;;;;;;;;;;;;;;;;;;;;;;;;2106:23;2098:32;;;;;;;;2165:4;2140:13;:22;2154:7;2140:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;1974:202;:::o;345:40::-;;;;;;;;;;;;;;;;;;;;:::o", - "source": "pragma solidity 0.4.19;\nimport \"../Extension.sol\";\nimport \"../GnosisSafe.sol\";\n\n\n/// @title Whitelist Extension - Allows to execute transactions to whitelisted addresses without confirmations.\n/// @author Stefan George - \ncontract WhitelistExtension is Extension {\n\n string public constant NAME = \"Whitelist Extension\";\n string public constant VERSION = \"0.0.1\";\n\n WhitelistExtension masterCopy;\n GnosisSafe public gnosisSafe;\n\n // isWhitelisted mapping maps destination address to boolean.\n mapping (address => bool) public isWhitelisted;\n\n modifier onlyGnosisSafe() {\n require(msg.sender == address(gnosisSafe));\n _;\n }\n\n /// @dev Constructor function triggers setup function.\n /// @param accounts List of whitelisted accounts.\n function WhitelistExtension(address[] accounts)\n public\n {\n setup(accounts);\n }\n\n /// @dev Setup function sets initial storage of contract.\n /// @param accounts List of whitelisted accounts.\n function setup(address[] accounts)\n public\n {\n // gnosisSafe can only be 0 at initalization of contract.\n // Check ensures that setup function can only be called once.\n require(address(gnosisSafe) == 0);\n // Set whitelisted destinations.\n gnosisSafe = GnosisSafe(msg.sender);\n for (uint256 i = 0; i < accounts.length; i++) {\n require(accounts[i] != 0);\n isWhitelisted[accounts[i]]= true;\n }\n }\n\n /// @dev Allows to upgrade the contract. This can only be done via a Safe transaction.\n /// @param _masterCopy New contract address.\n function changeMasterCopy(WhitelistExtension _masterCopy)\n public\n onlyGnosisSafe\n {\n require(address(_masterCopy) != 0);\n masterCopy = _masterCopy;\n }\n\n /// @dev Allows to add destination to whitelist. This can only be done via a Safe transaction.\n /// @param account Destination address.\n function addToWhitelist(address account)\n public\n onlyGnosisSafe\n {\n require(account != 0);\n require(!isWhitelisted[account]);\n isWhitelisted[account] = true;\n }\n\n /// @dev Allows to remove destination from whitelist. This can only be done via a Safe transaction.\n /// @param account Destination address.\n function removeFromWhitelist(address account)\n public\n onlyGnosisSafe\n {\n require(isWhitelisted[account]);\n isWhitelisted[account] = false;\n }\n\n /// @dev Returns if Safe transaction is to a whitelisted destination.\n /// @param sender Safe owner sending Safe transaction.\n /// @param to Whitelisted destination address.\n /// @param value Not checked.\n /// @param data Not checked.\n /// @param operation Only Call operations are allowed.\n /// @return Returns if transaction can be executed.\n function isExecutable(address sender, address to, uint256 value, bytes data, GnosisSafe.Operation operation)\n public\n returns (bool)\n {\n // Only Safe owners are allowed to execute transactions to whitelisted accounts.\n require(gnosisSafe.isOwner(sender));\n require(operation == GnosisSafe.Operation.Call);\n if (isWhitelisted[to])\n return true;\n return false;\n }\n}\n", - "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/extensions/WhitelistExtension.sol", - "ast": { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/extensions/WhitelistExtension.sol", - "exportedSymbols": { - "WhitelistExtension": [ - 1961 - ] - }, - "id": 1962, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 1761, - "literals": [ - "solidity", - "0.4", - ".19" - ], - "nodeType": "PragmaDirective", - "src": "0:23:7" - }, - { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Extension.sol", - "file": "../Extension.sol", - "id": 1762, - "nodeType": "ImportDirective", - "scope": 1962, - "sourceUnit": 19, - "src": "24:26:7", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", - "file": "../GnosisSafe.sol", - "id": 1763, - "nodeType": "ImportDirective", - "scope": 1962, - "sourceUnit": 964, - "src": "51:27:7", - "symbolAliases": [], - "unitAlias": "" - }, - { - "baseContracts": [ - { - "arguments": [], - "baseName": { - "contractScope": null, - "id": 1764, - "name": "Extension", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 18, - "src": "271:9:7", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "id": 1765, - "nodeType": "InheritanceSpecifier", - "src": "271:9:7" - } - ], - "contractDependencies": [ - 18 - ], - "contractKind": "contract", - "documentation": "@title Whitelist Extension - Allows to execute transactions to whitelisted addresses without confirmations.\n @author Stefan George - ", - "fullyImplemented": true, - "id": 1961, - "linearizedBaseContracts": [ - 1961, - 18 - ], - "name": "WhitelistExtension", - "nodeType": "ContractDefinition", - "nodes": [ - { - "constant": true, - "id": 1768, - "name": "NAME", - "nodeType": "VariableDeclaration", - "scope": 1961, - "src": "288:51:7", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_string_memory", - "typeString": "string memory" - }, - "typeName": { - "id": 1766, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "288:6:7", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string storage pointer" - } - }, - "value": { - "argumentTypes": null, - "hexValue": "57686974656c69737420457874656e73696f6e", - "id": 1767, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "318:21:7", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_f55422feda264e00354b067f8535751fe0d08b1f1fa6347321df2abf99a49e10", - "typeString": "literal_string \"Whitelist Extension\"" - }, - "value": "Whitelist Extension" - }, - "visibility": "public" - }, - { - "constant": true, - "id": 1771, - "name": "VERSION", - "nodeType": "VariableDeclaration", - "scope": 1961, - "src": "345:40:7", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_string_memory", - "typeString": "string memory" - }, - "typeName": { - "id": 1769, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "345:6:7", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string storage pointer" - } - }, - "value": { - "argumentTypes": null, - "hexValue": "302e302e31", - "id": 1770, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "378:7:7", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", - "typeString": "literal_string \"0.0.1\"" - }, - "value": "0.0.1" - }, - "visibility": "public" - }, - { - "constant": false, - "id": 1773, - "name": "masterCopy", - "nodeType": "VariableDeclaration", - "scope": 1961, - "src": "392:29:7", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_WhitelistExtension_$1961", - "typeString": "contract WhitelistExtension" - }, - "typeName": { - "contractScope": null, - "id": 1772, - "name": "WhitelistExtension", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1961, - "src": "392:18:7", - "typeDescriptions": { - "typeIdentifier": "t_contract$_WhitelistExtension_$1961", - "typeString": "contract WhitelistExtension" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1775, - "name": "gnosisSafe", - "nodeType": "VariableDeclaration", - "scope": 1961, - "src": "427:28:7", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - }, - "typeName": { - "contractScope": null, - "id": 1774, - "name": "GnosisSafe", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 963, - "src": "427:10:7", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "id": 1779, - "name": "isWhitelisted", - "nodeType": "VariableDeclaration", - "scope": 1961, - "src": "528:46:7", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - }, - "typeName": { - "id": 1778, - "keyType": { - "id": 1776, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "537:7:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Mapping", - "src": "528:25:7", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - }, - "valueType": { - "id": 1777, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "548:4:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - "value": null, - "visibility": "public" - }, - { - "body": { - "id": 1791, - "nodeType": "Block", - "src": "607:70:7", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 1787, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1782, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2089, - "src": "625:3:7", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1783, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "625:10:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1785, - "name": "gnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1775, - "src": "647:10:7", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - ], - "id": 1784, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "639:7:7", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 1786, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "639:19:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "625:33:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1781, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "617:7:7", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1788, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "617:42:7", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1789, - "nodeType": "ExpressionStatement", - "src": "617:42:7" - }, - { - "id": 1790, - "nodeType": "PlaceholderStatement", - "src": "669:1:7" - } - ] - }, - "id": 1792, - "name": "onlyGnosisSafe", - "nodeType": "ModifierDefinition", - "parameters": { - "id": 1780, - "nodeType": "ParameterList", - "parameters": [], - "src": "604:2:7" - }, - "src": "581:96:7", - "visibility": "internal" - }, - { - "body": { - "id": 1802, - "nodeType": "Block", - "src": "863:32:7", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1799, - "name": "accounts", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1795, - "src": "879:8:7", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - ], - "id": 1798, - "name": "setup", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1854, - "src": "873:5:7", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$returns$__$", - "typeString": "function (address[] memory)" - } - }, - "id": 1800, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "873:15:7", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1801, - "nodeType": "ExpressionStatement", - "src": "873:15:7" - } - ] - }, - "id": 1803, - "implemented": true, - "isConstructor": true, - "isDeclaredConst": false, - "modifiers": [], - "name": "WhitelistExtension", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1796, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1795, - "name": "accounts", - "nodeType": "VariableDeclaration", - "scope": 1803, - "src": "824:18:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - }, - "typeName": { - "baseType": { - "id": 1793, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "824:7:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 1794, - "length": null, - "nodeType": "ArrayTypeName", - "src": "824:9:7", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "823:20:7" - }, - "payable": false, - "returnParameters": { - "id": 1797, - "nodeType": "ParameterList", - "parameters": [], - "src": "863:0:7" - }, - "scope": 1961, - "src": "796:99:7", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1853, - "nodeType": "Block", - "src": "1071:423:7", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 1814, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1811, - "name": "gnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1775, - "src": "1233:10:7", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - ], - "id": 1810, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "1225:7:7", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 1812, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1225:19:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1813, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1248:1:7", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1225:24:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1809, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "1217:7:7", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1815, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1217:33:7", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1816, - "nodeType": "ExpressionStatement", - "src": "1217:33:7" - }, - { - "expression": { - "argumentTypes": null, - "id": 1822, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1817, - "name": "gnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1775, - "src": "1301:10:7", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1819, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2089, - "src": "1325:3:7", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1820, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "1325:10:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 1818, - "name": "GnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 963, - "src": "1314:10:7", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_GnosisSafe_$963_$", - "typeString": "type(contract GnosisSafe)" - } - }, - "id": 1821, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1314:22:7", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - "src": "1301:35:7", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - "id": 1823, - "nodeType": "ExpressionStatement", - "src": "1301:35:7" - }, - { - "body": { - "id": 1851, - "nodeType": "Block", - "src": "1392:96:7", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 1840, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1836, - "name": "accounts", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1806, - "src": "1414:8:7", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 1838, - "indexExpression": { - "argumentTypes": null, - "id": 1837, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1825, - "src": "1423:1:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1414:11:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1839, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1429:1:7", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1414:16:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1835, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "1406:7:7", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1841, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1406:25:7", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1842, - "nodeType": "ExpressionStatement", - "src": "1406:25:7" - }, - { - "expression": { - "argumentTypes": null, - "id": 1849, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1843, - "name": "isWhitelisted", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1779, - "src": "1445:13:7", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 1847, - "indexExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1844, - "name": "accounts", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1806, - "src": "1459:8:7", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 1846, - "indexExpression": { - "argumentTypes": null, - "id": 1845, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1825, - "src": "1468:1:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1459:11:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "1445:26:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 1848, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1473:4:7", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "1445:32:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1850, - "nodeType": "ExpressionStatement", - "src": "1445:32:7" - } - ] - }, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1831, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1828, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1825, - "src": "1366:1:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1829, - "name": "accounts", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1806, - "src": "1370:8:7", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 1830, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "1370:15:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1366:19:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1852, - "initializationExpression": { - "assignments": [ - 1825 - ], - "declarations": [ - { - "constant": false, - "id": 1825, - "name": "i", - "nodeType": "VariableDeclaration", - "scope": 1854, - "src": "1351:9:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1824, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1351:7:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1827, - "initialValue": { - "argumentTypes": null, - "hexValue": "30", - "id": 1826, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1363:1:7", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "1351:13:7" - }, - "loopExpression": { - "expression": { - "argumentTypes": null, - "id": 1833, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "1387:3:7", - "subExpression": { - "argumentTypes": null, - "id": 1832, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1825, - "src": "1387:1:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1834, - "nodeType": "ExpressionStatement", - "src": "1387:3:7" - }, - "nodeType": "ForStatement", - "src": "1346:142:7" - } - ] - }, - "id": 1854, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "setup", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1807, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1806, - "name": "accounts", - "nodeType": "VariableDeclaration", - "scope": 1854, - "src": "1032:18:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - }, - "typeName": { - "baseType": { - "id": 1804, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1032:7:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 1805, - "length": null, - "nodeType": "ArrayTypeName", - "src": "1032:9:7", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1031:20:7" - }, - "payable": false, - "returnParameters": { - "id": 1808, - "nodeType": "ParameterList", - "parameters": [], - "src": "1071:0:7" - }, - "scope": 1961, - "src": "1017:477:7", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1873, - "nodeType": "Block", - "src": "1740:85:7", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 1866, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1863, - "name": "_masterCopy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1856, - "src": "1766:11:7", - "typeDescriptions": { - "typeIdentifier": "t_contract$_WhitelistExtension_$1961", - "typeString": "contract WhitelistExtension" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_WhitelistExtension_$1961", - "typeString": "contract WhitelistExtension" - } - ], - "id": 1862, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "1758:7:7", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 1864, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1758:20:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1865, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1782:1:7", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1758:25:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1861, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "1750:7:7", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1867, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1750:34:7", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1868, - "nodeType": "ExpressionStatement", - "src": "1750:34:7" - }, - { - "expression": { - "argumentTypes": null, - "id": 1871, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1869, - "name": "masterCopy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1773, - "src": "1794:10:7", - "typeDescriptions": { - "typeIdentifier": "t_contract$_WhitelistExtension_$1961", - "typeString": "contract WhitelistExtension" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 1870, - "name": "_masterCopy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1856, - "src": "1807:11:7", - "typeDescriptions": { - "typeIdentifier": "t_contract$_WhitelistExtension_$1961", - "typeString": "contract WhitelistExtension" - } - }, - "src": "1794:24:7", - "typeDescriptions": { - "typeIdentifier": "t_contract$_WhitelistExtension_$1961", - "typeString": "contract WhitelistExtension" - } - }, - "id": 1872, - "nodeType": "ExpressionStatement", - "src": "1794:24:7" - } - ] - }, - "id": 1874, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [], - "id": 1859, - "modifierName": { - "argumentTypes": null, - "id": 1858, - "name": "onlyGnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1792, - "src": "1721:14:7", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "1721:14:7" - } - ], - "name": "changeMasterCopy", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1857, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1856, - "name": "_masterCopy", - "nodeType": "VariableDeclaration", - "scope": 1874, - "src": "1666:30:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_WhitelistExtension_$1961", - "typeString": "contract WhitelistExtension" - }, - "typeName": { - "contractScope": null, - "id": 1855, - "name": "WhitelistExtension", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1961, - "src": "1666:18:7", - "typeDescriptions": { - "typeIdentifier": "t_contract$_WhitelistExtension_$1961", - "typeString": "contract WhitelistExtension" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1665:32:7" - }, - "payable": false, - "returnParameters": { - "id": 1860, - "nodeType": "ParameterList", - "parameters": [], - "src": "1740:0:7" - }, - "scope": 1961, - "src": "1640:185:7", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1900, - "nodeType": "Block", - "src": "2057:119:7", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 1884, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1882, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1876, - "src": "2075:7:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1883, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2086:1:7", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2075:12:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1881, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "2067:7:7", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1885, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2067:21:7", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1886, - "nodeType": "ExpressionStatement", - "src": "2067:21:7" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1891, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "2106:23:7", - "subExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1888, - "name": "isWhitelisted", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1779, - "src": "2107:13:7", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 1890, - "indexExpression": { - "argumentTypes": null, - "id": 1889, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1876, - "src": "2121:7:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2107:22:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1887, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "2098:7:7", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1892, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2098:32:7", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1893, - "nodeType": "ExpressionStatement", - "src": "2098:32:7" - }, - { - "expression": { - "argumentTypes": null, - "id": 1898, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1894, - "name": "isWhitelisted", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1779, - "src": "2140:13:7", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 1896, - "indexExpression": { - "argumentTypes": null, - "id": 1895, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1876, - "src": "2154:7:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "2140:22:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 1897, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2165:4:7", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "2140:29:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1899, - "nodeType": "ExpressionStatement", - "src": "2140:29:7" - } - ] - }, - "id": 1901, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [], - "id": 1879, - "modifierName": { - "argumentTypes": null, - "id": 1878, - "name": "onlyGnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1792, - "src": "2038:14:7", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "2038:14:7" - } - ], - "name": "addToWhitelist", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1877, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1876, - "name": "account", - "nodeType": "VariableDeclaration", - "scope": 1901, - "src": "1998:15:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1875, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1998:7:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1997:17:7" - }, - "payable": false, - "returnParameters": { - "id": 1880, - "nodeType": "ParameterList", - "parameters": [], - "src": "2057:0:7" - }, - "scope": 1961, - "src": "1974:202:7", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1920, - "nodeType": "Block", - "src": "2418:88:7", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1909, - "name": "isWhitelisted", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1779, - "src": "2436:13:7", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 1911, - "indexExpression": { - "argumentTypes": null, - "id": 1910, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1903, - "src": "2450:7:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2436:22:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1908, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "2428:7:7", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1912, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2428:31:7", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1913, - "nodeType": "ExpressionStatement", - "src": "2428:31:7" - }, - { - "expression": { - "argumentTypes": null, - "id": 1918, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1914, - "name": "isWhitelisted", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1779, - "src": "2469:13:7", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 1916, - "indexExpression": { - "argumentTypes": null, - "id": 1915, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1903, - "src": "2483:7:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "2469:22:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "66616c7365", - "id": 1917, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2494:5:7", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "src": "2469:30:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1919, - "nodeType": "ExpressionStatement", - "src": "2469:30:7" - } - ] - }, - "id": 1921, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [], - "id": 1906, - "modifierName": { - "argumentTypes": null, - "id": 1905, - "name": "onlyGnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1792, - "src": "2399:14:7", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "2399:14:7" - } - ], - "name": "removeFromWhitelist", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1904, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1903, - "name": "account", - "nodeType": "VariableDeclaration", - "scope": 1921, - "src": "2359:15:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1902, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2359:7:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "2358:17:7" - }, - "payable": false, - "returnParameters": { - "id": 1907, - "nodeType": "ParameterList", - "parameters": [], - "src": "2418:0:7" - }, - "scope": 1961, - "src": "2330:176:7", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1959, - "nodeType": "Block", - "src": "3029:276:7", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1939, - "name": "sender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1923, - "src": "3155:6:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "expression": { - "argumentTypes": null, - "id": 1937, - "name": "gnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1775, - "src": "3136:10:7", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - "id": 1938, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "isOwner", - "nodeType": "MemberAccess", - "referencedDeclaration": 47, - "src": "3136:18:7", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", - "typeString": "function (address) view external returns (bool)" - } - }, - "id": 1940, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3136:26:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1936, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "3128:7:7", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1941, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3128:35:7", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1942, - "nodeType": "ExpressionStatement", - "src": "3128:35:7" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - }, - "id": 1948, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1944, - "name": "operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1931, - "src": "3181:9:7", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1945, - "name": "GnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 963, - "src": "3194:10:7", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_GnosisSafe_$963_$", - "typeString": "type(contract GnosisSafe)" - } - }, - "id": 1946, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "Operation", - "nodeType": "MemberAccess", - "referencedDeclaration": 61, - "src": "3194:20:7", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_Operation_$61_$", - "typeString": "type(enum GnosisSafe.Operation)" - } - }, - "id": 1947, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "Call", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "3194:25:7", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "src": "3181:38:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1943, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "3173:7:7", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1949, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3173:47:7", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1950, - "nodeType": "ExpressionStatement", - "src": "3173:47:7" - }, - { - "condition": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1951, - "name": "isWhitelisted", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1779, - "src": "3234:13:7", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 1953, - "indexExpression": { - "argumentTypes": null, - "id": 1952, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1925, - "src": "3248:2:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3234:17:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 1956, - "nodeType": "IfStatement", - "src": "3230:46:7", - "trueBody": { - "expression": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 1954, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3272:4:7", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "functionReturnParameters": 1935, - "id": 1955, - "nodeType": "Return", - "src": "3265:11:7" - } - }, - { - "expression": { - "argumentTypes": null, - "hexValue": "66616c7365", - "id": 1957, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3293:5:7", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "functionReturnParameters": 1935, - "id": 1958, - "nodeType": "Return", - "src": "3286:12:7" - } - ] - }, - "id": 1960, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "isExecutable", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1932, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1923, - "name": "sender", - "nodeType": "VariableDeclaration", - "scope": 1960, - "src": "2900:14:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1922, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2900:7:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1925, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 1960, - "src": "2916:10:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1924, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2916:7:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1927, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 1960, - "src": "2928:13:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1926, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2928:7:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1929, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 1960, - "src": "2943:10:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 1928, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "2943:5:7", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1931, - "name": "operation", - "nodeType": "VariableDeclaration", - "scope": 1960, - "src": "2955:30:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - }, - "typeName": { - "contractScope": null, - "id": 1930, - "name": "GnosisSafe.Operation", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 61, - "src": "2955:20:7", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "2899:87:7" - }, - "payable": false, - "returnParameters": { - "id": 1935, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1934, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 1960, - "src": "3019:4:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 1933, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "3019:4:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "3018:6:7" - }, - "scope": 1961, - "src": "2878:427:7", - "stateMutability": "nonpayable", - "superFunction": 17, - "visibility": "public" - } - ], - "scope": 1962, - "src": "240:3067:7" - } - ], - "src": "0:3308:7" - }, - "legacyAST": { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/extensions/WhitelistExtension.sol", - "exportedSymbols": { - "WhitelistExtension": [ - 1961 - ] - }, - "id": 1962, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 1761, - "literals": [ - "solidity", - "0.4", - ".19" - ], - "nodeType": "PragmaDirective", - "src": "0:23:7" - }, - { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Extension.sol", - "file": "../Extension.sol", - "id": 1762, - "nodeType": "ImportDirective", - "scope": 1962, - "sourceUnit": 19, - "src": "24:26:7", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", - "file": "../GnosisSafe.sol", - "id": 1763, - "nodeType": "ImportDirective", - "scope": 1962, - "sourceUnit": 964, - "src": "51:27:7", - "symbolAliases": [], - "unitAlias": "" - }, - { - "baseContracts": [ - { - "arguments": [], - "baseName": { - "contractScope": null, - "id": 1764, - "name": "Extension", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 18, - "src": "271:9:7", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Extension_$18", - "typeString": "contract Extension" - } - }, - "id": 1765, - "nodeType": "InheritanceSpecifier", - "src": "271:9:7" - } - ], - "contractDependencies": [ - 18 - ], - "contractKind": "contract", - "documentation": "@title Whitelist Extension - Allows to execute transactions to whitelisted addresses without confirmations.\n @author Stefan George - ", - "fullyImplemented": true, - "id": 1961, - "linearizedBaseContracts": [ - 1961, - 18 - ], - "name": "WhitelistExtension", - "nodeType": "ContractDefinition", - "nodes": [ - { - "constant": true, - "id": 1768, - "name": "NAME", - "nodeType": "VariableDeclaration", - "scope": 1961, - "src": "288:51:7", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_string_memory", - "typeString": "string memory" - }, - "typeName": { - "id": 1766, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "288:6:7", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string storage pointer" - } - }, - "value": { - "argumentTypes": null, - "hexValue": "57686974656c69737420457874656e73696f6e", - "id": 1767, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "318:21:7", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_f55422feda264e00354b067f8535751fe0d08b1f1fa6347321df2abf99a49e10", - "typeString": "literal_string \"Whitelist Extension\"" - }, - "value": "Whitelist Extension" - }, - "visibility": "public" - }, - { - "constant": true, - "id": 1771, - "name": "VERSION", - "nodeType": "VariableDeclaration", - "scope": 1961, - "src": "345:40:7", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_string_memory", - "typeString": "string memory" - }, - "typeName": { - "id": 1769, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "345:6:7", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string storage pointer" - } - }, - "value": { - "argumentTypes": null, - "hexValue": "302e302e31", - "id": 1770, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "378:7:7", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", - "typeString": "literal_string \"0.0.1\"" - }, - "value": "0.0.1" - }, - "visibility": "public" - }, - { - "constant": false, - "id": 1773, - "name": "masterCopy", - "nodeType": "VariableDeclaration", - "scope": 1961, - "src": "392:29:7", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_WhitelistExtension_$1961", - "typeString": "contract WhitelistExtension" - }, - "typeName": { - "contractScope": null, - "id": 1772, - "name": "WhitelistExtension", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1961, - "src": "392:18:7", - "typeDescriptions": { - "typeIdentifier": "t_contract$_WhitelistExtension_$1961", - "typeString": "contract WhitelistExtension" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1775, - "name": "gnosisSafe", - "nodeType": "VariableDeclaration", - "scope": 1961, - "src": "427:28:7", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - }, - "typeName": { - "contractScope": null, - "id": 1774, - "name": "GnosisSafe", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 963, - "src": "427:10:7", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - "value": null, - "visibility": "public" - }, - { - "constant": false, - "id": 1779, - "name": "isWhitelisted", - "nodeType": "VariableDeclaration", - "scope": 1961, - "src": "528:46:7", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - }, - "typeName": { - "id": 1778, - "keyType": { - "id": 1776, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "537:7:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Mapping", - "src": "528:25:7", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - }, - "valueType": { - "id": 1777, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "548:4:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - "value": null, - "visibility": "public" - }, - { - "body": { - "id": 1791, - "nodeType": "Block", - "src": "607:70:7", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 1787, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1782, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2089, - "src": "625:3:7", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1783, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "625:10:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1785, - "name": "gnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1775, - "src": "647:10:7", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - ], - "id": 1784, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "639:7:7", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 1786, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "639:19:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "625:33:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1781, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "617:7:7", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1788, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "617:42:7", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1789, - "nodeType": "ExpressionStatement", - "src": "617:42:7" - }, - { - "id": 1790, - "nodeType": "PlaceholderStatement", - "src": "669:1:7" - } - ] - }, - "id": 1792, - "name": "onlyGnosisSafe", - "nodeType": "ModifierDefinition", - "parameters": { - "id": 1780, - "nodeType": "ParameterList", - "parameters": [], - "src": "604:2:7" - }, - "src": "581:96:7", - "visibility": "internal" - }, - { - "body": { - "id": 1802, - "nodeType": "Block", - "src": "863:32:7", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1799, - "name": "accounts", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1795, - "src": "879:8:7", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - ], - "id": 1798, - "name": "setup", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1854, - "src": "873:5:7", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$returns$__$", - "typeString": "function (address[] memory)" - } - }, - "id": 1800, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "873:15:7", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1801, - "nodeType": "ExpressionStatement", - "src": "873:15:7" - } - ] - }, - "id": 1803, - "implemented": true, - "isConstructor": true, - "isDeclaredConst": false, - "modifiers": [], - "name": "WhitelistExtension", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1796, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1795, - "name": "accounts", - "nodeType": "VariableDeclaration", - "scope": 1803, - "src": "824:18:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - }, - "typeName": { - "baseType": { - "id": 1793, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "824:7:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 1794, - "length": null, - "nodeType": "ArrayTypeName", - "src": "824:9:7", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "823:20:7" - }, - "payable": false, - "returnParameters": { - "id": 1797, - "nodeType": "ParameterList", - "parameters": [], - "src": "863:0:7" - }, - "scope": 1961, - "src": "796:99:7", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1853, - "nodeType": "Block", - "src": "1071:423:7", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 1814, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1811, - "name": "gnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1775, - "src": "1233:10:7", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - ], - "id": 1810, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "1225:7:7", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 1812, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1225:19:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1813, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1248:1:7", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1225:24:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1809, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "1217:7:7", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1815, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1217:33:7", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1816, - "nodeType": "ExpressionStatement", - "src": "1217:33:7" - }, - { - "expression": { - "argumentTypes": null, - "id": 1822, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1817, - "name": "gnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1775, - "src": "1301:10:7", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1819, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2089, - "src": "1325:3:7", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1820, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "1325:10:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "id": 1818, - "name": "GnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 963, - "src": "1314:10:7", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_GnosisSafe_$963_$", - "typeString": "type(contract GnosisSafe)" - } - }, - "id": 1821, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1314:22:7", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - "src": "1301:35:7", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - "id": 1823, - "nodeType": "ExpressionStatement", - "src": "1301:35:7" - }, - { - "body": { - "id": 1851, - "nodeType": "Block", - "src": "1392:96:7", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 1840, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1836, - "name": "accounts", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1806, - "src": "1414:8:7", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 1838, - "indexExpression": { - "argumentTypes": null, - "id": 1837, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1825, - "src": "1423:1:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1414:11:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1839, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1429:1:7", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1414:16:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1835, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "1406:7:7", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1841, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1406:25:7", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1842, - "nodeType": "ExpressionStatement", - "src": "1406:25:7" - }, - { - "expression": { - "argumentTypes": null, - "id": 1849, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1843, - "name": "isWhitelisted", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1779, - "src": "1445:13:7", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 1847, - "indexExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1844, - "name": "accounts", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1806, - "src": "1459:8:7", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 1846, - "indexExpression": { - "argumentTypes": null, - "id": 1845, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1825, - "src": "1468:1:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1459:11:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "1445:26:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 1848, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1473:4:7", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "1445:32:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1850, - "nodeType": "ExpressionStatement", - "src": "1445:32:7" - } - ] - }, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1831, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1828, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1825, - "src": "1366:1:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1829, - "name": "accounts", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1806, - "src": "1370:8:7", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 1830, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "1370:15:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1366:19:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1852, - "initializationExpression": { - "assignments": [ - 1825 - ], - "declarations": [ - { - "constant": false, - "id": 1825, - "name": "i", - "nodeType": "VariableDeclaration", - "scope": 1854, - "src": "1351:9:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1824, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1351:7:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1827, - "initialValue": { - "argumentTypes": null, - "hexValue": "30", - "id": 1826, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1363:1:7", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "1351:13:7" - }, - "loopExpression": { - "expression": { - "argumentTypes": null, - "id": 1833, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "1387:3:7", - "subExpression": { - "argumentTypes": null, - "id": 1832, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1825, - "src": "1387:1:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1834, - "nodeType": "ExpressionStatement", - "src": "1387:3:7" - }, - "nodeType": "ForStatement", - "src": "1346:142:7" - } - ] - }, - "id": 1854, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "setup", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1807, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1806, - "name": "accounts", - "nodeType": "VariableDeclaration", - "scope": 1854, - "src": "1032:18:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - }, - "typeName": { - "baseType": { - "id": 1804, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1032:7:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 1805, - "length": null, - "nodeType": "ArrayTypeName", - "src": "1032:9:7", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[] storage pointer" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1031:20:7" - }, - "payable": false, - "returnParameters": { - "id": 1808, - "nodeType": "ParameterList", - "parameters": [], - "src": "1071:0:7" - }, - "scope": 1961, - "src": "1017:477:7", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1873, - "nodeType": "Block", - "src": "1740:85:7", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 1866, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1863, - "name": "_masterCopy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1856, - "src": "1766:11:7", - "typeDescriptions": { - "typeIdentifier": "t_contract$_WhitelistExtension_$1961", - "typeString": "contract WhitelistExtension" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_WhitelistExtension_$1961", - "typeString": "contract WhitelistExtension" - } - ], - "id": 1862, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "1758:7:7", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 1864, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1758:20:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1865, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1782:1:7", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1758:25:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1861, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "1750:7:7", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1867, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1750:34:7", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1868, - "nodeType": "ExpressionStatement", - "src": "1750:34:7" - }, - { - "expression": { - "argumentTypes": null, - "id": 1871, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1869, - "name": "masterCopy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1773, - "src": "1794:10:7", - "typeDescriptions": { - "typeIdentifier": "t_contract$_WhitelistExtension_$1961", - "typeString": "contract WhitelistExtension" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 1870, - "name": "_masterCopy", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1856, - "src": "1807:11:7", - "typeDescriptions": { - "typeIdentifier": "t_contract$_WhitelistExtension_$1961", - "typeString": "contract WhitelistExtension" - } - }, - "src": "1794:24:7", - "typeDescriptions": { - "typeIdentifier": "t_contract$_WhitelistExtension_$1961", - "typeString": "contract WhitelistExtension" - } - }, - "id": 1872, - "nodeType": "ExpressionStatement", - "src": "1794:24:7" - } - ] - }, - "id": 1874, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [], - "id": 1859, - "modifierName": { - "argumentTypes": null, - "id": 1858, - "name": "onlyGnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1792, - "src": "1721:14:7", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "1721:14:7" - } - ], - "name": "changeMasterCopy", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1857, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1856, - "name": "_masterCopy", - "nodeType": "VariableDeclaration", - "scope": 1874, - "src": "1666:30:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_WhitelistExtension_$1961", - "typeString": "contract WhitelistExtension" - }, - "typeName": { - "contractScope": null, - "id": 1855, - "name": "WhitelistExtension", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1961, - "src": "1666:18:7", - "typeDescriptions": { - "typeIdentifier": "t_contract$_WhitelistExtension_$1961", - "typeString": "contract WhitelistExtension" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1665:32:7" - }, - "payable": false, - "returnParameters": { - "id": 1860, - "nodeType": "ParameterList", - "parameters": [], - "src": "1740:0:7" - }, - "scope": 1961, - "src": "1640:185:7", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1900, - "nodeType": "Block", - "src": "2057:119:7", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 1884, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1882, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1876, - "src": "2075:7:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1883, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2086:1:7", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2075:12:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1881, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "2067:7:7", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1885, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2067:21:7", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1886, - "nodeType": "ExpressionStatement", - "src": "2067:21:7" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1891, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "2106:23:7", - "subExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1888, - "name": "isWhitelisted", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1779, - "src": "2107:13:7", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 1890, - "indexExpression": { - "argumentTypes": null, - "id": 1889, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1876, - "src": "2121:7:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2107:22:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1887, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "2098:7:7", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1892, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2098:32:7", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1893, - "nodeType": "ExpressionStatement", - "src": "2098:32:7" - }, - { - "expression": { - "argumentTypes": null, - "id": 1898, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1894, - "name": "isWhitelisted", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1779, - "src": "2140:13:7", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 1896, - "indexExpression": { - "argumentTypes": null, - "id": 1895, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1876, - "src": "2154:7:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "2140:22:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 1897, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2165:4:7", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "2140:29:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1899, - "nodeType": "ExpressionStatement", - "src": "2140:29:7" - } - ] - }, - "id": 1901, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [], - "id": 1879, - "modifierName": { - "argumentTypes": null, - "id": 1878, - "name": "onlyGnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1792, - "src": "2038:14:7", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "2038:14:7" - } - ], - "name": "addToWhitelist", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1877, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1876, - "name": "account", - "nodeType": "VariableDeclaration", - "scope": 1901, - "src": "1998:15:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1875, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1998:7:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1997:17:7" - }, - "payable": false, - "returnParameters": { - "id": 1880, - "nodeType": "ParameterList", - "parameters": [], - "src": "2057:0:7" - }, - "scope": 1961, - "src": "1974:202:7", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1920, - "nodeType": "Block", - "src": "2418:88:7", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1909, - "name": "isWhitelisted", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1779, - "src": "2436:13:7", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 1911, - "indexExpression": { - "argumentTypes": null, - "id": 1910, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1903, - "src": "2450:7:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2436:22:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1908, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "2428:7:7", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1912, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2428:31:7", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1913, - "nodeType": "ExpressionStatement", - "src": "2428:31:7" - }, - { - "expression": { - "argumentTypes": null, - "id": 1918, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1914, - "name": "isWhitelisted", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1779, - "src": "2469:13:7", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 1916, - "indexExpression": { - "argumentTypes": null, - "id": 1915, - "name": "account", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1903, - "src": "2483:7:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "2469:22:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "66616c7365", - "id": 1917, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2494:5:7", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "src": "2469:30:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1919, - "nodeType": "ExpressionStatement", - "src": "2469:30:7" - } - ] - }, - "id": 1921, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": [], - "id": 1906, - "modifierName": { - "argumentTypes": null, - "id": 1905, - "name": "onlyGnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1792, - "src": "2399:14:7", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "2399:14:7" - } - ], - "name": "removeFromWhitelist", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1904, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1903, - "name": "account", - "nodeType": "VariableDeclaration", - "scope": 1921, - "src": "2359:15:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1902, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2359:7:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "2358:17:7" - }, - "payable": false, - "returnParameters": { - "id": 1907, - "nodeType": "ParameterList", - "parameters": [], - "src": "2418:0:7" - }, - "scope": 1961, - "src": "2330:176:7", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1959, - "nodeType": "Block", - "src": "3029:276:7", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1939, - "name": "sender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1923, - "src": "3155:6:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "expression": { - "argumentTypes": null, - "id": 1937, - "name": "gnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1775, - "src": "3136:10:7", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$963", - "typeString": "contract GnosisSafe" - } - }, - "id": 1938, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "isOwner", - "nodeType": "MemberAccess", - "referencedDeclaration": 47, - "src": "3136:18:7", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", - "typeString": "function (address) view external returns (bool)" - } - }, - "id": 1940, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3136:26:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1936, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "3128:7:7", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1941, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3128:35:7", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1942, - "nodeType": "ExpressionStatement", - "src": "3128:35:7" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - }, - "id": 1948, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1944, - "name": "operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1931, - "src": "3181:9:7", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1945, - "name": "GnosisSafe", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 963, - "src": "3194:10:7", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_GnosisSafe_$963_$", - "typeString": "type(contract GnosisSafe)" - } - }, - "id": 1946, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "Operation", - "nodeType": "MemberAccess", - "referencedDeclaration": 61, - "src": "3194:20:7", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_Operation_$61_$", - "typeString": "type(enum GnosisSafe.Operation)" - } - }, - "id": 1947, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "Call", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "3194:25:7", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "src": "3181:38:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1943, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2092, - "src": "3173:7:7", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1949, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3173:47:7", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1950, - "nodeType": "ExpressionStatement", - "src": "3173:47:7" - }, - { - "condition": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1951, - "name": "isWhitelisted", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1779, - "src": "3234:13:7", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 1953, - "indexExpression": { - "argumentTypes": null, - "id": 1952, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1925, - "src": "3248:2:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3234:17:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 1956, - "nodeType": "IfStatement", - "src": "3230:46:7", - "trueBody": { - "expression": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 1954, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3272:4:7", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "functionReturnParameters": 1935, - "id": 1955, - "nodeType": "Return", - "src": "3265:11:7" - } - }, - { - "expression": { - "argumentTypes": null, - "hexValue": "66616c7365", - "id": 1957, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3293:5:7", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "functionReturnParameters": 1935, - "id": 1958, - "nodeType": "Return", - "src": "3286:12:7" - } - ] - }, - "id": 1960, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "isExecutable", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1932, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1923, - "name": "sender", - "nodeType": "VariableDeclaration", - "scope": 1960, - "src": "2900:14:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1922, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2900:7:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1925, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 1960, - "src": "2916:10:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1924, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2916:7:7", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1927, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 1960, - "src": "2928:13:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1926, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2928:7:7", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1929, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 1960, - "src": "2943:10:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - "typeName": { - "id": 1928, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "2943:5:7", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes storage pointer" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1931, - "name": "operation", - "nodeType": "VariableDeclaration", - "scope": 1960, - "src": "2955:30:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - }, - "typeName": { - "contractScope": null, - "id": 1930, - "name": "GnosisSafe.Operation", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 61, - "src": "2955:20:7", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$61", - "typeString": "enum GnosisSafe.Operation" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "2899:87:7" - }, - "payable": false, - "returnParameters": { - "id": 1935, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1934, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 1960, - "src": "3019:4:7", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 1933, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "3019:4:7", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "3018:6:7" - }, - "scope": 1961, - "src": "2878:427:7", - "stateMutability": "nonpayable", - "superFunction": 17, - "visibility": "public" - } - ], - "scope": 1962, - "src": "240:3067:7" - } - ], - "src": "0:3308:7" - }, - "compiler": { - "name": "solc", - "version": "0.4.19+commit.c4cbbb05.Emscripten.clang" - }, - "networks": { - "4": { - "events": {}, - "links": {}, - "address": "0xd46e430c8949ebff0abe12ba43657a706e7312fa", - "transactionHash": "0xb509689ff0e5d576d0d387957af06ac47680f15fb6792c1e699ffbaf056cd1a5" - }, - "42": { - "events": {}, - "links": {}, - "address": "0x9e170c48fc139d12f5f21c62526180fcecc3fba5", - "transactionHash": "0x992f285c128baa71bf36c278113c4286210616d32f21aa920ad11c990fd62069" - }, - "1525342778744": { - "events": {}, - "links": {}, - "address": "0xb5d9423b5e38ccdc3d578f1f0347e7fba3641474", - "transactionHash": "0x66e2aea779f2c020e2c01741d018f5d7ea897659a32f2c7eb58add9b29ca981b" - }, - "1525789101965": { - "events": {}, - "links": {}, - "address": "0x1e23400dccfd4764b3ae1c5b8cd91a4450c4a3a9", - "transactionHash": "0x367fe2685adc2fffdbdeaa57294f376e0249544c3169f1d80387d9cadcf81a97" - } - }, - "schemaVersion": "2.0.0", - "updatedAt": "2018-05-08T14:18:44.036Z" -} \ No newline at end of file From 26c4d8ffda0fa7b6c4616d546119c7d69f8b9832 Mon Sep 17 00:00:00 2001 From: apanizo Date: Tue, 22 May 2018 10:22:57 +0200 Subject: [PATCH 079/138] WA-238 added grantedSelector and its test for displaying safe if user is owner --- src/routes/safe/container/index.jsx | 12 ++-- src/routes/safe/container/selector.js | 32 +++++++++- src/routes/safe/store/selectors/index.js | 2 +- .../safe/store/test/granted.selector.js | 61 +++++++++++++++++++ src/routes/safe/store/test/safe.spec.js | 4 ++ 5 files changed, 103 insertions(+), 8 deletions(-) create mode 100644 src/routes/safe/store/test/granted.selector.js diff --git a/src/routes/safe/container/index.jsx b/src/routes/safe/container/index.jsx index 62edd4383a..7aebf94c8b 100644 --- a/src/routes/safe/container/index.jsx +++ b/src/routes/safe/container/index.jsx @@ -6,7 +6,9 @@ import Layout from '~/routes/safe/component/Layout' import selector, { type SelectorProps } from './selector' import actions, { type Actions } from './actions' -type Props = Actions & SelectorProps +type Props = Actions & SelectorProps & { + granted: boolean, +} class SafeView extends React.PureComponent { componentDidMount() { @@ -31,15 +33,17 @@ class SafeView extends React.PureComponent { intervalId: IntervalID render() { - const { safe, provider, balance } = this.props + const { + safe, provider, balance, granted, + } = this.props return ( - + /> } ) } diff --git a/src/routes/safe/container/selector.js b/src/routes/safe/container/selector.js index 3ac175f520..6330056685 100644 --- a/src/routes/safe/container/selector.js +++ b/src/routes/safe/container/selector.js @@ -1,7 +1,11 @@ // @flow -import { createStructuredSelector } from 'reselect' -import { balanceSelector, safeSelector, type SafeSelectorProps } from '~/routes/safe/store/selectors' -import { providerNameSelector } from '~/wallets/store/selectors/index' +import { List } from 'immutable' +import { createSelector, createStructuredSelector, type Selector } from 'reselect' +import { balanceSelector, safeSelector, type RouterProps, type SafeSelectorProps } from '~/routes/safe/store/selectors' +import { providerNameSelector, userAccountSelector } from '~/wallets/store/selectors/index' +import { type Safe } from '~/routes/safe/store/model/safe' +import { type Owner } from '~/routes/safe/store/model/owner' +import { type GlobalState } from '~/store/index' export type SelectorProps = { safe: SafeSelectorProps, @@ -9,8 +13,30 @@ export type SelectorProps = { balance: string, } +export const grantedSelector: Selector = createSelector( + userAccountSelector, + safeSelector, + (userAccount: string, safe: Safe | typeof undefined): boolean => { + if (!safe) { + return false + } + + if (!userAccount) { + return false + } + + const owners: List = safe.get('owners') + if (!owners) { + return false + } + + return owners.find((owner: Owner) => owner.get('address') === userAccount) !== undefined + }, +) + export default createStructuredSelector({ safe: safeSelector, provider: providerNameSelector, balance: balanceSelector, + granted: grantedSelector, }) diff --git a/src/routes/safe/store/selectors/index.js b/src/routes/safe/store/selectors/index.js index 1bcd96f22a..e6bf40ebea 100644 --- a/src/routes/safe/store/selectors/index.js +++ b/src/routes/safe/store/selectors/index.js @@ -8,7 +8,7 @@ import { type Safe } from '~/routes/safe/store/model/safe' import { safesMapSelector } from '~/routes/safeList/store/selectors' import { BALANCE_REDUCER_ID } from '~/routes/safe/store/reducer/balances' -type RouterProps = { +export type RouterProps = { match: Match, } diff --git a/src/routes/safe/store/test/granted.selector.js b/src/routes/safe/store/test/granted.selector.js new file mode 100644 index 0000000000..0f91cd8d1a --- /dev/null +++ b/src/routes/safe/store/test/granted.selector.js @@ -0,0 +1,61 @@ +// @flow +import { Map } from 'immutable' +import { type Match } from 'react-router-dom' +import { SAFE_REDUCER_ID } from '~/routes/safe/store/reducer/safe' +import { type Safe } from '~/routes/safe/store/model/safe' +import { SafeFactory } from '~/routes/safe/store/test/builder/safe.builder' +import { buildMathPropsFrom } from '~/test/buildReactRouterProps' +import { getProviderInfo } from '~/wallets/getWeb3' +import { grantedSelector } from '~/routes/safe/container/selector' +import { makeProvider } from '~/wallets/store/model/provider' + +const grantedSelectorTests = () => { + let provider + beforeEach(async () => { + provider = await getProviderInfo() + }) + + describe('Safe Selector[grantedSelector]', () => { + it('should be granted to operate when a safe when the user is owner', () => { + // GIVEN + let map: Map = Map() + map = map.set('fooAddress', SafeFactory.oneOwnerSafe(provider.account)) + + const match: Match = buildMathPropsFrom('fooAddress') + + const reduxStore = { + [SAFE_REDUCER_ID]: map, + providers: makeProvider(provider), + balances: undefined, + } + + // WHEN + const granted = grantedSelector(reduxStore, { match }) + + // THEN + expect(granted).toBe(true) + }) + + it('should NOT be granted to operate with a Safe when the user is NOT owner', () => { + // GIVEN + let map: Map = Map() + map = map.set('fooAddress', SafeFactory.oneOwnerSafe('inventedOwner')) + + const match: Match = buildMathPropsFrom('fooAddress') + + const reduxStore = { + [SAFE_REDUCER_ID]: map, + providers: makeProvider(provider), + balances: undefined, + } + + // WHEN + const granted = grantedSelector(reduxStore, { match }) + + // THEN + expect(granted).toBe(false) + }) + }) +} + +export default grantedSelectorTests diff --git a/src/routes/safe/store/test/safe.spec.js b/src/routes/safe/store/test/safe.spec.js index 57521e6f8e..c8e45daac0 100644 --- a/src/routes/safe/store/test/safe.spec.js +++ b/src/routes/safe/store/test/safe.spec.js @@ -4,6 +4,7 @@ import safeReducerTests from './safe.reducer' import dailyLimitReducerTests from './dailyLimit.reducer' import balanceSelectorTests from './balance.selector' import safeSelectorTests from './safe.selector' +import grantedSelectorTests from './granted.selector' describe('Safe Test suite', () => { // ACTIONS AND REDUCERS @@ -16,4 +17,7 @@ describe('Safe Test suite', () => { // BALANCE SELECTOR balanceSelectorTests() + + // GRANTED SELECTOR + grantedSelectorTests() }) From bb3c5127f6287e645c29d22f69382fbcc373deb2 Mon Sep 17 00:00:00 2001 From: apanizo Date: Tue, 22 May 2018 10:48:38 +0200 Subject: [PATCH 080/138] WA-238 Using NoRights component on safe route layout --- src/routes/safe/component/NoRights/index.jsx | 31 +++++++++++++++++++ .../safe/component/NoRights/index.stories.js | 17 ++++++++++ src/routes/safe/container/index.jsx | 10 +++--- 3 files changed, 53 insertions(+), 5 deletions(-) create mode 100644 src/routes/safe/component/NoRights/index.jsx create mode 100644 src/routes/safe/component/NoRights/index.stories.js diff --git a/src/routes/safe/component/NoRights/index.jsx b/src/routes/safe/component/NoRights/index.jsx new file mode 100644 index 0000000000..291fd4ba7d --- /dev/null +++ b/src/routes/safe/component/NoRights/index.jsx @@ -0,0 +1,31 @@ +// @flow +import * as React from 'react' +import Bold from '~/components/layout/Bold' +import Button from '~/components/layout/Button' +import Link from '~/components/layout/Link' +import Col from '~/components/layout/Col' +import Row from '~/components/layout/Row' +import Paragraph from '~/components/layout/Paragraph/index' +import { SAFELIST_ADDRESS } from '~/routes/routes' + +const NoRights = () => ( + + + + You do not have rights to operate with this safe. Pleave visit the Safe List. + + + + + + +) + +export default NoRights diff --git a/src/routes/safe/component/NoRights/index.stories.js b/src/routes/safe/component/NoRights/index.stories.js new file mode 100644 index 0000000000..469ef4842f --- /dev/null +++ b/src/routes/safe/component/NoRights/index.stories.js @@ -0,0 +1,17 @@ +// @flow +import { storiesOf } from '@storybook/react' +import * as React from 'react' +import styles from '~/components/layout/PageFrame/index.scss' +import Component from './index.jsx' + +const FrameDecorator = story => ( +
+ { story() } +
+) + +storiesOf('Components', module) + .addDecorator(FrameDecorator) + .add('NoRights', () => ( + + )) diff --git a/src/routes/safe/container/index.jsx b/src/routes/safe/container/index.jsx index 7aebf94c8b..ea291ffc2b 100644 --- a/src/routes/safe/container/index.jsx +++ b/src/routes/safe/container/index.jsx @@ -3,6 +3,7 @@ import * as React from 'react' import { connect } from 'react-redux' import Page from '~/components/layout/Page' import Layout from '~/routes/safe/component/Layout' +import NoRights from '~/routes/safe/component/NoRights' import selector, { type SelectorProps } from './selector' import actions, { type Actions } from './actions' @@ -39,11 +40,10 @@ class SafeView extends React.PureComponent { return ( - { granted && } + { granted + ? + : + } ) } From 63cb857b7b29b71875640135b24874b52e4f9267 Mon Sep 17 00:00:00 2001 From: apanizo Date: Tue, 22 May 2018 11:07:38 +0200 Subject: [PATCH 081/138] WA-238 Rename calculateInitialState to safeInitialState --- src/routes/safe/store/reducer/safe.js | 2 +- src/routes/safe/store/test/safe.reducer.js | 6 +++--- src/store/index.js | 6 ++++-- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/routes/safe/store/reducer/safe.js b/src/routes/safe/store/reducer/safe.js index ec6543eff8..d430c49dd1 100644 --- a/src/routes/safe/store/reducer/safe.js +++ b/src/routes/safe/store/reducer/safe.js @@ -25,7 +25,7 @@ const buildSafesFrom = (loadedSafes: Object): State => { }) } -export const calculateInitialState = (): State => { +export const safeInitialState = (): State => { const storedSafes = load(SAFES_KEY) return storedSafes ? buildSafesFrom(storedSafes) : Map() diff --git a/src/routes/safe/store/test/safe.reducer.js b/src/routes/safe/store/test/safe.reducer.js index e27e5cd511..57edaed77e 100644 --- a/src/routes/safe/store/test/safe.reducer.js +++ b/src/routes/safe/store/test/safe.reducer.js @@ -1,7 +1,7 @@ // @flow import { combineReducers, createStore, applyMiddleware, compose } from 'redux' import thunk from 'redux-thunk' -import safeReducer, { calculateInitialState, SAFE_REDUCER_ID } from '~/routes/safe/store/reducer/safe' +import safeReducer, { safeInitialState, SAFE_REDUCER_ID } from '~/routes/safe/store/reducer/safe' import addSafe from '~/routes/safe/store/actions/addSafe' import * as SafeFields from '~/routes/open/components/fields' import { getAccountsFrom, getNamesFrom } from '~/routes/open/utils/safeDataExtractor' @@ -70,11 +70,11 @@ const providerReducerTests = () => { getAccountsFrom(formValues), )) - const anotherStore = aStore({ [SAFE_REDUCER_ID]: calculateInitialState() }) + const anotherStore = aStore({ [SAFE_REDUCER_ID]: safeInitialState() }) const safes = anotherStore.getState()[SAFE_REDUCER_ID] // THEN - expect(calculateInitialState()).toEqual(safes) + expect(safeInitialState()).toEqual(safes) }) }) } diff --git a/src/store/index.js b/src/store/index.js index 882978f123..8eca5d8ca5 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -4,7 +4,7 @@ import { routerMiddleware, routerReducer } from 'react-router-redux' import { combineReducers, createStore, applyMiddleware, compose, type Reducer, type Store } from 'redux' import thunk from 'redux-thunk' import provider, { PROVIDER_REDUCER_ID, type State as ProviderState } from '~/wallets/store/reducer/provider' -import safe, { SAFE_REDUCER_ID, calculateInitialState, type State as SafeState } from '~/routes/safe/store/reducer/safe' +import safe, { SAFE_REDUCER_ID, safeInitialState, type State as SafeState } from '~/routes/safe/store/reducer/safe' import balances, { BALANCE_REDUCER_ID, type State as BalancesState } from '~/routes/safe/store/reducer/balances' export const history = createBrowserHistory() @@ -29,7 +29,9 @@ const reducers: Reducer = combineReducers({ [BALANCE_REDUCER_ID]: balances, }) -const initialState = { [SAFE_REDUCER_ID]: calculateInitialState() } +const initialState = { + [SAFE_REDUCER_ID]: safeInitialState(), +} export const store: Store = createStore(reducers, initialState, finalCreateStore) From 89b1b5ffe0d85089b0bf949240477f8cc96fbf50 Mon Sep 17 00:00:00 2001 From: apanizo Date: Tue, 22 May 2018 11:23:41 +0200 Subject: [PATCH 082/138] WA-238 adding transactions property to redux store --- .../safe/store/actions/addTransactions.js | 6 ++++++ src/routes/safe/store/reducer/transactions.js | 17 +++++++++++++++++ src/routes/safe/store/test/granted.selector.js | 2 ++ src/routes/safe/store/test/safe.selector.js | 2 ++ .../safeList/store/test/safes.selector.js | 5 +++++ src/store/index.js | 4 ++++ 6 files changed, 36 insertions(+) create mode 100644 src/routes/safe/store/actions/addTransactions.js create mode 100644 src/routes/safe/store/reducer/transactions.js diff --git a/src/routes/safe/store/actions/addTransactions.js b/src/routes/safe/store/actions/addTransactions.js new file mode 100644 index 0000000000..e8a2afee25 --- /dev/null +++ b/src/routes/safe/store/actions/addTransactions.js @@ -0,0 +1,6 @@ +// @flow +import { createAction } from 'redux-actions' + +export const ADD_TRANSACTIONS = 'ADD_TRANSACTIONS' + +export default createAction(ADD_TRANSACTIONS) diff --git a/src/routes/safe/store/reducer/transactions.js b/src/routes/safe/store/reducer/transactions.js new file mode 100644 index 0000000000..81961a954e --- /dev/null +++ b/src/routes/safe/store/reducer/transactions.js @@ -0,0 +1,17 @@ +// @flow +import { List, Map } from 'immutable' +import { handleActions, type ActionType } from 'redux-actions' +import addTransactions, { ADD_TRANSACTIONS } from '~/routes/safe/store/actions/addTransactions' +import { type Transaction } from '~/routes/safe/store/model/transaction' +import { loadSafeTransactions } from '~/routes/safe/component/Transactions/transactions' + +export const TRANSACTIONS_REDUCER_ID = 'transactions' + +export type State = Map> + +export const transactionsInitialState = () => loadSafeTransactions() + +export default handleActions({ + [ADD_TRANSACTIONS]: (state: State, action: ActionType): State => + action.payload, +}, Map()) diff --git a/src/routes/safe/store/test/granted.selector.js b/src/routes/safe/store/test/granted.selector.js index 0f91cd8d1a..2a984643c6 100644 --- a/src/routes/safe/store/test/granted.selector.js +++ b/src/routes/safe/store/test/granted.selector.js @@ -27,6 +27,7 @@ const grantedSelectorTests = () => { [SAFE_REDUCER_ID]: map, providers: makeProvider(provider), balances: undefined, + transactions: undefined, } // WHEN @@ -47,6 +48,7 @@ const grantedSelectorTests = () => { [SAFE_REDUCER_ID]: map, providers: makeProvider(provider), balances: undefined, + transactions: undefined, } // WHEN diff --git a/src/routes/safe/store/test/safe.selector.js b/src/routes/safe/store/test/safe.selector.js index 1626665b10..0306d6f96e 100644 --- a/src/routes/safe/store/test/safe.selector.js +++ b/src/routes/safe/store/test/safe.selector.js @@ -15,6 +15,7 @@ const safeSelectorTests = () => { [SAFE_REDUCER_ID]: Map(), providers: undefined, balances: undefined, + transactions: undefined, } const match: Match = buildMathPropsFrom('fooAddress') @@ -38,6 +39,7 @@ const safeSelectorTests = () => { [SAFE_REDUCER_ID]: map, providers: undefined, balances: undefined, + transactions: undefined, } // WHEN diff --git a/src/routes/safeList/store/test/safes.selector.js b/src/routes/safeList/store/test/safes.selector.js index f268154cc9..b5946457d0 100644 --- a/src/routes/safeList/store/test/safes.selector.js +++ b/src/routes/safeList/store/test/safes.selector.js @@ -22,6 +22,7 @@ const safesListSelectorTests = () => { [PROVIDER_REDUCER_ID]: walletRecord, [SAFE_REDUCER_ID]: Map(), balances: undefined, + transactions: undefined, } const emptyList = List([]) @@ -42,6 +43,7 @@ const safesListSelectorTests = () => { [PROVIDER_REDUCER_ID]: walletRecord, [SAFE_REDUCER_ID]: map, balances: undefined, + transactions: undefined, } // WHEN @@ -61,6 +63,7 @@ const safesListSelectorTests = () => { [PROVIDER_REDUCER_ID]: walletRecord, [SAFE_REDUCER_ID]: map, balances: undefined, + transactions: undefined, } // WHEN @@ -81,6 +84,7 @@ const safesListSelectorTests = () => { [SAFE_REDUCER_ID]: map, [PROVIDER_REDUCER_ID]: walletRecord, balances: undefined, + transactions: undefined, } // WHEN @@ -102,6 +106,7 @@ const safesListSelectorTests = () => { [SAFE_REDUCER_ID]: map, [PROVIDER_REDUCER_ID]: walletRecord, balances: undefined, + transactions: undefined, } // WHEN diff --git a/src/store/index.js b/src/store/index.js index 8eca5d8ca5..615283418c 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -6,6 +6,7 @@ import thunk from 'redux-thunk' import provider, { PROVIDER_REDUCER_ID, type State as ProviderState } from '~/wallets/store/reducer/provider' import safe, { SAFE_REDUCER_ID, safeInitialState, type State as SafeState } from '~/routes/safe/store/reducer/safe' import balances, { BALANCE_REDUCER_ID, type State as BalancesState } from '~/routes/safe/store/reducer/balances' +import transactions, { type State as TransactionsState, transactionsInitialState, TRANSACTIONS_REDUCER_ID } from '~/routes/safe/store/reducer/transactions' export const history = createBrowserHistory() @@ -20,6 +21,7 @@ export type GlobalState = { providers: ProviderState, safes: SafeState, balances: BalancesState, + transactions: TransactionsState, } const reducers: Reducer = combineReducers({ @@ -27,10 +29,12 @@ const reducers: Reducer = combineReducers({ [PROVIDER_REDUCER_ID]: provider, [SAFE_REDUCER_ID]: safe, [BALANCE_REDUCER_ID]: balances, + [TRANSACTIONS_REDUCER_ID]: transactions, }) const initialState = { [SAFE_REDUCER_ID]: safeInitialState(), + [TRANSACTIONS_REDUCER_ID]: transactionsInitialState(), } export const store: Store = createStore(reducers, initialState, finalCreateStore) From f4ca495ea000527ca65b3084b7ea2b2ac5816267 Mon Sep 17 00:00:00 2001 From: apanizo Date: Tue, 22 May 2018 11:34:56 +0200 Subject: [PATCH 083/138] WA-238 Adding fetchTransactions action --- .../Transactions/test/transactions.test.js | 3 +- .../component/Transactions/transactions.js | 27 ++------------ .../safe/store/actions/fetchTransactions.js | 36 +++++++++++++++++++ src/routes/safe/store/reducer/transactions.js | 2 +- 4 files changed, 42 insertions(+), 26 deletions(-) create mode 100644 src/routes/safe/store/actions/fetchTransactions.js diff --git a/src/routes/safe/component/Transactions/test/transactions.test.js b/src/routes/safe/component/Transactions/test/transactions.test.js index 23e8fea436..029814bdb1 100644 --- a/src/routes/safe/component/Transactions/test/transactions.test.js +++ b/src/routes/safe/component/Transactions/test/transactions.test.js @@ -1,10 +1,11 @@ // @flow import { List, Map } from 'immutable' -import { createTransaction, loadSafeTransactions } from '~/routes/safe/component/Transactions/transactions' +import { createTransaction } from '~/routes/safe/component/Transactions/transactions' import { type Transaction } from '~/routes/safe/store/model/transaction' import { SafeFactory } from '~/routes/safe/store/test/builder/safe.builder' import { type Safe } from '~/routes/safe/store/model/safe' import { type Owner } from '~/routes/safe/store/model/owner' +import { loadSafeTransactions } from '~/routes/safe/store/actions/fetchTransactions' import { testSizeOfSafesWith, testSizeOfTransactions, testTransactionFrom } from './transactionsHelper' describe('Transactions Suite', () => { diff --git a/src/routes/safe/component/Transactions/transactions.js b/src/routes/safe/component/Transactions/transactions.js index 1bf5de411f..d40ee7a614 100644 --- a/src/routes/safe/component/Transactions/transactions.js +++ b/src/routes/safe/component/Transactions/transactions.js @@ -1,8 +1,8 @@ // @flow -import { List, Map } from 'immutable' -import { type Owner, makeOwner } from '~/routes/safe/store/model/owner' +import { List } from 'immutable' +import { type Owner } from '~/routes/safe/store/model/owner' import { load, TX_KEY } from '~/utils/localStorage' -import { type Confirmation, type ConfirmationProps, makeConfirmation } from '~/routes/safe/store/model/confirmation' +import { type Confirmation, makeConfirmation } from '~/routes/safe/store/model/confirmation' import { makeTransaction, type Transaction, type TransactionProps } from '~/routes/safe/store/model/transaction' const buildConfirmationsFrom = (owners: List, creator: string): List => { @@ -52,24 +52,3 @@ export const createTransaction = ( localStorage.setItem(TX_KEY, JSON.stringify(safeTransactions)) } - -export const loadSafeTransactions = () => { - const safes = load(TX_KEY) || {} - - return Map().withMutations((map: Map>) => - Object.keys(safes).map((safe: string) => { - const safeTxs = safes[safe] - const safeTxsRecord = safeTxs.map((tx: TransactionProps) => { - const { confirmations } = tx - const txRecord = makeTransaction({ - ...tx, - confirmations: List(confirmations.map((conf: ConfirmationProps) => - makeConfirmation({ ...conf, owner: makeOwner(conf.owner) }))), - }) - - return txRecord - }) - - return map.set(safe, List(safeTxsRecord)) - })) -} diff --git a/src/routes/safe/store/actions/fetchTransactions.js b/src/routes/safe/store/actions/fetchTransactions.js new file mode 100644 index 0000000000..11f33e136b --- /dev/null +++ b/src/routes/safe/store/actions/fetchTransactions.js @@ -0,0 +1,36 @@ +// @flow +import { List, Map } from 'immutable' +import type { Dispatch as ReduxDispatch } from 'redux' +import { type GlobalState } from '~/store/index' +import { makeOwner } from '~/routes/safe/store/model/owner' +import { makeTransaction, type Transaction, type TransactionProps } from '~/routes/safe/store/model/transaction' +import { load, TX_KEY } from '~/utils/localStorage' +import { type Confirmation, type ConfirmationProps, makeConfirmation } from '~/routes/safe/store/model/confirmation' +import addTransactions from './addTransactions' + +export const loadSafeTransactions = () => { + const safes = load(TX_KEY) || {} + + return Map().withMutations((map: Map>) => + Object.keys(safes).map((safe: string) => { + const safeTxs = safes[safe] + const safeTxsRecord = safeTxs.map((tx: TransactionProps) => { + const { confirmations } = tx + const txRecord = makeTransaction({ + ...tx, + confirmations: List(confirmations.map((conf: ConfirmationProps) => + makeConfirmation({ ...conf, owner: makeOwner(conf.owner) }))), + }) + + return txRecord + }) + + return map.set(safe, List(safeTxsRecord)) + })) +} + +export default () => async (dispatch: ReduxDispatch) => { + const transactions: Map> = await loadSafeTransactions() + + return dispatch(addTransactions(transactions)) +} diff --git a/src/routes/safe/store/reducer/transactions.js b/src/routes/safe/store/reducer/transactions.js index 81961a954e..905eb764d0 100644 --- a/src/routes/safe/store/reducer/transactions.js +++ b/src/routes/safe/store/reducer/transactions.js @@ -3,7 +3,7 @@ import { List, Map } from 'immutable' import { handleActions, type ActionType } from 'redux-actions' import addTransactions, { ADD_TRANSACTIONS } from '~/routes/safe/store/actions/addTransactions' import { type Transaction } from '~/routes/safe/store/model/transaction' -import { loadSafeTransactions } from '~/routes/safe/component/Transactions/transactions' +import { loadSafeTransactions } from '~/routes/safe/store/actions/fetchTransactions' export const TRANSACTIONS_REDUCER_ID = 'transactions' From bc9b2be6a11be3263a7bdcc389e21b133f1a4355 Mon Sep 17 00:00:00 2001 From: apanizo Date: Wed, 23 May 2018 12:05:50 +0200 Subject: [PATCH 084/138] WA-238 Add TXs row in Safe view --- src/routes/safe/component/Safe/MultisigTx.jsx | 52 +++++++++++++++++++ src/routes/safe/component/Safe/index.jsx | 14 +++++ 2 files changed, 66 insertions(+) create mode 100644 src/routes/safe/component/Safe/MultisigTx.jsx diff --git a/src/routes/safe/component/Safe/MultisigTx.jsx b/src/routes/safe/component/Safe/MultisigTx.jsx new file mode 100644 index 0000000000..a70774db8a --- /dev/null +++ b/src/routes/safe/component/Safe/MultisigTx.jsx @@ -0,0 +1,52 @@ +// @flow +import * as React from 'react' +import { ListItem } from 'material-ui/List' +import Avatar from 'material-ui/Avatar' +import AcoountBalanceWallet from 'material-ui-icons/AccountBalanceWallet' +import Button from '~/components/layout/Button' +import ListItemText from '~/components/List/ListItemText' + +type Props = { + balance: string, + onAddTx: () => void, + onSeeTxs: () => void, +} + +export const ADD_MULTISIG_BUTTON_TEXT = 'Add' +export const SEE_MULTISIG_BUTTON_TEXT = 'TXs' + +const addStyle = { + marginRight: '10px', +} + +const DailyLimitComponent = ({ balance, onAddTx, onSeeTxs }: Props) => { + const text = `Available ${balance} ETH` + const disabled = Number(balance) <= 0 + + return ( + + + + + + + + + ) +} + +export default DailyLimitComponent diff --git a/src/routes/safe/component/Safe/index.jsx b/src/routes/safe/component/Safe/index.jsx index 0bf495bdc7..4a40137390 100644 --- a/src/routes/safe/component/Safe/index.jsx +++ b/src/routes/safe/component/Safe/index.jsx @@ -16,6 +16,7 @@ import Balance from './Balance' import Owners from './Owners' import Confirmations from './Confirmations' import DailyLimit from './DailyLimit' +import MultisigTx from './MultisigTx' const safeIcon = require('./assets/gnosis_safe.svg') @@ -43,6 +44,18 @@ class GnoSafe extends React.PureComponent { this.setState({ component: }) } + onAddTx = () => { + const { safe } = this.props + + this.setState({ component: }) + } + + onSeeTxs = () => { + const { safe } = this.props + + this.setState({ component: }) + } + render() { const { safe, balance } = this.props const { component } = this.state @@ -56,6 +69,7 @@ class GnoSafe extends React.PureComponent {
+ From 0fb1758fc51541cb2a42390b25dfb879892e5928 Mon Sep 17 00:00:00 2001 From: apanizo Date: Wed, 23 May 2018 12:29:40 +0200 Subject: [PATCH 085/138] WA-238 Added test for enabling add tx button when the safe has funds --- src/routes/safe/component/Safe.test.js | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/src/routes/safe/component/Safe.test.js b/src/routes/safe/component/Safe.test.js index db34024835..4dfb8bedf5 100644 --- a/src/routes/safe/component/Safe.test.js +++ b/src/routes/safe/component/Safe.test.js @@ -16,6 +16,7 @@ import { getBalanceInEtherOf } from '~/wallets/getWeb3' import { sleep } from '~/utils/timer' import { getDailyLimitFrom } from '~/routes/safe/component/Withdrawn/withdrawn' import { type DailyLimitProps } from '~/routes/safe/store/model/dailyLimit' +import { ADD_MULTISIG_BUTTON_TEXT } from '~/routes/safe/component/Safe/MultisigTx' describe('React DOM TESTS > Withdrawn funds from safe', () => { let SafeDom @@ -26,8 +27,6 @@ describe('React DOM TESTS > Withdrawn funds from safe', () => { store = aNewStore() // deploy safe updating store address = await aDeployedSafe(store) - // add funds to safe - await addEtherTo(address, '0.1') // navigate to SAFE route history.push(`${SAFELIST_ADDRESS}/${address}`) SafeDom = TestUtils.renderIntoDocument(( @@ -40,6 +39,8 @@ describe('React DOM TESTS > Withdrawn funds from safe', () => { }) it('should withdrawn funds under dailyLimit without needing confirmations', async () => { + // add funds to safe + await addEtherTo(address, '0.1') const Safe = TestUtils.findRenderedComponentWithType(SafeDom, SafeView) // $FlowFixMe @@ -74,6 +75,9 @@ describe('React DOM TESTS > Withdrawn funds from safe', () => { }) it('spentToday dailyLimitModule property is updated correctly', async () => { + // add funds to safe + await addEtherTo(address, '0.1') + // GIVEN in beforeEach // WHEN await executeWithdrawnOn(address, 0.01) @@ -86,4 +90,18 @@ describe('React DOM TESTS > Withdrawn funds from safe', () => { expect(dailyLimit.value).toBe(0.5) expect(dailyLimit.spentToday).toBe(0.02) }) + + it('add multisig txs button disabled when balance is 0', async () => { + const Safe = TestUtils.findRenderedComponentWithType(SafeDom, SafeView) + // $FlowFixMe + const buttons = TestUtils.scryRenderedComponentsWithType(Safe, Button) + const addTxButton = buttons[1] + expect(addTxButton.props.children).toEqual(ADD_MULTISIG_BUTTON_TEXT) + expect(addTxButton.props.disabled).toBe(true) + + await addEtherTo(address, '0.1') + await sleep(1800) + + expect(addTxButton.props.disabled).toBe(false) + }) }) From 3dcb551268af7ac901db0c5057b2a96113490305 Mon Sep 17 00:00:00 2001 From: apanizo Date: Wed, 23 May 2018 16:19:16 +0200 Subject: [PATCH 086/138] WA-238 Multisig transaction form --- src/routes/safe/component/Safe/index.jsx | 5 +- .../MultisigForm/MultisigForm.stories.js | 21 +++++ .../Transactions/MultisigForm/index.jsx | 77 +++++++++++++++++++ .../component/Transactions/ReviewTx/index.jsx | 8 ++ .../safe/component/Transactions/index.jsx | 72 +++++++++++++++++ .../component/Transactions/transactions.js | 4 + 6 files changed, 184 insertions(+), 3 deletions(-) create mode 100644 src/routes/safe/component/Transactions/MultisigForm/MultisigForm.stories.js create mode 100644 src/routes/safe/component/Transactions/MultisigForm/index.jsx create mode 100644 src/routes/safe/component/Transactions/ReviewTx/index.jsx create mode 100644 src/routes/safe/component/Transactions/index.jsx diff --git a/src/routes/safe/component/Safe/index.jsx b/src/routes/safe/component/Safe/index.jsx index 4a40137390..8ea3490f7c 100644 --- a/src/routes/safe/component/Safe/index.jsx +++ b/src/routes/safe/component/Safe/index.jsx @@ -10,6 +10,7 @@ import { type Safe } from '~/routes/safe/store/model/safe' import List from 'material-ui/List' import Withdrawn from '~/routes/safe/component/Withdrawn' +import Transactions from '~/routes/safe/component/Transactions' import Address from './Address' import Balance from './Balance' @@ -45,9 +46,7 @@ class GnoSafe extends React.PureComponent { } onAddTx = () => { - const { safe } = this.props - - this.setState({ component: }) + this.setState({ component: }) } onSeeTxs = () => { diff --git a/src/routes/safe/component/Transactions/MultisigForm/MultisigForm.stories.js b/src/routes/safe/component/Transactions/MultisigForm/MultisigForm.stories.js new file mode 100644 index 0000000000..355830727f --- /dev/null +++ b/src/routes/safe/component/Transactions/MultisigForm/MultisigForm.stories.js @@ -0,0 +1,21 @@ +// @flow +import { storiesOf } from '@storybook/react' +import * as React from 'react' +import Stepper from '~/components/Stepper' +import styles from '~/components/layout/PageFrame/index.scss' +import MultisigForm from './index' + + +const FrameDecorator = story => ( +
+ { story() } +
+) + +storiesOf('Components', module) + .addDecorator(FrameDecorator) + .add('MultisigForm', () => ( + + { MultisigForm } + + )) diff --git a/src/routes/safe/component/Transactions/MultisigForm/index.jsx b/src/routes/safe/component/Transactions/MultisigForm/index.jsx new file mode 100644 index 0000000000..4fd0281634 --- /dev/null +++ b/src/routes/safe/component/Transactions/MultisigForm/index.jsx @@ -0,0 +1,77 @@ +// @flow +import * as React from 'react' +import Field from '~/components/forms/Field' +import TextField from '~/components/forms/TextField' +import { composeValidators, mustBeNumber, required, greaterThan, mustBeEthereumAddress } from '~/components/forms/validator' +import Block from '~/components/layout/Block' +import Heading from '~/components/layout/Heading' +import { TX_NAME_PARAM, TX_DESTINATION_PARAM, TX_VALUE_PARAM } from '~/routes/safe/component/Transactions/transactions' + +export const CONFIRMATIONS_ERROR = 'Number of confirmations can not be higher than the number of owners' + +export const safeFieldsValidation = (values: Object) => { + const errors = {} + + if (Number.parseInt(values.owners, 10) < Number.parseInt(values.confirmations, 10)) { + errors.confirmations = CONFIRMATIONS_ERROR + } + + return errors +} + +type Props = { + balance: number, +} + +export const inLimit = (limit: number, spentToday: number) => (value: string) => { + const amount = Number(value) + const max = limit - spentToday + if (amount <= max) { + return undefined + } + + return `Should not exceed ${max} ETH (amount to reach available balance)` +} + +const WithdrawnForm = ({ balance }: Props) => () => ( + + + Multisig Transaction + + + {`Available balance: ${balance} ETH`} + + + + + + + + + + + +) + +export default WithdrawnForm diff --git a/src/routes/safe/component/Transactions/ReviewTx/index.jsx b/src/routes/safe/component/Transactions/ReviewTx/index.jsx new file mode 100644 index 0000000000..fde267f21e --- /dev/null +++ b/src/routes/safe/component/Transactions/ReviewTx/index.jsx @@ -0,0 +1,8 @@ +// @flow +import * as React from 'react' + +const ReviewTx = () => () => ( +
ReviewTx
+) + +export default ReviewTx diff --git a/src/routes/safe/component/Transactions/index.jsx b/src/routes/safe/component/Transactions/index.jsx new file mode 100644 index 0000000000..555832b5ae --- /dev/null +++ b/src/routes/safe/component/Transactions/index.jsx @@ -0,0 +1,72 @@ +// @flow +import * as React from 'react' +import Stepper from '~/components/Stepper' +import MultisigForm from './MultisigForm' +import ReviewTx from './ReviewTx' + +const getSteps = () => [ + 'Fill Mutlisig Tx form', 'Review Tx', +] + +/* +type Props = SelectorProps & Actions & { + safeAddress: string, + dailyLimit: DailyLimit, +} +*/ + +type Props = { + balance: number, + onReset: () => void, +} + +type State = { + done: boolean, +} + +export const SEE_TXS_BUTTON_TEXT = 'VISIT TXS' + +class Transactions extends React.Component { + state = { + done: false, + } + + onTransaction = async (values: Object) => { + // eslint-disable-next-line + console.log("Executing transaction with params " + JSON.stringify(values)) + } + + onReset = () => { + this.setState({ done: false }) + this.props.onReset() // This is for show the TX list component + } + + render() { + const { done } = this.state + const { balance } = this.props + const steps = getSteps() + const finishedButton = + + return ( + + + + { MultisigForm } + + + { ReviewTx } + + + + ) + } +} + +export default Transactions + diff --git a/src/routes/safe/component/Transactions/transactions.js b/src/routes/safe/component/Transactions/transactions.js index d40ee7a614..d70fc7966d 100644 --- a/src/routes/safe/component/Transactions/transactions.js +++ b/src/routes/safe/component/Transactions/transactions.js @@ -5,6 +5,10 @@ import { load, TX_KEY } from '~/utils/localStorage' import { type Confirmation, makeConfirmation } from '~/routes/safe/store/model/confirmation' import { makeTransaction, type Transaction, type TransactionProps } from '~/routes/safe/store/model/transaction' +export const TX_NAME_PARAM = 'txName' +export const TX_DESTINATION_PARAM = 'txDestination' +export const TX_VALUE_PARAM = 'txValue' + const buildConfirmationsFrom = (owners: List, creator: string): List => { if (!owners) { throw new Error('This safe has no owners') From fdfeceef8b8624da165d66aedd5fae29e6a61dc8 Mon Sep 17 00:00:00 2001 From: apanizo Date: Wed, 23 May 2018 16:29:30 +0200 Subject: [PATCH 087/138] WA-238 Fix Withdrawn and Multisig Forms --- .../MultisigForm/MultisigForm.stories.js | 16 ++++++++++++---- .../WithdrawnForm/WithdrawnForm.stories.js | 18 +++++++++++++----- 2 files changed, 25 insertions(+), 9 deletions(-) diff --git a/src/routes/safe/component/Transactions/MultisigForm/MultisigForm.stories.js b/src/routes/safe/component/Transactions/MultisigForm/MultisigForm.stories.js index 355830727f..6c65ab2683 100644 --- a/src/routes/safe/component/Transactions/MultisigForm/MultisigForm.stories.js +++ b/src/routes/safe/component/Transactions/MultisigForm/MultisigForm.stories.js @@ -7,7 +7,7 @@ import MultisigForm from './index' const FrameDecorator = story => ( -
+
{ story() }
) @@ -15,7 +15,15 @@ const FrameDecorator = story => ( storiesOf('Components', module) .addDecorator(FrameDecorator) .add('MultisigForm', () => ( - - { MultisigForm } - + } + onSubmit={() => {}} + steps={['Multisig TX Form', 'Review TX']} + onReset={() => {}} + > + + { MultisigForm } + + )) diff --git a/src/routes/safe/component/Withdrawn/WithdrawnForm/WithdrawnForm.stories.js b/src/routes/safe/component/Withdrawn/WithdrawnForm/WithdrawnForm.stories.js index 88ae93de64..a914a0a3e6 100644 --- a/src/routes/safe/component/Withdrawn/WithdrawnForm/WithdrawnForm.stories.js +++ b/src/routes/safe/component/Withdrawn/WithdrawnForm/WithdrawnForm.stories.js @@ -7,15 +7,23 @@ import WithdrawnForm from './index' const FrameDecorator = story => ( -
+
{ story() }
) storiesOf('Components', module) .addDecorator(FrameDecorator) - .add('WitdrawnForm', () => ( - - { WithdrawnForm } - + .add('WithdrawnForm', () => ( + } + onSubmit={() => {}} + steps={['Fill Withdrawn Form', 'Review Withdrawn']} + onReset={() => {}} + > + + { WithdrawnForm } + + )) From 67552e211f850badcc79ce0aad4922d23c497441 Mon Sep 17 00:00:00 2001 From: apanizo Date: Wed, 23 May 2018 16:33:35 +0200 Subject: [PATCH 088/138] WA-238 Review TX component --- .../component/Transactions/ReviewTx/index.jsx | 33 +++++++++++++++++-- 1 file changed, 31 insertions(+), 2 deletions(-) diff --git a/src/routes/safe/component/Transactions/ReviewTx/index.jsx b/src/routes/safe/component/Transactions/ReviewTx/index.jsx index fde267f21e..b7bfb11098 100644 --- a/src/routes/safe/component/Transactions/ReviewTx/index.jsx +++ b/src/routes/safe/component/Transactions/ReviewTx/index.jsx @@ -1,8 +1,37 @@ // @flow import * as React from 'react' +import { CircularProgress } from 'material-ui/Progress' +import Block from '~/components/layout/Block' +import Bold from '~/components/layout/Bold' +import Heading from '~/components/layout/Heading' +import Paragraph from '~/components/layout/Paragraph' +import { TX_NAME_PARAM, TX_DESTINATION_PARAM, TX_VALUE_PARAM } from '~/routes/safe/component/Transactions/transactions' -const ReviewTx = () => () => ( -
ReviewTx
+type FormProps = { + values: Object, + submitting: boolean, +} + +const spinnerStyle = { + minHeight: '50px', +} + +const ReviewTx = () => ({ values, submitting }: FormProps) => ( + + Review the Multisig Tx + + Transaction Name: {values[TX_NAME_PARAM]} + + + Destination: {values[TX_DESTINATION_PARAM]} + + + Amount to transfer in ETH: {values[TX_VALUE_PARAM]} + + + { submitting && } + + ) export default ReviewTx From f9407397db37bbcc2948d5ad21d9cfd14de46444 Mon Sep 17 00:00:00 2001 From: apanizo Date: Thu, 24 May 2018 11:31:28 +0200 Subject: [PATCH 089/138] WA-238 refactor inLimit form validator --- src/components/forms/validator.js | 10 ++++++++++ .../component/Transactions/MultisigForm/index.jsx | 14 ++------------ .../component/Withdrawn/WithdrawnForm/index.jsx | 14 ++------------ 3 files changed, 14 insertions(+), 24 deletions(-) diff --git a/src/components/forms/validator.js b/src/components/forms/validator.js index fbc72d67aa..e5a54d22c6 100644 --- a/src/components/forms/validator.js +++ b/src/components/forms/validator.js @@ -47,3 +47,13 @@ export const uniqueAddress = (addresses: string[]) => (value: string) => export const composeValidators = (...validators: Function[]) => (value: Field) => validators.reduce((error, validator) => error || validator(value), undefined) + +export const inLimit = (limit: number, base: number, baseText: string) => (value: string) => { + const amount = Number(value) + const max = limit - base + if (amount <= max) { + return undefined + } + + return `Should not exceed ${max} ETH (amount to reach ${baseText})` +} diff --git a/src/routes/safe/component/Transactions/MultisigForm/index.jsx b/src/routes/safe/component/Transactions/MultisigForm/index.jsx index 4fd0281634..ed6f0371f1 100644 --- a/src/routes/safe/component/Transactions/MultisigForm/index.jsx +++ b/src/routes/safe/component/Transactions/MultisigForm/index.jsx @@ -2,7 +2,7 @@ import * as React from 'react' import Field from '~/components/forms/Field' import TextField from '~/components/forms/TextField' -import { composeValidators, mustBeNumber, required, greaterThan, mustBeEthereumAddress } from '~/components/forms/validator' +import { composeValidators, inLimit, mustBeNumber, required, greaterThan, mustBeEthereumAddress } from '~/components/forms/validator' import Block from '~/components/layout/Block' import Heading from '~/components/layout/Heading' import { TX_NAME_PARAM, TX_DESTINATION_PARAM, TX_VALUE_PARAM } from '~/routes/safe/component/Transactions/transactions' @@ -23,16 +23,6 @@ type Props = { balance: number, } -export const inLimit = (limit: number, spentToday: number) => (value: string) => { - const amount = Number(value) - const max = limit - spentToday - if (amount <= max) { - return undefined - } - - return `Should not exceed ${max} ETH (amount to reach available balance)` -} - const WithdrawnForm = ({ balance }: Props) => () => ( @@ -66,7 +56,7 @@ const WithdrawnForm = ({ balance }: Props) => () => ( name={TX_VALUE_PARAM} component={TextField} type="text" - validate={composeValidators(required, mustBeNumber, greaterThan(0), inLimit(balance, 0))} + validate={composeValidators(required, mustBeNumber, greaterThan(0), inLimit(balance, 0, 'available balance'))} placeholder="Amount in ETH*" text="Amount in ETH" /> diff --git a/src/routes/safe/component/Withdrawn/WithdrawnForm/index.jsx b/src/routes/safe/component/Withdrawn/WithdrawnForm/index.jsx index 86998726e5..df5dbf3992 100644 --- a/src/routes/safe/component/Withdrawn/WithdrawnForm/index.jsx +++ b/src/routes/safe/component/Withdrawn/WithdrawnForm/index.jsx @@ -2,7 +2,7 @@ import * as React from 'react' import Field from '~/components/forms/Field' import TextField from '~/components/forms/TextField' -import { composeValidators, mustBeNumber, required, greaterThan, mustBeEthereumAddress } from '~/components/forms/validator' +import { composeValidators, inLimit, mustBeNumber, required, greaterThan, mustBeEthereumAddress } from '~/components/forms/validator' import Block from '~/components/layout/Block' import Heading from '~/components/layout/Heading' import { DESTINATION_PARAM, VALUE_PARAM } from '~/routes/safe/component/Withdrawn/withdrawn' @@ -24,16 +24,6 @@ type Props = { spentToday: number, } -export const inLimit = (limit: number, spentToday: number) => (value: string) => { - const amount = Number(value) - const max = limit - spentToday - if (amount <= max) { - return undefined - } - - return `Should not exceed ${max} ETH (amount to reach daily limit)` -} - const WithdrawnForm = ({ limit, spentToday }: Props) => () => ( @@ -47,7 +37,7 @@ const WithdrawnForm = ({ limit, spentToday }: Props) => () => ( name={VALUE_PARAM} component={TextField} type="text" - validate={composeValidators(required, mustBeNumber, greaterThan(0), inLimit(limit, spentToday))} + validate={composeValidators(required, mustBeNumber, greaterThan(0), inLimit(limit, spentToday, 'daily limit'))} placeholder="Amount in ETH*" text="Amount in ETH" /> From abb949702c9c4ffae7e7f4295af34bf1c87c12b3 Mon Sep 17 00:00:00 2001 From: apanizo Date: Thu, 24 May 2018 13:23:04 +0200 Subject: [PATCH 090/138] WA-238 Adding create multisig tx logic --- src/routes/safe/component/Safe/index.jsx | 3 +- .../safe/component/Transactions/actions.js | 10 +++++ .../safe/component/Transactions/index.jsx | 37 +++++++++++++------ .../safe/component/Transactions/selector.js | 11 ++++++ .../Transactions/test/transactions.test.js | 22 +++++------ .../component/Transactions/transactions.js | 16 +++++++- 6 files changed, 75 insertions(+), 24 deletions(-) create mode 100644 src/routes/safe/component/Transactions/actions.js create mode 100644 src/routes/safe/component/Transactions/selector.js diff --git a/src/routes/safe/component/Safe/index.jsx b/src/routes/safe/component/Safe/index.jsx index 8ea3490f7c..0943067b01 100644 --- a/src/routes/safe/component/Safe/index.jsx +++ b/src/routes/safe/component/Safe/index.jsx @@ -46,7 +46,8 @@ class GnoSafe extends React.PureComponent { } onAddTx = () => { - this.setState({ component: }) + const { balance, safe } = this.props + this.setState({ component: }) } onSeeTxs = () => { diff --git a/src/routes/safe/component/Transactions/actions.js b/src/routes/safe/component/Transactions/actions.js new file mode 100644 index 0000000000..681ad469b2 --- /dev/null +++ b/src/routes/safe/component/Transactions/actions.js @@ -0,0 +1,10 @@ +// @flow +import fetchTransactions from '~/routes/safe/store/actions/fetchTransactions' + +export type Actions = { + fetchTransactions: typeof fetchTransactions, +} + +export default { + fetchTransactions, +} diff --git a/src/routes/safe/component/Transactions/index.jsx b/src/routes/safe/component/Transactions/index.jsx index 555832b5ae..0f5cdaa49e 100644 --- a/src/routes/safe/component/Transactions/index.jsx +++ b/src/routes/safe/component/Transactions/index.jsx @@ -1,6 +1,12 @@ // @flow import * as React from 'react' +import { connect } from 'react-redux' import Stepper from '~/components/Stepper' +import { sleep } from '~/utils/timer' +import { type Safe } from '~/routes/safe/store/model/safe' +import actions, { type Actions } from './actions' +import selector, { type SelectorProps } from './selector' +import transaction, { createTransaction, TX_NAME_PARAM, TX_DESTINATION_PARAM, TX_VALUE_PARAM } from './transactions' import MultisigForm from './MultisigForm' import ReviewTx from './ReviewTx' @@ -8,14 +14,8 @@ const getSteps = () => [ 'Fill Mutlisig Tx form', 'Review Tx', ] -/* type Props = SelectorProps & Actions & { - safeAddress: string, - dailyLimit: DailyLimit, -} -*/ - -type Props = { + safe: Safe, balance: number, onReset: () => void, } @@ -32,8 +32,24 @@ class Transactions extends React.Component { } onTransaction = async (values: Object) => { - // eslint-disable-next-line - console.log("Executing transaction with params " + JSON.stringify(values)) + try { + const { safe, userAddress } = this.props + const nonce = Date.now() + const destination = values[TX_DESTINATION_PARAM] + const value = values[TX_VALUE_PARAM] + const tx = await transaction(safe.get('address'), destination, value, nonce, userAddress) + await createTransaction( + values[TX_NAME_PARAM], nonce, destination, value, userAddress, + safe.get('owners'), tx, safe.get('address'), safe.get('confirmations'), + ) + await sleep(1500) + this.props.fetchTransactions() + this.setState({ done: true }) + } catch (error) { + this.setState({ done: false }) + // eslint-disable-next-line + console.log('Error while creating multisig tx ' + error) + } } onReset = () => { @@ -68,5 +84,4 @@ class Transactions extends React.Component { } } -export default Transactions - +export default connect(selector, actions)(Transactions) diff --git a/src/routes/safe/component/Transactions/selector.js b/src/routes/safe/component/Transactions/selector.js new file mode 100644 index 0000000000..9e7bfef11a --- /dev/null +++ b/src/routes/safe/component/Transactions/selector.js @@ -0,0 +1,11 @@ +// @flow +import { createStructuredSelector } from 'reselect' +import { userAccountSelector } from '~/wallets/store/selectors/index' + +export type SelectorProps = { + userAddress: userAccountSelector, +} + +export default createStructuredSelector({ + userAddress: userAccountSelector, +}) diff --git a/src/routes/safe/component/Transactions/test/transactions.test.js b/src/routes/safe/component/Transactions/test/transactions.test.js index 029814bdb1..dda2dff830 100644 --- a/src/routes/safe/component/Transactions/test/transactions.test.js +++ b/src/routes/safe/component/Transactions/test/transactions.test.js @@ -31,7 +31,7 @@ describe('Transactions Suite', () => { // GIVEN const txName = 'Buy butteries for project' const nonce: number = 10 - createTransaction(txName, nonce, destination, value, 'foo', owners, '', safe.get('name'), safe.get('address'), safe.get('confirmations')) + createTransaction(txName, nonce, destination, value, 'foo', owners, '', safe.get('address'), safe.get('confirmations')) // WHEN const transactions: Map> = loadSafeTransactions() @@ -51,11 +51,11 @@ describe('Transactions Suite', () => { const firstTxName = 'Buy butteries for project' const firstNonce: number = Date.now() const safeAddress = safe.get('address') - createTransaction(firstTxName, firstNonce, destination, value, 'foo', owners, '', safe.get('name'), safeAddress, safe.get('confirmations')) + createTransaction(firstTxName, firstNonce, destination, value, 'foo', owners, '', safeAddress, safe.get('confirmations')) const secondTxName = 'Buy printers for project' const secondNonce: number = firstNonce + 100 - createTransaction(secondTxName, secondNonce, destination, value, 'foo', owners, '', safe.get('name'), safeAddress, safe.get('confirmations')) + createTransaction(secondTxName, secondNonce, destination, value, 'foo', owners, '', safeAddress, safe.get('confirmations')) // WHEN const transactions: Map> = loadSafeTransactions() @@ -75,7 +75,7 @@ describe('Transactions Suite', () => { const txName = 'Buy batteris for Alplha project' const nonce = 10 const safeAddress = safe.address - createTransaction(txName, nonce, destination, value, 'foo', owners, '', safe.get('name'), safeAddress, safe.get('confirmations')) + createTransaction(txName, nonce, destination, value, 'foo', owners, '', safeAddress, safe.get('confirmations')) const secondSafe = SafeFactory.dailyLimitSafe(10, 2) const txSecondName = 'Buy batteris for Beta project' @@ -83,7 +83,7 @@ describe('Transactions Suite', () => { const secondSafeAddress = secondSafe.address createTransaction( txSecondName, txSecondNonce, destination, value, '0x03db1a8b26d08df23337e9276a36b474510f0023', - secondSafe.get('owners'), '', secondSafe.get('name'), secondSafeAddress, secondSafe.get('confirmations'), + secondSafe.get('owners'), '', secondSafeAddress, secondSafe.get('confirmations'), ) let transactions: Map> = loadSafeTransactions() @@ -102,7 +102,7 @@ describe('Transactions Suite', () => { const txFirstNonce = 11 createTransaction( txFirstName, txFirstNonce, destination, value, 'foo', - safe.get('owners'), '', safe.get('name'), safe.get('address'), safe.get('confirmations'), + safe.get('owners'), '', safe.get('address'), safe.get('confirmations'), ) transactions = loadSafeTransactions() @@ -136,10 +136,10 @@ describe('Transactions Suite', () => { // GIVEN const txName = 'Buy butteries for project' const nonce: number = 10 - createTransaction(txName, nonce, destination, value, 'foo', owners, '', safe.get('name'), safe.get('address'), safe.get('confirmations')) + createTransaction(txName, nonce, destination, value, 'foo', owners, '', safe.get('address'), safe.get('confirmations')) // WHEN - const createTxFnc = () => createTransaction(txName, nonce, destination, value, 'foo', owners, '', safe.get('name'), safe.get('address'), safe.get('confirmations')) + const createTxFnc = () => createTransaction(txName, nonce, destination, value, 'foo', owners, '', safe.get('address'), safe.get('confirmations')) expect(createTxFnc).toThrow(/Transaction with same nonce/) }) @@ -147,7 +147,7 @@ describe('Transactions Suite', () => { // GIVEN const txName = 'Buy butteries for project' const nonce: number = 10 - createTransaction(txName, nonce, destination, value, 'foo', owners, '', safe.get('name'), safe.get('address'), safe.get('confirmations')) + createTransaction(txName, nonce, destination, value, 'foo', owners, '', safe.get('address'), safe.get('confirmations')) // WHEN const transactions: Map> = loadSafeTransactions() @@ -161,7 +161,7 @@ describe('Transactions Suite', () => { const txName = 'Buy butteries for project' const nonce: number = 10 const ownerName = 'invented' - const createTxFnc = () => createTransaction(txName, nonce, destination, value, ownerName, owners, '', safe.get('name'), safe.get('address'), safe.get('confirmations')) + const createTxFnc = () => createTransaction(txName, nonce, destination, value, ownerName, owners, '', safe.get('address'), safe.get('confirmations')) expect(createTxFnc).toThrow(/The creator of the tx is not an owner/) }) @@ -172,7 +172,7 @@ describe('Transactions Suite', () => { const txName = 'Buy butteries for project' const nonce: number = 10 const tx = '' - const createTxFnc = () => createTransaction(txName, nonce, destination, value, ownerName, oneOwnerSafe.get('owners'), tx, oneOwnerSafe.get('name'), oneOwnerSafe.get('address'), oneOwnerSafe.get('confirmations')) + const createTxFnc = () => createTransaction(txName, nonce, destination, value, ownerName, oneOwnerSafe.get('owners'), tx, oneOwnerSafe.get('address'), oneOwnerSafe.get('confirmations')) expect(createTxFnc).toThrow(/The tx should be mined before storing it in safes with one owner/) }) diff --git a/src/routes/safe/component/Transactions/transactions.js b/src/routes/safe/component/Transactions/transactions.js index d70fc7966d..e5ab22efcc 100644 --- a/src/routes/safe/component/Transactions/transactions.js +++ b/src/routes/safe/component/Transactions/transactions.js @@ -4,6 +4,8 @@ import { type Owner } from '~/routes/safe/store/model/owner' import { load, TX_KEY } from '~/utils/localStorage' import { type Confirmation, makeConfirmation } from '~/routes/safe/store/model/confirmation' import { makeTransaction, type Transaction, type TransactionProps } from '~/routes/safe/store/model/transaction' +import { getGnosisSafeContract } from '~/wallets/safeContracts' +import { getWeb3 } from '~/wallets/getWeb3' export const TX_NAME_PARAM = 'txName' export const TX_DESTINATION_PARAM = 'txDestination' @@ -29,7 +31,6 @@ export const createTransaction = ( creator: string, owners: List, tx: string, - safeName: string, safeAddress: string, safeThreshold: number, ) => { @@ -56,3 +57,16 @@ export const createTransaction = ( localStorage.setItem(TX_KEY, JSON.stringify(safeTransactions)) } + +const transactions = async (safeAddress: string, destination: string, value: number, nonce: number, user: string) => { + const web3 = getWeb3() + const GnosisSafe = await getGnosisSafeContract(web3) + const gnosisSafe = GnosisSafe.at(safeAddress) + + const valueInWei = web3.toWei(value, 'ether') + const CALL = 0 + + return gnosisSafe.approveTransactionWithParameters(destination, valueInWei, '0x', CALL, nonce, { from: user, gas: '5000000' }) +} + +export default transactions From f42aa0722f801188461bcdc8f16196f132368d2d Mon Sep 17 00:00:00 2001 From: apanizo Date: Thu, 24 May 2018 13:58:49 +0200 Subject: [PATCH 091/138] WA-238 rename createTransaction to storeTransaction --- .../safe/component/Transactions/index.jsx | 6 ++--- .../Transactions/test/transactions.test.js | 24 +++++++++---------- .../component/Transactions/transactions.js | 2 +- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/src/routes/safe/component/Transactions/index.jsx b/src/routes/safe/component/Transactions/index.jsx index 0f5cdaa49e..2298820940 100644 --- a/src/routes/safe/component/Transactions/index.jsx +++ b/src/routes/safe/component/Transactions/index.jsx @@ -6,7 +6,7 @@ import { sleep } from '~/utils/timer' import { type Safe } from '~/routes/safe/store/model/safe' import actions, { type Actions } from './actions' import selector, { type SelectorProps } from './selector' -import transaction, { createTransaction, TX_NAME_PARAM, TX_DESTINATION_PARAM, TX_VALUE_PARAM } from './transactions' +import transaction, { storeTransaction, TX_NAME_PARAM, TX_DESTINATION_PARAM, TX_VALUE_PARAM } from './transactions' import MultisigForm from './MultisigForm' import ReviewTx from './ReviewTx' @@ -38,9 +38,9 @@ class Transactions extends React.Component { const destination = values[TX_DESTINATION_PARAM] const value = values[TX_VALUE_PARAM] const tx = await transaction(safe.get('address'), destination, value, nonce, userAddress) - await createTransaction( + await storeTransaction( values[TX_NAME_PARAM], nonce, destination, value, userAddress, - safe.get('owners'), tx, safe.get('address'), safe.get('confirmations'), + safe.get('owners'), tx.tx, safe.get('address'), safe.get('confirmations'), ) await sleep(1500) this.props.fetchTransactions() diff --git a/src/routes/safe/component/Transactions/test/transactions.test.js b/src/routes/safe/component/Transactions/test/transactions.test.js index dda2dff830..4d3fdf7f6a 100644 --- a/src/routes/safe/component/Transactions/test/transactions.test.js +++ b/src/routes/safe/component/Transactions/test/transactions.test.js @@ -1,6 +1,6 @@ // @flow import { List, Map } from 'immutable' -import { createTransaction } from '~/routes/safe/component/Transactions/transactions' +import { storeTransaction } from '~/routes/safe/component/Transactions/transactions' import { type Transaction } from '~/routes/safe/store/model/transaction' import { SafeFactory } from '~/routes/safe/store/test/builder/safe.builder' import { type Safe } from '~/routes/safe/store/model/safe' @@ -31,7 +31,7 @@ describe('Transactions Suite', () => { // GIVEN const txName = 'Buy butteries for project' const nonce: number = 10 - createTransaction(txName, nonce, destination, value, 'foo', owners, '', safe.get('address'), safe.get('confirmations')) + storeTransaction(txName, nonce, destination, value, 'foo', owners, '', safe.get('address'), safe.get('confirmations')) // WHEN const transactions: Map> = loadSafeTransactions() @@ -51,11 +51,11 @@ describe('Transactions Suite', () => { const firstTxName = 'Buy butteries for project' const firstNonce: number = Date.now() const safeAddress = safe.get('address') - createTransaction(firstTxName, firstNonce, destination, value, 'foo', owners, '', safeAddress, safe.get('confirmations')) + storeTransaction(firstTxName, firstNonce, destination, value, 'foo', owners, '', safeAddress, safe.get('confirmations')) const secondTxName = 'Buy printers for project' const secondNonce: number = firstNonce + 100 - createTransaction(secondTxName, secondNonce, destination, value, 'foo', owners, '', safeAddress, safe.get('confirmations')) + storeTransaction(secondTxName, secondNonce, destination, value, 'foo', owners, '', safeAddress, safe.get('confirmations')) // WHEN const transactions: Map> = loadSafeTransactions() @@ -75,13 +75,13 @@ describe('Transactions Suite', () => { const txName = 'Buy batteris for Alplha project' const nonce = 10 const safeAddress = safe.address - createTransaction(txName, nonce, destination, value, 'foo', owners, '', safeAddress, safe.get('confirmations')) + storeTransaction(txName, nonce, destination, value, 'foo', owners, '', safeAddress, safe.get('confirmations')) const secondSafe = SafeFactory.dailyLimitSafe(10, 2) const txSecondName = 'Buy batteris for Beta project' const txSecondNonce = 10 const secondSafeAddress = secondSafe.address - createTransaction( + storeTransaction( txSecondName, txSecondNonce, destination, value, '0x03db1a8b26d08df23337e9276a36b474510f0023', secondSafe.get('owners'), '', secondSafeAddress, secondSafe.get('confirmations'), ) @@ -100,7 +100,7 @@ describe('Transactions Suite', () => { // WHEN const txFirstName = 'Buy paper for Alplha project' const txFirstNonce = 11 - createTransaction( + storeTransaction( txFirstName, txFirstNonce, destination, value, 'foo', safe.get('owners'), '', safe.get('address'), safe.get('confirmations'), ) @@ -136,10 +136,10 @@ describe('Transactions Suite', () => { // GIVEN const txName = 'Buy butteries for project' const nonce: number = 10 - createTransaction(txName, nonce, destination, value, 'foo', owners, '', safe.get('address'), safe.get('confirmations')) + storeTransaction(txName, nonce, destination, value, 'foo', owners, '', safe.get('address'), safe.get('confirmations')) // WHEN - const createTxFnc = () => createTransaction(txName, nonce, destination, value, 'foo', owners, '', safe.get('address'), safe.get('confirmations')) + const createTxFnc = () => storeTransaction(txName, nonce, destination, value, 'foo', owners, '', safe.get('address'), safe.get('confirmations')) expect(createTxFnc).toThrow(/Transaction with same nonce/) }) @@ -147,7 +147,7 @@ describe('Transactions Suite', () => { // GIVEN const txName = 'Buy butteries for project' const nonce: number = 10 - createTransaction(txName, nonce, destination, value, 'foo', owners, '', safe.get('address'), safe.get('confirmations')) + storeTransaction(txName, nonce, destination, value, 'foo', owners, '', safe.get('address'), safe.get('confirmations')) // WHEN const transactions: Map> = loadSafeTransactions() @@ -161,7 +161,7 @@ describe('Transactions Suite', () => { const txName = 'Buy butteries for project' const nonce: number = 10 const ownerName = 'invented' - const createTxFnc = () => createTransaction(txName, nonce, destination, value, ownerName, owners, '', safe.get('address'), safe.get('confirmations')) + const createTxFnc = () => storeTransaction(txName, nonce, destination, value, ownerName, owners, '', safe.get('address'), safe.get('confirmations')) expect(createTxFnc).toThrow(/The creator of the tx is not an owner/) }) @@ -172,7 +172,7 @@ describe('Transactions Suite', () => { const txName = 'Buy butteries for project' const nonce: number = 10 const tx = '' - const createTxFnc = () => createTransaction(txName, nonce, destination, value, ownerName, oneOwnerSafe.get('owners'), tx, oneOwnerSafe.get('address'), oneOwnerSafe.get('confirmations')) + const createTxFnc = () => storeTransaction(txName, nonce, destination, value, ownerName, oneOwnerSafe.get('owners'), tx, oneOwnerSafe.get('address'), oneOwnerSafe.get('confirmations')) expect(createTxFnc).toThrow(/The tx should be mined before storing it in safes with one owner/) }) diff --git a/src/routes/safe/component/Transactions/transactions.js b/src/routes/safe/component/Transactions/transactions.js index e5ab22efcc..5db5a7cfd6 100644 --- a/src/routes/safe/component/Transactions/transactions.js +++ b/src/routes/safe/component/Transactions/transactions.js @@ -23,7 +23,7 @@ const buildConfirmationsFrom = (owners: List, creator: string): List makeConfirmation({ owner, status: owner.get('address') === creator })) } -export const createTransaction = ( +export const storeTransaction = ( name: string, nonce: number, destination: string, From ad7157b454841924b8f73db302fbc6eb98e3a236 Mon Sep 17 00:00:00 2001 From: apanizo Date: Thu, 24 May 2018 16:38:20 +0200 Subject: [PATCH 092/138] WA-238 include hash in Confirmation record, added tests for safes with 1 owner they do not need confirmation --- .../Transactions/test/transactions.test.js | 91 ++++++++++++++----- .../Transactions/test/transactionsHelper.js | 4 +- src/routes/safe/store/model/confirmation.js | 2 + 3 files changed, 73 insertions(+), 24 deletions(-) diff --git a/src/routes/safe/component/Transactions/test/transactions.test.js b/src/routes/safe/component/Transactions/test/transactions.test.js index 4d3fdf7f6a..783aa2e83d 100644 --- a/src/routes/safe/component/Transactions/test/transactions.test.js +++ b/src/routes/safe/component/Transactions/test/transactions.test.js @@ -1,11 +1,12 @@ // @flow import { List, Map } from 'immutable' -import { storeTransaction } from '~/routes/safe/component/Transactions/transactions' +import { storeTransaction, buildConfirmationsFrom, EXECUTED_CONFIRMATION_HASH, buildExecutedConfirmationFrom } from '~/routes/safe/component/Transactions/transactions' import { type Transaction } from '~/routes/safe/store/model/transaction' import { SafeFactory } from '~/routes/safe/store/test/builder/safe.builder' import { type Safe } from '~/routes/safe/store/model/safe' import { type Owner } from '~/routes/safe/store/model/owner' import { loadSafeTransactions } from '~/routes/safe/store/actions/fetchTransactions' +import { type Confirmation } from '~/routes/safe/store/model/confirmation' import { testSizeOfSafesWith, testSizeOfTransactions, testTransactionFrom } from './transactionsHelper' describe('Transactions Suite', () => { @@ -31,7 +32,8 @@ describe('Transactions Suite', () => { // GIVEN const txName = 'Buy butteries for project' const nonce: number = 10 - storeTransaction(txName, nonce, destination, value, 'foo', owners, '', safe.get('address'), safe.get('confirmations')) + const confirmations: List = buildConfirmationsFrom(owners, 'foo', 'confirmationHash') + storeTransaction(txName, nonce, destination, value, 'foo', confirmations, '', safe.get('address'), safe.get('confirmations')) // WHEN const transactions: Map> = loadSafeTransactions() @@ -43,7 +45,7 @@ describe('Transactions Suite', () => { if (!safeTransactions) { throw new Error() } testSizeOfTransactions(safeTransactions, 1) - testTransactionFrom(safeTransactions, 0, txName, nonce, value, 2, destination, 'foo', owners.get(0), owners.get(1)) + testTransactionFrom(safeTransactions, 0, txName, nonce, value, 2, destination, 'foo', 'confirmationHash', owners.get(0), owners.get(1)) }) it('adds second confirmation to stored safe with one confirmation', async () => { @@ -51,11 +53,14 @@ describe('Transactions Suite', () => { const firstTxName = 'Buy butteries for project' const firstNonce: number = Date.now() const safeAddress = safe.get('address') - storeTransaction(firstTxName, firstNonce, destination, value, 'foo', owners, '', safeAddress, safe.get('confirmations')) + const creator = 'foo' + const confirmations: List = buildConfirmationsFrom(owners, creator, 'confirmationHash') + storeTransaction(firstTxName, firstNonce, destination, value, creator, confirmations, '', safeAddress, safe.get('confirmations')) const secondTxName = 'Buy printers for project' const secondNonce: number = firstNonce + 100 - storeTransaction(secondTxName, secondNonce, destination, value, 'foo', owners, '', safeAddress, safe.get('confirmations')) + const secondConfirmations: List = buildConfirmationsFrom(owners, creator, 'confirmationHash') + storeTransaction(secondTxName, secondNonce, destination, value, creator, secondConfirmations, '', safeAddress, safe.get('confirmations')) // WHEN const transactions: Map> = loadSafeTransactions() @@ -67,23 +72,27 @@ describe('Transactions Suite', () => { if (!safeTxs) { throw new Error() } testSizeOfTransactions(safeTxs, 2) - testTransactionFrom(safeTxs, 0, firstTxName, firstNonce, value, 2, destination, 'foo', owners.get(0), owners.get(1)) - testTransactionFrom(safeTxs, 1, secondTxName, secondNonce, value, 2, destination, 'foo', owners.get(0), owners.get(1)) + testTransactionFrom(safeTxs, 0, firstTxName, firstNonce, value, 2, destination, 'foo', 'confirmationHash', owners.get(0), owners.get(1)) + testTransactionFrom(safeTxs, 1, secondTxName, secondNonce, value, 2, destination, 'foo', 'confirmationHash', owners.get(0), owners.get(1)) }) it('adds second confirmation to stored safe having two safes with one confirmation each', async () => { const txName = 'Buy batteris for Alplha project' const nonce = 10 const safeAddress = safe.address - storeTransaction(txName, nonce, destination, value, 'foo', owners, '', safeAddress, safe.get('confirmations')) + const creator = 'foo' + const confirmations: List = buildConfirmationsFrom(owners, creator, 'confirmationHash') + storeTransaction(txName, nonce, destination, value, creator, confirmations, '', safeAddress, safe.get('confirmations')) const secondSafe = SafeFactory.dailyLimitSafe(10, 2) const txSecondName = 'Buy batteris for Beta project' const txSecondNonce = 10 const secondSafeAddress = secondSafe.address + const secondCreator = '0x03db1a8b26d08df23337e9276a36b474510f0023' + const secondConfirmations: List = buildConfirmationsFrom(secondSafe.get('owners'), secondCreator, 'confirmationHash') storeTransaction( - txSecondName, txSecondNonce, destination, value, '0x03db1a8b26d08df23337e9276a36b474510f0023', - secondSafe.get('owners'), '', secondSafeAddress, secondSafe.get('confirmations'), + txSecondName, txSecondNonce, destination, value, secondCreator, + secondConfirmations, '', secondSafeAddress, secondSafe.get('confirmations'), ) let transactions: Map> = loadSafeTransactions() @@ -100,9 +109,10 @@ describe('Transactions Suite', () => { // WHEN const txFirstName = 'Buy paper for Alplha project' const txFirstNonce = 11 + const txConfirmations: List = buildConfirmationsFrom(owners, creator, 'secondConfirmationHash') storeTransaction( - txFirstName, txFirstNonce, destination, value, 'foo', - safe.get('owners'), '', safe.get('address'), safe.get('confirmations'), + txFirstName, txFirstNonce, destination, value, creator, + txConfirmations, '', safe.get('address'), safe.get('confirmations'), ) transactions = loadSafeTransactions() @@ -116,19 +126,19 @@ describe('Transactions Suite', () => { testTransactionFrom( transactions.get(safe.address), 0, txName, nonce, value, 2, destination, - 'foo', owners.get(0), owners.get(1), + 'foo', 'confirmationHash', owners.get(0), owners.get(1), ) testTransactionFrom( transactions.get(safe.address), 1, txFirstName, txFirstNonce, value, 2, destination, - 'foo', owners.get(0), owners.get(1), + 'foo', 'secondConfirmationHash', owners.get(0), owners.get(1), ) // Test one transaction of second safe testTransactionFrom( transactions.get(secondSafe.address), 0, txSecondName, txSecondNonce, value, 2, destination, - '0x03db1a8b26d08df23337e9276a36b474510f0023', secondSafe.get('owners').get(0), secondSafe.get('owners').get(1), + '0x03db1a8b26d08df23337e9276a36b474510f0023', 'confirmationHash', secondSafe.get('owners').get(0), secondSafe.get('owners').get(1), ) }) @@ -136,10 +146,12 @@ describe('Transactions Suite', () => { // GIVEN const txName = 'Buy butteries for project' const nonce: number = 10 - storeTransaction(txName, nonce, destination, value, 'foo', owners, '', safe.get('address'), safe.get('confirmations')) + const creator = 'foo' + const confirmations: List = buildConfirmationsFrom(owners, creator, 'confirmationHash') + storeTransaction(txName, nonce, destination, value, creator, confirmations, '', safe.get('address'), safe.get('confirmations')) // WHEN - const createTxFnc = () => storeTransaction(txName, nonce, destination, value, 'foo', owners, '', safe.get('address'), safe.get('confirmations')) + const createTxFnc = () => storeTransaction(txName, nonce, destination, value, creator, confirmations, '', safe.get('address'), safe.get('confirmations')) expect(createTxFnc).toThrow(/Transaction with same nonce/) }) @@ -147,7 +159,9 @@ describe('Transactions Suite', () => { // GIVEN const txName = 'Buy butteries for project' const nonce: number = 10 - storeTransaction(txName, nonce, destination, value, 'foo', owners, '', safe.get('address'), safe.get('confirmations')) + const creator = 'foo' + const confirmations: List = buildConfirmationsFrom(owners, creator, 'confirmationHash') + storeTransaction(txName, nonce, destination, value, creator, confirmations, '', safe.get('address'), safe.get('confirmations')) // WHEN const transactions: Map> = loadSafeTransactions() @@ -158,12 +172,10 @@ describe('Transactions Suite', () => { it('checks the owner who creates the tx is an owner', async () => { // GIVEN - const txName = 'Buy butteries for project' - const nonce: number = 10 const ownerName = 'invented' - const createTxFnc = () => storeTransaction(txName, nonce, destination, value, ownerName, owners, '', safe.get('address'), safe.get('confirmations')) + const buildConfirmationsTxFnc = () => buildConfirmationsFrom(owners, ownerName, 'confirmationHash') - expect(createTxFnc).toThrow(/The creator of the tx is not an owner/) + expect(buildConfirmationsTxFnc).toThrow(/The creator of the tx is not an owner/) }) it('checks if safe has one owner transaction has been executed', async () => { @@ -172,9 +184,42 @@ describe('Transactions Suite', () => { const txName = 'Buy butteries for project' const nonce: number = 10 const tx = '' - const createTxFnc = () => storeTransaction(txName, nonce, destination, value, ownerName, oneOwnerSafe.get('owners'), tx, oneOwnerSafe.get('address'), oneOwnerSafe.get('confirmations')) + const confirmations: List = buildExecutedConfirmationFrom(oneOwnerSafe.get('owners'), ownerName) + const createTxFnc = () => storeTransaction(txName, nonce, destination, value, ownerName, confirmations, tx, oneOwnerSafe.get('address'), oneOwnerSafe.get('confirmations')) expect(createTxFnc).toThrow(/The tx should be mined before storing it in safes with one owner/) }) + + it('checks if safe has one owner transaction the confirmation list is correctly build', async () => { + const ownerName = 'foo' + const oneOwnerSafe = SafeFactory.oneOwnerSafe(ownerName) + const txName = 'Buy butteries for project' + const nonce: number = 10 + const tx = 'validTxHash' + const confirmations: List = buildExecutedConfirmationFrom(oneOwnerSafe.get('owners'), ownerName) + storeTransaction(txName, nonce, destination, value, ownerName, confirmations, tx, oneOwnerSafe.get('address'), oneOwnerSafe.get('confirmations')) + + // WHEN + const safeTransactions: Map> = loadSafeTransactions() + + // THEN + expect(safeTransactions.size).toBe(1) + + const transactions: List | typeof undefined = safeTransactions.get(oneOwnerSafe.address) + if (!transactions) throw new Error() + expect(transactions.count()).toBe(1) + + const batteriesTx: Transaction | typeof undefined = transactions.get(0) + if (!batteriesTx) throw new Error() + expect(batteriesTx.get('name')).toBe(txName) + + const txConfirmations = batteriesTx.confirmations + if (!txConfirmations) throw new Error() + expect(txConfirmations.count()).toBe(1) + + const firstConfirmation: Confirmation | typeof undefined = txConfirmations.get(0) + if (!firstConfirmation) throw new Error() + expect(firstConfirmation.get('hash')).toBe(EXECUTED_CONFIRMATION_HASH) + }) }) diff --git a/src/routes/safe/component/Transactions/test/transactionsHelper.js b/src/routes/safe/component/Transactions/test/transactionsHelper.js index 6faef0f670..9b92df35b0 100644 --- a/src/routes/safe/component/Transactions/test/transactionsHelper.js +++ b/src/routes/safe/component/Transactions/test/transactionsHelper.js @@ -20,7 +20,8 @@ export const testSizeOfTransactions = (safeTxs: List | typeof undef export const testTransactionFrom = ( safeTxs: List | typeof undefined, pos: number, name: string, nonce: number, value: number, threshold: number, destination: string, - creator: string, firstOwner: Owner | typeof undefined, secondOwner: Owner | typeof undefined, + creator: string, txHash: string, + firstOwner: Owner | typeof undefined, secondOwner: Owner | typeof undefined, ) => { if (!safeTxs) { throw new Error() } const tx: Transaction | typeof undefined = safeTxs.get(pos) @@ -39,6 +40,7 @@ export const testTransactionFrom = ( expect(firstConfirmation.get('owner')).not.toBe(undefined) expect(firstConfirmation.get('owner')).toEqual(firstOwner) expect(firstConfirmation.get('status')).toBe(true) + expect(firstConfirmation.get('hash')).toBe(txHash) const secondConfirmation: Confirmation | typeof undefined = confirmations.get(1) if (!secondConfirmation) { throw new Error() } diff --git a/src/routes/safe/store/model/confirmation.js b/src/routes/safe/store/model/confirmation.js index 71fa560206..23fa65914a 100644 --- a/src/routes/safe/store/model/confirmation.js +++ b/src/routes/safe/store/model/confirmation.js @@ -6,11 +6,13 @@ import { makeOwner, type Owner } from '~/routes/safe/store/model/owner' export type ConfirmationProps = { owner: Owner, status: boolean, // false: not confirmed, true: confirmed + hash: string, } export const makeConfirmation: RecordFactory = Record({ owner: makeOwner(), status: false, + hash: '', }) export type Confirmation = RecordOf From 38953cfcb7a1d47890bc84c8ece8bb4f92b9a9c5 Mon Sep 17 00:00:00 2001 From: apanizo Date: Thu, 24 May 2018 17:01:23 +0200 Subject: [PATCH 093/138] WA-238 Adjust createTransaction function to be executed correctly --- .../safe/component/Transactions/index.jsx | 9 +-- .../component/Transactions/transactions.js | 68 ++++++++++++++----- 2 files changed, 54 insertions(+), 23 deletions(-) diff --git a/src/routes/safe/component/Transactions/index.jsx b/src/routes/safe/component/Transactions/index.jsx index 2298820940..d72607d194 100644 --- a/src/routes/safe/component/Transactions/index.jsx +++ b/src/routes/safe/component/Transactions/index.jsx @@ -6,7 +6,7 @@ import { sleep } from '~/utils/timer' import { type Safe } from '~/routes/safe/store/model/safe' import actions, { type Actions } from './actions' import selector, { type SelectorProps } from './selector' -import transaction, { storeTransaction, TX_NAME_PARAM, TX_DESTINATION_PARAM, TX_VALUE_PARAM } from './transactions' +import { createTransaction, TX_NAME_PARAM, TX_DESTINATION_PARAM, TX_VALUE_PARAM } from './transactions' import MultisigForm from './MultisigForm' import ReviewTx from './ReviewTx' @@ -37,11 +37,8 @@ class Transactions extends React.Component { const nonce = Date.now() const destination = values[TX_DESTINATION_PARAM] const value = values[TX_VALUE_PARAM] - const tx = await transaction(safe.get('address'), destination, value, nonce, userAddress) - await storeTransaction( - values[TX_NAME_PARAM], nonce, destination, value, userAddress, - safe.get('owners'), tx.tx, safe.get('address'), safe.get('confirmations'), - ) + const name = values[TX_NAME_PARAM] + await createTransaction(safe, name, destination, value, nonce, userAddress) await sleep(1500) this.props.fetchTransactions() this.setState({ done: true }) diff --git a/src/routes/safe/component/Transactions/transactions.js b/src/routes/safe/component/Transactions/transactions.js index 5db5a7cfd6..bff9ca1d74 100644 --- a/src/routes/safe/component/Transactions/transactions.js +++ b/src/routes/safe/component/Transactions/transactions.js @@ -6,22 +6,34 @@ import { type Confirmation, makeConfirmation } from '~/routes/safe/store/model/c import { makeTransaction, type Transaction, type TransactionProps } from '~/routes/safe/store/model/transaction' import { getGnosisSafeContract } from '~/wallets/safeContracts' import { getWeb3 } from '~/wallets/getWeb3' +import { type Safe } from '~/routes/safe/store/model/safe' export const TX_NAME_PARAM = 'txName' export const TX_DESTINATION_PARAM = 'txDestination' export const TX_VALUE_PARAM = 'txValue' -const buildConfirmationsFrom = (owners: List, creator: string): List => { - if (!owners) { - throw new Error('This safe has no owners') - } +export const EXECUTED_CONFIRMATION_HASH = 'EXECUTED' + +// Exported for testing it, should not use it. Use #transactions fnc. +export const buildConfirmationsFrom = + (owners: List, creator: string, confirmationHash: string): List => { + if (!owners) { + throw new Error('This safe has no owners') + } - if (!owners.find((owner: Owner) => owner.get('address') === creator)) { - throw new Error('The creator of the tx is not an owner') + if (!owners.find((owner: Owner) => owner.get('address') === creator)) { + throw new Error('The creator of the tx is not an owner') + } + + return owners.map((owner: Owner) => makeConfirmation({ + owner, + status: owner.get('address') === creator, + hash: owner.get('address') === creator ? confirmationHash : undefined, + })) } - return owners.map((owner: Owner) => makeConfirmation({ owner, status: owner.get('address') === creator })) -} +export const buildExecutedConfirmationFrom = (owners: List, creator: string): List => + buildConfirmationsFrom(owners, creator, EXECUTED_CONFIRMATION_HASH) export const storeTransaction = ( name: string, @@ -29,14 +41,12 @@ export const storeTransaction = ( destination: string, value: number, creator: string, - owners: List, + confirmations: List, tx: string, safeAddress: string, safeThreshold: number, ) => { - const confirmations: List = buildConfirmationsFrom(owners, creator) - - const notMinedWhenOneOwnerSafe = owners.count() === 1 && !tx + const notMinedWhenOneOwnerSafe = confirmations.count() === 1 && !tx if (notMinedWhenOneOwnerSafe) { throw new Error('The tx should be mined before storing it in safes with one owner') } @@ -58,15 +68,39 @@ export const storeTransaction = ( localStorage.setItem(TX_KEY, JSON.stringify(safeTransactions)) } -const transactions = async (safeAddress: string, destination: string, value: number, nonce: number, user: string) => { +const hasOneOwner = (safe: Safe) => { + const owners = safe.get('owners') + if (!owners) { + throw new Error('Received a Safe without owners when creating a tx') + } + + return owners.count() === 1 +} + +export const createTransaction = async ( + safe: Safe, + txName: string, + txDestination: string, + txValue: number, + nonce: number, + user: string, +) => { const web3 = getWeb3() const GnosisSafe = await getGnosisSafeContract(web3) + const safeAddress = safe.get('address') const gnosisSafe = GnosisSafe.at(safeAddress) - const valueInWei = web3.toWei(value, 'ether') + const valueInWei = web3.toWei(txValue, 'ether') const CALL = 0 - return gnosisSafe.approveTransactionWithParameters(destination, valueInWei, '0x', CALL, nonce, { from: user, gas: '5000000' }) -} + if (hasOneOwner(safe)) { + const txHash = await gnosisSafe.execTransactionIfApproved(txDestination, valueInWei, '0x', CALL, nonce, { from: user, gas: '5000000' }) + const executedConfirmations: List = buildExecutedConfirmationFrom(safe.get('owners'), user) + return storeTransaction(txName, nonce, txDestination, txValue, user, executedConfirmations, txHash, safeAddress, safe.get('confirmations')) + } -export default transactions + const txConfirmationHash = await gnosisSafe.approveTransactionWithParameters(txDestination, valueInWei, '0x', CALL, nonce, { from: user, gas: '5000000' }) + const confirmations: List = buildConfirmationsFrom(safe.get('owners'), user, txConfirmationHash) + + return storeTransaction(txName, nonce, txDestination, txValue, user, confirmations, '', safeAddress, safe.get('confirmations')) +} From cbf29c10e0f2435b1ed6a8ce0975bdddfc5a1dc3 Mon Sep 17 00:00:00 2001 From: apanizo Date: Thu, 24 May 2018 17:27:11 +0200 Subject: [PATCH 094/138] WA-238 Including only the txHash in the redux store of confirmations --- src/routes/safe/component/NoRights/index.jsx | 2 +- src/routes/safe/component/Transactions/transactions.js | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/routes/safe/component/NoRights/index.jsx b/src/routes/safe/component/NoRights/index.jsx index 291fd4ba7d..a036c340e0 100644 --- a/src/routes/safe/component/NoRights/index.jsx +++ b/src/routes/safe/component/NoRights/index.jsx @@ -12,7 +12,7 @@ const NoRights = () => ( - You do not have rights to operate with this safe. Pleave visit the Safe List. + Impossible load Safe, check its address and ownership diff --git a/src/routes/safe/component/Transactions/transactions.js b/src/routes/safe/component/Transactions/transactions.js index bff9ca1d74..468d66b88f 100644 --- a/src/routes/safe/component/Transactions/transactions.js +++ b/src/routes/safe/component/Transactions/transactions.js @@ -96,11 +96,11 @@ export const createTransaction = async ( if (hasOneOwner(safe)) { const txHash = await gnosisSafe.execTransactionIfApproved(txDestination, valueInWei, '0x', CALL, nonce, { from: user, gas: '5000000' }) const executedConfirmations: List = buildExecutedConfirmationFrom(safe.get('owners'), user) - return storeTransaction(txName, nonce, txDestination, txValue, user, executedConfirmations, txHash, safeAddress, safe.get('confirmations')) + return storeTransaction(txName, nonce, txDestination, txValue, user, executedConfirmations, txHash.tx, safeAddress, safe.get('confirmations')) } const txConfirmationHash = await gnosisSafe.approveTransactionWithParameters(txDestination, valueInWei, '0x', CALL, nonce, { from: user, gas: '5000000' }) - const confirmations: List = buildConfirmationsFrom(safe.get('owners'), user, txConfirmationHash) + const confirmations: List = buildConfirmationsFrom(safe.get('owners'), user, txConfirmationHash.tx) return storeTransaction(txName, nonce, txDestination, txValue, user, confirmations, '', safeAddress, safe.get('confirmations')) } From 3268d76dcb9f9828776efd4f5c036928ec217815 Mon Sep 17 00:00:00 2001 From: apanizo Date: Fri, 25 May 2018 10:21:42 +0200 Subject: [PATCH 095/138] WA-238 Rename transactions form component to AddTRansaction --- .../MultisigForm/MultisigForm.stories.js | 0 .../MultisigForm/index.jsx | 2 +- .../ReviewTx/index.jsx | 2 +- .../{Transactions => AddTransaction}/actions.js | 0 .../{Transactions => AddTransaction}/index.jsx | 0 .../{Transactions => AddTransaction}/selector.js | 0 .../test/transactions.builder.js | 0 .../test/transactions.test.js | 2 +- .../test/transactionsHelper.js | 0 .../{Transactions => AddTransaction}/transactions.js | 0 src/routes/safe/component/Safe/index.jsx | 10 ++++++---- 11 files changed, 9 insertions(+), 7 deletions(-) rename src/routes/safe/component/{Transactions => AddTransaction}/MultisigForm/MultisigForm.stories.js (100%) rename src/routes/safe/component/{Transactions => AddTransaction}/MultisigForm/index.jsx (97%) rename src/routes/safe/component/{Transactions => AddTransaction}/ReviewTx/index.jsx (94%) rename src/routes/safe/component/{Transactions => AddTransaction}/actions.js (100%) rename src/routes/safe/component/{Transactions => AddTransaction}/index.jsx (100%) rename src/routes/safe/component/{Transactions => AddTransaction}/selector.js (100%) rename src/routes/safe/component/{Transactions => AddTransaction}/test/transactions.builder.js (100%) rename src/routes/safe/component/{Transactions => AddTransaction}/test/transactions.test.js (99%) rename src/routes/safe/component/{Transactions => AddTransaction}/test/transactionsHelper.js (100%) rename src/routes/safe/component/{Transactions => AddTransaction}/transactions.js (100%) diff --git a/src/routes/safe/component/Transactions/MultisigForm/MultisigForm.stories.js b/src/routes/safe/component/AddTransaction/MultisigForm/MultisigForm.stories.js similarity index 100% rename from src/routes/safe/component/Transactions/MultisigForm/MultisigForm.stories.js rename to src/routes/safe/component/AddTransaction/MultisigForm/MultisigForm.stories.js diff --git a/src/routes/safe/component/Transactions/MultisigForm/index.jsx b/src/routes/safe/component/AddTransaction/MultisigForm/index.jsx similarity index 97% rename from src/routes/safe/component/Transactions/MultisigForm/index.jsx rename to src/routes/safe/component/AddTransaction/MultisigForm/index.jsx index ed6f0371f1..66771bf885 100644 --- a/src/routes/safe/component/Transactions/MultisigForm/index.jsx +++ b/src/routes/safe/component/AddTransaction/MultisigForm/index.jsx @@ -5,7 +5,7 @@ import TextField from '~/components/forms/TextField' import { composeValidators, inLimit, mustBeNumber, required, greaterThan, mustBeEthereumAddress } from '~/components/forms/validator' import Block from '~/components/layout/Block' import Heading from '~/components/layout/Heading' -import { TX_NAME_PARAM, TX_DESTINATION_PARAM, TX_VALUE_PARAM } from '~/routes/safe/component/Transactions/transactions' +import { TX_NAME_PARAM, TX_DESTINATION_PARAM, TX_VALUE_PARAM } from '~/routes/safe/component/AddTransaction/transactions' export const CONFIRMATIONS_ERROR = 'Number of confirmations can not be higher than the number of owners' diff --git a/src/routes/safe/component/Transactions/ReviewTx/index.jsx b/src/routes/safe/component/AddTransaction/ReviewTx/index.jsx similarity index 94% rename from src/routes/safe/component/Transactions/ReviewTx/index.jsx rename to src/routes/safe/component/AddTransaction/ReviewTx/index.jsx index b7bfb11098..e8e004d605 100644 --- a/src/routes/safe/component/Transactions/ReviewTx/index.jsx +++ b/src/routes/safe/component/AddTransaction/ReviewTx/index.jsx @@ -5,7 +5,7 @@ import Block from '~/components/layout/Block' import Bold from '~/components/layout/Bold' import Heading from '~/components/layout/Heading' import Paragraph from '~/components/layout/Paragraph' -import { TX_NAME_PARAM, TX_DESTINATION_PARAM, TX_VALUE_PARAM } from '~/routes/safe/component/Transactions/transactions' +import { TX_NAME_PARAM, TX_DESTINATION_PARAM, TX_VALUE_PARAM } from '~/routes/safe/component/AddTransaction/transactions' type FormProps = { values: Object, diff --git a/src/routes/safe/component/Transactions/actions.js b/src/routes/safe/component/AddTransaction/actions.js similarity index 100% rename from src/routes/safe/component/Transactions/actions.js rename to src/routes/safe/component/AddTransaction/actions.js diff --git a/src/routes/safe/component/Transactions/index.jsx b/src/routes/safe/component/AddTransaction/index.jsx similarity index 100% rename from src/routes/safe/component/Transactions/index.jsx rename to src/routes/safe/component/AddTransaction/index.jsx diff --git a/src/routes/safe/component/Transactions/selector.js b/src/routes/safe/component/AddTransaction/selector.js similarity index 100% rename from src/routes/safe/component/Transactions/selector.js rename to src/routes/safe/component/AddTransaction/selector.js diff --git a/src/routes/safe/component/Transactions/test/transactions.builder.js b/src/routes/safe/component/AddTransaction/test/transactions.builder.js similarity index 100% rename from src/routes/safe/component/Transactions/test/transactions.builder.js rename to src/routes/safe/component/AddTransaction/test/transactions.builder.js diff --git a/src/routes/safe/component/Transactions/test/transactions.test.js b/src/routes/safe/component/AddTransaction/test/transactions.test.js similarity index 99% rename from src/routes/safe/component/Transactions/test/transactions.test.js rename to src/routes/safe/component/AddTransaction/test/transactions.test.js index 783aa2e83d..c3a2894d88 100644 --- a/src/routes/safe/component/Transactions/test/transactions.test.js +++ b/src/routes/safe/component/AddTransaction/test/transactions.test.js @@ -1,6 +1,6 @@ // @flow import { List, Map } from 'immutable' -import { storeTransaction, buildConfirmationsFrom, EXECUTED_CONFIRMATION_HASH, buildExecutedConfirmationFrom } from '~/routes/safe/component/Transactions/transactions' +import { storeTransaction, buildConfirmationsFrom, EXECUTED_CONFIRMATION_HASH, buildExecutedConfirmationFrom } from '~/routes/safe/component/AddTransaction/transactions' import { type Transaction } from '~/routes/safe/store/model/transaction' import { SafeFactory } from '~/routes/safe/store/test/builder/safe.builder' import { type Safe } from '~/routes/safe/store/model/safe' diff --git a/src/routes/safe/component/Transactions/test/transactionsHelper.js b/src/routes/safe/component/AddTransaction/test/transactionsHelper.js similarity index 100% rename from src/routes/safe/component/Transactions/test/transactionsHelper.js rename to src/routes/safe/component/AddTransaction/test/transactionsHelper.js diff --git a/src/routes/safe/component/Transactions/transactions.js b/src/routes/safe/component/AddTransaction/transactions.js similarity index 100% rename from src/routes/safe/component/Transactions/transactions.js rename to src/routes/safe/component/AddTransaction/transactions.js diff --git a/src/routes/safe/component/Safe/index.jsx b/src/routes/safe/component/Safe/index.jsx index 0943067b01..36f2a5c216 100644 --- a/src/routes/safe/component/Safe/index.jsx +++ b/src/routes/safe/component/Safe/index.jsx @@ -10,7 +10,7 @@ import { type Safe } from '~/routes/safe/store/model/safe' import List from 'material-ui/List' import Withdrawn from '~/routes/safe/component/Withdrawn' -import Transactions from '~/routes/safe/component/Transactions' +import AddTransaction from '~/routes/safe/component/AddTransaction' import Address from './Address' import Balance from './Balance' @@ -47,10 +47,12 @@ class GnoSafe extends React.PureComponent { onAddTx = () => { const { balance, safe } = this.props - this.setState({ component: }) + this.setState({ + component: , + }) } - onSeeTxs = () => { + onListTransactions = () => { const { safe } = this.props this.setState({ component: }) @@ -69,7 +71,7 @@ class GnoSafe extends React.PureComponent {
- + From 59bd50d55cab984c1edd234bf2aecb14eb87ea5a Mon Sep 17 00:00:00 2001 From: apanizo Date: Sat, 26 May 2018 09:36:34 +0200 Subject: [PATCH 096/138] WA-238 Deploy safe-contracts --- safe-contracts/build/contracts/CreateAndAddModules.json | 8 +++++++- safe-contracts/build/contracts/DailyLimitModule.json | 8 +++++++- .../build/contracts/DailyLimitModuleWithSignature.json | 8 +++++++- .../build/contracts/GnosisSafePersonalEdition.json | 8 +++++++- safe-contracts/build/contracts/GnosisSafeTeamEdition.json | 8 +++++++- safe-contracts/build/contracts/Migrations.json | 8 +++++++- safe-contracts/build/contracts/MultiSend.json | 8 +++++++- safe-contracts/build/contracts/ProxyFactory.json | 8 +++++++- safe-contracts/build/contracts/SocialRecoveryModule.json | 8 +++++++- safe-contracts/build/contracts/StateChannelModule.json | 8 +++++++- safe-contracts/build/contracts/WhitelistModule.json | 8 +++++++- 11 files changed, 77 insertions(+), 11 deletions(-) diff --git a/safe-contracts/build/contracts/CreateAndAddModules.json b/safe-contracts/build/contracts/CreateAndAddModules.json index c7a8d05668..337a690bb9 100644 --- a/safe-contracts/build/contracts/CreateAndAddModules.json +++ b/safe-contracts/build/contracts/CreateAndAddModules.json @@ -1270,8 +1270,14 @@ "links": {}, "address": "0x8dc367d2426d12c60633d4b8808f48164f5c9fce", "transactionHash": "0x0bb1edef06266204f2710df9365b39aac03e0527a4d9b5b5ca12b7b1fbe888d8" + }, + "1527316019334": { + "events": {}, + "links": {}, + "address": "0x7836f09d609e4e1c6bd42ca90377ee5a30ccba75", + "transactionHash": "0x0bb1edef06266204f2710df9365b39aac03e0527a4d9b5b5ca12b7b1fbe888d8" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-22T07:20:22.992Z" + "updatedAt": "2018-05-26T06:28:28.357Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/DailyLimitModule.json b/safe-contracts/build/contracts/DailyLimitModule.json index 2642d89c58..b94a18c4c7 100644 --- a/safe-contracts/build/contracts/DailyLimitModule.json +++ b/safe-contracts/build/contracts/DailyLimitModule.json @@ -8005,8 +8005,14 @@ "links": {}, "address": "0xdf2e7bbb8f57db7d8b11f9d8a77b0754979111c1", "transactionHash": "0xefeddc1db847371ef66ea36caf0a583b6bb2b9a08fdbeb73ee0f1563131ca3e2" + }, + "1527316019334": { + "events": {}, + "links": {}, + "address": "0x1d916d0b2c243d732ee103132c7d85e8bda13beb", + "transactionHash": "0xefeddc1db847371ef66ea36caf0a583b6bb2b9a08fdbeb73ee0f1563131ca3e2" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-22T07:20:22.997Z" + "updatedAt": "2018-05-26T06:28:28.347Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/DailyLimitModuleWithSignature.json b/safe-contracts/build/contracts/DailyLimitModuleWithSignature.json index 3066be149d..60d71e9923 100644 --- a/safe-contracts/build/contracts/DailyLimitModuleWithSignature.json +++ b/safe-contracts/build/contracts/DailyLimitModuleWithSignature.json @@ -2560,8 +2560,14 @@ "links": {}, "address": "0x924ca341d09a83622d62128543b45530d43afa51", "transactionHash": "0x21a453f823a02858ff598704a36731ed3a5264592902c73a7e68ee53d3fb635d" + }, + "1527316019334": { + "events": {}, + "links": {}, + "address": "0x7bd57821cda477c45be7999e6b08de00886999c9", + "transactionHash": "0x21a453f823a02858ff598704a36731ed3a5264592902c73a7e68ee53d3fb635d" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-22T07:20:22.991Z" + "updatedAt": "2018-05-26T06:28:28.345Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/GnosisSafePersonalEdition.json b/safe-contracts/build/contracts/GnosisSafePersonalEdition.json index d4ed103119..6f71f64c9c 100644 --- a/safe-contracts/build/contracts/GnosisSafePersonalEdition.json +++ b/safe-contracts/build/contracts/GnosisSafePersonalEdition.json @@ -8240,8 +8240,14 @@ "links": {}, "address": "0x38a0e040615367af9cd0626ef96441785f82f5c8", "transactionHash": "0xd404a4c4c3ff550c031b238e6df539cbbd9d5727574d8446d0c40f2abf4638b1" + }, + "1527316019334": { + "events": {}, + "links": {}, + "address": "0x38c3ac4274e76c52a9b9f7f00ecf062750b1b4dc", + "transactionHash": "0xd404a4c4c3ff550c031b238e6df539cbbd9d5727574d8446d0c40f2abf4638b1" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-22T07:20:22.972Z" + "updatedAt": "2018-05-26T06:28:28.339Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/GnosisSafeTeamEdition.json b/safe-contracts/build/contracts/GnosisSafeTeamEdition.json index ab782635f4..738fc446aa 100644 --- a/safe-contracts/build/contracts/GnosisSafeTeamEdition.json +++ b/safe-contracts/build/contracts/GnosisSafeTeamEdition.json @@ -6688,8 +6688,14 @@ "links": {}, "address": "0x592b6c1e500c567c0dd01c2a1dd6b84db9c41ace", "transactionHash": "0x8004ae7f9ec8f459da793c0882711d8488c50b973f4bdddb9df31cade42b2cd3" + }, + "1527316019334": { + "events": {}, + "links": {}, + "address": "0x29978b66e148e3e61ccff27e1f68784ed491fd82", + "transactionHash": "0x8004ae7f9ec8f459da793c0882711d8488c50b973f4bdddb9df31cade42b2cd3" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-22T07:20:22.969Z" + "updatedAt": "2018-05-26T06:28:28.342Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/Migrations.json b/safe-contracts/build/contracts/Migrations.json index 0d472f6174..2f25e4e0a9 100644 --- a/safe-contracts/build/contracts/Migrations.json +++ b/safe-contracts/build/contracts/Migrations.json @@ -1410,8 +1410,14 @@ "links": {}, "address": "0xf06f42d5ffd359b4a14e6fecada46cafdb3276f2", "transactionHash": "0x137111f15934455430bea53bd8a6721561285af6a431f174f090257877635ab6" + }, + "1527316019334": { + "events": {}, + "links": {}, + "address": "0x2a4404906523f58d56823eacf9f27d62348baff5", + "transactionHash": "0x137111f15934455430bea53bd8a6721561285af6a431f174f090257877635ab6" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-22T07:20:22.994Z" + "updatedAt": "2018-05-26T06:28:28.365Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/MultiSend.json b/safe-contracts/build/contracts/MultiSend.json index f0f87b651e..9d356f7786 100644 --- a/safe-contracts/build/contracts/MultiSend.json +++ b/safe-contracts/build/contracts/MultiSend.json @@ -366,8 +366,14 @@ "links": {}, "address": "0xf27293ee4c8876589b0e197d3bebb2402c798e1f", "transactionHash": "0xf4586ae05ae02801de1759128e43658bb0439e622a5ba84ad6bb4b652d641f4f" + }, + "1527316019334": { + "events": {}, + "links": {}, + "address": "0x0f72f565275c8985a41a0ea8346420a61004771d", + "transactionHash": "0xf4586ae05ae02801de1759128e43658bb0439e622a5ba84ad6bb4b652d641f4f" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-22T07:20:22.989Z" + "updatedAt": "2018-05-26T06:28:28.360Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/ProxyFactory.json b/safe-contracts/build/contracts/ProxyFactory.json index acb924b3d0..c909e2ffe5 100644 --- a/safe-contracts/build/contracts/ProxyFactory.json +++ b/safe-contracts/build/contracts/ProxyFactory.json @@ -1017,8 +1017,14 @@ "links": {}, "address": "0x91cee89bad367a2621a047c77d65e903acfa8a9d", "transactionHash": "0x5b47c779cfd719a97f218a56d99b64b2c5b382549f3375822d5afed010cdb9c5" + }, + "1527316019334": { + "events": {}, + "links": {}, + "address": "0x28ca055db09855f4bfefefd2177e33813f21fd8f", + "transactionHash": "0x5b47c779cfd719a97f218a56d99b64b2c5b382549f3375822d5afed010cdb9c5" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-22T07:20:22.967Z" + "updatedAt": "2018-05-26T06:28:28.336Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/SocialRecoveryModule.json b/safe-contracts/build/contracts/SocialRecoveryModule.json index e36e344b24..f16deac049 100644 --- a/safe-contracts/build/contracts/SocialRecoveryModule.json +++ b/safe-contracts/build/contracts/SocialRecoveryModule.json @@ -7054,8 +7054,14 @@ "links": {}, "address": "0xadaea58298d3f8087ac9a8d9c70ed90bb47719c3", "transactionHash": "0x44896356866fb32a30fe5b74e2e5b2ce3383ffef7f3190f5f10a98b5fa4406de" + }, + "1527316019334": { + "events": {}, + "links": {}, + "address": "0x2ee2d6323f9595963caece8280b6e6a81d4f9d49", + "transactionHash": "0x44896356866fb32a30fe5b74e2e5b2ce3383ffef7f3190f5f10a98b5fa4406de" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-22T07:20:22.987Z" + "updatedAt": "2018-05-26T06:28:28.363Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/StateChannelModule.json b/safe-contracts/build/contracts/StateChannelModule.json index 6256c4bbe3..860bda1bf1 100644 --- a/safe-contracts/build/contracts/StateChannelModule.json +++ b/safe-contracts/build/contracts/StateChannelModule.json @@ -5595,8 +5595,14 @@ "links": {}, "address": "0x79933939f70a2707380e371524050ecf6477da74", "transactionHash": "0x7f1b3b4ba4694670b29675af571cb4a96b1c2d78d09d210e27482419aa6fff79" + }, + "1527316019334": { + "events": {}, + "links": {}, + "address": "0x07ef92f7b5ff64dc4d0757790281c23d54871b9a", + "transactionHash": "0x7f1b3b4ba4694670b29675af571cb4a96b1c2d78d09d210e27482419aa6fff79" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-22T07:20:22.977Z" + "updatedAt": "2018-05-26T06:28:28.355Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/WhitelistModule.json b/safe-contracts/build/contracts/WhitelistModule.json index 7bb8999069..9efae338b8 100644 --- a/safe-contracts/build/contracts/WhitelistModule.json +++ b/safe-contracts/build/contracts/WhitelistModule.json @@ -4052,8 +4052,14 @@ "links": {}, "address": "0xba3ef9cf5be6c120fc0a642690f297e3bd239aa3", "transactionHash": "0xe8e4d24799a8b74210c07b7faa44968bece2c73df692920f7af75181654e10f2" + }, + "1527316019334": { + "events": {}, + "links": {}, + "address": "0xa0a2c39cdfb6d7fb2f9b88990703f1b3c44ad5dc", + "transactionHash": "0xe8e4d24799a8b74210c07b7faa44968bece2c73df692920f7af75181654e10f2" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-22T07:20:22.983Z" + "updatedAt": "2018-05-26T06:28:28.359Z" } \ No newline at end of file From 48a58040516231f1eecf02810861e6a35ef69c46 Mon Sep 17 00:00:00 2001 From: apanizo Date: Sat, 26 May 2018 09:36:59 +0200 Subject: [PATCH 097/138] WA-238 Hairline layout component --- src/components/layout/Hairline/index.js | 15 +++++++++++++++ src/components/layout/Hairline/index.stories.js | 14 ++++++++++++++ 2 files changed, 29 insertions(+) create mode 100644 src/components/layout/Hairline/index.js create mode 100644 src/components/layout/Hairline/index.stories.js diff --git a/src/components/layout/Hairline/index.js b/src/components/layout/Hairline/index.js new file mode 100644 index 0000000000..99c4912d35 --- /dev/null +++ b/src/components/layout/Hairline/index.js @@ -0,0 +1,15 @@ +// @flow +import * as React from 'react' + +const hairlineStyle = { + width: '100%', + height: '2px', + backgroundColor: '#d5d4d6', + margin: '20px 0px', +} + +const Hairline = () => ( +
+) + +export default Hairline diff --git a/src/components/layout/Hairline/index.stories.js b/src/components/layout/Hairline/index.stories.js new file mode 100644 index 0000000000..6dfd122d83 --- /dev/null +++ b/src/components/layout/Hairline/index.stories.js @@ -0,0 +1,14 @@ +// @flow +import { storiesOf } from '@storybook/react' +import * as React from 'react' +import { host } from 'storybook-host' +import Component from './index' + +storiesOf('Components', module) + .addDecorator(host({ + title: 'Hairline', + align: 'center', + height: 5, + width: '100%', + })) + .add('Hairline', () => ) From 8abc5144135b40a547c791e09817721547a1afea Mon Sep 17 00:00:00 2001 From: apanizo Date: Sat, 26 May 2018 09:56:17 +0200 Subject: [PATCH 098/138] WA-238 Transaction List component --- .../component/AddTransaction/transactions.js | 4 +- src/routes/safe/component/Safe/index.jsx | 5 +- .../Transactions/Collapsed/Confirmations.jsx | 79 +++++++++++++++++++ .../Transactions/Collapsed/index.jsx | 56 +++++++++++++ .../Transactions/NoTransactions/index.jsx | 32 ++++++++ .../Transactions/Transaction/index.jsx | 67 ++++++++++++++++ .../Transactions/Transaction/selector.js | 11 +++ .../safe/component/Transactions/index.jsx | 40 ++++++++++ .../safe/component/Transactions/selector.js | 13 +++ src/routes/safe/store/selectors/index.js | 51 +++++++++++- 10 files changed, 353 insertions(+), 5 deletions(-) create mode 100644 src/routes/safe/component/Transactions/Collapsed/Confirmations.jsx create mode 100644 src/routes/safe/component/Transactions/Collapsed/index.jsx create mode 100644 src/routes/safe/component/Transactions/NoTransactions/index.jsx create mode 100644 src/routes/safe/component/Transactions/Transaction/index.jsx create mode 100644 src/routes/safe/component/Transactions/Transaction/selector.js create mode 100644 src/routes/safe/component/Transactions/index.jsx create mode 100644 src/routes/safe/component/Transactions/selector.js diff --git a/src/routes/safe/component/AddTransaction/transactions.js b/src/routes/safe/component/AddTransaction/transactions.js index 468d66b88f..e5ee15446e 100644 --- a/src/routes/safe/component/AddTransaction/transactions.js +++ b/src/routes/safe/component/AddTransaction/transactions.js @@ -94,9 +94,9 @@ export const createTransaction = async ( const CALL = 0 if (hasOneOwner(safe)) { - const txHash = await gnosisSafe.execTransactionIfApproved(txDestination, valueInWei, '0x', CALL, nonce, { from: user, gas: '5000000' }) + const txReceipt = await gnosisSafe.execTransactionIfApproved(txDestination, valueInWei, '0x', CALL, nonce, { from: user, gas: '5000000' }) const executedConfirmations: List = buildExecutedConfirmationFrom(safe.get('owners'), user) - return storeTransaction(txName, nonce, txDestination, txValue, user, executedConfirmations, txHash.tx, safeAddress, safe.get('confirmations')) + return storeTransaction(txName, nonce, txDestination, txValue, user, executedConfirmations, txReceipt.tx, safeAddress, safe.get('confirmations')) } const txConfirmationHash = await gnosisSafe.approveTransactionWithParameters(txDestination, valueInWei, '0x', CALL, nonce, { from: user, gas: '5000000' }) diff --git a/src/routes/safe/component/Safe/index.jsx b/src/routes/safe/component/Safe/index.jsx index 36f2a5c216..6852dc1bbf 100644 --- a/src/routes/safe/component/Safe/index.jsx +++ b/src/routes/safe/component/Safe/index.jsx @@ -10,6 +10,7 @@ import { type Safe } from '~/routes/safe/store/model/safe' import List from 'material-ui/List' import Withdrawn from '~/routes/safe/component/Withdrawn' +import Transactions from '~/routes/safe/component/Transactions' import AddTransaction from '~/routes/safe/component/AddTransaction' import Address from './Address' @@ -55,7 +56,7 @@ class GnoSafe extends React.PureComponent { onListTransactions = () => { const { safe } = this.props - this.setState({ component: }) + this.setState({ component: }) } render() { @@ -81,7 +82,7 @@ class GnoSafe extends React.PureComponent { - + { component || Safe Icon } diff --git a/src/routes/safe/component/Transactions/Collapsed/Confirmations.jsx b/src/routes/safe/component/Transactions/Collapsed/Confirmations.jsx new file mode 100644 index 0000000000..8822cffb98 --- /dev/null +++ b/src/routes/safe/component/Transactions/Collapsed/Confirmations.jsx @@ -0,0 +1,79 @@ +// @flow +import * as React from 'react' +import openHoc, { type Open } from '~/components/hoc/OpenHoc' +import { withStyles } from 'material-ui/styles' +import Collapse from 'material-ui/transitions/Collapse' +import ListItemText from '~/components/List/ListItemText' +import List, { ListItem, ListItemIcon } from 'material-ui/List' +import Avatar from 'material-ui/Avatar' +import Group from 'material-ui-icons/Group' +import Person from 'material-ui-icons/Person' +import ExpandLess from 'material-ui-icons/ExpandLess' +import ExpandMore from 'material-ui-icons/ExpandMore' +import { type WithStyles } from '~/theme/mui' +import { type Confirmation, type ConfirmationProps } from '~/routes/safe/store/model/confirmation' + +const styles = { + nested: { + paddingLeft: '40px', + }, +} + +type Props = Open & WithStyles & { + confirmations: List, +} + +const GnoConfirmation = ({ owner, status, hash }: ConfirmationProps) => { + const address = owner.get('address') + const text = status ? 'Confirmed' : 'Not confirmed' + const hashText = status ? `Confirmation hash: ${hash}` : undefined + + return ( + + + + + + + + + ) +} + +const Confirmaitons = openHoc(({ + open, toggle, confirmations, +}: Props) => { + const threshold = confirmations.count() + + return ( + + + + + + + + {open ? : } + + + + + {confirmations.map(confirmation => ( + + ))} + + + + ) +}) + +export default withStyles(styles)(Confirmaitons) diff --git a/src/routes/safe/component/Transactions/Collapsed/index.jsx b/src/routes/safe/component/Transactions/Collapsed/index.jsx new file mode 100644 index 0000000000..64f3cf9220 --- /dev/null +++ b/src/routes/safe/component/Transactions/Collapsed/index.jsx @@ -0,0 +1,56 @@ +// @flow +import * as React from 'react' +import { List as ImmutableList } from 'immutable' +import Row from '~/components/layout/Row' +import Col from '~/components/layout/Col' +import List, { ListItem, ListItemText } from 'material-ui/List' +import Avatar from 'material-ui/Avatar' +import Group from 'material-ui-icons/Group' +import MailOutline from 'material-ui-icons/MailOutline' +import { type Confirmation } from '~/routes/safe/store/model/confirmation' +import Confirmations from './Confirmations' + +type Props = { + safeName: string, + confirmations: ImmutableList, + destination: string, + tx: string, +} + +const listStyle = { + width: '100%', +} + +class Collapsed extends React.PureComponent { + render() { + const { + confirmations, destination, safeName, tx, + } = this.props + + return ( + + + + + + + + + + + + + { tx && + + + + + } + + + + ) + } +} + +export default Collapsed diff --git a/src/routes/safe/component/Transactions/NoTransactions/index.jsx b/src/routes/safe/component/Transactions/NoTransactions/index.jsx new file mode 100644 index 0000000000..28e8e68a41 --- /dev/null +++ b/src/routes/safe/component/Transactions/NoTransactions/index.jsx @@ -0,0 +1,32 @@ +// @flow +import * as React from 'react' +import Bold from '~/components/layout/Bold' +import Button from '~/components/layout/Button' +import Col from '~/components/layout/Col' +import Row from '~/components/layout/Row' +import Paragraph from '~/components/layout/Paragraph/index' + +type Props = { + onAddTx: () => void +} + +const NoRights = ({ onAddTx }: Props) => ( + + + + No transactions found for this safe + + + + + + +) + +export default NoRights diff --git a/src/routes/safe/component/Transactions/Transaction/index.jsx b/src/routes/safe/component/Transactions/Transaction/index.jsx new file mode 100644 index 0000000000..f36012e8ca --- /dev/null +++ b/src/routes/safe/component/Transactions/Transaction/index.jsx @@ -0,0 +1,67 @@ +// @flow +import * as React from 'react' +import { connect } from 'react-redux' +import openHoc, { type Open } from '~/components/hoc/OpenHoc' +import ExpandLess from 'material-ui-icons/ExpandLess' +import ExpandMore from 'material-ui-icons/ExpandMore' +import ListItemText from '~/components/List/ListItemText' +import Row from '~/components/layout/Row' +import { ListItem, ListItemIcon } from 'material-ui/List' +import Avatar from 'material-ui/Avatar' +import AttachMoney from 'material-ui-icons/AttachMoney' +import Atm from 'material-ui-icons/LocalAtm' +import DoneAll from 'material-ui-icons/DoneAll' +import Collapsed from '~/routes/safe/component/Transactions/Collapsed' +import { type Transaction } from '~/routes/safe/store/model/transaction' +import Hairline from '~/components/layout/Hairline/index' +import selector, { type SelectorProps } from './selector' + +type Props = Open & SelectorProps & { + transaction: Transaction, + safeName: string, +} + +class GnoTransaction extends React.PureComponent { + render() { + const { + open, toggle, transaction, confirmed, safeName, + } = this.props + + const txHash = transaction.get('tx') + const confirmationText = txHash ? 'Already executed' : `${confirmed} of the ${transaction.get('threshold')} confirmations needed` + + return ( + + + + + + + + + + + + + + + + + {open ? : } + + + + { open && + } + + + ) + } +} + +export default connect(selector)(openHoc(GnoTransaction)) diff --git a/src/routes/safe/component/Transactions/Transaction/selector.js b/src/routes/safe/component/Transactions/Transaction/selector.js new file mode 100644 index 0000000000..14b4f3ad68 --- /dev/null +++ b/src/routes/safe/component/Transactions/Transaction/selector.js @@ -0,0 +1,11 @@ +// @flow +import { createStructuredSelector } from 'reselect' +import { confirmationsTransactionSelector } from '~/routes/safe/store/selectors/index' + +export type SelectorProps = { + confirmed: confirmationsTransactionSelector, +} + +export default createStructuredSelector({ + confirmed: confirmationsTransactionSelector, +}) diff --git a/src/routes/safe/component/Transactions/index.jsx b/src/routes/safe/component/Transactions/index.jsx new file mode 100644 index 0000000000..11c595f0c4 --- /dev/null +++ b/src/routes/safe/component/Transactions/index.jsx @@ -0,0 +1,40 @@ +// @flow +import * as React from 'react' +import { connect } from 'react-redux' +import { type Transaction } from '~/routes/safe/store/model/transaction' +import NoTransactions from '~/routes/safe/component/Transactions/NoTransactions' +import GnoTransaction from '~/routes/safe/component/Transactions/Transaction' +import selector, { type SelectorProps } from './selector' + +type Props = SelectorProps & { + onAddTx: () => void, + safeName: string, +} + +class Transactions extends React.Component { + onConfirm = () => { + // eslint-disable-next-line + console.log("Confirming tx") + } + + onExecute = () => { + // eslint-disable-next-line + console.log("Confirming tx") + } + + render() { + const { transactions, onAddTx, safeName } = this.props + const hasTransactions = transactions.count() > 0 + + return ( + + { hasTransactions + ? transactions.map((tx: Transaction) => ) + : + } + + ) + } +} + +export default connect(selector)(Transactions) diff --git a/src/routes/safe/component/Transactions/selector.js b/src/routes/safe/component/Transactions/selector.js new file mode 100644 index 0000000000..1941f7c5c1 --- /dev/null +++ b/src/routes/safe/component/Transactions/selector.js @@ -0,0 +1,13 @@ +// @flow +import { List } from 'immutable' +import { createStructuredSelector } from 'reselect' +import { type Transaction } from '~/routes/safe/store/model/transaction' +import { safeTransactionsSelector } from '~/routes/safe/store/selectors/index' + +export type SelectorProps = { + transactions: List, +} + +export default createStructuredSelector({ + transactions: safeTransactionsSelector, +}) diff --git a/src/routes/safe/store/selectors/index.js b/src/routes/safe/store/selectors/index.js index e6bf40ebea..f89a7b8b46 100644 --- a/src/routes/safe/store/selectors/index.js +++ b/src/routes/safe/store/selectors/index.js @@ -1,5 +1,5 @@ // @flow -import { Map } from 'immutable' +import { Map, List } from 'immutable' import { type Match } from 'react-router-dom' import { createSelector, createStructuredSelector, type Selector } from 'reselect' import { type GlobalState } from '~/store/index' @@ -7,15 +7,64 @@ import { SAFE_PARAM_ADDRESS } from '~/routes/routes' import { type Safe } from '~/routes/safe/store/model/safe' import { safesMapSelector } from '~/routes/safeList/store/selectors' import { BALANCE_REDUCER_ID } from '~/routes/safe/store/reducer/balances' +import { type State as TransactionsState, TRANSACTIONS_REDUCER_ID } from '~/routes/safe/store/reducer/transactions' +import { type Transaction } from '~/routes/safe/store/model/transaction' +import { type Confirmation } from '~/routes/safe/store/model/confirmation' export type RouterProps = { match: Match, } +export type SafeProps = { + safeAddress: string, +} + +type TransactionProps = { + transaction: Transaction, +} + +const safeAddressSelector = (state: GlobalState, props: SafeProps) => props.safeAddress + const safeAddessSelector = (state: GlobalState, props: RouterProps) => props.match.params[SAFE_PARAM_ADDRESS] || '' const balancesSelector = (state: GlobalState) => state[BALANCE_REDUCER_ID] +const transactionsSelector = (state: GlobalState): TransactionsState => state[TRANSACTIONS_REDUCER_ID] + +const oneTransactionSelector = (state: GlobalState, props: TransactionProps) => props.transaction + +export const safeTransactionsSelector: Selector> = createSelector( + transactionsSelector, + safeAddressSelector, + (transactions: TransactionsState, address: string): List => { + if (!transactions) { + return List([]) + } + + if (!address) { + return List([]) + } + + return transactions.get(address) || List([]) + }, +) + +export const confirmationsTransactionSelector = createSelector( + oneTransactionSelector, + (tx: Transaction) => { + if (!tx) { + return 0 + } + + const confirmations: List = tx.get('confirmations') + if (!confirmations) { + return 0 + } + + return confirmations.filter(((confirmation: Confirmation) => confirmation.get('status'))).count() + }, +) + export type SafeSelectorProps = Safe | typeof undefined export const safeSelector: Selector = createSelector( From 44ed495226b92410a2e72612329a0c3274c041c5 Mon Sep 17 00:00:00 2001 From: apanizo Date: Sat, 26 May 2018 12:01:08 +0200 Subject: [PATCH 099/138] WA-238 Adding tests of confirmations and transactions selectors --- src/routes/safe/store/selectors/index.js | 12 +- .../safe/store/test/confirmations.selector.js | 99 ++++++++++++++ src/routes/safe/store/test/safe.spec.js | 8 ++ .../safe/store/test/transactions.selector.js | 129 ++++++++++++++++++ 4 files changed, 242 insertions(+), 6 deletions(-) create mode 100644 src/routes/safe/store/test/confirmations.selector.js create mode 100644 src/routes/safe/store/test/transactions.selector.js diff --git a/src/routes/safe/store/selectors/index.js b/src/routes/safe/store/selectors/index.js index f89a7b8b46..07d58cc155 100644 --- a/src/routes/safe/store/selectors/index.js +++ b/src/routes/safe/store/selectors/index.js @@ -23,9 +23,9 @@ type TransactionProps = { transaction: Transaction, } -const safeAddressSelector = (state: GlobalState, props: SafeProps) => props.safeAddress +const safePropAddressSelector = (state: GlobalState, props: SafeProps) => props.safeAddress -const safeAddessSelector = (state: GlobalState, props: RouterProps) => props.match.params[SAFE_PARAM_ADDRESS] || '' +const safeParamAddressSelector = (state: GlobalState, props: RouterProps) => props.match.params[SAFE_PARAM_ADDRESS] || '' const balancesSelector = (state: GlobalState) => state[BALANCE_REDUCER_ID] @@ -35,7 +35,7 @@ const oneTransactionSelector = (state: GlobalState, props: TransactionProps) => export const safeTransactionsSelector: Selector> = createSelector( transactionsSelector, - safeAddressSelector, + safePropAddressSelector, (transactions: TransactionsState, address: string): List => { if (!transactions) { return List([]) @@ -49,7 +49,7 @@ export const safeTransactionsSelector: Selector = createSelector( oneTransactionSelector, (tx: Transaction) => { if (!tx) { @@ -69,7 +69,7 @@ export type SafeSelectorProps = Safe | typeof undefined export const safeSelector: Selector = createSelector( safesMapSelector, - safeAddessSelector, + safeParamAddressSelector, (safes: Map, address: string) => { if (!address) { return undefined @@ -81,7 +81,7 @@ export const safeSelector: Selector export const balanceSelector: Selector = createSelector( balancesSelector, - safeAddessSelector, + safeParamAddressSelector, (balances: Map, address: string) => { if (!address) { return '0' diff --git a/src/routes/safe/store/test/confirmations.selector.js b/src/routes/safe/store/test/confirmations.selector.js new file mode 100644 index 0000000000..3f1f924df0 --- /dev/null +++ b/src/routes/safe/store/test/confirmations.selector.js @@ -0,0 +1,99 @@ +// @flow +import { List, Map } from 'immutable' +import { makeTransaction, type Transaction } from '~/routes/safe/store/model/transaction' +import { type Confirmation, makeConfirmation } from '~/routes/safe/store/model/confirmation' +import { makeOwner } from '~/routes/safe/store/model/owner' +import { confirmationsTransactionSelector } from '~/routes/safe/store/selectors/index' +import { makeProvider } from '~/wallets/store/model/provider' + +const grantedSelectorTests = () => { + describe('Safe Selector[confirmationsTransactionSelector]', () => { + it('returns 1 confirmation if safe has only one owner when tx is created', () => { + // GIVEN + const firstConfirmation: Confirmation = makeConfirmation({ + owner: makeOwner(), + status: true, + hash: 'asdf', + }) + + const transaction: Transaction = makeTransaction({ + name: 'Buy batteries', + nonce: 1, + value: 2, + confirmations: List([firstConfirmation]), + destination: 'destAddress', + threshold: 2, + tx: '', + }) + + const reduxStore = { + safes: Map(), + providers: makeProvider(), + balances: Map(), + transactions: Map(), + } + + // WHEN + const threshold = confirmationsTransactionSelector(reduxStore, { transaction }) + + // THEN + expect(threshold).toBe(1) + }) + + it('returns 1 confirmation if safe has two or more owners when multisig tx is created', () => { + // GIVEN + const firstConfirmation: Confirmation = makeConfirmation({ + owner: makeOwner(), + status: true, + hash: 'asdf', + }) + + const secondConfirmation: Confirmation = makeConfirmation({ + owner: makeOwner(), + status: false, + hash: '', + }) + + const transaction: Transaction = makeTransaction({ + name: 'Buy batteries', + nonce: 1, + value: 2, + confirmations: List([firstConfirmation, secondConfirmation]), + destination: 'destAddress', + threshold: 2, + tx: '', + }) + + const reduxStore = { + safes: Map(), + providers: makeProvider(), + balances: Map(), + transactions: Map(), + } + + // WHEN + const threshold = confirmationsTransactionSelector(reduxStore, { transaction }) + + // THEN + expect(threshold).toBe(1) + }) + + it('should return 0 confirmations if not transaction is sent as prop to component', () => { + const reduxStore = { + safes: Map(), + providers: makeProvider(), + balances: Map(), + transactions: Map(), + } + + // WHEN + // $FlowFixMe + const threshold = confirmationsTransactionSelector(reduxStore, { transaction: undefined }) + + // THEN + expect(threshold).toBe(0) + }) + }) +} + +export default grantedSelectorTests diff --git a/src/routes/safe/store/test/safe.spec.js b/src/routes/safe/store/test/safe.spec.js index c8e45daac0..3c431b4b83 100644 --- a/src/routes/safe/store/test/safe.spec.js +++ b/src/routes/safe/store/test/safe.spec.js @@ -5,6 +5,8 @@ import dailyLimitReducerTests from './dailyLimit.reducer' import balanceSelectorTests from './balance.selector' import safeSelectorTests from './safe.selector' import grantedSelectorTests from './granted.selector' +import confirmationsSelectorTests from './confirmations.selector' +import transactionsSelectorTests from './transactions.selector' describe('Safe Test suite', () => { // ACTIONS AND REDUCERS @@ -20,4 +22,10 @@ describe('Safe Test suite', () => { // GRANTED SELECTOR grantedSelectorTests() + + // CONFIRMATIONS SELECTOR + confirmationsSelectorTests() + + // TRANSACTIONS SELECTOR + transactionsSelectorTests() }) diff --git a/src/routes/safe/store/test/transactions.selector.js b/src/routes/safe/store/test/transactions.selector.js new file mode 100644 index 0000000000..5897ffd8fd --- /dev/null +++ b/src/routes/safe/store/test/transactions.selector.js @@ -0,0 +1,129 @@ +// @flow +import { List, Map } from 'immutable' +import { SAFE_REDUCER_ID } from '~/routes/safe/store/reducer/safe' +import { safeTransactionsSelector } from '~/routes/safe/store/selectors/index' +import { makeProvider } from '~/wallets/store/model/provider' +import { makeConfirmation, type Confirmation } from '~/routes/safe/store/model/confirmation' +import { makeOwner } from '~/routes/safe/store/model/owner' +import { makeTransaction, type Transaction } from '~/routes/safe/store/model/transaction' + +const grantedSelectorTests = () => { + describe('Safe Selector[safeTransactionsSelector]', () => { + it('should return empty list if no transactions in store', () => { + // GIVEN + const reduxStore = { + [SAFE_REDUCER_ID]: Map(), + providers: makeProvider(), + balances: undefined, + transactions: Map(), + } + + // WHEN + const transactions = safeTransactionsSelector(reduxStore, { safeAddress: 'fooAddress' }) + + // THEN + expect(transactions).toEqual(List([])) + }) + + it('should return empty list if transactions in store but not safe address in props', () => { + // GIVEN + const firstConfirmation: Confirmation = makeConfirmation({ + owner: makeOwner(), + status: true, + hash: 'asdf', + }) + + const transaction: Transaction = makeTransaction({ + name: 'Buy batteries', + nonce: 1, + value: 2, + confirmations: List([firstConfirmation]), + destination: 'destAddress', + threshold: 2, + tx: '', + }) + + const reduxStore = { + [SAFE_REDUCER_ID]: Map(), + providers: makeProvider(), + balances: undefined, + transactions: Map({ fooAddress: List([transaction]) }), + } + + // WHEN + const transactionsEmpty = safeTransactionsSelector(reduxStore, { safeAddress: '' }) + // $FlowFixMe + const transactionsUndefined = safeTransactionsSelector(reduxStore, { safeAddress: undefined }) + + // THEN + expect(transactionsEmpty).toEqual(List([])) + expect(transactionsUndefined).toEqual(List([])) + }) + + it('should return empty list if there are transactions belonging to different address', () => { + // GIVEN + const firstConfirmation: Confirmation = makeConfirmation({ + owner: makeOwner(), + status: true, + hash: 'asdf', + }) + + const transaction: Transaction = makeTransaction({ + name: 'Buy batteries', + nonce: 1, + value: 2, + confirmations: List([firstConfirmation]), + destination: 'destAddress', + threshold: 2, + tx: '', + }) + + const reduxStore = { + [SAFE_REDUCER_ID]: Map(), + providers: makeProvider(), + balances: undefined, + transactions: Map({ fooAddress: List([transaction]) }), + } + + // WHEN + const transactions = safeTransactionsSelector(reduxStore, { safeAddress: 'invented' }) + + // THEN + expect(transactions).toEqual(List([])) + }) + + it('should return transactions of safe', () => { + // GIVEN + const firstConfirmation: Confirmation = makeConfirmation({ + owner: makeOwner(), + status: true, + hash: 'asdf', + }) + + const transaction: Transaction = makeTransaction({ + name: 'Buy batteries', + nonce: 1, + value: 2, + confirmations: List([firstConfirmation]), + destination: 'destAddress', + threshold: 2, + tx: '', + }) + + const reduxStore = { + [SAFE_REDUCER_ID]: Map(), + providers: makeProvider(), + balances: undefined, + transactions: Map({ fooAddress: List([transaction]) }), + } + + // WHEN + const transactions = safeTransactionsSelector(reduxStore, { safeAddress: 'fooAddress' }) + + // THEN + expect(transactions).toEqual(List([transaction])) + }) + }) +} + +export default grantedSelectorTests From 5085a18fa76b991c80a6045235b2a6362da7d05f Mon Sep 17 00:00:00 2001 From: apanizo Date: Sat, 26 May 2018 13:35:17 +0200 Subject: [PATCH 100/138] WA-238 Adding DOM test simulating execution of tx when safe has only 1 owner --- .../safe/component/AddTransaction/index.jsx | 4 +- src/routes/safe/component/Safe.txs.test.js | 100 ++++++++++++++++++ .../{Safe.test.js => Safe.withdrawn.test.js} | 0 3 files changed, 102 insertions(+), 2 deletions(-) create mode 100644 src/routes/safe/component/Safe.txs.test.js rename src/routes/safe/component/{Safe.test.js => Safe.withdrawn.test.js} (100%) diff --git a/src/routes/safe/component/AddTransaction/index.jsx b/src/routes/safe/component/AddTransaction/index.jsx index d72607d194..1fe11a5750 100644 --- a/src/routes/safe/component/AddTransaction/index.jsx +++ b/src/routes/safe/component/AddTransaction/index.jsx @@ -26,7 +26,7 @@ type State = { export const SEE_TXS_BUTTON_TEXT = 'VISIT TXS' -class Transactions extends React.Component { +class AddTransaction extends React.Component { state = { done: false, } @@ -81,4 +81,4 @@ class Transactions extends React.Component { } } -export default connect(selector, actions)(Transactions) +export default connect(selector, actions)(AddTransaction) diff --git a/src/routes/safe/component/Safe.txs.test.js b/src/routes/safe/component/Safe.txs.test.js new file mode 100644 index 0000000000..5cbc1a16ab --- /dev/null +++ b/src/routes/safe/component/Safe.txs.test.js @@ -0,0 +1,100 @@ +// @flow +import * as React from 'react' +import TestUtils from 'react-dom/test-utils' +import { Provider } from 'react-redux' +import { ConnectedRouter } from 'react-router-redux' +import Button from '~/components/layout/Button' +import { aNewStore, history } from '~/store' +import { addEtherTo } from '~/test/addEtherTo' +import { aDeployedSafe } from '~/routes/safe/store/test/builder/deployedSafe.builder' +import { SAFELIST_ADDRESS } from '~/routes/routes' +import SafeView from '~/routes/safe/component/Safe' +import AppRoutes from '~/routes' +import AddTransactionComponent, { SEE_TXS_BUTTON_TEXT } from '~/routes/safe/component/AddTransaction' +import TransactionsComponent from '~/routes/safe/component/Transactions' +import TransactionComponent from '~/routes/safe/component/Transactions/Transaction' +import { getBalanceInEtherOf } from '~/wallets/getWeb3' +import { sleep } from '~/utils/timer' +import { ADD_MULTISIG_BUTTON_TEXT } from '~/routes/safe/component/Safe/MultisigTx' +import { safeTransactionsSelector } from '~/routes/safe/store/selectors/index' + +describe('React DOM TESTS > Withdrawn funds from safe', () => { + let SafeDom + let store + let address + beforeEach(async () => { + // create store + store = aNewStore() + // deploy safe updating store + address = await aDeployedSafe(store) + // navigate to SAFE route + history.push(`${SAFELIST_ADDRESS}/${address}`) + SafeDom = TestUtils.renderIntoDocument(( + + + + + + )) + }) + + it('should execute one transaction if safe has only one owner', async () => { + // add funds to safe + await addEtherTo(address, '0.1') + const Safe = TestUtils.findRenderedComponentWithType(SafeDom, SafeView) + + // $FlowFixMe + const buttons = TestUtils.scryRenderedComponentsWithType(Safe, Button) + const addTxButton = buttons[1] + expect(addTxButton.props.children).toEqual(ADD_MULTISIG_BUTTON_TEXT) + await sleep(1800) // Give time to enable Add button + TestUtils.Simulate.click(TestUtils.scryRenderedDOMComponentsWithTag(addTxButton, 'button')[0]) + + const AddTransaction = TestUtils.findRenderedComponentWithType(SafeDom, AddTransactionComponent) + + // $FlowFixMe + const inputs = TestUtils.scryRenderedDOMComponentsWithTag(AddTransaction, 'input') + const name = inputs[0] + const destination = inputs[1] + const amountInEth = inputs[2] + TestUtils.Simulate.change(name, { target: { value: 'Buying betteries' } }) + TestUtils.Simulate.change(amountInEth, { target: { value: '0.01' } }) + TestUtils.Simulate.change(destination, { target: { value: store.getState().providers.account } }) + + // $FlowFixMe + const form = TestUtils.findRenderedDOMComponentWithTag(AddTransaction, 'form') + + TestUtils.Simulate.submit(form) // fill the form + TestUtils.Simulate.submit(form) // confirming data + await sleep(4000) + + const safeBalance = await getBalanceInEtherOf(address) + expect(safeBalance).toBe('0.09') + + // $FlowFixMe + const addTransactionButtons = TestUtils.scryRenderedComponentsWithType(AddTransaction, Button) + expect(addTransactionButtons.length).toBe(1) + const visitTxsButton = addTransactionButtons[0] + expect(visitTxsButton.props.children).toEqual(SEE_TXS_BUTTON_TEXT) + + // NOW it is time to check the just executed transaction + TestUtils.Simulate.click(TestUtils.scryRenderedDOMComponentsWithTag(visitTxsButton, 'button')[0]) + + const Transactions = TestUtils.findRenderedComponentWithType(SafeDom, TransactionsComponent) + if (!Transactions) throw new Error() + const Transaction = TestUtils.findRenderedComponentWithType(Transactions, TransactionComponent) + if (!Transaction) throw new Error() + + const paragraphs = TestUtils.scryRenderedDOMComponentsWithTag(Transaction, 'p') + expect(paragraphs[2].innerHTML).toBe('Already executed') + TestUtils.Simulate.click(paragraphs[2]) // expanded + await sleep(1000) // Time to expand + const paragraphsExpanded = TestUtils.scryRenderedDOMComponentsWithTag(Transaction, 'p') + const txHashParagraph = paragraphsExpanded[paragraphsExpanded.length - 1] + + const transactions = safeTransactionsSelector(store.getState(), { safeAddress: address }) + const batteryTx = transactions.get(0) + if (!batteryTx) throw new Error() + expect(txHashParagraph.innerHTML).toBe(batteryTx.get('tx')) + }) +}) diff --git a/src/routes/safe/component/Safe.test.js b/src/routes/safe/component/Safe.withdrawn.test.js similarity index 100% rename from src/routes/safe/component/Safe.test.js rename to src/routes/safe/component/Safe.withdrawn.test.js From 0c4708b3758b6867f4b6402c2827c86bfd087a89 Mon Sep 17 00:00:00 2001 From: apanizo Date: Sat, 26 May 2018 13:39:44 +0200 Subject: [PATCH 101/138] WA-238 Fix warning text boolean prop --- src/routes/safe/component/Transactions/Collapsed/index.jsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/routes/safe/component/Transactions/Collapsed/index.jsx b/src/routes/safe/component/Transactions/Collapsed/index.jsx index 64f3cf9220..f81ede1dd6 100644 --- a/src/routes/safe/component/Transactions/Collapsed/index.jsx +++ b/src/routes/safe/component/Transactions/Collapsed/index.jsx @@ -3,7 +3,8 @@ import * as React from 'react' import { List as ImmutableList } from 'immutable' import Row from '~/components/layout/Row' import Col from '~/components/layout/Col' -import List, { ListItem, ListItemText } from 'material-ui/List' +import List, { ListItem } from 'material-ui/List' +import ListItemText from '~/components/List/ListItemText' import Avatar from 'material-ui/Avatar' import Group from 'material-ui-icons/Group' import MailOutline from 'material-ui-icons/MailOutline' From 4caacdb184ef33368ce35a7addcde06573725792 Mon Sep 17 00:00:00 2001 From: apanizo Date: Sun, 27 May 2018 12:07:58 +0200 Subject: [PATCH 102/138] WA-238 Implementation and UI adaptation to process ttransactions --- .../AddTransaction/MultisigForm/index.jsx | 2 +- .../AddTransaction/ReviewTx/index.jsx | 2 +- ...{transactions.js => createTransactions.js} | 0 .../safe/component/AddTransaction/index.jsx | 2 +- .../AddTransaction/test/transactions.test.js | 2 +- src/routes/safe/component/Safe.txs.test.js | 2 +- .../Transactions/Collapsed/index.jsx | 9 +- .../Transactions/Transaction/index.jsx | 27 +++- .../safe/component/Transactions/actions.js | 10 ++ .../safe/component/Transactions/index.jsx | 25 ++-- .../Transactions/processTransactions.js | 128 ++++++++++++++++++ .../safe/component/Transactions/selector.js | 3 + 12 files changed, 185 insertions(+), 27 deletions(-) rename src/routes/safe/component/AddTransaction/{transactions.js => createTransactions.js} (100%) create mode 100644 src/routes/safe/component/Transactions/actions.js create mode 100644 src/routes/safe/component/Transactions/processTransactions.js diff --git a/src/routes/safe/component/AddTransaction/MultisigForm/index.jsx b/src/routes/safe/component/AddTransaction/MultisigForm/index.jsx index 66771bf885..f0393c33c0 100644 --- a/src/routes/safe/component/AddTransaction/MultisigForm/index.jsx +++ b/src/routes/safe/component/AddTransaction/MultisigForm/index.jsx @@ -5,7 +5,7 @@ import TextField from '~/components/forms/TextField' import { composeValidators, inLimit, mustBeNumber, required, greaterThan, mustBeEthereumAddress } from '~/components/forms/validator' import Block from '~/components/layout/Block' import Heading from '~/components/layout/Heading' -import { TX_NAME_PARAM, TX_DESTINATION_PARAM, TX_VALUE_PARAM } from '~/routes/safe/component/AddTransaction/transactions' +import { TX_NAME_PARAM, TX_DESTINATION_PARAM, TX_VALUE_PARAM } from '~/routes/safe/component/AddTransaction/createTransactions' export const CONFIRMATIONS_ERROR = 'Number of confirmations can not be higher than the number of owners' diff --git a/src/routes/safe/component/AddTransaction/ReviewTx/index.jsx b/src/routes/safe/component/AddTransaction/ReviewTx/index.jsx index e8e004d605..86524b60c6 100644 --- a/src/routes/safe/component/AddTransaction/ReviewTx/index.jsx +++ b/src/routes/safe/component/AddTransaction/ReviewTx/index.jsx @@ -5,7 +5,7 @@ import Block from '~/components/layout/Block' import Bold from '~/components/layout/Bold' import Heading from '~/components/layout/Heading' import Paragraph from '~/components/layout/Paragraph' -import { TX_NAME_PARAM, TX_DESTINATION_PARAM, TX_VALUE_PARAM } from '~/routes/safe/component/AddTransaction/transactions' +import { TX_NAME_PARAM, TX_DESTINATION_PARAM, TX_VALUE_PARAM } from '~/routes/safe/component/AddTransaction/createTransactions' type FormProps = { values: Object, diff --git a/src/routes/safe/component/AddTransaction/transactions.js b/src/routes/safe/component/AddTransaction/createTransactions.js similarity index 100% rename from src/routes/safe/component/AddTransaction/transactions.js rename to src/routes/safe/component/AddTransaction/createTransactions.js diff --git a/src/routes/safe/component/AddTransaction/index.jsx b/src/routes/safe/component/AddTransaction/index.jsx index 1fe11a5750..8acf7df86c 100644 --- a/src/routes/safe/component/AddTransaction/index.jsx +++ b/src/routes/safe/component/AddTransaction/index.jsx @@ -6,7 +6,7 @@ import { sleep } from '~/utils/timer' import { type Safe } from '~/routes/safe/store/model/safe' import actions, { type Actions } from './actions' import selector, { type SelectorProps } from './selector' -import { createTransaction, TX_NAME_PARAM, TX_DESTINATION_PARAM, TX_VALUE_PARAM } from './transactions' +import { createTransaction, TX_NAME_PARAM, TX_DESTINATION_PARAM, TX_VALUE_PARAM } from './createTransactions' import MultisigForm from './MultisigForm' import ReviewTx from './ReviewTx' diff --git a/src/routes/safe/component/AddTransaction/test/transactions.test.js b/src/routes/safe/component/AddTransaction/test/transactions.test.js index c3a2894d88..367403bfcd 100644 --- a/src/routes/safe/component/AddTransaction/test/transactions.test.js +++ b/src/routes/safe/component/AddTransaction/test/transactions.test.js @@ -1,6 +1,6 @@ // @flow import { List, Map } from 'immutable' -import { storeTransaction, buildConfirmationsFrom, EXECUTED_CONFIRMATION_HASH, buildExecutedConfirmationFrom } from '~/routes/safe/component/AddTransaction/transactions' +import { storeTransaction, buildConfirmationsFrom, EXECUTED_CONFIRMATION_HASH, buildExecutedConfirmationFrom } from '~/routes/safe/component/AddTransaction/createTransactions' import { type Transaction } from '~/routes/safe/store/model/transaction' import { SafeFactory } from '~/routes/safe/store/test/builder/safe.builder' import { type Safe } from '~/routes/safe/store/model/safe' diff --git a/src/routes/safe/component/Safe.txs.test.js b/src/routes/safe/component/Safe.txs.test.js index 5cbc1a16ab..1567f58c75 100644 --- a/src/routes/safe/component/Safe.txs.test.js +++ b/src/routes/safe/component/Safe.txs.test.js @@ -90,7 +90,7 @@ describe('React DOM TESTS > Withdrawn funds from safe', () => { TestUtils.Simulate.click(paragraphs[2]) // expanded await sleep(1000) // Time to expand const paragraphsExpanded = TestUtils.scryRenderedDOMComponentsWithTag(Transaction, 'p') - const txHashParagraph = paragraphsExpanded[paragraphsExpanded.length - 1] + const txHashParagraph = paragraphsExpanded[3] const transactions = safeTransactionsSelector(store.getState(), { safeAddress: address }) const batteryTx = transactions.get(0) diff --git a/src/routes/safe/component/Transactions/Collapsed/index.jsx b/src/routes/safe/component/Transactions/Collapsed/index.jsx index f81ede1dd6..21761f4793 100644 --- a/src/routes/safe/component/Transactions/Collapsed/index.jsx +++ b/src/routes/safe/component/Transactions/Collapsed/index.jsx @@ -15,7 +15,6 @@ type Props = { safeName: string, confirmations: ImmutableList, destination: string, - tx: string, } const listStyle = { @@ -25,7 +24,7 @@ const listStyle = { class Collapsed extends React.PureComponent { render() { const { - confirmations, destination, safeName, tx, + confirmations, destination, safeName, } = this.props return ( @@ -41,12 +40,6 @@ class Collapsed extends React.PureComponent { - { tx && - - - - - } diff --git a/src/routes/safe/component/Transactions/Transaction/index.jsx b/src/routes/safe/component/Transactions/Transaction/index.jsx index f36012e8ca..c1956410aa 100644 --- a/src/routes/safe/component/Transactions/Transaction/index.jsx +++ b/src/routes/safe/component/Transactions/Transaction/index.jsx @@ -11,20 +11,25 @@ import Avatar from 'material-ui/Avatar' import AttachMoney from 'material-ui-icons/AttachMoney' import Atm from 'material-ui-icons/LocalAtm' import DoneAll from 'material-ui-icons/DoneAll' +import CompareArrows from 'material-ui-icons/CompareArrows' import Collapsed from '~/routes/safe/component/Transactions/Collapsed' import { type Transaction } from '~/routes/safe/store/model/transaction' import Hairline from '~/components/layout/Hairline/index' +import Button from '~/components/layout/Button' import selector, { type SelectorProps } from './selector' type Props = Open & SelectorProps & { transaction: Transaction, safeName: string, + onProcessTx: (tx: Transaction, alreadyConfirmed: number) => void, } +export const PROCESS_TXS = 'PROCESS TRANSACTION' + class GnoTransaction extends React.PureComponent { render() { const { - open, toggle, transaction, confirmed, safeName, + open, toggle, transaction, confirmed, safeName, onProcessTx, } = this.props const txHash = transaction.get('tx') @@ -51,12 +56,30 @@ class GnoTransaction extends React.PureComponent { + + + { txHash && + + + + + } + { !txHash && + + } + + { open && } diff --git a/src/routes/safe/component/Transactions/actions.js b/src/routes/safe/component/Transactions/actions.js new file mode 100644 index 0000000000..681ad469b2 --- /dev/null +++ b/src/routes/safe/component/Transactions/actions.js @@ -0,0 +1,10 @@ +// @flow +import fetchTransactions from '~/routes/safe/store/actions/fetchTransactions' + +export type Actions = { + fetchTransactions: typeof fetchTransactions, +} + +export default { + fetchTransactions, +} diff --git a/src/routes/safe/component/Transactions/index.jsx b/src/routes/safe/component/Transactions/index.jsx index 11c595f0c4..5dac8846dd 100644 --- a/src/routes/safe/component/Transactions/index.jsx +++ b/src/routes/safe/component/Transactions/index.jsx @@ -4,22 +4,23 @@ import { connect } from 'react-redux' import { type Transaction } from '~/routes/safe/store/model/transaction' import NoTransactions from '~/routes/safe/component/Transactions/NoTransactions' import GnoTransaction from '~/routes/safe/component/Transactions/Transaction' +import { sleep } from '~/utils/timer' +import { processTransaction } from './processTransactions' import selector, { type SelectorProps } from './selector' +import actions, { type Actions } from './actions' -type Props = SelectorProps & { +type Props = SelectorProps & Actions & { onAddTx: () => void, safeName: string, -} + safeAddress: string, +} class Transactions extends React.Component { - onConfirm = () => { - // eslint-disable-next-line - console.log("Confirming tx") - } - - onExecute = () => { - // eslint-disable-next-line - console.log("Confirming tx") + onProcessTx = async (tx: Transaction, alreadyConfirmed: number) => { + const { fetchTransactions, safeAddress, userAddress } = this.props + await processTransaction(safeAddress, tx, alreadyConfirmed, userAddress) + await sleep(1200) + fetchTransactions() } render() { @@ -29,7 +30,7 @@ class Transactions extends React.Component { return ( { hasTransactions - ? transactions.map((tx: Transaction) => ) + ? transactions.map((tx: Transaction) => ) : } @@ -37,4 +38,4 @@ class Transactions extends React.Component { } } -export default connect(selector)(Transactions) +export default connect(selector, actions)(Transactions) diff --git a/src/routes/safe/component/Transactions/processTransactions.js b/src/routes/safe/component/Transactions/processTransactions.js new file mode 100644 index 0000000000..b39756f726 --- /dev/null +++ b/src/routes/safe/component/Transactions/processTransactions.js @@ -0,0 +1,128 @@ +// @flow +import { List } from 'immutable' +import { type Owner } from '~/routes/safe/store/model/owner' +import { load, TX_KEY } from '~/utils/localStorage' +import { type Confirmation, makeConfirmation } from '~/routes/safe/store/model/confirmation' +import { makeTransaction, type Transaction } from '~/routes/safe/store/model/transaction' +import { getGnosisSafeContract } from '~/wallets/safeContracts' +import { getWeb3 } from '~/wallets/getWeb3' +import { EXECUTED_CONFIRMATION_HASH } from '~/routes/safe/component/AddTransaction/createTransactions' + +export const updateTransaction = ( + name: string, + nonce: number, + destination: string, + value: number, + creator: string, + confirmations: List, + tx: string, + safeAddress: string, + safeThreshold: number, +) => { + const transaction: Transaction = makeTransaction({ + name, nonce, value, confirmations, destination, threshold: safeThreshold, tx, + }) + + const safeTransactions = load(TX_KEY) || {} + const transactions = safeTransactions[safeAddress] + const txsRecord = transactions ? List(transactions) : List([]) + + const index = txsRecord.findIndex((trans: Transaction) => trans.get('nonce') === nonce) + + safeTransactions[safeAddress] = txsRecord.update(index, transaction) + + localStorage.setItem(TX_KEY, JSON.stringify(safeTransactions)) +} + +const getData = () => '0x' +const getOperation = () => 0 + +const execTransaction = async ( + gnosisSafe: any, + destination: string, + txValue: number, + nonce: number, + executor: string, +) => { + const data = getData() + const CALL = getOperation() + const web3 = getWeb3() + const valueInWei = web3.toWei(txValue, 'ether') + const txReceipt = await gnosisSafe.execTransactionIfApproved(destination, valueInWei, data, CALL, nonce, { from: executor, gas: '5000000' }) + + return txReceipt +} + +const execConfirmation = async ( + gnosisSafe: any, + txDestination: string, + txValue: number, + nonce: number, + executor: string, +) => { + const data = getData() + const CALL = getOperation() + const web3 = getWeb3() + const valueInWei = web3.toWei(txValue, 'ether') + const txConfirmationReceipt = await gnosisSafe.approveTransactionWithParameters(txDestination, valueInWei, data, CALL, nonce, { from: executor, gas: '5000000' }) + + return txConfirmationReceipt +} + +const updateConfirmations = (confirmations: List, userAddress: string, txHash: string) => + confirmations.map((confirmation: Confirmation) => { + const owner: Owner = confirmation.get('owner') + const status: boolean = owner.get('address') === userAddress ? true : confirmation.get('status') + const hash: string = owner.get('address') === userAddress ? txHash : confirmation.get('hash') + + return makeConfirmation({ owner, status, hash }) + }) + +export const processTransaction = async ( + safeAddress: string, + tx: Transaction, + alreadyConfirmed: number, + userAddress: string, +) => { + const web3 = getWeb3() + const GnosisSafe = await getGnosisSafeContract(web3) + const gnosisSafe = GnosisSafe.at(safeAddress) + + const confirmations = tx.get('confirmations') + const userHasAlreadyConfirmed = confirmations.filter((confirmation: Confirmation) => { + const ownerAddress = confirmation.get('owner').get('address') + const samePerson = ownerAddress === userAddress + + return samePerson && confirmation.get('status') + }).count() > 0 + + if (userHasAlreadyConfirmed) { + throw new Error('Owner has already confirmed this transaction') + } + + const threshold = tx.get('threshold') + const thresholdReached = threshold >= alreadyConfirmed + 1 + const nonce = tx.get('nonce') + const txName = tx.get('name') + const txValue = tx.get('value') + const txDestination = tx.get('destination') + + const txReceipt = thresholdReached + ? await execTransaction(gnosisSafe, txDestination, txValue, nonce, userAddress) + : await execConfirmation(gnosisSafe, txDestination, txValue, nonce, userAddress) + + const confirmationHash = thresholdReached ? EXECUTED_CONFIRMATION_HASH : txReceipt.tx + const executedConfirmations: List = updateConfirmations(tx.get('confirmations'), userAddress, confirmationHash) + + return updateTransaction( + txName, + nonce, + txDestination, + txValue, + userAddress, + executedConfirmations, + txReceipt.tx, + safeAddress, + threshold + 1, + ) +} diff --git a/src/routes/safe/component/Transactions/selector.js b/src/routes/safe/component/Transactions/selector.js index 1941f7c5c1..4d3c1a6fe7 100644 --- a/src/routes/safe/component/Transactions/selector.js +++ b/src/routes/safe/component/Transactions/selector.js @@ -3,11 +3,14 @@ import { List } from 'immutable' import { createStructuredSelector } from 'reselect' import { type Transaction } from '~/routes/safe/store/model/transaction' import { safeTransactionsSelector } from '~/routes/safe/store/selectors/index' +import { userAccountSelector } from '~/wallets/store/selectors/index' export type SelectorProps = { transactions: List, + userAddress: userAccountSelector, } export default createStructuredSelector({ transactions: safeTransactionsSelector, + userAddress: userAccountSelector, }) From 8e908bb5fc750c442eaaecd5f6c5ebe755899922 Mon Sep 17 00:00:00 2001 From: apanizo Date: Sun, 27 May 2018 12:16:19 +0200 Subject: [PATCH 103/138] WA-238 Added a test for assuring grantedSelector works in a case-insentive mode --- src/routes/safe/container/selector.js | 2 +- .../safe/store/test/granted.selector.js | 23 ++++++++++++++++++- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/src/routes/safe/container/selector.js b/src/routes/safe/container/selector.js index 6330056685..4e3fbf834a 100644 --- a/src/routes/safe/container/selector.js +++ b/src/routes/safe/container/selector.js @@ -30,7 +30,7 @@ export const grantedSelector: Selector = crea return false } - return owners.find((owner: Owner) => owner.get('address') === userAccount) !== undefined + return owners.find((owner: Owner) => owner.get('address').toLocaleLowerCase() === userAccount.toLocaleLowerCase()) !== undefined }, ) diff --git a/src/routes/safe/store/test/granted.selector.js b/src/routes/safe/store/test/granted.selector.js index 2a984643c6..ef6112086b 100644 --- a/src/routes/safe/store/test/granted.selector.js +++ b/src/routes/safe/store/test/granted.selector.js @@ -16,7 +16,7 @@ const grantedSelectorTests = () => { }) describe('Safe Selector[grantedSelector]', () => { - it('should be granted to operate when a safe when the user is owner', () => { + it('should be granted to operate a safe when the user is owner', () => { // GIVEN let map: Map = Map() map = map.set('fooAddress', SafeFactory.oneOwnerSafe(provider.account)) @@ -37,6 +37,27 @@ const grantedSelectorTests = () => { expect(granted).toBe(true) }) + it('should be granted to operate a safe when the user is owner in case-insensitive', () => { + // GIVEN + let map: Map = Map() + map = map.set('fooAddress', SafeFactory.oneOwnerSafe(provider.account.toUpperCase())) + + const match: Match = buildMathPropsFrom('fooAddress') + + const reduxStore = { + [SAFE_REDUCER_ID]: map, + providers: makeProvider(provider), + balances: undefined, + transactions: undefined, + } + + // WHEN + const granted = grantedSelector(reduxStore, { match }) + + // THEN + expect(granted).toBe(true) + }) + it('should NOT be granted to operate with a Safe when the user is NOT owner', () => { // GIVEN let map: Map = Map() From efe2905526be27f8a703f39a073861846ecfe9d0 Mon Sep 17 00:00:00 2001 From: apanizo Date: Sun, 27 May 2018 12:24:50 +0200 Subject: [PATCH 104/138] WA-238 Fix automic onClick calls --- .../safe/component/Transactions/Transaction/index.jsx | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/routes/safe/component/Transactions/Transaction/index.jsx b/src/routes/safe/component/Transactions/Transaction/index.jsx index c1956410aa..be4a18d548 100644 --- a/src/routes/safe/component/Transactions/Transaction/index.jsx +++ b/src/routes/safe/component/Transactions/Transaction/index.jsx @@ -27,9 +27,11 @@ type Props = Open & SelectorProps & { export const PROCESS_TXS = 'PROCESS TRANSACTION' class GnoTransaction extends React.PureComponent { + onProccesClick = () => this.props.onProcessTx(this.props.transaction, this.props.confirmed) + render() { const { - open, toggle, transaction, confirmed, safeName, onProcessTx, + open, toggle, transaction, confirmed, safeName, } = this.props const txHash = transaction.get('tx') @@ -68,7 +70,7 @@ class GnoTransaction extends React.PureComponent { From bd00e4a5174d835f4fb83c1ee385888820236afe Mon Sep 17 00:00:00 2001 From: apanizo Date: Sun, 27 May 2018 13:24:10 +0200 Subject: [PATCH 105/138] WA-238 update safe-contracts --- .../build/contracts/CreateAndAddModule.json | 1221 --- .../build/contracts/CreateAndAddModules.json | 596 +- .../build/contracts/DailyLimitModule.json | 8446 +++++++---------- .../DailyLimitModuleWithSignature.json | 2573 ----- .../contracts/DelegateConstructorProxy.json | 46 +- .../build/contracts/ERC20Token.json | 1799 ++++ safe-contracts/build/contracts/Enum.json | 86 +- .../build/contracts/GnosisSafe.json | 402 +- .../contracts/GnosisSafePersonalEdition.json | 6274 +++++++----- .../GnosisSafeStateChannelEdition.json | 5469 ----------- .../contracts/GnosisSafeTeamEdition.json | 3856 ++++---- .../build/contracts/MasterCopy.json | 302 +- .../build/contracts/Migrations.json | 630 +- safe-contracts/build/contracts/Module.json | 498 +- .../build/contracts/ModuleManager.json | 3770 ++++---- safe-contracts/build/contracts/MultiSend.json | 132 +- .../build/contracts/MultiSendStruct.json | 1688 ---- .../build/contracts/OwnerManager.json | 3766 ++++---- .../build/contracts/PayingProxy.json | 1230 ++- safe-contracts/build/contracts/Proxy.json | 434 +- .../build/contracts/ProxyFactory.json | 480 +- .../build/contracts/SelfAuthorized.json | 186 +- .../build/contracts/SocialRecoveryModule.json | 3280 +++---- .../build/contracts/StateChannelModule.json | 2860 +++--- .../build/contracts/WhitelistModule.json | 1632 ++-- 25 files changed, 21539 insertions(+), 30117 deletions(-) delete mode 100644 safe-contracts/build/contracts/CreateAndAddModule.json delete mode 100644 safe-contracts/build/contracts/DailyLimitModuleWithSignature.json create mode 100644 safe-contracts/build/contracts/ERC20Token.json delete mode 100644 safe-contracts/build/contracts/GnosisSafeStateChannelEdition.json delete mode 100644 safe-contracts/build/contracts/MultiSendStruct.json diff --git a/safe-contracts/build/contracts/CreateAndAddModule.json b/safe-contracts/build/contracts/CreateAndAddModule.json deleted file mode 100644 index f6c838d6f2..0000000000 --- a/safe-contracts/build/contracts/CreateAndAddModule.json +++ /dev/null @@ -1,1221 +0,0 @@ -{ - "contractName": "CreateAndAddModule", - "abi": [ - { - "constant": false, - "inputs": [ - { - "name": "module", - "type": "address" - } - ], - "name": "addModule", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "proxyFactory", - "type": "address" - }, - { - "name": "data", - "type": "bytes" - } - ], - "name": "createAndAddModule", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "0x608060405234801561001057600080fd5b50610253806100206000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680631ed86f1914610051578063250ad41214610094575b600080fd5b34801561005d57600080fd5b50610092600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061011d565b005b3480156100a057600080fd5b5061011b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610122565b005b600080fd5b600061012e83836101e8565b90503073ffffffffffffffffffffffffffffffffffffffff16631ed86f19826040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1580156101cb57600080fd5b505af11580156101df573d6000803e3d6000fd5b50505050505050565b60006040516000602082855160208701885af4141561020657600080fd5b73ffffffffffffffffffffffffffffffffffffffff815116915050929150505600a165627a7a72305820a69aa3f8b7eccb408d63a4c5990d1f9082b38369bf3c801ed918bfa3abd34d320029", - "deployedBytecode": "0x60806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680631ed86f1914610051578063250ad41214610094575b600080fd5b34801561005d57600080fd5b50610092600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061011d565b005b3480156100a057600080fd5b5061011b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610122565b005b600080fd5b600061012e83836101e8565b90503073ffffffffffffffffffffffffffffffffffffffff16631ed86f19826040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b1580156101cb57600080fd5b505af11580156101df573d6000803e3d6000fd5b50505050505050565b60006040516000602082855160208701885af4141561020657600080fd5b73ffffffffffffffffffffffffffffffffffffffff815116915050929150505600a165627a7a72305820a69aa3f8b7eccb408d63a4c5990d1f9082b38369bf3c801ed918bfa3abd34d320029", - "sourceMap": "190:1054:15:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;190:1054:15;;;;;;;", - "deployedSourceMap": "190:1054:15:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;349:78;;8:9:-1;5:2;;;30:1;27;20:12;5:2;349:78:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;611:178;;8:9:-1;5:2;;;30:1;27;20:12;5:2;611:178:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;349:78;412:8;;;611:178;702:13;718:32;731:12;745:4;718:12;:32::i;:::-;702:48;;760:4;:14;;;775:6;760:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;760:22:15;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;760:22:15;;;;611:178;;;:::o;795:447::-;885:13;1021:4;1015:11;1122:1;1115:4;1107:6;1100:4;1094:11;1087:4;1081;1077:15;1063:12;1058:3;1045:75;1042:82;1039:2;;;1137:1;1134;1127:12;1039:2;1183:42;1174:6;1168:13;1164:62;1154:72;;987:249;;;;;:::o", - "source": "pragma solidity 0.4.23;\nimport \"../Module.sol\";\n\n\n/// @title Create and Add Module - Allows to create and add a new module in one transaction.\n/// @author Stefan George - \ncontract CreateAndAddModule {\n\n /// @dev Function required to compile contract. Gnosis Safe function is called instead.\n /// @param module Not used.\n function addModule(Module module)\n public\n {\n revert();\n }\n\n /// @dev Allows to create and add a new module in one transaction.\n /// @param proxyFactory Module proxy factory contract.\n /// @param data Module constructor payload.\n function createAndAddModule(address proxyFactory, bytes data)\n public\n {\n Module module = createModule(proxyFactory, data);\n this.addModule(module);\n }\n\n function createModule(address proxyFactory, bytes data)\n internal\n returns (Module module)\n {\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n let output := mload(0x40)\n if eq(delegatecall(gas, proxyFactory, add(data, 0x20), mload(data), output, 0x20), 0) { revert(0, 0) }\n module := and(mload(output), 0xffffffffffffffffffffffffffffffffffffffff)\n }\n }\n}\n", - "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/libraries/CreateAndAddModule.sol", - "ast": { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/libraries/CreateAndAddModule.sol", - "exportedSymbols": { - "CreateAndAddModule": [ - 1604 - ] - }, - "id": 1605, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 1561, - "literals": [ - "solidity", - "0.4", - ".23" - ], - "nodeType": "PragmaDirective", - "src": "0:23:15" - }, - { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", - "file": "../Module.sol", - "id": 1562, - "nodeType": "ImportDirective", - "scope": 1605, - "sourceUnit": 878, - "src": "24:23:15", - "symbolAliases": [], - "unitAlias": "" - }, - { - "baseContracts": [], - "contractDependencies": [], - "contractKind": "contract", - "documentation": "@title Create and Add Module - Allows to create and add a new module in one transaction.\n @author Stefan George - ", - "fullyImplemented": true, - "id": 1604, - "linearizedBaseContracts": [ - 1604 - ], - "name": "CreateAndAddModule", - "nodeType": "ContractDefinition", - "nodes": [ - { - "body": { - "id": 1570, - "nodeType": "Block", - "src": "402:25:15", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 1567, - "name": "revert", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 2470, - 2471 - ], - "referencedDeclaration": 2470, - "src": "412:6:15", - "typeDescriptions": { - "typeIdentifier": "t_function_revert_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 1568, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "412:8:15", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1569, - "nodeType": "ExpressionStatement", - "src": "412:8:15" - } - ] - }, - "documentation": "@dev Function required to compile contract. Gnosis Safe function is called instead.\n @param module Not used.", - "id": 1571, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "addModule", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1565, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1564, - "name": "module", - "nodeType": "VariableDeclaration", - "scope": 1571, - "src": "368:13:15", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$877", - "typeString": "contract Module" - }, - "typeName": { - "contractScope": null, - "id": 1563, - "name": "Module", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 877, - "src": "368:6:15", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$877", - "typeString": "contract Module" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "367:15:15" - }, - "payable": false, - "returnParameters": { - "id": 1566, - "nodeType": "ParameterList", - "parameters": [], - "src": "402:0:15" - }, - "scope": 1604, - "src": "349:78:15", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1591, - "nodeType": "Block", - "src": "692:97:15", - "statements": [ - { - "assignments": [ - 1579 - ], - "declarations": [ - { - "constant": false, - "id": 1579, - "name": "module", - "nodeType": "VariableDeclaration", - "scope": 1592, - "src": "702:13:15", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$877", - "typeString": "contract Module" - }, - "typeName": { - "contractScope": null, - "id": 1578, - "name": "Module", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 877, - "src": "702:6:15", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$877", - "typeString": "contract Module" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1584, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1581, - "name": "proxyFactory", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1573, - "src": "731:12:15", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 1582, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1575, - "src": "745:4:15", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 1580, - "name": "createModule", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1603, - "src": "718:12:15", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_contract$_Module_$877_$", - "typeString": "function (address,bytes memory) returns (contract Module)" - } - }, - "id": 1583, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "718:32:15", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$877", - "typeString": "contract Module" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "702:48:15" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1588, - "name": "module", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1579, - "src": "775:6:15", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$877", - "typeString": "contract Module" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_Module_$877", - "typeString": "contract Module" - } - ], - "expression": { - "argumentTypes": null, - "id": 1585, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2508, - "src": "760:4:15", - "typeDescriptions": { - "typeIdentifier": "t_contract$_CreateAndAddModule_$1604", - "typeString": "contract CreateAndAddModule" - } - }, - "id": 1587, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "addModule", - "nodeType": "MemberAccess", - "referencedDeclaration": 1571, - "src": "760:14:15", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_contract$_Module_$877_$returns$__$", - "typeString": "function (contract Module) external" - } - }, - "id": 1589, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "760:22:15", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1590, - "nodeType": "ExpressionStatement", - "src": "760:22:15" - } - ] - }, - "documentation": "@dev Allows to create and add a new module in one transaction.\n @param proxyFactory Module proxy factory contract.\n @param data Module constructor payload.", - "id": 1592, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "createAndAddModule", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1576, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1573, - "name": "proxyFactory", - "nodeType": "VariableDeclaration", - "scope": 1592, - "src": "639:20:15", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1572, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "639:7:15", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1575, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 1592, - "src": "661:10:15", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 1574, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "661:5:15", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "638:34:15" - }, - "payable": false, - "returnParameters": { - "id": 1577, - "nodeType": "ParameterList", - "parameters": [], - "src": "692:0:15" - }, - "scope": 1604, - "src": "611:178:15", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1602, - "nodeType": "Block", - "src": "904:338:15", - "statements": [ - { - "externalReferences": [ - { - "module": { - "declaration": 1599, - "isOffset": false, - "isSlot": false, - "src": "1154:6:15", - "valueSize": 1 - } - }, - { - "data": { - "declaration": 1596, - "isOffset": false, - "isSlot": false, - "src": "1100:4:15", - "valueSize": 1 - } - }, - { - "proxyFactory": { - "declaration": 1594, - "isOffset": false, - "isSlot": false, - "src": "1063:12:15", - "valueSize": 1 - } - }, - { - "data": { - "declaration": 1596, - "isOffset": false, - "isSlot": false, - "src": "1081:4:15", - "valueSize": 1 - } - } - ], - "id": 1601, - "nodeType": "InlineAssembly", - "operations": "{\n let output := mload(0x40)\n if eq(delegatecall(gas(), proxyFactory, add(data, 0x20), mload(data), output, 0x20), 0)\n {\n revert(0, 0)\n }\n module := and(mload(output), 0xffffffffffffffffffffffffffffffffffffffff)\n}", - "src": "978:264:15" - } - ] - }, - "documentation": null, - "id": 1603, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "createModule", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1597, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1594, - "name": "proxyFactory", - "nodeType": "VariableDeclaration", - "scope": 1603, - "src": "817:20:15", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1593, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "817:7:15", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1596, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 1603, - "src": "839:10:15", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 1595, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "839:5:15", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "816:34:15" - }, - "payable": false, - "returnParameters": { - "id": 1600, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1599, - "name": "module", - "nodeType": "VariableDeclaration", - "scope": 1603, - "src": "885:13:15", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$877", - "typeString": "contract Module" - }, - "typeName": { - "contractScope": null, - "id": 1598, - "name": "Module", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 877, - "src": "885:6:15", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$877", - "typeString": "contract Module" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "884:15:15" - }, - "scope": 1604, - "src": "795:447:15", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - } - ], - "scope": 1605, - "src": "190:1054:15" - } - ], - "src": "0:1245:15" - }, - "legacyAST": { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/libraries/CreateAndAddModule.sol", - "exportedSymbols": { - "CreateAndAddModule": [ - 1604 - ] - }, - "id": 1605, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 1561, - "literals": [ - "solidity", - "0.4", - ".23" - ], - "nodeType": "PragmaDirective", - "src": "0:23:15" - }, - { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", - "file": "../Module.sol", - "id": 1562, - "nodeType": "ImportDirective", - "scope": 1605, - "sourceUnit": 878, - "src": "24:23:15", - "symbolAliases": [], - "unitAlias": "" - }, - { - "baseContracts": [], - "contractDependencies": [], - "contractKind": "contract", - "documentation": "@title Create and Add Module - Allows to create and add a new module in one transaction.\n @author Stefan George - ", - "fullyImplemented": true, - "id": 1604, - "linearizedBaseContracts": [ - 1604 - ], - "name": "CreateAndAddModule", - "nodeType": "ContractDefinition", - "nodes": [ - { - "body": { - "id": 1570, - "nodeType": "Block", - "src": "402:25:15", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 1567, - "name": "revert", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 2470, - 2471 - ], - "referencedDeclaration": 2470, - "src": "412:6:15", - "typeDescriptions": { - "typeIdentifier": "t_function_revert_pure$__$returns$__$", - "typeString": "function () pure" - } - }, - "id": 1568, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "412:8:15", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1569, - "nodeType": "ExpressionStatement", - "src": "412:8:15" - } - ] - }, - "documentation": "@dev Function required to compile contract. Gnosis Safe function is called instead.\n @param module Not used.", - "id": 1571, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "addModule", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1565, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1564, - "name": "module", - "nodeType": "VariableDeclaration", - "scope": 1571, - "src": "368:13:15", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$877", - "typeString": "contract Module" - }, - "typeName": { - "contractScope": null, - "id": 1563, - "name": "Module", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 877, - "src": "368:6:15", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$877", - "typeString": "contract Module" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "367:15:15" - }, - "payable": false, - "returnParameters": { - "id": 1566, - "nodeType": "ParameterList", - "parameters": [], - "src": "402:0:15" - }, - "scope": 1604, - "src": "349:78:15", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1591, - "nodeType": "Block", - "src": "692:97:15", - "statements": [ - { - "assignments": [ - 1579 - ], - "declarations": [ - { - "constant": false, - "id": 1579, - "name": "module", - "nodeType": "VariableDeclaration", - "scope": 1592, - "src": "702:13:15", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$877", - "typeString": "contract Module" - }, - "typeName": { - "contractScope": null, - "id": 1578, - "name": "Module", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 877, - "src": "702:6:15", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$877", - "typeString": "contract Module" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1584, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1581, - "name": "proxyFactory", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1573, - "src": "731:12:15", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 1582, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1575, - "src": "745:4:15", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 1580, - "name": "createModule", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1603, - "src": "718:12:15", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$_t_contract$_Module_$877_$", - "typeString": "function (address,bytes memory) returns (contract Module)" - } - }, - "id": 1583, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "718:32:15", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$877", - "typeString": "contract Module" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "702:48:15" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1588, - "name": "module", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1579, - "src": "775:6:15", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$877", - "typeString": "contract Module" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_Module_$877", - "typeString": "contract Module" - } - ], - "expression": { - "argumentTypes": null, - "id": 1585, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2508, - "src": "760:4:15", - "typeDescriptions": { - "typeIdentifier": "t_contract$_CreateAndAddModule_$1604", - "typeString": "contract CreateAndAddModule" - } - }, - "id": 1587, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "addModule", - "nodeType": "MemberAccess", - "referencedDeclaration": 1571, - "src": "760:14:15", - "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_contract$_Module_$877_$returns$__$", - "typeString": "function (contract Module) external" - } - }, - "id": 1589, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "760:22:15", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1590, - "nodeType": "ExpressionStatement", - "src": "760:22:15" - } - ] - }, - "documentation": "@dev Allows to create and add a new module in one transaction.\n @param proxyFactory Module proxy factory contract.\n @param data Module constructor payload.", - "id": 1592, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "createAndAddModule", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1576, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1573, - "name": "proxyFactory", - "nodeType": "VariableDeclaration", - "scope": 1592, - "src": "639:20:15", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1572, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "639:7:15", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1575, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 1592, - "src": "661:10:15", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 1574, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "661:5:15", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "638:34:15" - }, - "payable": false, - "returnParameters": { - "id": 1577, - "nodeType": "ParameterList", - "parameters": [], - "src": "692:0:15" - }, - "scope": 1604, - "src": "611:178:15", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1602, - "nodeType": "Block", - "src": "904:338:15", - "statements": [ - { - "externalReferences": [ - { - "module": { - "declaration": 1599, - "isOffset": false, - "isSlot": false, - "src": "1154:6:15", - "valueSize": 1 - } - }, - { - "data": { - "declaration": 1596, - "isOffset": false, - "isSlot": false, - "src": "1100:4:15", - "valueSize": 1 - } - }, - { - "proxyFactory": { - "declaration": 1594, - "isOffset": false, - "isSlot": false, - "src": "1063:12:15", - "valueSize": 1 - } - }, - { - "data": { - "declaration": 1596, - "isOffset": false, - "isSlot": false, - "src": "1081:4:15", - "valueSize": 1 - } - } - ], - "id": 1601, - "nodeType": "InlineAssembly", - "operations": "{\n let output := mload(0x40)\n if eq(delegatecall(gas(), proxyFactory, add(data, 0x20), mload(data), output, 0x20), 0)\n {\n revert(0, 0)\n }\n module := and(mload(output), 0xffffffffffffffffffffffffffffffffffffffff)\n}", - "src": "978:264:15" - } - ] - }, - "documentation": null, - "id": 1603, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "createModule", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1597, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1594, - "name": "proxyFactory", - "nodeType": "VariableDeclaration", - "scope": 1603, - "src": "817:20:15", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1593, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "817:7:15", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1596, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 1603, - "src": "839:10:15", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 1595, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "839:5:15", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "816:34:15" - }, - "payable": false, - "returnParameters": { - "id": 1600, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1599, - "name": "module", - "nodeType": "VariableDeclaration", - "scope": 1603, - "src": "885:13:15", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$877", - "typeString": "contract Module" - }, - "typeName": { - "contractScope": null, - "id": 1598, - "name": "Module", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 877, - "src": "885:6:15", - "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$877", - "typeString": "contract Module" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "884:15:15" - }, - "scope": 1604, - "src": "795:447:15", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - } - ], - "scope": 1605, - "src": "190:1054:15" - } - ], - "src": "0:1245:15" - }, - "compiler": { - "name": "solc", - "version": "0.4.23+commit.124ca40d.Emscripten.clang" - }, - "networks": { - "4": { - "events": {}, - "links": {}, - "address": "0xabb64de6d5ca20609e2f331bf3c4818a1f6f94fd", - "transactionHash": "0x61759c9f25325ca90bbd3d45b8a2c629e6ee721b995ec0ef614c3338516b530e" - }, - "1525950336085": { - "events": {}, - "links": {}, - "address": "0x544c20ddcab0459a99c93823d0c02d50f75ced36", - "transactionHash": "0x0e6adf453722b13530f4f8c8f947f6e5105156aa99a10b588447ed57e27d7b85" - }, - "1526283540628": { - "events": {}, - "links": {}, - "address": "0xdeabe313841db5cddcc1b5f01c6497ece16c2347", - "transactionHash": "0x0e6adf453722b13530f4f8c8f947f6e5105156aa99a10b588447ed57e27d7b85" - } - }, - "schemaVersion": "2.0.0", - "updatedAt": "2018-05-14T07:39:37.967Z" -} \ No newline at end of file diff --git a/safe-contracts/build/contracts/CreateAndAddModules.json b/safe-contracts/build/contracts/CreateAndAddModules.json index 337a690bb9..bd8cbc94f2 100644 --- a/safe-contracts/build/contracts/CreateAndAddModules.json +++ b/safe-contracts/build/contracts/CreateAndAddModules.json @@ -34,40 +34,40 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50610275806100206000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806360df7f5814610051578063610b5925146100da575b600080fd5b34801561005d57600080fd5b506100d8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061011d565b005b3480156100e657600080fd5b5061011b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610244565b005b600080600083519250600090505b8281101561023d5780840160200151818501604001604051600060208285858c5af4141561015857600080fd5b73ffffffffffffffffffffffffffffffffffffffff8151169450602080602085010402602001840193505050503073ffffffffffffffffffffffffffffffffffffffff1663610b5925836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561022057600080fd5b505af1158015610234573d6000803e3d6000fd5b5050505061012b565b5050505050565b600080fd00a165627a7a72305820e1479531e7421914f006918566f778761cf7bfa2673aa10247d2f44d375165410029", - "deployedBytecode": "0x60806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806360df7f5814610051578063610b5925146100da575b600080fd5b34801561005d57600080fd5b506100d8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061011d565b005b3480156100e657600080fd5b5061011b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610244565b005b600080600083519250600090505b8281101561023d5780840160200151818501604001604051600060208285858c5af4141561015857600080fd5b73ffffffffffffffffffffffffffffffffffffffff8151169450602080602085010402602001840193505050503073ffffffffffffffffffffffffffffffffffffffff1663610b5925836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561022057600080fd5b505af1158015610234573d6000803e3d6000fd5b5050505061012b565b5050505050565b600080fd00a165627a7a72305820e1479531e7421914f006918566f778761cf7bfa2673aa10247d2f44d375165410029", - "sourceMap": "245:1457:9:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;245:1457:9;;;;;;;", - "deployedSourceMap": "245:1457:9:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;815:885;;8:9:-1;5:2;;;30:1;27;20:12;5:2;815:885:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;405:81;;8:9:-1;5:2;;;30:1;27;20:12;5:2;405:81:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;815:885;907:14;945:13;968:9;924:4;:11;907:28;;980:1;968:13;;991:703;1002:6;998:1;:10;991:703;;;1170:1;1164:4;1160:12;1154:4;1150:23;1144:30;1230:1;1224:4;1220:12;1214:4;1210:23;1271:4;1265:11;1378:1;1371:4;1363:6;1344:17;1331:11;1317:12;1312:3;1299:77;1296:84;1293:2;;;1393:1;1390;1383:12;1293:2;1443:42;1434:6;1428:13;1424:62;1414:72;;1624:4;1617;1610;1591:17;1587:28;1583:39;1579:50;1573:4;1569:61;1566:1;1562:69;1557:74;;1101:544;;;1658:4;:17;;;1676:6;1658:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1658:25:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1658:25:9;;;;991:703;;;815:885;;;;;:::o;405:81::-;471:8;;", - "source": "pragma solidity 0.4.23;\nimport \"../Module.sol\";\n\n\n/// @title Create and Add Modules - Allows to create and add multiple module in one transaction.\n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract CreateAndAddModules {\n\n /// @dev Function required to compile contract. Gnosis Safe function is called instead.\n /// @param module Not used.\n function enableModule(Module module)\n public\n {\n revert();\n }\n\n /// @dev Allows to create and add multiple module in one transaction.\n /// @param proxyFactory Module proxy factory contract.\n /// @param data Modules constructor payload. This is the data for each proxy factory call concatinated. (e.g. )\n function createAndAddModules(address proxyFactory, bytes data)\n public\n {\n uint256 length = data.length;\n Module module;\n uint256 i = 0;\n while (i < length) {\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n let createBytesLength := mload(add(0x20, add(data, i)))\n let createBytes := add(0x40, add(data, i))\n\n let output := mload(0x40)\n if eq(delegatecall(gas, proxyFactory, createBytes, createBytesLength, output, 0x20), 0) { revert(0, 0) }\n module := and(mload(output), 0xffffffffffffffffffffffffffffffffffffffff)\n\n // Data is always padded to 32 bytes\n i := add(i, add(0x20, mul(div(add(createBytesLength, 0x20), 0x20), 0x20)))\n }\n this.enableModule(module);\n }\n }\n}\n", + "bytecode": "0x608060405234801561001057600080fd5b50610275806100206000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806360df7f5814610051578063610b5925146100da575b600080fd5b34801561005d57600080fd5b506100d8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061011d565b005b3480156100e657600080fd5b5061011b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610244565b005b600080600083519250600090505b8281101561023d5780840160200151818501604001604051600060208285858c5af4141561015857600080fd5b73ffffffffffffffffffffffffffffffffffffffff8151169450602080601f85010402602001840193505050503073ffffffffffffffffffffffffffffffffffffffff1663610b5925836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561022057600080fd5b505af1158015610234573d6000803e3d6000fd5b5050505061012b565b5050505050565b600080fd00a165627a7a723058208f7a97e938c15e3356168d53d19c7667249d0a3b35454b33fa8a258c0655d6ce0029", + "deployedBytecode": "0x60806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806360df7f5814610051578063610b5925146100da575b600080fd5b34801561005d57600080fd5b506100d8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061011d565b005b3480156100e657600080fd5b5061011b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610244565b005b600080600083519250600090505b8281101561023d5780840160200151818501604001604051600060208285858c5af4141561015857600080fd5b73ffffffffffffffffffffffffffffffffffffffff8151169450602080601f85010402602001840193505050503073ffffffffffffffffffffffffffffffffffffffff1663610b5925836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561022057600080fd5b505af1158015610234573d6000803e3d6000fd5b5050505061012b565b5050505050565b600080fd00a165627a7a723058208f7a97e938c15e3356168d53d19c7667249d0a3b35454b33fa8a258c0655d6ce0029", + "sourceMap": "245:1457:15:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;245:1457:15;;;;;;;", + "deployedSourceMap": "245:1457:15:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;815:885;;8:9:-1;5:2;;;30:1;27;20:12;5:2;815:885:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;405:81;;8:9:-1;5:2;;;30:1;27;20:12;5:2;405:81:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;815:885;907:14;945:13;968:9;924:4;:11;907:28;;980:1;968:13;;991:703;1002:6;998:1;:10;991:703;;;1170:1;1164:4;1160:12;1154:4;1150:23;1144:30;1230:1;1224:4;1220:12;1214:4;1210:23;1271:4;1265:11;1378:1;1371:4;1363:6;1344:17;1331:11;1317:12;1312:3;1299:77;1296:84;1293:2;;;1393:1;1390;1383:12;1293:2;1443:42;1434:6;1428:13;1424:62;1414:72;;1624:4;1617;1610;1591:17;1587:28;1583:39;1579:50;1573:4;1569:61;1566:1;1562:69;1557:74;;1101:544;;;1658:4;:17;;;1676:6;1658:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1658:25:15;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1658:25:15;;;;991:703;;;815:885;;;;;:::o;405:81::-;471:8;;", + "source": "pragma solidity 0.4.24;\nimport \"../Module.sol\";\n\n\n/// @title Create and Add Modules - Allows to create and add multiple module in one transaction.\n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract CreateAndAddModules {\n\n /// @dev Function required to compile contract. Gnosis Safe function is called instead.\n /// @param module Not used.\n function enableModule(Module module)\n public\n {\n revert();\n }\n\n /// @dev Allows to create and add multiple module in one transaction.\n /// @param proxyFactory Module proxy factory contract.\n /// @param data Modules constructor payload. This is the data for each proxy factory call concatinated. (e.g. )\n function createAndAddModules(address proxyFactory, bytes data)\n public\n {\n uint256 length = data.length;\n Module module;\n uint256 i = 0;\n while (i < length) {\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n let createBytesLength := mload(add(0x20, add(data, i)))\n let createBytes := add(0x40, add(data, i))\n\n let output := mload(0x40)\n if eq(delegatecall(gas, proxyFactory, createBytes, createBytesLength, output, 0x20), 0) { revert(0, 0) }\n module := and(mload(output), 0xffffffffffffffffffffffffffffffffffffffff)\n\n // Data is always padded to 32 bytes\n i := add(i, add(0x20, mul(div(add(createBytesLength, 0x1f), 0x20), 0x20)))\n }\n this.enableModule(module);\n }\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/libraries/CreateAndAddModules.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/libraries/CreateAndAddModules.sol", "exportedSymbols": { "CreateAndAddModules": [ - 1404 + 1730 ] }, - "id": 1405, + "id": 1731, "nodeType": "SourceUnit", "nodes": [ { - "id": 1361, + "id": 1687, "literals": [ "solidity", "0.4", - ".23" + ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:9" + "src": "0:23:15" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "file": "../Module.sol", - "id": 1362, + "id": 1688, "nodeType": "ImportDirective", - "scope": 1405, - "sourceUnit": 622, - "src": "24:23:9", + "scope": 1731, + "sourceUnit": 751, + "src": "24:23:15", "symbolAliases": [], "unitAlias": "" }, @@ -77,18 +77,18 @@ "contractKind": "contract", "documentation": "@title Create and Add Modules - Allows to create and add multiple module in one transaction.\n @author Stefan George - \n @author Richard Meissner - ", "fullyImplemented": true, - "id": 1404, + "id": 1730, "linearizedBaseContracts": [ - 1404 + 1730 ], "name": "CreateAndAddModules", "nodeType": "ContractDefinition", "nodes": [ { "body": { - "id": 1370, + "id": 1696, "nodeType": "Block", - "src": "461:25:9", + "src": "461:25:15", "statements": [ { "expression": { @@ -96,21 +96,21 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 1367, + "id": 1693, "name": "revert", "nodeType": "Identifier", "overloadedDeclarations": [ - 2401, - 2402 + 2603, + 2604 ], - "referencedDeclaration": 2401, - "src": "471:6:9", + "referencedDeclaration": 2603, + "src": "471:6:15", "typeDescriptions": { "typeIdentifier": "t_function_revert_pure$__$returns$__$", "typeString": "function () pure" } }, - "id": 1368, + "id": 1694, "isConstant": false, "isLValue": false, "isPure": false, @@ -118,20 +118,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "471:8:9", + "src": "471:8:15", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1369, + "id": 1695, "nodeType": "ExpressionStatement", - "src": "471:8:9" + "src": "471:8:15" } ] }, "documentation": "@dev Function required to compile contract. Gnosis Safe function is called instead.\n @param module Not used.", - "id": 1371, + "id": 1697, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -139,31 +139,31 @@ "name": "enableModule", "nodeType": "FunctionDefinition", "parameters": { - "id": 1365, + "id": 1691, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1364, + "id": 1690, "name": "module", "nodeType": "VariableDeclaration", - "scope": 1371, - "src": "427:13:9", + "scope": 1697, + "src": "427:13:15", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" }, "typeName": { "contractScope": null, - "id": 1363, + "id": 1689, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 621, - "src": "427:6:9", + "referencedDeclaration": 750, + "src": "427:6:15", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } }, @@ -171,39 +171,39 @@ "visibility": "internal" } ], - "src": "426:15:9" + "src": "426:15:15" }, "payable": false, "returnParameters": { - "id": 1366, + "id": 1692, "nodeType": "ParameterList", "parameters": [], - "src": "461:0:9" + "src": "461:0:15" }, - "scope": 1404, - "src": "405:81:9", + "scope": 1730, + "src": "405:81:15", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1402, + "id": 1728, "nodeType": "Block", - "src": "897:803:9", + "src": "897:803:15", "statements": [ { "assignments": [ - 1379 + 1705 ], "declarations": [ { "constant": false, - "id": 1379, + "id": 1705, "name": "length", "nodeType": "VariableDeclaration", - "scope": 1403, - "src": "907:14:9", + "scope": 1729, + "src": "907:14:15", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -211,10 +211,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1378, + "id": 1704, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "907:7:9", + "src": "907:7:15", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -224,23 +224,23 @@ "visibility": "internal" } ], - "id": 1382, + "id": 1708, "initialValue": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1380, + "id": 1706, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1375, - "src": "924:4:9", + "referencedDeclaration": 1701, + "src": "924:4:15", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, - "id": 1381, + "id": 1707, "isConstant": false, "isLValue": false, "isPure": false, @@ -248,40 +248,40 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "924:11:9", + "src": "924:11:15", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "907:28:9" + "src": "907:28:15" }, { "assignments": [], "declarations": [ { "constant": false, - "id": 1384, + "id": 1710, "name": "module", "nodeType": "VariableDeclaration", - "scope": 1403, - "src": "945:13:9", + "scope": 1729, + "src": "945:13:15", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" }, "typeName": { "contractScope": null, - "id": 1383, + "id": 1709, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 621, - "src": "945:6:9", + "referencedDeclaration": 750, + "src": "945:6:15", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } }, @@ -289,23 +289,23 @@ "visibility": "internal" } ], - "id": 1385, + "id": 1711, "initialValue": null, "nodeType": "VariableDeclarationStatement", - "src": "945:13:9" + "src": "945:13:15" }, { "assignments": [ - 1387 + 1713 ], "declarations": [ { "constant": false, - "id": 1387, + "id": 1713, "name": "i", "nodeType": "VariableDeclaration", - "scope": 1403, - "src": "968:9:9", + "scope": 1729, + "src": "968:9:15", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -313,10 +313,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1386, + "id": 1712, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "968:7:9", + "src": "968:7:15", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -326,18 +326,18 @@ "visibility": "internal" } ], - "id": 1389, + "id": 1715, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 1388, + "id": 1714, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "980:1:9", + "src": "980:1:15", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -346,93 +346,93 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "968:13:9" + "src": "968:13:15" }, { "body": { - "id": 1400, + "id": 1726, "nodeType": "Block", - "src": "1010:684:9", + "src": "1010:684:15", "statements": [ { "externalReferences": [ { "module": { - "declaration": 1384, + "declaration": 1710, "isOffset": false, "isSlot": false, - "src": "1414:6:9", + "src": "1414:6:15", "valueSize": 1 } }, { "data": { - "declaration": 1375, + "declaration": 1701, "isOffset": false, "isSlot": false, - "src": "1164:4:9", + "src": "1164:4:15", "valueSize": 1 } }, { "i": { - "declaration": 1387, + "declaration": 1713, "isOffset": false, "isSlot": false, - "src": "1170:1:9", + "src": "1170:1:15", "valueSize": 1 } }, { "data": { - "declaration": 1375, + "declaration": 1701, "isOffset": false, "isSlot": false, - "src": "1224:4:9", + "src": "1224:4:15", "valueSize": 1 } }, { "i": { - "declaration": 1387, + "declaration": 1713, "isOffset": false, "isSlot": false, - "src": "1230:1:9", + "src": "1230:1:15", "valueSize": 1 } }, { "i": { - "declaration": 1387, + "declaration": 1713, "isOffset": false, "isSlot": false, - "src": "1557:1:9", + "src": "1557:1:15", "valueSize": 1 } }, { "proxyFactory": { - "declaration": 1373, + "declaration": 1699, "isOffset": false, "isSlot": false, - "src": "1317:12:9", + "src": "1317:12:15", "valueSize": 1 } }, { "i": { - "declaration": 1387, + "declaration": 1713, "isOffset": false, "isSlot": false, - "src": "1566:1:9", + "src": "1566:1:15", "valueSize": 1 } } ], - "id": 1393, + "id": 1719, "nodeType": "InlineAssembly", - "operations": "{\n let createBytesLength := mload(add(0x20, add(data, i)))\n let createBytes := add(0x40, add(data, i))\n let output := mload(0x40)\n if eq(delegatecall(gas(), proxyFactory, createBytes, createBytesLength, output, 0x20), 0)\n {\n revert(0, 0)\n }\n module := and(mload(output), 0xffffffffffffffffffffffffffffffffffffffff)\n i := add(i, add(0x20, mul(div(add(createBytesLength, 0x20), 0x20), 0x20)))\n}", - "src": "1092:570:9" + "operations": "{\n let createBytesLength := mload(add(0x20, add(data, i)))\n let createBytes := add(0x40, add(data, i))\n let output := mload(0x40)\n if eq(delegatecall(gas(), proxyFactory, createBytes, createBytesLength, output, 0x20), 0)\n {\n revert(0, 0)\n }\n module := and(mload(output), 0xffffffffffffffffffffffffffffffffffffffff)\n i := add(i, add(0x20, mul(div(add(createBytesLength, 0x1f), 0x20), 0x20)))\n}", + "src": "1092:570:15" }, { "expression": { @@ -440,14 +440,14 @@ "arguments": [ { "argumentTypes": null, - "id": 1397, + "id": 1723, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1384, - "src": "1676:6:9", + "referencedDeclaration": 1710, + "src": "1676:6:15", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } } @@ -455,38 +455,38 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } ], "expression": { "argumentTypes": null, - "id": 1394, + "id": 1720, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2427, - "src": "1658:4:9", + "referencedDeclaration": 2641, + "src": "1658:4:15", "typeDescriptions": { - "typeIdentifier": "t_contract$_CreateAndAddModules_$1404", + "typeIdentifier": "t_contract$_CreateAndAddModules_$1730", "typeString": "contract CreateAndAddModules" } }, - "id": 1396, + "id": 1722, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "enableModule", "nodeType": "MemberAccess", - "referencedDeclaration": 1371, - "src": "1658:17:9", + "referencedDeclaration": 1697, + "src": "1658:17:15", "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_contract$_Module_$621_$returns$__$", + "typeIdentifier": "t_function_external_nonpayable$_t_contract$_Module_$750_$returns$__$", "typeString": "function (contract Module) external" } }, - "id": 1398, + "id": 1724, "isConstant": false, "isLValue": false, "isPure": false, @@ -494,15 +494,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1658:25:9", + "src": "1658:25:15", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1399, + "id": 1725, "nodeType": "ExpressionStatement", - "src": "1658:25:9" + "src": "1658:25:15" } ] }, @@ -512,19 +512,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1392, + "id": 1718, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1390, + "id": 1716, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1387, - "src": "998:1:9", + "referencedDeclaration": 1713, + "src": "998:1:15", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -534,31 +534,31 @@ "operator": "<", "rightExpression": { "argumentTypes": null, - "id": 1391, + "id": 1717, "name": "length", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1379, - "src": "1002:6:9", + "referencedDeclaration": 1705, + "src": "1002:6:15", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "998:10:9", + "src": "998:10:15", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 1401, + "id": 1727, "nodeType": "WhileStatement", - "src": "991:703:9" + "src": "991:703:15" } ] }, "documentation": "@dev Allows to create and add multiple module in one transaction.\n @param proxyFactory Module proxy factory contract.\n @param data Modules constructor payload. This is the data for each proxy factory call concatinated. (e.g. )", - "id": 1403, + "id": 1729, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -566,16 +566,16 @@ "name": "createAndAddModules", "nodeType": "FunctionDefinition", "parameters": { - "id": 1376, + "id": 1702, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1373, + "id": 1699, "name": "proxyFactory", "nodeType": "VariableDeclaration", - "scope": 1403, - "src": "844:20:9", + "scope": 1729, + "src": "844:20:15", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -583,10 +583,10 @@ "typeString": "address" }, "typeName": { - "id": 1372, + "id": 1698, "name": "address", "nodeType": "ElementaryTypeName", - "src": "844:7:9", + "src": "844:7:15", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -597,11 +597,11 @@ }, { "constant": false, - "id": 1375, + "id": 1701, "name": "data", "nodeType": "VariableDeclaration", - "scope": 1403, - "src": "866:10:9", + "scope": 1729, + "src": "866:10:15", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -609,10 +609,10 @@ "typeString": "bytes" }, "typeName": { - "id": 1374, + "id": 1700, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "866:5:9", + "src": "866:5:15", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -622,56 +622,56 @@ "visibility": "internal" } ], - "src": "843:34:9" + "src": "843:34:15" }, "payable": false, "returnParameters": { - "id": 1377, + "id": 1703, "nodeType": "ParameterList", "parameters": [], - "src": "897:0:9" + "src": "897:0:15" }, - "scope": 1404, - "src": "815:885:9", + "scope": 1730, + "src": "815:885:15", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 1405, - "src": "245:1457:9" + "scope": 1731, + "src": "245:1457:15" } ], - "src": "0:1703:9" + "src": "0:1703:15" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/libraries/CreateAndAddModules.sol", "exportedSymbols": { "CreateAndAddModules": [ - 1404 + 1730 ] }, - "id": 1405, + "id": 1731, "nodeType": "SourceUnit", "nodes": [ { - "id": 1361, + "id": 1687, "literals": [ "solidity", "0.4", - ".23" + ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:9" + "src": "0:23:15" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "file": "../Module.sol", - "id": 1362, + "id": 1688, "nodeType": "ImportDirective", - "scope": 1405, - "sourceUnit": 622, - "src": "24:23:9", + "scope": 1731, + "sourceUnit": 751, + "src": "24:23:15", "symbolAliases": [], "unitAlias": "" }, @@ -681,18 +681,18 @@ "contractKind": "contract", "documentation": "@title Create and Add Modules - Allows to create and add multiple module in one transaction.\n @author Stefan George - \n @author Richard Meissner - ", "fullyImplemented": true, - "id": 1404, + "id": 1730, "linearizedBaseContracts": [ - 1404 + 1730 ], "name": "CreateAndAddModules", "nodeType": "ContractDefinition", "nodes": [ { "body": { - "id": 1370, + "id": 1696, "nodeType": "Block", - "src": "461:25:9", + "src": "461:25:15", "statements": [ { "expression": { @@ -700,21 +700,21 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 1367, + "id": 1693, "name": "revert", "nodeType": "Identifier", "overloadedDeclarations": [ - 2401, - 2402 + 2603, + 2604 ], - "referencedDeclaration": 2401, - "src": "471:6:9", + "referencedDeclaration": 2603, + "src": "471:6:15", "typeDescriptions": { "typeIdentifier": "t_function_revert_pure$__$returns$__$", "typeString": "function () pure" } }, - "id": 1368, + "id": 1694, "isConstant": false, "isLValue": false, "isPure": false, @@ -722,20 +722,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "471:8:9", + "src": "471:8:15", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1369, + "id": 1695, "nodeType": "ExpressionStatement", - "src": "471:8:9" + "src": "471:8:15" } ] }, "documentation": "@dev Function required to compile contract. Gnosis Safe function is called instead.\n @param module Not used.", - "id": 1371, + "id": 1697, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -743,31 +743,31 @@ "name": "enableModule", "nodeType": "FunctionDefinition", "parameters": { - "id": 1365, + "id": 1691, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1364, + "id": 1690, "name": "module", "nodeType": "VariableDeclaration", - "scope": 1371, - "src": "427:13:9", + "scope": 1697, + "src": "427:13:15", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" }, "typeName": { "contractScope": null, - "id": 1363, + "id": 1689, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 621, - "src": "427:6:9", + "referencedDeclaration": 750, + "src": "427:6:15", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } }, @@ -775,39 +775,39 @@ "visibility": "internal" } ], - "src": "426:15:9" + "src": "426:15:15" }, "payable": false, "returnParameters": { - "id": 1366, + "id": 1692, "nodeType": "ParameterList", "parameters": [], - "src": "461:0:9" + "src": "461:0:15" }, - "scope": 1404, - "src": "405:81:9", + "scope": 1730, + "src": "405:81:15", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1402, + "id": 1728, "nodeType": "Block", - "src": "897:803:9", + "src": "897:803:15", "statements": [ { "assignments": [ - 1379 + 1705 ], "declarations": [ { "constant": false, - "id": 1379, + "id": 1705, "name": "length", "nodeType": "VariableDeclaration", - "scope": 1403, - "src": "907:14:9", + "scope": 1729, + "src": "907:14:15", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -815,10 +815,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1378, + "id": 1704, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "907:7:9", + "src": "907:7:15", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -828,23 +828,23 @@ "visibility": "internal" } ], - "id": 1382, + "id": 1708, "initialValue": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1380, + "id": 1706, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1375, - "src": "924:4:9", + "referencedDeclaration": 1701, + "src": "924:4:15", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, - "id": 1381, + "id": 1707, "isConstant": false, "isLValue": false, "isPure": false, @@ -852,40 +852,40 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "924:11:9", + "src": "924:11:15", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "907:28:9" + "src": "907:28:15" }, { "assignments": [], "declarations": [ { "constant": false, - "id": 1384, + "id": 1710, "name": "module", "nodeType": "VariableDeclaration", - "scope": 1403, - "src": "945:13:9", + "scope": 1729, + "src": "945:13:15", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" }, "typeName": { "contractScope": null, - "id": 1383, + "id": 1709, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 621, - "src": "945:6:9", + "referencedDeclaration": 750, + "src": "945:6:15", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } }, @@ -893,23 +893,23 @@ "visibility": "internal" } ], - "id": 1385, + "id": 1711, "initialValue": null, "nodeType": "VariableDeclarationStatement", - "src": "945:13:9" + "src": "945:13:15" }, { "assignments": [ - 1387 + 1713 ], "declarations": [ { "constant": false, - "id": 1387, + "id": 1713, "name": "i", "nodeType": "VariableDeclaration", - "scope": 1403, - "src": "968:9:9", + "scope": 1729, + "src": "968:9:15", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -917,10 +917,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1386, + "id": 1712, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "968:7:9", + "src": "968:7:15", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -930,18 +930,18 @@ "visibility": "internal" } ], - "id": 1389, + "id": 1715, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 1388, + "id": 1714, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "980:1:9", + "src": "980:1:15", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -950,93 +950,93 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "968:13:9" + "src": "968:13:15" }, { "body": { - "id": 1400, + "id": 1726, "nodeType": "Block", - "src": "1010:684:9", + "src": "1010:684:15", "statements": [ { "externalReferences": [ { "module": { - "declaration": 1384, + "declaration": 1710, "isOffset": false, "isSlot": false, - "src": "1414:6:9", + "src": "1414:6:15", "valueSize": 1 } }, { "data": { - "declaration": 1375, + "declaration": 1701, "isOffset": false, "isSlot": false, - "src": "1164:4:9", + "src": "1164:4:15", "valueSize": 1 } }, { "i": { - "declaration": 1387, + "declaration": 1713, "isOffset": false, "isSlot": false, - "src": "1170:1:9", + "src": "1170:1:15", "valueSize": 1 } }, { "data": { - "declaration": 1375, + "declaration": 1701, "isOffset": false, "isSlot": false, - "src": "1224:4:9", + "src": "1224:4:15", "valueSize": 1 } }, { "i": { - "declaration": 1387, + "declaration": 1713, "isOffset": false, "isSlot": false, - "src": "1230:1:9", + "src": "1230:1:15", "valueSize": 1 } }, { "i": { - "declaration": 1387, + "declaration": 1713, "isOffset": false, "isSlot": false, - "src": "1557:1:9", + "src": "1557:1:15", "valueSize": 1 } }, { "proxyFactory": { - "declaration": 1373, + "declaration": 1699, "isOffset": false, "isSlot": false, - "src": "1317:12:9", + "src": "1317:12:15", "valueSize": 1 } }, { "i": { - "declaration": 1387, + "declaration": 1713, "isOffset": false, "isSlot": false, - "src": "1566:1:9", + "src": "1566:1:15", "valueSize": 1 } } ], - "id": 1393, + "id": 1719, "nodeType": "InlineAssembly", - "operations": "{\n let createBytesLength := mload(add(0x20, add(data, i)))\n let createBytes := add(0x40, add(data, i))\n let output := mload(0x40)\n if eq(delegatecall(gas(), proxyFactory, createBytes, createBytesLength, output, 0x20), 0)\n {\n revert(0, 0)\n }\n module := and(mload(output), 0xffffffffffffffffffffffffffffffffffffffff)\n i := add(i, add(0x20, mul(div(add(createBytesLength, 0x20), 0x20), 0x20)))\n}", - "src": "1092:570:9" + "operations": "{\n let createBytesLength := mload(add(0x20, add(data, i)))\n let createBytes := add(0x40, add(data, i))\n let output := mload(0x40)\n if eq(delegatecall(gas(), proxyFactory, createBytes, createBytesLength, output, 0x20), 0)\n {\n revert(0, 0)\n }\n module := and(mload(output), 0xffffffffffffffffffffffffffffffffffffffff)\n i := add(i, add(0x20, mul(div(add(createBytesLength, 0x1f), 0x20), 0x20)))\n}", + "src": "1092:570:15" }, { "expression": { @@ -1044,14 +1044,14 @@ "arguments": [ { "argumentTypes": null, - "id": 1397, + "id": 1723, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1384, - "src": "1676:6:9", + "referencedDeclaration": 1710, + "src": "1676:6:15", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } } @@ -1059,38 +1059,38 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } ], "expression": { "argumentTypes": null, - "id": 1394, + "id": 1720, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2427, - "src": "1658:4:9", + "referencedDeclaration": 2641, + "src": "1658:4:15", "typeDescriptions": { - "typeIdentifier": "t_contract$_CreateAndAddModules_$1404", + "typeIdentifier": "t_contract$_CreateAndAddModules_$1730", "typeString": "contract CreateAndAddModules" } }, - "id": 1396, + "id": 1722, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "enableModule", "nodeType": "MemberAccess", - "referencedDeclaration": 1371, - "src": "1658:17:9", + "referencedDeclaration": 1697, + "src": "1658:17:15", "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_contract$_Module_$621_$returns$__$", + "typeIdentifier": "t_function_external_nonpayable$_t_contract$_Module_$750_$returns$__$", "typeString": "function (contract Module) external" } }, - "id": 1398, + "id": 1724, "isConstant": false, "isLValue": false, "isPure": false, @@ -1098,15 +1098,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1658:25:9", + "src": "1658:25:15", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1399, + "id": 1725, "nodeType": "ExpressionStatement", - "src": "1658:25:9" + "src": "1658:25:15" } ] }, @@ -1116,19 +1116,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1392, + "id": 1718, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1390, + "id": 1716, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1387, - "src": "998:1:9", + "referencedDeclaration": 1713, + "src": "998:1:15", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1138,31 +1138,31 @@ "operator": "<", "rightExpression": { "argumentTypes": null, - "id": 1391, + "id": 1717, "name": "length", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1379, - "src": "1002:6:9", + "referencedDeclaration": 1705, + "src": "1002:6:15", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "998:10:9", + "src": "998:10:15", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 1401, + "id": 1727, "nodeType": "WhileStatement", - "src": "991:703:9" + "src": "991:703:15" } ] }, "documentation": "@dev Allows to create and add multiple module in one transaction.\n @param proxyFactory Module proxy factory contract.\n @param data Modules constructor payload. This is the data for each proxy factory call concatinated. (e.g. )", - "id": 1403, + "id": 1729, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -1170,16 +1170,16 @@ "name": "createAndAddModules", "nodeType": "FunctionDefinition", "parameters": { - "id": 1376, + "id": 1702, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1373, + "id": 1699, "name": "proxyFactory", "nodeType": "VariableDeclaration", - "scope": 1403, - "src": "844:20:9", + "scope": 1729, + "src": "844:20:15", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1187,10 +1187,10 @@ "typeString": "address" }, "typeName": { - "id": 1372, + "id": 1698, "name": "address", "nodeType": "ElementaryTypeName", - "src": "844:7:9", + "src": "844:7:15", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1201,11 +1201,11 @@ }, { "constant": false, - "id": 1375, + "id": 1701, "name": "data", "nodeType": "VariableDeclaration", - "scope": 1403, - "src": "866:10:9", + "scope": 1729, + "src": "866:10:15", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1213,10 +1213,10 @@ "typeString": "bytes" }, "typeName": { - "id": 1374, + "id": 1700, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "866:5:9", + "src": "866:5:15", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -1226,58 +1226,52 @@ "visibility": "internal" } ], - "src": "843:34:9" + "src": "843:34:15" }, "payable": false, "returnParameters": { - "id": 1377, + "id": 1703, "nodeType": "ParameterList", "parameters": [], - "src": "897:0:9" + "src": "897:0:15" }, - "scope": 1404, - "src": "815:885:9", + "scope": 1730, + "src": "815:885:15", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 1405, - "src": "245:1457:9" + "scope": 1731, + "src": "245:1457:15" } ], - "src": "0:1703:9" + "src": "0:1703:15" }, "compiler": { "name": "solc", - "version": "0.4.23+commit.124ca40d.Emscripten.clang" + "version": "0.4.24+commit.e67f0147.Emscripten.clang" }, "networks": { "4": { "events": {}, "links": {}, - "address": "0x824caabb57949792481937b7f2b4bb34d0d54354", - "transactionHash": "0xc8bb172c792293de7e58d6c15e6904606ba0560088570a6b465a439f96c530f8" + "address": "0x09938dc4aedf7573bea1acde27119525162caf86", + "transactionHash": "0x542ed496b9857fdad7870207cd3aa4de6ef756975a2f8f7b736e950aff77634e" }, - "1526478212260": { - "events": {}, - "links": {}, - "address": "0x0dfc419b1f993f1d14459f802c5f4966a50640fe", - "transactionHash": "0x0bb1edef06266204f2710df9365b39aac03e0527a4d9b5b5ca12b7b1fbe888d8" - }, - "1526973574996": { + "1527316019334": { "events": {}, "links": {}, - "address": "0x8dc367d2426d12c60633d4b8808f48164f5c9fce", - "transactionHash": "0x0bb1edef06266204f2710df9365b39aac03e0527a4d9b5b5ca12b7b1fbe888d8" + "address": "0x3476d04ef7a630db99177c493378763511783ecc", + "transactionHash": "0xa1f976aa57640d6f00fda50b5faa87e6395a25cb7ebcbdf43802038869c30189" }, - "1527316019334": { + "1527420696956": { "events": {}, "links": {}, - "address": "0x7836f09d609e4e1c6bd42ca90377ee5a30ccba75", - "transactionHash": "0x0bb1edef06266204f2710df9365b39aac03e0527a4d9b5b5ca12b7b1fbe888d8" + "address": "0xa13c4a216f6f3441841401afecdad68223f47cce", + "transactionHash": "0x5c5a77c0584fd75a1a9b7f932710af48fa6803a794ac7c28f17aea45b28c4f26" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-26T06:28:28.357Z" + "updatedAt": "2018-05-27T11:31:46.256Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/DailyLimitModule.json b/safe-contracts/build/contracts/DailyLimitModule.json index b94a18c4c7..aa13febbab 100644 --- a/safe-contracts/build/contracts/DailyLimitModule.json +++ b/safe-contracts/build/contracts/DailyLimitModule.json @@ -1,20 +1,6 @@ { "contractName": "DailyLimitModule", "abi": [ - { - "constant": true, - "inputs": [], - "name": "TRANSFER_FUNCTION_IDENTIFIER", - "outputs": [ - { - "name": "", - "type": "bytes4" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, { "constant": true, "inputs": [], @@ -138,16 +124,16 @@ "constant": false, "inputs": [ { - "name": "to", + "name": "token", "type": "address" }, { - "name": "value", - "type": "uint256" + "name": "to", + "type": "address" }, { - "name": "data", - "type": "bytes" + "name": "amount", + "type": "uint256" } ], "name": "executeDailyLimit", @@ -171,73 +157,73 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50610d72806100206000396000f3006080604052600436106100a4576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806328814f03146100a9578063430e47f814610152578063481c6a75146101bb5780637de7edef1461021257806381c5e03b14610255578063a3f4df7e146102a2578063b74e452b14610332578063d7bffc921461035d578063fce7379a146103c2578063ffa1ad7414610455575b600080fd5b3480156100b557600080fd5b5061015060048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192905050506104e5565b005b34801561015e57600080fd5b50610167610584565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b3480156101c757600080fd5b506101d06105a8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561021e57600080fd5b50610253600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506105ce565b005b34801561026157600080fd5b506102a0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610693565b005b3480156102ae57600080fd5b506102b761073a565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102f75780820151818401526020810190506102dc565b50505050905090810190601f1680156103245780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561033e57600080fd5b50610347610773565b6040518082815260200191505060405180910390f35b34801561036957600080fd5b5061039e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061078b565b60405180848152602001838152602001828152602001935050505060405180910390f35b3480156103ce57600080fd5b50610453600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506107b5565b005b34801561046157600080fd5b5061046a6107c6565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104aa57808201518184015260208101905061048f565b50505050905090810190601f1680156104d75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60006104ef6107ff565b600090505b825181101561057f57818181518110151561050b57fe5b9060200190602002015160026000858481518110151561052757fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555080806001019150506104f4565b505050565b7fa9059cbb0000000000000000000000000000000000000000000000000000000081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561062a57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561065057600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156106ef57600080fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055505050565b6040805190810160405280601281526020017f4461696c79204c696d6974204d6f64756c65000000000000000000000000000081525081565b6000620151804281151561078357fe5b064203905090565b60026020528060005260406000206000915090508060000154908060010154908060020154905083565b6107c133848484610889565b505050565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561084657600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600080600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e896040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561094c57600080fd5b505af1158015610960573d6000803e3d6000fd5b505050506040513d602081101561097657600080fd5b8101908080519060200190929190505050151561099257600080fd5b600085511480156109a35750600086115b806109bb5750600085511180156109ba5750600086145b5b15156109c657600080fd5b6000855114156109df5760009350869250859150610a64565b8693506020850151905060248501519250604485015191507fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141515610a6357600080fd5b5b60008373ffffffffffffffffffffffffffffffffffffffff1614151515610a8a57600080fd5b600082111515610a9957600080fd5b610aa38483610c97565b1515610aae57600080fd5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008282540192505081905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a788888860006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001836002811115610bb857fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b83811015610bf8578082015181840152602081019050610bdd565b50505050905090810190601f168015610c255780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610c4757600080fd5b505af1158015610c5b573d6000803e3d6000fd5b505050506040513d6020811015610c7157600080fd5b81019080805190602001909291905050501515610c8d57600080fd5b5050505050505050565b600080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060020154610ce8610773565b1115610d0957610cf6610773565b8160020181905550600081600101819055505b80600001548382600101540111158015610d2c5750806001015483826001015401115b15610d3a5760019150610d3f565b600091505b50929150505600a165627a7a723058202b262db46605128446bbaae57646d72dc1cd47e08c0421acebf8b1657c881b990029", - "deployedBytecode": "0x6080604052600436106100a4576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806328814f03146100a9578063430e47f814610152578063481c6a75146101bb5780637de7edef1461021257806381c5e03b14610255578063a3f4df7e146102a2578063b74e452b14610332578063d7bffc921461035d578063fce7379a146103c2578063ffa1ad7414610455575b600080fd5b3480156100b557600080fd5b5061015060048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192905050506104e5565b005b34801561015e57600080fd5b50610167610584565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b3480156101c757600080fd5b506101d06105a8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561021e57600080fd5b50610253600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506105ce565b005b34801561026157600080fd5b506102a0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610693565b005b3480156102ae57600080fd5b506102b761073a565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102f75780820151818401526020810190506102dc565b50505050905090810190601f1680156103245780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561033e57600080fd5b50610347610773565b6040518082815260200191505060405180910390f35b34801561036957600080fd5b5061039e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061078b565b60405180848152602001838152602001828152602001935050505060405180910390f35b3480156103ce57600080fd5b50610453600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506107b5565b005b34801561046157600080fd5b5061046a6107c6565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104aa57808201518184015260208101905061048f565b50505050905090810190601f1680156104d75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60006104ef6107ff565b600090505b825181101561057f57818181518110151561050b57fe5b9060200190602002015160026000858481518110151561052757fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555080806001019150506104f4565b505050565b7fa9059cbb0000000000000000000000000000000000000000000000000000000081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561062a57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561065057600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156106ef57600080fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055505050565b6040805190810160405280601281526020017f4461696c79204c696d6974204d6f64756c65000000000000000000000000000081525081565b6000620151804281151561078357fe5b064203905090565b60026020528060005260406000206000915090508060000154908060010154908060020154905083565b6107c133848484610889565b505050565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561084657600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600080600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e896040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561094c57600080fd5b505af1158015610960573d6000803e3d6000fd5b505050506040513d602081101561097657600080fd5b8101908080519060200190929190505050151561099257600080fd5b600085511480156109a35750600086115b806109bb5750600085511180156109ba5750600086145b5b15156109c657600080fd5b6000855114156109df5760009350869250859150610a64565b8693506020850151905060248501519250604485015191507fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141515610a6357600080fd5b5b60008373ffffffffffffffffffffffffffffffffffffffff1614151515610a8a57600080fd5b600082111515610a9957600080fd5b610aa38483610c97565b1515610aae57600080fd5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008282540192505081905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a788888860006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001836002811115610bb857fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b83811015610bf8578082015181840152602081019050610bdd565b50505050905090810190601f168015610c255780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610c4757600080fd5b505af1158015610c5b573d6000803e3d6000fd5b505050506040513d6020811015610c7157600080fd5b81019080805190602001909291905050501515610c8d57600080fd5b5050505050505050565b600080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060020154610ce8610773565b1115610d0957610cf6610773565b8160020181905550600081600101819055505b80600001548382600101540111158015610d2c5750806001015483826001015401115b15610d3a5760019150610d3f565b600091505b50929150505600a165627a7a723058202b262db46605128446bbaae57646d72dc1cd47e08c0421acebf8b1657c881b990029", - "sourceMap": "296:3862:10:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;296:3862:10;;;;;;;", - "deployedSourceMap": "296:3862:10:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;991:222;;8:9:-1;5:2;;;30:1;27;20:12;5:2;991:222:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;441:67;;8:9:-1;5:2;;;30:1;27;20:12;5:2;441:67:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;262:28:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;262:28:5;;;;;;;;;;;;;;;;;;;;;;;;;;;626:208:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:208:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;1441:158:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1441:158:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;339:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;339:50:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;339:50:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4040:116;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4040:116:10;;;;;;;;;;;;;;;;;;;;;;;586:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;586:50:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3308:146;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3308:146:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;395:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;395:40:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;395:40:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;991:222;1104:9;1077:12;:10;:12::i;:::-;1116:1;1104:13;;1099:107;1123:6;:13;1119:1;:17;1099:107;;;1191:12;1204:1;1191:15;;;;;;;;;;;;;;;;;;1155:11;:22;1167:6;1174:1;1167:9;;;;;;;;;;;;;;;;;;1155:22;;;;;;;;;;;;;;;:33;;:51;;;;1138:3;;;;;;;1099:107;;;991:222;;;:::o;441:67::-;;;:::o;262:28:5:-;;;;;;;;;;;;;:::o;626:208:4:-;359:7:5;;;;;;;;;;;337:30;;:10;:30;;;329:39;;;;;;;;791:1:4;776:11;:16;;;;768:25;;;;;;;;816:11;803:10;;:24;;;;;;;;;;;;;;;;;;626:208;:::o;1441:158:10:-;359:7:5;;;;;;;;;;;337:30;;:10;:30;;;329:39;;;;;;;;1582:10:10;1550:11;:18;1562:5;1550:18;;;;;;;;;;;;;;;:29;;:42;;;;1441:158;;:::o;339:50::-;;;;;;;;;;;;;;;;;;;;:::o;4040:116::-;4102:4;4142:6;4136:3;:12;;;;;;;;4129:3;:20;4122:27;;4040:116;:::o;586:50::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3308:146::-;3403:44;3419:10;3431:2;3435:5;3442:4;3403:15;:44::i;:::-;3308:146;;;:::o;395:40::-;;;;;;;;;;;;;;;;;;;;:::o;392:268:5:-;606:1;594:7;;;;;;;;;;;586:21;;;578:30;;;;;;;;642:10;618:7;;:35;;;;;;;;;;;;;;;;;;392:268::o;1605:1319:10:-;1997:13;2020:16;2046:14;2233:25;1814:7;;;;;;;;;;;1801:29;;;1831:6;1801:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1801:37:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1801:37:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1801:37:10;;;;;;;;;;;;;;;;1793:46;;;;;;;;1939:1;1924:4;:11;:16;:29;;;;;1952:1;1944:5;:9;1924:29;:62;;;;1971:1;1957:4;:11;:15;:29;;;;;1985:1;1976:5;:10;1957:29;1924:62;1916:71;;;;;;;;2089:1;2074:4;:11;:16;2070:538;;;2114:1;2106:9;;2140:2;2129:13;;2165:5;2156:14;;2070:538;;;2217:2;2209:10;;2405:4;2399;2395:15;2389:22;2367:44;;2456:4;2450;2446:15;2440:22;2428:34;;2505:4;2499;2495:15;2489:22;2479:32;;2568:28;2546:50;;;:18;:50;;;;2538:59;;;;;;;;2070:538;2637:1;2625:8;:13;;;;2617:22;;;;;;;;2666:1;2657:6;:10;2649:19;;;;;;;;2750:27;2763:5;2770:6;2750:12;:27::i;:::-;2742:36;;;;;;;;2821:6;2788:11;:18;2800:5;2788:18;;;;;;;;;;;;;;;:29;;;:39;;;;;;;;;;;2845:7;;;;;;;;;;;:33;;;2879:2;2883:5;2890:4;2896:19;2845:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;2845:71:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2845:71:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2845:71:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2845:71:10;;;;;;;;;;;;;;;;2837:80;;;;;;;;1605:1319;;;;;;;;:::o;3460:488::-;3547:4;3567:29;3599:11;:18;3611:5;3599:18;;;;;;;;;;;;;;;3567:50;;3641:10;:18;;;3631:7;:5;:7::i;:::-;:28;3627:126;;;3696:7;:5;:7::i;:::-;3675:10;:18;;:28;;;;3741:1;3717:10;:21;;:25;;;;3627:126;3803:10;:21;;;3793:6;3769:10;:21;;;:30;:55;;:125;;;;;3873:10;:21;;;3864:6;3840:10;:21;;;:30;:54;3769:125;3762:157;;;3915:4;3908:11;;;;3762:157;3936:5;3929:12;;3460:488;;;;;;:::o", - "source": "pragma solidity 0.4.23;\nimport \"../Module.sol\";\nimport \"../ModuleManager.sol\";\nimport \"../OwnerManager.sol\";\nimport \"../Enum.sol\";\n\n\n/// @title Daily Limit Module - Allows to transfer limited amounts of ERC20 tokens and Ether without confirmations.\n/// @author Stefan George - \ncontract DailyLimitModule is Module {\n\n string public constant NAME = \"Daily Limit Module\";\n string public constant VERSION = \"0.0.1\";\n bytes4 public constant TRANSFER_FUNCTION_IDENTIFIER = hex\"a9059cbb\";\n\n // dailyLimits mapping maps token address to daily limit settings.\n mapping (address => DailyLimit) public dailyLimits;\n\n struct DailyLimit {\n uint256 dailyLimit;\n uint256 spentToday;\n uint256 lastDay;\n }\n\n /// @dev Setup function sets initial storage of contract.\n /// @param tokens List of token addresses. Ether is represented with address 0x0.\n /// @param _dailyLimits List of daily limits in smalles units (e.g. Wei for Ether).\n function setup(address[] tokens, uint256[] _dailyLimits)\n public\n {\n setManager();\n for (uint256 i = 0; i < tokens.length; i++)\n dailyLimits[tokens[i]].dailyLimit = _dailyLimits[i];\n }\n\n /// @dev Allows to update the daily limit for a specified token. This can only be done via a Safe transaction.\n /// @param token Token contract address.\n /// @param dailyLimit Daily limit in smallest token unit.\n function changeDailyLimit(address token, uint256 dailyLimit)\n public\n authorized\n {\n dailyLimits[token].dailyLimit = dailyLimit;\n }\n\n function executeInternal(address sender, address to, uint256 value, bytes data)\n internal\n {\n // Only Safe owners are allowed to execute daily limit transactions.\n require(OwnerManager(manager).isOwner(sender));\n // Data has to encode a token transfer or has to be empty.\n require(data.length == 0 && value > 0 || data.length > 0 && value == 0);\n address token;\n address receiver;\n uint256 amount;\n if (data.length == 0) {\n token = 0;\n receiver = to;\n amount = value;\n }\n else {\n token = to;\n bytes4 functionIdentifier;\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n functionIdentifier := mload(add(data, 0x20))\n receiver := mload(add(data, 0x24))\n amount := mload(add(data, 0x44))\n }\n require(functionIdentifier == TRANSFER_FUNCTION_IDENTIFIER);\n }\n require(receiver != 0);\n require(amount > 0);\n // Validate that transfer is not exceeding daily limit.\n require(isUnderLimit(token, amount));\n dailyLimits[token].spentToday += amount;\n require(manager.execTransactionFromModule(to, value, data, Enum.Operation.Call));\n }\n\n /// @dev Returns if Safe transaction is a valid daily limit transaction.\n /// @param to Receiver address in case of Ether transfer, token address in case of a token transfer.\n /// @param value Ether value in case of an Ether transfer.\n /// @param data Encoded token transfer. Empty in case of Ether transfer.\n /// @return Returns if transaction can be executed.\n function executeDailyLimit(address to, uint256 value, bytes data)\n public\n {\n executeInternal(msg.sender, to, value, data);\n }\n\n function isUnderLimit(address token, uint256 amount)\n internal\n returns (bool)\n {\n DailyLimit storage dailyLimit = dailyLimits[token];\n if (today() > dailyLimit.lastDay) {\n dailyLimit.lastDay = today();\n dailyLimit.spentToday = 0;\n }\n if ( dailyLimit.spentToday + amount <= dailyLimit.dailyLimit\n && dailyLimit.spentToday + amount > dailyLimit.spentToday)\n return true;\n return false;\n }\n\n /// @dev Returns last midnight as Unix timestamp.\n /// @return Unix timestamp.\n function today()\n public\n view\n returns (uint)\n {\n return now - (now % 1 days);\n }\n}\n", + "bytecode": "0x608060405234801561001057600080fd5b50610de9806100206000396000f300608060405260043610610099576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806328814f031461009e578063481c6a751461014757806363bae7c31461019e5780637de7edef1461020b57806381c5e03b1461024e578063a3f4df7e1461029b578063b74e452b1461032b578063d7bffc9214610356578063ffa1ad74146103bb575b600080fd5b3480156100aa57600080fd5b50610145600480360381019080803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929050505061044b565b005b34801561015357600080fd5b5061015c6104ea565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101aa57600080fd5b50610209600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610510565b005b34801561021757600080fd5b5061024c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a64565b005b34801561025a57600080fd5b50610299600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b29565b005b3480156102a757600080fd5b506102b0610bd0565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102f05780820151818401526020810190506102d5565b50505050905090810190601f16801561031d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561033757600080fd5b50610340610c09565b6040518082815260200191505060405180910390f35b34801561036257600080fd5b50610397600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c21565b60405180848152602001838152602001828152602001935050505060405180910390f35b3480156103c757600080fd5b506103d0610c4b565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104105780820151818401526020810190506103f5565b50505050905090810190601f16801561043d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000610455610c84565b600090505b82518110156104e557818181518110151561047157fe5b9060200190602002015160026000858481518110151561048d57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550808060010191505061045a565b505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156105cf57600080fd5b505af11580156105e3573d6000803e3d6000fd5b505050506040513d60208110156105f957600080fd5b8101908080519060200190929190505050151561061557600080fd5b60008373ffffffffffffffffffffffffffffffffffffffff161415151561063b57600080fd5b60008211151561064a57600080fd5b6106548483610d0e565b151561065f57600080fd5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016000828254019250508190555060008473ffffffffffffffffffffffffffffffffffffffff16141561080957600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a7848460006040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018060200183600281111561078757fe5b60ff168152602001828103825260008152602001602001945050505050602060405180830381600087803b1580156107be57600080fd5b505af11580156107d2573d6000803e3d6000fd5b505050506040513d60208110156107e857600080fd5b8101908080519060200190929190505050151561080457600080fd5b610a5e565b8282604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001925050506040516020818303038152906040527fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a78560008460006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200183600281111561098857fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b838110156109c85780820151818401526020810190506109ad565b50505050905090810190601f1680156109f55780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610a1757600080fd5b505af1158015610a2b573d6000803e3d6000fd5b505050506040513d6020811015610a4157600080fd5b81019080805190602001909291905050501515610a5d57600080fd5b5b50505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610ac057600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610ae657600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b8557600080fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055505050565b6040805190810160405280601281526020017f4461696c79204c696d6974204d6f64756c65000000000000000000000000000081525081565b60006201518042811515610c1957fe5b064203905090565b60026020528060005260406000206000915090508060000154908060010154908060020154905083565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610ccb57600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060020154610d5f610c09565b1115610d8057610d6d610c09565b8160020181905550600081600101819055505b80600001548382600101540111158015610da35750806001015483826001015401115b15610db15760019150610db6565b600091505b50929150505600a165627a7a723058204a6f633058d32a4c7f0a2649d73dd0a0048102b89b6ddd371abdbd004bd34c790029", + "deployedBytecode": "0x608060405260043610610099576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806328814f031461009e578063481c6a751461014757806363bae7c31461019e5780637de7edef1461020b57806381c5e03b1461024e578063a3f4df7e1461029b578063b74e452b1461032b578063d7bffc9214610356578063ffa1ad74146103bb575b600080fd5b3480156100aa57600080fd5b50610145600480360381019080803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929050505061044b565b005b34801561015357600080fd5b5061015c6104ea565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101aa57600080fd5b50610209600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610510565b005b34801561021757600080fd5b5061024c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a64565b005b34801561025a57600080fd5b50610299600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b29565b005b3480156102a757600080fd5b506102b0610bd0565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102f05780820151818401526020810190506102d5565b50505050905090810190601f16801561031d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561033757600080fd5b50610340610c09565b6040518082815260200191505060405180910390f35b34801561036257600080fd5b50610397600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c21565b60405180848152602001838152602001828152602001935050505060405180910390f35b3480156103c757600080fd5b506103d0610c4b565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104105780820151818401526020810190506103f5565b50505050905090810190601f16801561043d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000610455610c84565b600090505b82518110156104e557818181518110151561047157fe5b9060200190602002015160026000858481518110151561048d57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550808060010191505061045a565b505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156105cf57600080fd5b505af11580156105e3573d6000803e3d6000fd5b505050506040513d60208110156105f957600080fd5b8101908080519060200190929190505050151561061557600080fd5b60008373ffffffffffffffffffffffffffffffffffffffff161415151561063b57600080fd5b60008211151561064a57600080fd5b6106548483610d0e565b151561065f57600080fd5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016000828254019250508190555060008473ffffffffffffffffffffffffffffffffffffffff16141561080957600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a7848460006040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018060200183600281111561078757fe5b60ff168152602001828103825260008152602001602001945050505050602060405180830381600087803b1580156107be57600080fd5b505af11580156107d2573d6000803e3d6000fd5b505050506040513d60208110156107e857600080fd5b8101908080519060200190929190505050151561080457600080fd5b610a5e565b8282604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001925050506040516020818303038152906040527fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a78560008460006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200183600281111561098857fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b838110156109c85780820151818401526020810190506109ad565b50505050905090810190601f1680156109f55780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610a1757600080fd5b505af1158015610a2b573d6000803e3d6000fd5b505050506040513d6020811015610a4157600080fd5b81019080805190602001909291905050501515610a5d57600080fd5b5b50505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610ac057600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610ae657600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b8557600080fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055505050565b6040805190810160405280601281526020017f4461696c79204c696d6974204d6f64756c65000000000000000000000000000081525081565b60006201518042811515610c1957fe5b064203905090565b60026020528060005260406000206000915090508060000154908060010154908060020154905083565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610ccb57600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060020154610d5f610c09565b1115610d8057610d6d610c09565b8160020181905550600081600101819055505b80600001548382600101540111158015610da35750806001015483826001015401115b15610db15760019150610db6565b600091505b50929150505600a165627a7a723058204a6f633058d32a4c7f0a2649d73dd0a0048102b89b6ddd371abdbd004bd34c790029", + "sourceMap": "296:3082:17:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;296:3082:17;;;;;;;", + "deployedSourceMap": "296:3082:17:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;918:222;;8:9:-1;5:2;;;30:1;27;20:12;5:2;918:222:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;262:28:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;262:28:7;;;;;;;;;;;;;;;;;;;;;;;;;;;1890:784:17;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1890:784:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;626:208:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:208:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;1368:158:17;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1368:158:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;339:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;339:50:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;339:50:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3260:116;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3260:116:17;;;;;;;;;;;;;;;;;;;;;;;513:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;513:50:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;395:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;395:40:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;395:40:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;918:222;1031:9;1004:12;:10;:12::i;:::-;1043:1;1031:13;;1026:107;1050:6;:13;1046:1;:17;1026:107;;;1118:12;1131:1;1118:15;;;;;;;;;;;;;;;;;;1082:11;:22;1094:6;1101:1;1094:9;;;;;;;;;;;;;;;;;;1082:22;;;;;;;;;;;;;;;:33;;:51;;;;1065:3;;;;;;;1026:107;;;918:222;;;:::o;262:28:7:-;;;;;;;;;;;;;:::o;1890:784:17:-;2480:17;2087:7;;;;;;;;;;;2074:29;;;2104:10;2074:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2074:41:17;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2074:41:17;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2074:41:17;;;;;;;;;;;;;;;;2066:50;;;;;;;;2140:1;2134:2;:7;;;;2126:16;;;;;;;;2169:1;2160:6;:10;2152:19;;;;;;;;2253:27;2266:5;2273:6;2253:12;:27::i;:::-;2245:36;;;;;;;;2324:6;2291:11;:18;2303:5;2291:18;;;;;;;;;;;;;;;:29;;;:39;;;;;;;;;;;2353:1;2344:5;:10;;;2340:328;;;2378:7;;;;;;;;;;;:33;;;2412:2;2416:6;2428:19;2378:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2378:70:17;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2378:70:17;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2378:70:17;;;;;;;;;;;;;;;;2370:79;;;;;;;;2340:328;;;2553:2;2557:6;2500:64;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2500:64:17;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;2500:64:17;2480:84;;2586:7;;;;;;;;;;;:33;;;2620:5;2627:1;2630:4;2636:19;2586:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;2586:70:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2586:70:17;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2586:70:17;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2586:70:17;;;;;;;;;;;;;;;;2578:79;;;;;;;;2340:328;1890:784;;;;:::o;626:208:5:-;359:7:7;;;;;;;;;;;337:30;;:10;:30;;;329:39;;;;;;;;791:1:5;776:11;:16;;;;768:25;;;;;;;;816:11;803:10;;:24;;;;;;;;;;;;;;;;;;626:208;:::o;1368:158:17:-;359:7:7;;;;;;;;;;;337:30;;:10;:30;;;329:39;;;;;;;;1509:10:17;1477:11;:18;1489:5;1477:18;;;;;;;;;;;;;;;:29;;:42;;;;1368:158;;:::o;339:50::-;;;;;;;;;;;;;;;;;;;;:::o;3260:116::-;3322:4;3362:6;3356:3;:12;;;;;;;;3349:3;:20;3342:27;;3260:116;:::o;513:50::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;395:40::-;;;;;;;;;;;;;;;;;;;;:::o;392:268:7:-;606:1;594:7;;;;;;;;;;;586:21;;;578:30;;;;;;;;642:10;618:7;;:35;;;;;;;;;;;;;;;;;;392:268::o;2680:488:17:-;2767:4;2787:29;2819:11;:18;2831:5;2819:18;;;;;;;;;;;;;;;2787:50;;2861:10;:18;;;2851:7;:5;:7::i;:::-;:28;2847:126;;;2916:7;:5;:7::i;:::-;2895:10;:18;;:28;;;;2961:1;2937:10;:21;;:25;;;;2847:126;3023:10;:21;;;3013:6;2989:10;:21;;;:30;:55;;:125;;;;;3093:10;:21;;;3084:6;3060:10;:21;;;:30;:54;2989:125;2982:157;;;3135:4;3128:11;;;;2982:157;3156:5;3149:12;;2680:488;;;;;;:::o", + "source": "pragma solidity 0.4.24;\nimport \"../Module.sol\";\nimport \"../ModuleManager.sol\";\nimport \"../OwnerManager.sol\";\nimport \"../Enum.sol\";\n\n\n/// @title Daily Limit Module - Allows to transfer limited amounts of ERC20 tokens and Ether without confirmations.\n/// @author Stefan George - \ncontract DailyLimitModule is Module {\n\n string public constant NAME = \"Daily Limit Module\";\n string public constant VERSION = \"0.0.1\";\n\n // dailyLimits mapping maps token address to daily limit settings.\n mapping (address => DailyLimit) public dailyLimits;\n\n struct DailyLimit {\n uint256 dailyLimit;\n uint256 spentToday;\n uint256 lastDay;\n }\n\n /// @dev Setup function sets initial storage of contract.\n /// @param tokens List of token addresses. Ether is represented with address 0x0.\n /// @param _dailyLimits List of daily limits in smalles units (e.g. Wei for Ether).\n function setup(address[] tokens, uint256[] _dailyLimits)\n public\n {\n setManager();\n for (uint256 i = 0; i < tokens.length; i++)\n dailyLimits[tokens[i]].dailyLimit = _dailyLimits[i];\n }\n\n /// @dev Allows to update the daily limit for a specified token. This can only be done via a Safe transaction.\n /// @param token Token contract address.\n /// @param dailyLimit Daily limit in smallest token unit.\n function changeDailyLimit(address token, uint256 dailyLimit)\n public\n authorized\n {\n dailyLimits[token].dailyLimit = dailyLimit;\n }\n\n /// @dev Returns if Safe transaction is a valid daily limit transaction.\n /// @param token Address of the token that should be transfered (0 for Ether)\n /// @param to Address to which the tokens should be transfered\n /// @param amount Amount of tokens (or Ether) that should be transfered\n /// @return Returns if transaction can be executed.\n function executeDailyLimit(address token, address to, uint256 amount)\n public\n {\n // Only Safe owners are allowed to execute daily limit transactions.\n require(OwnerManager(manager).isOwner(msg.sender));\n require(to != 0);\n require(amount > 0);\n // Validate that transfer is not exceeding daily limit.\n require(isUnderLimit(token, amount));\n dailyLimits[token].spentToday += amount;\n if (token == 0) {\n require(manager.execTransactionFromModule(to, amount, \"\", Enum.Operation.Call));\n } else {\n bytes memory data = abi.encodeWithSignature(\"transfer(address,uint256)\", to, amount);\n require(manager.execTransactionFromModule(token, 0, data, Enum.Operation.Call));\n }\n }\n\n function isUnderLimit(address token, uint256 amount)\n internal\n returns (bool)\n {\n DailyLimit storage dailyLimit = dailyLimits[token];\n if (today() > dailyLimit.lastDay) {\n dailyLimit.lastDay = today();\n dailyLimit.spentToday = 0;\n }\n if ( dailyLimit.spentToday + amount <= dailyLimit.dailyLimit\n && dailyLimit.spentToday + amount > dailyLimit.spentToday)\n return true;\n return false;\n }\n\n /// @dev Returns last midnight as Unix timestamp.\n /// @return Unix timestamp.\n function today()\n public\n view\n returns (uint)\n {\n return now - (now % 1 days);\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/DailyLimitModule.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/DailyLimitModule.sol", "exportedSymbols": { "DailyLimitModule": [ - 1694 + 1973 ] }, - "id": 1695, + "id": 1974, "nodeType": "SourceUnit", "nodes": [ { - "id": 1406, + "id": 1742, "literals": [ "solidity", "0.4", - ".23" + ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:10" + "src": "0:23:17" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "file": "../Module.sol", - "id": 1407, + "id": 1743, "nodeType": "ImportDirective", - "scope": 1695, - "sourceUnit": 622, - "src": "24:23:10", + "scope": 1974, + "sourceUnit": 751, + "src": "24:23:17", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ModuleManager.sol", "file": "../ModuleManager.sol", - "id": 1408, + "id": 1744, "nodeType": "ImportDirective", - "scope": 1695, - "sourceUnit": 972, - "src": "48:30:10", + "scope": 1974, + "sourceUnit": 1101, + "src": "48:30:17", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", "file": "../OwnerManager.sol", - "id": 1409, + "id": 1745, "nodeType": "ImportDirective", - "scope": 1695, - "sourceUnit": 1344, - "src": "79:29:10", + "scope": 1974, + "sourceUnit": 1473, + "src": "79:29:17", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Enum.sol", "file": "../Enum.sol", - "id": 1410, + "id": 1746, "nodeType": "ImportDirective", - "scope": 1695, - "sourceUnit": 7, - "src": "109:21:10", + "scope": 1974, + "sourceUnit": 31, + "src": "109:21:17", "symbolAliases": [], "unitAlias": "" }, @@ -247,46 +233,46 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 1411, + "id": 1747, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 621, - "src": "325:6:10", + "referencedDeclaration": 750, + "src": "325:6:17", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } }, - "id": 1412, + "id": 1748, "nodeType": "InheritanceSpecifier", - "src": "325:6:10" + "src": "325:6:17" } ], "contractDependencies": [ - 580, - 621, - 1359 + 652, + 750, + 1619 ], "contractKind": "contract", "documentation": "@title Daily Limit Module - Allows to transfer limited amounts of ERC20 tokens and Ether without confirmations.\n @author Stefan George - ", "fullyImplemented": true, - "id": 1694, + "id": 1973, "linearizedBaseContracts": [ - 1694, - 621, - 580, - 1359 + 1973, + 750, + 652, + 1619 ], "name": "DailyLimitModule", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, - "id": 1415, + "id": 1751, "name": "NAME", "nodeType": "VariableDeclaration", - "scope": 1694, - "src": "339:50:10", + "scope": 1973, + "src": "339:50:17", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -294,10 +280,10 @@ "typeString": "string" }, "typeName": { - "id": 1413, + "id": 1749, "name": "string", "nodeType": "ElementaryTypeName", - "src": "339:6:10", + "src": "339:6:17", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -306,14 +292,14 @@ "value": { "argumentTypes": null, "hexValue": "4461696c79204c696d6974204d6f64756c65", - "id": 1414, + "id": 1750, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "369:20:10", + "src": "369:20:17", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_821ea27acfbc77b49f7a021dbe2eb92017d46b8bdda0bff9901cbc8ee143ceb3", @@ -325,11 +311,11 @@ }, { "constant": true, - "id": 1418, + "id": 1754, "name": "VERSION", "nodeType": "VariableDeclaration", - "scope": 1694, - "src": "395:40:10", + "scope": 1973, + "src": "395:40:17", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -337,10 +323,10 @@ "typeString": "string" }, "typeName": { - "id": 1416, + "id": 1752, "name": "string", "nodeType": "ElementaryTypeName", - "src": "395:6:10", + "src": "395:6:17", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -349,14 +335,14 @@ "value": { "argumentTypes": null, "hexValue": "302e302e31", - "id": 1417, + "id": 1753, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "428:7:10", + "src": "428:7:17", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", @@ -366,89 +352,46 @@ }, "visibility": "public" }, - { - "constant": true, - "id": 1421, - "name": "TRANSFER_FUNCTION_IDENTIFIER", - "nodeType": "VariableDeclaration", - "scope": 1694, - "src": "441:67:10", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - "typeName": { - "id": 1419, - "name": "bytes4", - "nodeType": "ElementaryTypeName", - "src": "441:6:10", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "value": { - "argumentTypes": null, - "hexValue": "a9059cbb", - "id": 1420, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "495:13:10", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_abce0605a16ff5e998983a0af570b8ad942bb11e305eb20ae3ada0a3be24eb97", - "typeString": "literal_string (contains invalid UTF-8 sequence at position 0)" - }, - "value": null - }, - "visibility": "public" - }, { "constant": false, - "id": 1425, + "id": 1758, "name": "dailyLimits", "nodeType": "VariableDeclaration", - "scope": 1694, - "src": "586:50:10", + "scope": 1973, + "src": "513:50:17", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1432_storage_$", + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1765_storage_$", "typeString": "mapping(address => struct DailyLimitModule.DailyLimit)" }, "typeName": { - "id": 1424, + "id": 1757, "keyType": { - "id": 1422, + "id": 1755, "name": "address", "nodeType": "ElementaryTypeName", - "src": "595:7:10", + "src": "522:7:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "586:31:10", + "src": "513:31:17", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1432_storage_$", + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1765_storage_$", "typeString": "mapping(address => struct DailyLimitModule.DailyLimit)" }, "valueType": { "contractScope": null, - "id": 1423, + "id": 1756, "name": "DailyLimit", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1432, - "src": "606:10:10", + "referencedDeclaration": 1765, + "src": "533:10:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1432_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1765_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit" } } @@ -458,15 +401,15 @@ }, { "canonicalName": "DailyLimitModule.DailyLimit", - "id": 1432, + "id": 1765, "members": [ { "constant": false, - "id": 1427, + "id": 1760, "name": "dailyLimit", "nodeType": "VariableDeclaration", - "scope": 1432, - "src": "671:18:10", + "scope": 1765, + "src": "598:18:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -474,10 +417,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1426, + "id": 1759, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "671:7:10", + "src": "598:7:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -488,11 +431,11 @@ }, { "constant": false, - "id": 1429, + "id": 1762, "name": "spentToday", "nodeType": "VariableDeclaration", - "scope": 1432, - "src": "699:18:10", + "scope": 1765, + "src": "626:18:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -500,10 +443,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1428, + "id": 1761, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "699:7:10", + "src": "626:7:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -514,11 +457,11 @@ }, { "constant": false, - "id": 1431, + "id": 1764, "name": "lastDay", "nodeType": "VariableDeclaration", - "scope": 1432, - "src": "727:15:10", + "scope": 1765, + "src": "654:15:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -526,10 +469,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1430, + "id": 1763, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "727:7:10", + "src": "654:7:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -541,15 +484,15 @@ ], "name": "DailyLimit", "nodeType": "StructDefinition", - "scope": 1694, - "src": "643:106:10", + "scope": 1973, + "src": "570:106:17", "visibility": "public" }, { "body": { - "id": 1467, + "id": 1800, "nodeType": "Block", - "src": "1067:146:10", + "src": "994:146:17", "statements": [ { "expression": { @@ -557,18 +500,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 1441, + "id": 1774, "name": "setManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 620, - "src": "1077:10:10", + "referencedDeclaration": 749, + "src": "1004:10:17", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 1442, + "id": 1775, "isConstant": false, "isLValue": false, "isPure": false, @@ -576,21 +519,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1077:12:10", + "src": "1004:12:17", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1443, + "id": 1776, "nodeType": "ExpressionStatement", - "src": "1077:12:10" + "src": "1004:12:17" }, { "body": { "expression": { "argumentTypes": null, - "id": 1464, + "id": 1797, "isConstant": false, "isLValue": false, "isPure": false, @@ -601,42 +544,42 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1455, + "id": 1788, "name": "dailyLimits", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1425, - "src": "1155:11:10", + "referencedDeclaration": 1758, + "src": "1082:11:17", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1432_storage_$", + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1765_storage_$", "typeString": "mapping(address => struct DailyLimitModule.DailyLimit storage ref)" } }, - "id": 1459, + "id": 1792, "indexExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1456, + "id": 1789, "name": "tokens", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1435, - "src": "1167:6:10", + "referencedDeclaration": 1768, + "src": "1094:6:17", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1458, + "id": 1791, "indexExpression": { "argumentTypes": null, - "id": 1457, + "id": 1790, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1445, - "src": "1174:1:10", + "referencedDeclaration": 1778, + "src": "1101:1:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -647,7 +590,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1167:9:10", + "src": "1094:9:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -658,21 +601,21 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1155:22:10", + "src": "1082:22:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1432_storage", + "typeIdentifier": "t_struct$_DailyLimit_$1765_storage", "typeString": "struct DailyLimitModule.DailyLimit storage ref" } }, - "id": 1460, + "id": 1793, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "dailyLimit", "nodeType": "MemberAccess", - "referencedDeclaration": 1427, - "src": "1155:33:10", + "referencedDeclaration": 1760, + "src": "1082:33:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -684,26 +627,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1461, + "id": 1794, "name": "_dailyLimits", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1438, - "src": "1191:12:10", + "referencedDeclaration": 1771, + "src": "1118:12:17", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" } }, - "id": 1463, + "id": 1796, "indexExpression": { "argumentTypes": null, - "id": 1462, + "id": 1795, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1445, - "src": "1204:1:10", + "referencedDeclaration": 1778, + "src": "1131:1:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -714,21 +657,21 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1191:15:10", + "src": "1118:15:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1155:51:10", + "src": "1082:51:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1465, + "id": 1798, "nodeType": "ExpressionStatement", - "src": "1155:51:10" + "src": "1082:51:17" }, "condition": { "argumentTypes": null, @@ -736,19 +679,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1451, + "id": 1784, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1448, + "id": 1781, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1445, - "src": "1119:1:10", + "referencedDeclaration": 1778, + "src": "1046:1:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -760,18 +703,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1449, + "id": 1782, "name": "tokens", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1435, - "src": "1123:6:10", + "referencedDeclaration": 1768, + "src": "1050:6:17", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1450, + "id": 1783, "isConstant": false, "isLValue": false, "isPure": false, @@ -779,31 +722,31 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1123:13:10", + "src": "1050:13:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1119:17:10", + "src": "1046:17:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 1466, + "id": 1799, "initializationExpression": { "assignments": [ - 1445 + 1778 ], "declarations": [ { "constant": false, - "id": 1445, + "id": 1778, "name": "i", "nodeType": "VariableDeclaration", - "scope": 1468, - "src": "1104:9:10", + "scope": 1801, + "src": "1031:9:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -811,10 +754,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1444, + "id": 1777, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1104:7:10", + "src": "1031:7:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -824,18 +767,18 @@ "visibility": "internal" } ], - "id": 1447, + "id": 1780, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 1446, + "id": 1779, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1116:1:10", + "src": "1043:1:17", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -844,12 +787,12 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "1104:13:10" + "src": "1031:13:17" }, "loopExpression": { "expression": { "argumentTypes": null, - "id": 1453, + "id": 1786, "isConstant": false, "isLValue": false, "isPure": false, @@ -857,15 +800,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "1138:3:10", + "src": "1065:3:17", "subExpression": { "argumentTypes": null, - "id": 1452, + "id": 1785, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1445, - "src": "1138:1:10", + "referencedDeclaration": 1778, + "src": "1065:1:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -876,17 +819,17 @@ "typeString": "uint256" } }, - "id": 1454, + "id": 1787, "nodeType": "ExpressionStatement", - "src": "1138:3:10" + "src": "1065:3:17" }, "nodeType": "ForStatement", - "src": "1099:107:10" + "src": "1026:107:17" } ] }, "documentation": "@dev Setup function sets initial storage of contract.\n @param tokens List of token addresses. Ether is represented with address 0x0.\n @param _dailyLimits List of daily limits in smalles units (e.g. Wei for Ether).", - "id": 1468, + "id": 1801, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -894,16 +837,16 @@ "name": "setup", "nodeType": "FunctionDefinition", "parameters": { - "id": 1439, + "id": 1772, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1435, + "id": 1768, "name": "tokens", "nodeType": "VariableDeclaration", - "scope": 1468, - "src": "1006:16:10", + "scope": 1801, + "src": "933:16:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -912,19 +855,19 @@ }, "typeName": { "baseType": { - "id": 1433, + "id": 1766, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1006:7:10", + "src": "933:7:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1434, + "id": 1767, "length": null, "nodeType": "ArrayTypeName", - "src": "1006:9:10", + "src": "933:9:17", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -935,11 +878,11 @@ }, { "constant": false, - "id": 1438, + "id": 1771, "name": "_dailyLimits", "nodeType": "VariableDeclaration", - "scope": 1468, - "src": "1024:22:10", + "scope": 1801, + "src": "951:22:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -948,19 +891,19 @@ }, "typeName": { "baseType": { - "id": 1436, + "id": 1769, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1024:7:10", + "src": "951:7:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1437, + "id": 1770, "length": null, "nodeType": "ArrayTypeName", - "src": "1024:9:10", + "src": "951:9:17", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", "typeString": "uint256[]" @@ -970,31 +913,31 @@ "visibility": "internal" } ], - "src": "1005:42:10" + "src": "932:42:17" }, "payable": false, "returnParameters": { - "id": 1440, + "id": 1773, "nodeType": "ParameterList", "parameters": [], - "src": "1067:0:10" + "src": "994:0:17" }, - "scope": 1694, - "src": "991:222:10", + "scope": 1973, + "src": "918:222:17", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1484, + "id": 1817, "nodeType": "Block", - "src": "1540:59:10", + "src": "1467:59:17", "statements": [ { "expression": { "argumentTypes": null, - "id": 1482, + "id": 1815, "isConstant": false, "isLValue": false, "isPure": false, @@ -1005,26 +948,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1477, + "id": 1810, "name": "dailyLimits", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1425, - "src": "1550:11:10", + "referencedDeclaration": 1758, + "src": "1477:11:17", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1432_storage_$", + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1765_storage_$", "typeString": "mapping(address => struct DailyLimitModule.DailyLimit storage ref)" } }, - "id": 1479, + "id": 1812, "indexExpression": { "argumentTypes": null, - "id": 1478, + "id": 1811, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1470, - "src": "1562:5:10", + "referencedDeclaration": 1803, + "src": "1489:5:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1035,21 +978,21 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1550:18:10", + "src": "1477:18:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1432_storage", + "typeIdentifier": "t_struct$_DailyLimit_$1765_storage", "typeString": "struct DailyLimitModule.DailyLimit storage ref" } }, - "id": 1480, + "id": 1813, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "dailyLimit", "nodeType": "MemberAccess", - "referencedDeclaration": 1427, - "src": "1550:29:10", + "referencedDeclaration": 1760, + "src": "1477:29:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1059,68 +1002,68 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1481, + "id": 1814, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1472, - "src": "1582:10:10", + "referencedDeclaration": 1805, + "src": "1509:10:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1550:42:10", + "src": "1477:42:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1483, + "id": 1816, "nodeType": "ExpressionStatement", - "src": "1550:42:10" + "src": "1477:42:17" } ] }, "documentation": "@dev Allows to update the daily limit for a specified token. This can only be done via a Safe transaction.\n @param token Token contract address.\n @param dailyLimit Daily limit in smallest token unit.", - "id": 1485, + "id": 1818, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 1475, + "id": 1808, "modifierName": { "argumentTypes": null, - "id": 1474, + "id": 1807, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 601, - "src": "1525:10:10", + "referencedDeclaration": 730, + "src": "1452:10:17", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1525:10:10" + "src": "1452:10:17" } ], "name": "changeDailyLimit", "nodeType": "FunctionDefinition", "parameters": { - "id": 1473, + "id": 1806, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1470, + "id": 1803, "name": "token", "nodeType": "VariableDeclaration", - "scope": 1485, - "src": "1467:13:10", + "scope": 1818, + "src": "1394:13:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1128,10 +1071,10 @@ "typeString": "address" }, "typeName": { - "id": 1469, + "id": 1802, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1467:7:10", + "src": "1394:7:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1142,11 +1085,11 @@ }, { "constant": false, - "id": 1472, + "id": 1805, "name": "dailyLimit", "nodeType": "VariableDeclaration", - "scope": 1485, - "src": "1482:18:10", + "scope": 1818, + "src": "1409:18:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1154,10 +1097,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1471, + "id": 1804, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1482:7:10", + "src": "1409:7:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1167,26 +1110,26 @@ "visibility": "internal" } ], - "src": "1466:35:10" + "src": "1393:35:17" }, "payable": false, "returnParameters": { - "id": 1476, + "id": 1809, "nodeType": "ParameterList", "parameters": [], - "src": "1540:0:10" + "src": "1467:0:17" }, - "scope": 1694, - "src": "1441:158:10", + "scope": 1973, + "src": "1368:158:17", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1605, + "id": 1902, "nodeType": "Block", - "src": "1706:1218:10", + "src": "1979:695:17", "statements": [ { "expression": { @@ -1197,12 +1140,28 @@ "arguments": [ { "argumentTypes": null, - "id": 1501, - "name": "sender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1487, - "src": "1831:6:10", + "expression": { + "argumentTypes": null, + "id": 1832, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2598, + "src": "2104:3:17", + "typeDescriptions": { + "typeIdentifier": "t_magic_message", + "typeString": "msg" + } + }, + "id": 1833, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2104:10:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1221,14 +1180,14 @@ "arguments": [ { "argumentTypes": null, - "id": 1498, + "id": 1829, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 588, - "src": "1814:7:10", + "referencedDeclaration": 717, + "src": "2087:7:17", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" } } @@ -1236,22 +1195,22 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" } ], - "id": 1497, + "id": 1828, "name": "OwnerManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1343, - "src": "1801:12:10", + "referencedDeclaration": 1472, + "src": "2074:12:17", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1343_$", + "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1472_$", "typeString": "type(contract OwnerManager)" } }, - "id": 1499, + "id": 1830, "isConstant": false, "isLValue": false, "isPure": false, @@ -1259,27 +1218,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1801:21:10", + "src": "2074:21:17", "typeDescriptions": { - "typeIdentifier": "t_contract$_OwnerManager_$1343", + "typeIdentifier": "t_contract$_OwnerManager_$1472", "typeString": "contract OwnerManager" } }, - "id": 1500, + "id": 1831, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "isOwner", "nodeType": "MemberAccess", - "referencedDeclaration": 1293, - "src": "1801:29:10", + "referencedDeclaration": 1422, + "src": "2074:29:17", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view external returns (bool)" } }, - "id": 1502, + "id": 1834, "isConstant": false, "isLValue": false, "isPure": false, @@ -1287,7 +1246,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1801:37:10", + "src": "2074:41:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1301,21 +1260,21 @@ "typeString": "bool" } ], - "id": 1496, + "id": 1827, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "1793:7:10", + "referencedDeclaration": 2601, + "src": "2066:7:17", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1503, + "id": 1835, "isConstant": false, "isLValue": false, "isPure": false, @@ -1323,15 +1282,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1793:46:10", + "src": "2066:50:17", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1504, + "id": 1836, "nodeType": "ExpressionStatement", - "src": "1793:46:10" + "src": "2066:50:17" }, { "expression": { @@ -1340,287 +1299,48 @@ { "argumentTypes": null, "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_address", + "typeString": "address" }, - "id": 1522, + "id": 1840, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 1513, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1509, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1506, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1493, - "src": "1924:4:10", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "id": 1507, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "1924:11:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1508, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1939:1:10", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1924:16:10", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1512, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1510, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1491, - "src": "1944:5:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1511, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1952:1:10", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1944:9:10", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "1924:29:10", + "id": 1838, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1822, + "src": "2134:2:17", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_address", + "typeString": "address" } }, "nodeType": "BinaryOperation", - "operator": "||", + "operator": "!=", "rightExpression": { "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 1521, + "hexValue": "30", + "id": 1839, "isConstant": false, "isLValue": false, - "isPure": false, + "isPure": true, + "kind": "number", "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1517, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1514, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1493, - "src": "1957:4:10", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "id": 1515, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "1957:11:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1516, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1971:1:10", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1957:15:10", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1520, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1518, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1491, - "src": "1976:5:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1519, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1985:1:10", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1976:10:10", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "1957:29:10", + "nodeType": "Literal", + "src": "2140:1:17", + "subdenomination": null, "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" }, - "src": "1924:62:10", + "src": "2134:7:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1634,21 +1354,21 @@ "typeString": "bool" } ], - "id": 1505, + "id": 1837, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "1916:7:10", + "referencedDeclaration": 2601, + "src": "2126:7:17", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1523, + "id": 1841, "isConstant": false, "isLValue": false, "isPure": false, @@ -1656,335 +1376,504 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1916:71:10", + "src": "2126:16:17", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1524, + "id": 1842, "nodeType": "ExpressionStatement", - "src": "1916:71:10" - }, - { - "assignments": [], - "declarations": [ - { - "constant": false, - "id": 1526, - "name": "token", - "nodeType": "VariableDeclaration", - "scope": 1606, - "src": "1997:13:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1525, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1997:7:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1527, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "1997:13:10" + "src": "2126:16:17" }, { - "assignments": [], - "declarations": [ - { - "constant": false, - "id": 1529, - "name": "receiver", - "nodeType": "VariableDeclaration", - "scope": 1606, - "src": "2020:16:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1528, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2020:7:10", + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1846, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1844, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1824, + "src": "2160:6:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1845, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2169:1:17", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2160:10:17", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_bool", + "typeString": "bool" } - }, - "value": null, - "visibility": "internal" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1843, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2601, + 2602 + ], + "referencedDeclaration": 2601, + "src": "2152:7:17", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1847, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2152:19:17", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } - ], - "id": 1530, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "2020:16:10" + }, + "id": 1848, + "nodeType": "ExpressionStatement", + "src": "2152:19:17" }, { - "assignments": [], - "declarations": [ - { - "constant": false, - "id": 1532, - "name": "amount", - "nodeType": "VariableDeclaration", - "scope": 1606, - "src": "2046:14:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1531, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2046:7:10", + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1851, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1820, + "src": "2266:5:17", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1852, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1824, + "src": "2273:6:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 1850, + "name": "isUnderLimit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1959, + "src": "2253:12:17", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) returns (bool)" + } + }, + "id": 1853, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2253:27:17", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_bool", + "typeString": "bool" } - }, - "value": null, - "visibility": "internal" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1849, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2601, + 2602 + ], + "referencedDeclaration": 2601, + "src": "2245:7:17", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1854, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2245:36:17", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } - ], - "id": 1533, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "2046:14:10" + }, + "id": 1855, + "nodeType": "ExpressionStatement", + "src": "2245:36:17" }, { - "condition": { + "expression": { "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1537, + "id": 1861, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "leftExpression": { + "leftHandSide": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1534, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1493, - "src": "2074:4:10", + "baseExpression": { + "argumentTypes": null, + "id": 1856, + "name": "dailyLimits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1758, + "src": "2291:11:17", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1765_storage_$", + "typeString": "mapping(address => struct DailyLimitModule.DailyLimit storage ref)" + } + }, + "id": 1858, + "indexExpression": { + "argumentTypes": null, + "id": 1857, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1820, + "src": "2303:5:17", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2291:18:17", "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" + "typeIdentifier": "t_struct$_DailyLimit_$1765_storage", + "typeString": "struct DailyLimitModule.DailyLimit storage ref" } }, - "id": 1535, + "id": 1859, "isConstant": false, - "isLValue": false, + "isLValue": true, "isPure": false, - "lValueRequested": false, - "memberName": "length", + "lValueRequested": true, + "memberName": "spentToday", "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2074:11:10", + "referencedDeclaration": 1762, + "src": "2291:29:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { + "nodeType": "Assignment", + "operator": "+=", + "rightHandSide": { "argumentTypes": null, - "hexValue": "30", - "id": 1536, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2089:1:10", - "subdenomination": null, + "id": 1860, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1824, + "src": "2324:6:17", "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } }, - "src": "2074:16:10", + "src": "2291:39:17", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1862, + "nodeType": "ExpressionStatement", + "src": "2291:39:17" + }, + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1865, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1863, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1820, + "src": "2344:5:17", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1864, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2353:1:17", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2344:10:17", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } }, "falseBody": { - "id": 1565, + "id": 1900, "nodeType": "Block", - "src": "2195:413:10", + "src": "2466:202:17", "statements": [ { - "expression": { - "argumentTypes": null, - "id": 1553, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1551, - "name": "token", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1526, - "src": "2209:5:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 1552, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1489, - "src": "2217:2:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "2209:10:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 1554, - "nodeType": "ExpressionStatement", - "src": "2209:10:10" - }, - { - "assignments": [], + "assignments": [ + 1880 + ], "declarations": [ { "constant": false, - "id": 1556, - "name": "functionIdentifier", + "id": 1880, + "name": "data", "nodeType": "VariableDeclaration", - "scope": 1606, - "src": "2233:25:10", + "scope": 1903, + "src": "2480:17:17", "stateVariable": false, - "storageLocation": "default", + "storageLocation": "memory", "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" }, "typeName": { - "id": 1555, - "name": "bytes4", + "id": 1879, + "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "2233:6:10", + "src": "2480:5:17", "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" } }, "value": null, "visibility": "internal" } ], - "id": 1557, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "2233:25:10" - }, - { - "externalReferences": [ - { - "functionIdentifier": { - "declaration": 1556, - "isOffset": false, - "isSlot": false, - "src": "2367:18:10", - "valueSize": 1 - } - }, - { - "data": { - "declaration": 1493, - "isOffset": false, - "isSlot": false, - "src": "2399:4:10", - "valueSize": 1 - } - }, - { - "receiver": { - "declaration": 1529, - "isOffset": false, - "isSlot": false, - "src": "2428:8:10", - "valueSize": 1 - } - }, - { - "amount": { - "declaration": 1532, - "isOffset": false, - "isSlot": false, - "src": "2479:6:10", - "valueSize": 1 + "id": 1887, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "7472616e7366657228616464726573732c75696e7432353629", + "id": 1883, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2524:27:17", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_a9059cbb2ab09eb219583f4a59a5d0623ade346d962bcd4e46b11da047c9049b", + "typeString": "literal_string \"transfer(address,uint256)\"" + }, + "value": "transfer(address,uint256)" + }, + { + "argumentTypes": null, + "id": 1884, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1822, + "src": "2553:2:17", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1885, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1824, + "src": "2557:6:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } } - }, - { - "data": { - "declaration": 1493, - "isOffset": false, - "isSlot": false, - "src": "2450:4:10", - "valueSize": 1 + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_a9059cbb2ab09eb219583f4a59a5d0623ade346d962bcd4e46b11da047c9049b", + "typeString": "literal_string \"transfer(address,uint256)\"" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1881, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2585, + "src": "2500:3:17", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 1882, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodeWithSignature", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2500:23:17", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (string memory) pure returns (bytes memory)" } }, - { - "data": { - "declaration": 1493, - "isOffset": false, - "isSlot": false, - "src": "2499:4:10", - "valueSize": 1 - } + "id": 1886, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2500:64:17", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" } - ], - "id": 1558, - "nodeType": "InlineAssembly", - "operations": "{\n functionIdentifier := mload(add(data, 0x20))\n receiver := mload(add(data, 0x24))\n amount := mload(add(data, 0x44))\n}", - "src": "2340:205:10" + }, + "nodeType": "VariableDeclarationStatement", + "src": "2480:84:17" }, { "expression": { @@ -1992,44 +1881,152 @@ "arguments": [ { "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" + "arguments": [ + { + "argumentTypes": null, + "id": 1891, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1820, + "src": "2620:5:17", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "hexValue": "30", + "id": 1892, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2627:1:17", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "argumentTypes": null, + "id": 1893, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1880, + "src": "2630:4:17", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1894, + "name": "Enum", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 30, + "src": "2636:4:17", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Enum_$30_$", + "typeString": "type(contract Enum)" + } + }, + "id": 1895, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "Operation", + "nodeType": "MemberAccess", + "referencedDeclaration": 29, + "src": "2636:14:17", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_Operation_$29_$", + "typeString": "type(enum Enum.Operation)" + } + }, + "id": 1896, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Call", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2636:19:17", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + ], + "expression": { + "argumentTypes": null, + "id": 1889, + "name": "manager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 717, + "src": "2586:7:17", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeString": "contract ModuleManager" + } + }, + "id": 1890, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "execTransactionFromModule", + "nodeType": "MemberAccess", + "referencedDeclaration": 927, + "src": "2586:33:17", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$returns$_t_bool_$", + "typeString": "function (address,uint256,bytes memory,enum Enum.Operation) external returns (bool)" + } }, - "id": 1562, + "id": 1897, "isConstant": false, "isLValue": false, "isPure": false, + "kind": "functionCall", "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1560, - "name": "functionIdentifier", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1556, - "src": "2546:18:10", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 1561, - "name": "TRANSFER_FUNCTION_IDENTIFIER", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1421, - "src": "2568:28:10", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "src": "2546:50:10", + "names": [], + "nodeType": "FunctionCall", + "src": "2586:70:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2043,21 +2040,21 @@ "typeString": "bool" } ], - "id": 1559, + "id": 1888, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "2538:7:10", + "referencedDeclaration": 2601, + "src": "2578:7:17", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1563, + "id": 1898, "isConstant": false, "isLValue": false, "isPure": false, @@ -2065,798 +2062,967 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2538:59:10", + "src": "2578:79:17", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1564, + "id": 1899, "nodeType": "ExpressionStatement", - "src": "2538:59:10" + "src": "2578:79:17" } ] }, - "id": 1566, + "id": 1901, "nodeType": "IfStatement", - "src": "2070:538:10", + "src": "2340:328:17", "trueBody": { - "id": 1550, + "id": 1878, "nodeType": "Block", - "src": "2092:89:10", + "src": "2356:104:17", "statements": [ { "expression": { "argumentTypes": null, - "id": 1540, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1538, - "name": "token", + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1869, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1822, + "src": "2412:2:17", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1870, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1824, + "src": "2416:6:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "hexValue": "", + "id": 1871, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2424:2:17", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1872, + "name": "Enum", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 30, + "src": "2428:4:17", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Enum_$30_$", + "typeString": "type(contract Enum)" + } + }, + "id": 1873, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "Operation", + "nodeType": "MemberAccess", + "referencedDeclaration": 29, + "src": "2428:14:17", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_Operation_$29_$", + "typeString": "type(enum Enum.Operation)" + } + }, + "id": 1874, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Call", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2428:19:17", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + ], + "expression": { + "argumentTypes": null, + "id": 1867, + "name": "manager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 717, + "src": "2378:7:17", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeString": "contract ModuleManager" + } + }, + "id": 1868, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "execTransactionFromModule", + "nodeType": "MemberAccess", + "referencedDeclaration": 927, + "src": "2378:33:17", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$returns$_t_bool_$", + "typeString": "function (address,uint256,bytes memory,enum Enum.Operation) external returns (bool)" + } + }, + "id": 1875, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2378:70:17", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1866, + "name": "require", "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1526, - "src": "2106:5:10", + "overloadedDeclarations": [ + 2601, + 2602 + ], + "referencedDeclaration": 2601, + "src": "2370:7:17", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" } }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "30", - "id": 1539, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2114:1:10", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2106:9:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 1541, - "nodeType": "ExpressionStatement", - "src": "2106:9:10" - }, - { - "expression": { - "argumentTypes": null, - "id": 1544, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1542, - "name": "receiver", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1529, - "src": "2129:8:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 1543, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1489, - "src": "2140:2:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "2129:13:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 1545, - "nodeType": "ExpressionStatement", - "src": "2129:13:10" - }, - { - "expression": { - "argumentTypes": null, - "id": 1548, + "id": 1876, "isConstant": false, "isLValue": false, "isPure": false, + "kind": "functionCall", "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1546, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1532, - "src": "2156:6:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 1547, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1491, - "src": "2165:5:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2156:14:10", + "names": [], + "nodeType": "FunctionCall", + "src": "2370:79:17", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } }, - "id": 1549, + "id": 1877, "nodeType": "ExpressionStatement", - "src": "2156:14:10" + "src": "2370:79:17" } ] } + } + ] + }, + "documentation": "@dev Returns if Safe transaction is a valid daily limit transaction.\n @param token Address of the token that should be transfered (0 for Ether)\n @param to Address to which the tokens should be transfered\n @param amount Amount of tokens (or Ether) that should be transfered\n @return Returns if transaction can be executed.", + "id": 1903, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "executeDailyLimit", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1825, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1820, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 1903, + "src": "1917:13:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1819, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1917:7:17", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" }, { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 1570, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1568, - "name": "receiver", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1529, - "src": "2625:8:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": "!=", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1569, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2637:1:10", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2625:13:10", + "constant": false, + "id": 1822, + "name": "to", + "nodeType": "VariableDeclaration", + "scope": 1903, + "src": "1932:10:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1821, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1932:7:17", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1824, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 1903, + "src": "1944:14:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1823, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1944:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1916:43:17" + }, + "payable": false, + "returnParameters": { + "id": 1826, + "nodeType": "ParameterList", + "parameters": [], + "src": "1979:0:17" + }, + "scope": 1973, + "src": "1890:784:17", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1958, + "nodeType": "Block", + "src": "2777:391:17", + "statements": [ + { + "assignments": [ + 1913 + ], + "declarations": [ + { + "constant": false, + "id": 1913, + "name": "dailyLimit", + "nodeType": "VariableDeclaration", + "scope": 1959, + "src": "2787:29:17", + "stateVariable": false, + "storageLocation": "storage", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DailyLimit_$1765_storage_ptr", + "typeString": "struct DailyLimitModule.DailyLimit" + }, + "typeName": { + "contractScope": null, + "id": 1912, + "name": "DailyLimit", + "nodeType": "UserDefinedTypeName", + "referencedDeclaration": 1765, + "src": "2787:10:17", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_struct$_DailyLimit_$1765_storage_ptr", + "typeString": "struct DailyLimitModule.DailyLimit" } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1917, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1914, + "name": "dailyLimits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1758, + "src": "2819:11:17", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1765_storage_$", + "typeString": "mapping(address => struct DailyLimitModule.DailyLimit storage ref)" } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1567, - "name": "require", + }, + "id": 1916, + "indexExpression": { + "argumentTypes": null, + "id": 1915, + "name": "token", "nodeType": "Identifier", - "overloadedDeclarations": [ - 2399, - 2400 - ], - "referencedDeclaration": 2399, - "src": "2617:7:10", + "overloadedDeclarations": [], + "referencedDeclaration": 1905, + "src": "2831:5:17", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_address", + "typeString": "address" } }, - "id": 1571, "isConstant": false, - "isLValue": false, + "isLValue": true, "isPure": false, - "kind": "functionCall", "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2617:22:10", + "nodeType": "IndexAccess", + "src": "2819:18:17", "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" + "typeIdentifier": "t_struct$_DailyLimit_$1765_storage", + "typeString": "struct DailyLimitModule.DailyLimit storage ref" } }, - "id": 1572, - "nodeType": "ExpressionStatement", - "src": "2617:22:10" + "nodeType": "VariableDeclarationStatement", + "src": "2787:50:17" }, { - "expression": { + "condition": { "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1576, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1574, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1532, - "src": "2657:6:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1575, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2666:1:10", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2657:10:10", + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1922, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1918, + "name": "today", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1972, + "src": "2851:5:17", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" } + }, + "id": 1919, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2851:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1920, + "name": "dailyLimit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1913, + "src": "2861:10:17", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DailyLimit_$1765_storage_ptr", + "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } - ], - "id": 1573, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 2399, - 2400 - ], - "referencedDeclaration": 2399, - "src": "2649:7:10", + }, + "id": 1921, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "lastDay", + "nodeType": "MemberAccess", + "referencedDeclaration": 1764, + "src": "2861:18:17", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "id": 1577, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2649:19:10", + "src": "2851:28:17", "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - "id": 1578, - "nodeType": "ExpressionStatement", - "src": "2649:19:10" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ + "falseBody": null, + "id": 1937, + "nodeType": "IfStatement", + "src": "2847:126:17", + "trueBody": { + "id": 1936, + "nodeType": "Block", + "src": "2881:92:17", + "statements": [ { - "argumentTypes": null, - "arguments": [ - { + "expression": { + "argumentTypes": null, + "id": 1928, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { "argumentTypes": null, - "id": 1581, - "name": "token", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1526, - "src": "2763:5:10", + "expression": { + "argumentTypes": null, + "id": 1923, + "name": "dailyLimit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1913, + "src": "2895:10:17", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DailyLimit_$1765_storage_ptr", + "typeString": "struct DailyLimitModule.DailyLimit storage pointer" + } + }, + "id": 1925, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "lastDay", + "nodeType": "MemberAccess", + "referencedDeclaration": 1764, + "src": "2895:18:17", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - { + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { "argumentTypes": null, - "id": 1582, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1532, - "src": "2770:6:10", + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 1926, + "name": "today", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1972, + "src": "2916:5:17", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 1927, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2916:7:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } + }, + "src": "2895:28:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } - ], + }, + "id": 1929, + "nodeType": "ExpressionStatement", + "src": "2895:28:17" + }, + { "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" + "argumentTypes": null, + "id": 1934, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1930, + "name": "dailyLimit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1913, + "src": "2937:10:17", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DailyLimit_$1765_storage_ptr", + "typeString": "struct DailyLimitModule.DailyLimit storage pointer" + } }, - { + "id": 1932, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "spentToday", + "nodeType": "MemberAccess", + "referencedDeclaration": 1762, + "src": "2937:21:17", + "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } - ], - "id": 1580, - "name": "isUnderLimit", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1680, - "src": "2750:12:10", + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "hexValue": "30", + "id": 1933, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2961:1:17", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2937:25:17", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", - "typeString": "function (address,uint256) returns (bool)" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "id": 1583, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2750:27:10", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1579, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 2399, - 2400 - ], - "referencedDeclaration": 2399, - "src": "2742:7:10", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "id": 1935, + "nodeType": "ExpressionStatement", + "src": "2937:25:17" } - }, - "id": 1584, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2742:36:10", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1585, - "nodeType": "ExpressionStatement", - "src": "2742:36:10" + ] + } }, { - "expression": { + "condition": { "argumentTypes": null, - "id": 1591, + "commonType": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "id": 1952, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "leftHandSide": { + "leftExpression": { "argumentTypes": null, - "expression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1944, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { "argumentTypes": null, - "baseExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1941, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { "argumentTypes": null, - "id": 1586, - "name": "dailyLimits", + "expression": { + "argumentTypes": null, + "id": 1938, + "name": "dailyLimit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1913, + "src": "2989:10:17", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DailyLimit_$1765_storage_ptr", + "typeString": "struct DailyLimitModule.DailyLimit storage pointer" + } + }, + "id": 1939, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "spentToday", + "nodeType": "MemberAccess", + "referencedDeclaration": 1762, + "src": "2989:21:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "id": 1940, + "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1425, - "src": "2788:11:10", + "referencedDeclaration": 1907, + "src": "3013:6:17", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1432_storage_$", - "typeString": "mapping(address => struct DailyLimitModule.DailyLimit storage ref)" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "id": 1588, - "indexExpression": { + "src": "2989:30:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<=", + "rightExpression": { + "argumentTypes": null, + "expression": { "argumentTypes": null, - "id": 1587, - "name": "token", + "id": 1942, + "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1526, - "src": "2800:5:10", + "referencedDeclaration": 1913, + "src": "3023:10:17", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_struct$_DailyLimit_$1765_storage_ptr", + "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, + "id": 1943, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2788:18:10", + "memberName": "dailyLimit", + "nodeType": "MemberAccess", + "referencedDeclaration": 1760, + "src": "3023:21:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1432_storage", - "typeString": "struct DailyLimitModule.DailyLimit storage ref" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "id": 1589, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "spentToday", - "nodeType": "MemberAccess", - "referencedDeclaration": 1429, - "src": "2788:29:10", + "src": "2989:55:17", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - "nodeType": "Assignment", - "operator": "+=", - "rightHandSide": { + "nodeType": "BinaryOperation", + "operator": "&&", + "rightExpression": { "argumentTypes": null, - "id": 1590, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1532, - "src": "2821:6:10", - "typeDescriptions": { + "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" - } - }, - "src": "2788:39:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1592, - "nodeType": "ExpressionStatement", - "src": "2788:39:10" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { + }, + "id": 1951, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1596, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1489, - "src": "2879:2:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 1597, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1491, - "src": "2883:5:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1598, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1493, - "src": "2890:4:10", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1599, - "name": "Enum", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6, - "src": "2896:4:10", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Enum_$6_$", - "typeString": "type(contract Enum)" - } - }, - "id": 1600, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "Operation", - "nodeType": "MemberAccess", - "referencedDeclaration": 5, - "src": "2896:14:10", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_Operation_$5_$", - "typeString": "type(enum Enum.Operation)" - } - }, - "id": 1601, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "memberName": "Call", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2896:19:10", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", - "typeString": "enum Enum.Operation" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_enum$_Operation_$5", - "typeString": "enum Enum.Operation" - } - ], + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1948, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1594, - "name": "manager", + "id": 1945, + "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 588, - "src": "2845:7:10", + "referencedDeclaration": 1913, + "src": "3060:10:17", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$971", - "typeString": "contract ModuleManager" + "typeIdentifier": "t_struct$_DailyLimit_$1765_storage_ptr", + "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, - "id": 1595, + "id": 1946, "isConstant": false, - "isLValue": false, + "isLValue": true, "isPure": false, "lValueRequested": false, - "memberName": "execTransactionFromModule", + "memberName": "spentToday", "nodeType": "MemberAccess", - "referencedDeclaration": 798, - "src": "2845:33:10", + "referencedDeclaration": 1762, + "src": "3060:21:17", "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$returns$_t_bool_$", - "typeString": "function (address,uint256,bytes memory,enum Enum.Operation) external returns (bool)" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "id": 1602, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2845:71:10", + "nodeType": "BinaryOperation", + "operator": "+", + "rightExpression": { + "argumentTypes": null, + "id": 1947, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1907, + "src": "3084:6:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "3060:30:17", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1949, + "name": "dailyLimit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1913, + "src": "3093:10:17", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DailyLimit_$1765_storage_ptr", + "typeString": "struct DailyLimitModule.DailyLimit storage pointer" + } + }, + "id": 1950, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "memberName": "spentToday", + "nodeType": "MemberAccess", + "referencedDeclaration": 1762, + "src": "3093:21:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } - ], - "id": 1593, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 2399, - 2400 - ], - "referencedDeclaration": 2399, - "src": "2837:7:10", + }, + "src": "3060:54:17", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - "id": 1603, + "src": "2989:125:17", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": null, + "id": 1955, + "nodeType": "IfStatement", + "src": "2982:157:17", + "trueBody": { + "expression": { + "argumentTypes": null, + "hexValue": "74727565", + "id": 1953, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "bool", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3135:4:17", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "true" + }, + "functionReturnParameters": 1911, + "id": 1954, + "nodeType": "Return", + "src": "3128:11:17" + } + }, + { + "expression": { + "argumentTypes": null, + "hexValue": "66616c7365", + "id": 1956, "isConstant": false, "isLValue": false, - "isPure": false, - "kind": "functionCall", + "isPure": true, + "kind": "bool", "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2837:80:10", + "nodeType": "Literal", + "src": "3156:5:17", + "subdenomination": null, "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "value": "false" }, - "id": 1604, - "nodeType": "ExpressionStatement", - "src": "2837:80:10" + "functionReturnParameters": 1911, + "id": 1957, + "nodeType": "Return", + "src": "3149:12:17" } ] }, "documentation": null, - "id": 1606, + "id": 1959, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [], - "name": "executeInternal", + "name": "isUnderLimit", "nodeType": "FunctionDefinition", "parameters": { - "id": 1494, + "id": 1908, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1487, - "name": "sender", - "nodeType": "VariableDeclaration", - "scope": 1606, - "src": "1630:14:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1486, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1630:7:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1489, - "name": "to", + "id": 1905, + "name": "token", "nodeType": "VariableDeclaration", - "scope": 1606, - "src": "1646:10:10", + "scope": 1959, + "src": "2702:13:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2864,10 +3030,10 @@ "typeString": "address" }, "typeName": { - "id": 1488, + "id": 1904, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1646:7:10", + "src": "2702:7:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2878,11 +3044,11 @@ }, { "constant": false, - "id": 1491, - "name": "value", + "id": 1907, + "name": "amount", "nodeType": "VariableDeclaration", - "scope": 1606, - "src": "1658:13:10", + "scope": 1959, + "src": "2717:14:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2890,10 +3056,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1490, + "id": 1906, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1658:7:10", + "src": "2717:7:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2901,1120 +3067,165 @@ }, "value": null, "visibility": "internal" - }, + } + ], + "src": "2701:31:17" + }, + "payable": false, + "returnParameters": { + "id": 1911, + "nodeType": "ParameterList", + "parameters": [ { "constant": false, - "id": 1493, - "name": "data", + "id": 1910, + "name": "", "nodeType": "VariableDeclaration", - "scope": 1606, - "src": "1673:10:10", + "scope": 1959, + "src": "2767:4:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" + "typeIdentifier": "t_bool", + "typeString": "bool" }, "typeName": { - "id": 1492, - "name": "bytes", + "id": 1909, + "name": "bool", "nodeType": "ElementaryTypeName", - "src": "1673:5:10", + "src": "2767:4:17", "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" + "typeIdentifier": "t_bool", + "typeString": "bool" } }, "value": null, "visibility": "internal" } ], - "src": "1629:55:10" + "src": "2766:6:17" }, - "payable": false, - "returnParameters": { - "id": 1495, - "nodeType": "ParameterList", - "parameters": [], - "src": "1706:0:10" - }, - "scope": 1694, - "src": "1605:1319:10", + "scope": 1973, + "src": "2680:488:17", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1623, + "id": 1971, "nodeType": "Block", - "src": "3393:61:10", + "src": "3332:44:17", "statements": [ { "expression": { "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1616, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2396, - "src": "3419:3:10", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1617, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "3419:10:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 1618, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1608, - "src": "3431:2:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 1619, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1610, - "src": "3435:5:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1620, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1612, - "src": "3442:4:10", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 1615, - "name": "executeInternal", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1606, - "src": "3403:15:10", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", - "typeString": "function (address,address,uint256,bytes memory)" - } + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" }, - "id": 1621, + "id": 1969, "isConstant": false, "isLValue": false, "isPure": false, - "kind": "functionCall", "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3403:44:10", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1622, - "nodeType": "ExpressionStatement", - "src": "3403:44:10" - } - ] - }, - "documentation": "@dev Returns if Safe transaction is a valid daily limit transaction.\n @param to Receiver address in case of Ether transfer, token address in case of a token transfer.\n @param value Ether value in case of an Ether transfer.\n @param data Encoded token transfer. Empty in case of Ether transfer.\n @return Returns if transaction can be executed.", - "id": 1624, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "executeDailyLimit", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1613, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1608, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 1624, - "src": "3335:10:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1607, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3335:7:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1610, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 1624, - "src": "3347:13:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1609, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3347:7:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1612, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 1624, - "src": "3362:10:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 1611, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "3362:5:10", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "3334:39:10" - }, - "payable": false, - "returnParameters": { - "id": 1614, - "nodeType": "ParameterList", - "parameters": [], - "src": "3393:0:10" - }, - "scope": 1694, - "src": "3308:146:10", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1679, - "nodeType": "Block", - "src": "3557:391:10", - "statements": [ - { - "assignments": [ - 1634 - ], - "declarations": [ - { - "constant": false, - "id": 1634, - "name": "dailyLimit", - "nodeType": "VariableDeclaration", - "scope": 1680, - "src": "3567:29:10", - "stateVariable": false, - "storageLocation": "storage", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1432_storage_ptr", - "typeString": "struct DailyLimitModule.DailyLimit" - }, - "typeName": { - "contractScope": null, - "id": 1633, - "name": "DailyLimit", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1432, - "src": "3567:10:10", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1432_storage_ptr", - "typeString": "struct DailyLimitModule.DailyLimit" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1638, - "initialValue": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1635, - "name": "dailyLimits", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1425, - "src": "3599:11:10", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1432_storage_$", - "typeString": "mapping(address => struct DailyLimitModule.DailyLimit storage ref)" - } - }, - "id": 1637, - "indexExpression": { + "leftExpression": { "argumentTypes": null, - "id": 1636, - "name": "token", + "id": 1964, + "name": "now", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1626, - "src": "3611:5:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3599:18:10", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1432_storage", - "typeString": "struct DailyLimitModule.DailyLimit storage ref" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "3567:50:10" - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1643, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 1639, - "name": "today", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1693, - "src": "3631:5:10", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", - "typeString": "function () view returns (uint256)" - } - }, - "id": 1640, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3631:7:10", + "referencedDeclaration": 2600, + "src": "3349:3:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "BinaryOperation", - "operator": ">", + "operator": "-", "rightExpression": { "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1641, - "name": "dailyLimit", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1634, - "src": "3641:10:10", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1432_storage_ptr", - "typeString": "struct DailyLimitModule.DailyLimit storage pointer" - } - }, - "id": 1642, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "lastDay", - "nodeType": "MemberAccess", - "referencedDeclaration": 1431, - "src": "3641:18:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3631:28:10", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "falseBody": null, - "id": 1658, - "nodeType": "IfStatement", - "src": "3627:126:10", - "trueBody": { - "id": 1657, - "nodeType": "Block", - "src": "3661:92:10", - "statements": [ - { - "expression": { + "components": [ + { "argumentTypes": null, - "id": 1649, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1967, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "leftHandSide": { + "leftExpression": { "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1644, - "name": "dailyLimit", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1634, - "src": "3675:10:10", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1432_storage_ptr", - "typeString": "struct DailyLimitModule.DailyLimit storage pointer" - } - }, - "id": 1646, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "lastDay", - "nodeType": "MemberAccess", - "referencedDeclaration": 1431, - "src": "3675:18:10", + "id": 1965, + "name": "now", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2600, + "src": "3356:3:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { + "nodeType": "BinaryOperation", + "operator": "%", + "rightExpression": { "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 1647, - "name": "today", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1693, - "src": "3696:5:10", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", - "typeString": "function () view returns (uint256)" - } - }, - "id": 1648, + "hexValue": "31", + "id": 1966, "isConstant": false, "isLValue": false, - "isPure": false, - "kind": "functionCall", + "isPure": true, + "kind": "number", "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3696:7:10", + "nodeType": "Literal", + "src": "3362:6:17", + "subdenomination": "days", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } + "typeIdentifier": "t_rational_86400_by_1", + "typeString": "int_const 86400" + }, + "value": "1" }, - "src": "3675:28:10", + "src": "3356:12:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } - }, - "id": 1650, - "nodeType": "ExpressionStatement", - "src": "3675:28:10" - }, - { - "expression": { - "argumentTypes": null, - "id": 1655, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1651, - "name": "dailyLimit", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1634, - "src": "3717:10:10", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1432_storage_ptr", - "typeString": "struct DailyLimitModule.DailyLimit storage pointer" - } - }, - "id": 1653, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "spentToday", - "nodeType": "MemberAccess", - "referencedDeclaration": 1429, - "src": "3717:21:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "30", - "id": 1654, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3741:1:10", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "3717:25:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1656, - "nodeType": "ExpressionStatement", - "src": "3717:25:10" - } - ] - } - }, - { - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 1673, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1665, + } + ], + "id": 1968, "isConstant": false, + "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1662, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1659, - "name": "dailyLimit", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1634, - "src": "3769:10:10", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1432_storage_ptr", - "typeString": "struct DailyLimitModule.DailyLimit storage pointer" - } - }, - "id": 1660, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "spentToday", - "nodeType": "MemberAccess", - "referencedDeclaration": 1429, - "src": "3769:21:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "argumentTypes": null, - "id": 1661, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1628, - "src": "3793:6:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3769:30:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<=", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1663, - "name": "dailyLimit", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1634, - "src": "3803:10:10", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1432_storage_ptr", - "typeString": "struct DailyLimitModule.DailyLimit storage pointer" - } - }, - "id": 1664, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "dailyLimit", - "nodeType": "MemberAccess", - "referencedDeclaration": 1427, - "src": "3803:21:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3769:55:10", + "nodeType": "TupleExpression", + "src": "3355:14:17", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "argumentTypes": null, - "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" - }, - "id": 1672, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1669, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1666, - "name": "dailyLimit", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1634, - "src": "3840:10:10", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1432_storage_ptr", - "typeString": "struct DailyLimitModule.DailyLimit storage pointer" - } - }, - "id": 1667, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "spentToday", - "nodeType": "MemberAccess", - "referencedDeclaration": 1429, - "src": "3840:21:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "+", - "rightExpression": { - "argumentTypes": null, - "id": 1668, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1628, - "src": "3864:6:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3840:30:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1670, - "name": "dailyLimit", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1634, - "src": "3873:10:10", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1432_storage_ptr", - "typeString": "struct DailyLimitModule.DailyLimit storage pointer" - } - }, - "id": 1671, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "spentToday", - "nodeType": "MemberAccess", - "referencedDeclaration": 1429, - "src": "3873:21:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "3840:54:10", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" } }, - "src": "3769:125:10", + "src": "3349:20:17", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "falseBody": null, - "id": 1676, - "nodeType": "IfStatement", - "src": "3762:157:10", - "trueBody": { - "expression": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 1674, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3915:4:10", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "functionReturnParameters": 1632, - "id": 1675, - "nodeType": "Return", - "src": "3908:11:10" - } - }, - { - "expression": { - "argumentTypes": null, - "hexValue": "66616c7365", - "id": 1677, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "3936:5:10", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "false" - }, - "functionReturnParameters": 1632, - "id": 1678, - "nodeType": "Return", - "src": "3929:12:10" - } - ] - }, - "documentation": null, - "id": 1680, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "isUnderLimit", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1629, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1626, - "name": "token", - "nodeType": "VariableDeclaration", - "scope": 1680, - "src": "3482:13:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1625, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "3482:7:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1628, - "name": "amount", - "nodeType": "VariableDeclaration", - "scope": 1680, - "src": "3497:14:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1627, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "3497:7:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "3481:31:10" - }, - "payable": false, - "returnParameters": { - "id": 1632, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1631, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 1680, - "src": "3547:4:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 1630, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "3547:4:10", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "3546:6:10" - }, - "scope": 1694, - "src": "3460:488:10", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 1692, - "nodeType": "Block", - "src": "4112:44:10", - "statements": [ - { - "expression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1690, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1685, - "name": "now", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2398, - "src": "4129:3:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "components": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1688, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1686, - "name": "now", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2398, - "src": "4136:3:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "%", - "rightExpression": { - "argumentTypes": null, - "hexValue": "31", - "id": 1687, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "4142:6:10", - "subdenomination": "days", - "typeDescriptions": { - "typeIdentifier": "t_rational_86400_by_1", - "typeString": "int_const 86400" - }, - "value": "1" - }, - "src": "4136:12:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "id": 1689, - "isConstant": false, - "isInlineArray": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "TupleExpression", - "src": "4135:14:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4129:20:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 1684, - "id": 1691, + "functionReturnParameters": 1963, + "id": 1970, "nodeType": "Return", - "src": "4122:27:10" + "src": "3342:27:17" } ] }, "documentation": "@dev Returns last midnight as Unix timestamp.\n @return Unix timestamp.", - "id": 1693, + "id": 1972, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -4022,23 +3233,23 @@ "name": "today", "nodeType": "FunctionDefinition", "parameters": { - "id": 1681, + "id": 1960, "nodeType": "ParameterList", "parameters": [], - "src": "4054:2:10" + "src": "3274:2:17" }, "payable": false, "returnParameters": { - "id": 1684, + "id": 1963, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1683, + "id": 1962, "name": "", "nodeType": "VariableDeclaration", - "scope": 1693, - "src": "4102:4:10", + "scope": 1972, + "src": "3322:4:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4046,10 +3257,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1682, + "id": 1961, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "4102:4:10", + "src": "3322:4:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4059,82 +3270,82 @@ "visibility": "internal" } ], - "src": "4101:6:10" + "src": "3321:6:17" }, - "scope": 1694, - "src": "4040:116:10", + "scope": 1973, + "src": "3260:116:17", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 1695, - "src": "296:3862:10" + "scope": 1974, + "src": "296:3082:17" } ], - "src": "0:4159:10" + "src": "0:3379:17" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/DailyLimitModule.sol", "exportedSymbols": { "DailyLimitModule": [ - 1694 + 1973 ] }, - "id": 1695, + "id": 1974, "nodeType": "SourceUnit", "nodes": [ { - "id": 1406, + "id": 1742, "literals": [ "solidity", "0.4", - ".23" + ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:10" + "src": "0:23:17" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "file": "../Module.sol", - "id": 1407, + "id": 1743, "nodeType": "ImportDirective", - "scope": 1695, - "sourceUnit": 622, - "src": "24:23:10", + "scope": 1974, + "sourceUnit": 751, + "src": "24:23:17", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ModuleManager.sol", "file": "../ModuleManager.sol", - "id": 1408, + "id": 1744, "nodeType": "ImportDirective", - "scope": 1695, - "sourceUnit": 972, - "src": "48:30:10", + "scope": 1974, + "sourceUnit": 1101, + "src": "48:30:17", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", "file": "../OwnerManager.sol", - "id": 1409, + "id": 1745, "nodeType": "ImportDirective", - "scope": 1695, - "sourceUnit": 1344, - "src": "79:29:10", + "scope": 1974, + "sourceUnit": 1473, + "src": "79:29:17", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Enum.sol", "file": "../Enum.sol", - "id": 1410, + "id": 1746, "nodeType": "ImportDirective", - "scope": 1695, - "sourceUnit": 7, - "src": "109:21:10", + "scope": 1974, + "sourceUnit": 31, + "src": "109:21:17", "symbolAliases": [], "unitAlias": "" }, @@ -4144,46 +3355,46 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 1411, + "id": 1747, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 621, - "src": "325:6:10", + "referencedDeclaration": 750, + "src": "325:6:17", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } }, - "id": 1412, + "id": 1748, "nodeType": "InheritanceSpecifier", - "src": "325:6:10" + "src": "325:6:17" } ], "contractDependencies": [ - 580, - 621, - 1359 + 652, + 750, + 1619 ], "contractKind": "contract", "documentation": "@title Daily Limit Module - Allows to transfer limited amounts of ERC20 tokens and Ether without confirmations.\n @author Stefan George - ", "fullyImplemented": true, - "id": 1694, + "id": 1973, "linearizedBaseContracts": [ - 1694, - 621, - 580, - 1359 + 1973, + 750, + 652, + 1619 ], "name": "DailyLimitModule", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, - "id": 1415, + "id": 1751, "name": "NAME", "nodeType": "VariableDeclaration", - "scope": 1694, - "src": "339:50:10", + "scope": 1973, + "src": "339:50:17", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -4191,10 +3402,10 @@ "typeString": "string" }, "typeName": { - "id": 1413, + "id": 1749, "name": "string", "nodeType": "ElementaryTypeName", - "src": "339:6:10", + "src": "339:6:17", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -4203,14 +3414,14 @@ "value": { "argumentTypes": null, "hexValue": "4461696c79204c696d6974204d6f64756c65", - "id": 1414, + "id": 1750, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "369:20:10", + "src": "369:20:17", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_821ea27acfbc77b49f7a021dbe2eb92017d46b8bdda0bff9901cbc8ee143ceb3", @@ -4222,11 +3433,11 @@ }, { "constant": true, - "id": 1418, + "id": 1754, "name": "VERSION", "nodeType": "VariableDeclaration", - "scope": 1694, - "src": "395:40:10", + "scope": 1973, + "src": "395:40:17", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -4234,10 +3445,10 @@ "typeString": "string" }, "typeName": { - "id": 1416, + "id": 1752, "name": "string", "nodeType": "ElementaryTypeName", - "src": "395:6:10", + "src": "395:6:17", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -4246,14 +3457,14 @@ "value": { "argumentTypes": null, "hexValue": "302e302e31", - "id": 1417, + "id": 1753, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "428:7:10", + "src": "428:7:17", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", @@ -4263,89 +3474,46 @@ }, "visibility": "public" }, - { - "constant": true, - "id": 1421, - "name": "TRANSFER_FUNCTION_IDENTIFIER", - "nodeType": "VariableDeclaration", - "scope": 1694, - "src": "441:67:10", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - "typeName": { - "id": 1419, - "name": "bytes4", - "nodeType": "ElementaryTypeName", - "src": "441:6:10", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "value": { - "argumentTypes": null, - "hexValue": "a9059cbb", - "id": 1420, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "495:13:10", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_abce0605a16ff5e998983a0af570b8ad942bb11e305eb20ae3ada0a3be24eb97", - "typeString": "literal_string (contains invalid UTF-8 sequence at position 0)" - }, - "value": null - }, - "visibility": "public" - }, { "constant": false, - "id": 1425, + "id": 1758, "name": "dailyLimits", "nodeType": "VariableDeclaration", - "scope": 1694, - "src": "586:50:10", + "scope": 1973, + "src": "513:50:17", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1432_storage_$", + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1765_storage_$", "typeString": "mapping(address => struct DailyLimitModule.DailyLimit)" }, "typeName": { - "id": 1424, + "id": 1757, "keyType": { - "id": 1422, + "id": 1755, "name": "address", "nodeType": "ElementaryTypeName", - "src": "595:7:10", + "src": "522:7:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "586:31:10", + "src": "513:31:17", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1432_storage_$", + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1765_storage_$", "typeString": "mapping(address => struct DailyLimitModule.DailyLimit)" }, "valueType": { "contractScope": null, - "id": 1423, + "id": 1756, "name": "DailyLimit", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1432, - "src": "606:10:10", + "referencedDeclaration": 1765, + "src": "533:10:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1432_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1765_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit" } } @@ -4355,15 +3523,15 @@ }, { "canonicalName": "DailyLimitModule.DailyLimit", - "id": 1432, + "id": 1765, "members": [ { "constant": false, - "id": 1427, + "id": 1760, "name": "dailyLimit", "nodeType": "VariableDeclaration", - "scope": 1432, - "src": "671:18:10", + "scope": 1765, + "src": "598:18:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4371,10 +3539,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1426, + "id": 1759, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "671:7:10", + "src": "598:7:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4385,834 +3553,87 @@ }, { "constant": false, - "id": 1429, + "id": 1762, "name": "spentToday", "nodeType": "VariableDeclaration", - "scope": 1432, - "src": "699:18:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1428, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "699:7:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1431, - "name": "lastDay", - "nodeType": "VariableDeclaration", - "scope": 1432, - "src": "727:15:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1430, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "727:7:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "name": "DailyLimit", - "nodeType": "StructDefinition", - "scope": 1694, - "src": "643:106:10", - "visibility": "public" - }, - { - "body": { - "id": 1467, - "nodeType": "Block", - "src": "1067:146:10", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 1441, - "name": "setManager", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 620, - "src": "1077:10:10", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", - "typeString": "function ()" - } - }, - "id": 1442, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1077:12:10", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1443, - "nodeType": "ExpressionStatement", - "src": "1077:12:10" - }, - { - "body": { - "expression": { - "argumentTypes": null, - "id": 1464, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1455, - "name": "dailyLimits", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1425, - "src": "1155:11:10", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1432_storage_$", - "typeString": "mapping(address => struct DailyLimitModule.DailyLimit storage ref)" - } - }, - "id": 1459, - "indexExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1456, - "name": "tokens", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1435, - "src": "1167:6:10", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 1458, - "indexExpression": { - "argumentTypes": null, - "id": 1457, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1445, - "src": "1174:1:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1167:9:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1155:22:10", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1432_storage", - "typeString": "struct DailyLimitModule.DailyLimit storage ref" - } - }, - "id": 1460, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "dailyLimit", - "nodeType": "MemberAccess", - "referencedDeclaration": 1427, - "src": "1155:33:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1461, - "name": "_dailyLimits", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1438, - "src": "1191:12:10", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", - "typeString": "uint256[] memory" - } - }, - "id": 1463, - "indexExpression": { - "argumentTypes": null, - "id": 1462, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1445, - "src": "1204:1:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1191:15:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1155:51:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1465, - "nodeType": "ExpressionStatement", - "src": "1155:51:10" - }, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1451, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1448, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1445, - "src": "1119:1:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1449, - "name": "tokens", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1435, - "src": "1123:6:10", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[] memory" - } - }, - "id": 1450, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "1123:13:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1119:17:10", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1466, - "initializationExpression": { - "assignments": [ - 1445 - ], - "declarations": [ - { - "constant": false, - "id": 1445, - "name": "i", - "nodeType": "VariableDeclaration", - "scope": 1468, - "src": "1104:9:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1444, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1104:7:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1447, - "initialValue": { - "argumentTypes": null, - "hexValue": "30", - "id": 1446, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1116:1:10", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "1104:13:10" - }, - "loopExpression": { - "expression": { - "argumentTypes": null, - "id": 1453, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "1138:3:10", - "subExpression": { - "argumentTypes": null, - "id": 1452, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1445, - "src": "1138:1:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1454, - "nodeType": "ExpressionStatement", - "src": "1138:3:10" - }, - "nodeType": "ForStatement", - "src": "1099:107:10" - } - ] - }, - "documentation": "@dev Setup function sets initial storage of contract.\n @param tokens List of token addresses. Ether is represented with address 0x0.\n @param _dailyLimits List of daily limits in smalles units (e.g. Wei for Ether).", - "id": 1468, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "setup", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1439, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1435, - "name": "tokens", - "nodeType": "VariableDeclaration", - "scope": 1468, - "src": "1006:16:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", - "typeString": "address[]" - }, - "typeName": { - "baseType": { - "id": 1433, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1006:7:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 1434, - "length": null, - "nodeType": "ArrayTypeName", - "src": "1006:9:10", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", - "typeString": "address[]" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1438, - "name": "_dailyLimits", - "nodeType": "VariableDeclaration", - "scope": 1468, - "src": "1024:22:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", - "typeString": "uint256[]" - }, - "typeName": { - "baseType": { - "id": 1436, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1024:7:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1437, - "length": null, - "nodeType": "ArrayTypeName", - "src": "1024:9:10", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", - "typeString": "uint256[]" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1005:42:10" - }, - "payable": false, - "returnParameters": { - "id": 1440, - "nodeType": "ParameterList", - "parameters": [], - "src": "1067:0:10" - }, - "scope": 1694, - "src": "991:222:10", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1484, - "nodeType": "Block", - "src": "1540:59:10", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 1482, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1477, - "name": "dailyLimits", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1425, - "src": "1550:11:10", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1432_storage_$", - "typeString": "mapping(address => struct DailyLimitModule.DailyLimit storage ref)" - } - }, - "id": 1479, - "indexExpression": { - "argumentTypes": null, - "id": 1478, - "name": "token", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1470, - "src": "1562:5:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1550:18:10", - "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1432_storage", - "typeString": "struct DailyLimitModule.DailyLimit storage ref" - } - }, - "id": 1480, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "memberName": "dailyLimit", - "nodeType": "MemberAccess", - "referencedDeclaration": 1427, - "src": "1550:29:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 1481, - "name": "dailyLimit", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1472, - "src": "1582:10:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "1550:42:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1483, - "nodeType": "ExpressionStatement", - "src": "1550:42:10" - } - ] - }, - "documentation": "@dev Allows to update the daily limit for a specified token. This can only be done via a Safe transaction.\n @param token Token contract address.\n @param dailyLimit Daily limit in smallest token unit.", - "id": 1485, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": null, - "id": 1475, - "modifierName": { - "argumentTypes": null, - "id": 1474, - "name": "authorized", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 601, - "src": "1525:10:10", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } - }, - "nodeType": "ModifierInvocation", - "src": "1525:10:10" - } - ], - "name": "changeDailyLimit", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1473, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1470, - "name": "token", - "nodeType": "VariableDeclaration", - "scope": 1485, - "src": "1467:13:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1469, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1467:7:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1472, - "name": "dailyLimit", - "nodeType": "VariableDeclaration", - "scope": 1485, - "src": "1482:18:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1471, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1482:7:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1466:35:10" - }, - "payable": false, - "returnParameters": { - "id": 1476, - "nodeType": "ParameterList", - "parameters": [], - "src": "1540:0:10" - }, - "scope": 1694, - "src": "1441:158:10", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1605, - "nodeType": "Block", - "src": "1706:1218:10", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1501, - "name": "sender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1487, - "src": "1831:6:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - } - ], - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1498, - "name": "manager", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 588, - "src": "1814:7:10", - "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$971", - "typeString": "contract ModuleManager" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_contract$_ModuleManager_$971", - "typeString": "contract ModuleManager" - } - ], - "id": 1497, - "name": "OwnerManager", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1343, - "src": "1801:12:10", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1343_$", - "typeString": "type(contract OwnerManager)" - } - }, - "id": 1499, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1801:21:10", - "typeDescriptions": { - "typeIdentifier": "t_contract$_OwnerManager_$1343", - "typeString": "contract OwnerManager" - } - }, - "id": 1500, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "isOwner", - "nodeType": "MemberAccess", - "referencedDeclaration": 1293, - "src": "1801:29:10", - "typeDescriptions": { - "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", - "typeString": "function (address) view external returns (bool)" - } - }, - "id": 1502, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1801:37:10", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], + "scope": 1765, + "src": "626:18:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1761, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "626:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1764, + "name": "lastDay", + "nodeType": "VariableDeclaration", + "scope": 1765, + "src": "654:15:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1763, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "654:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "name": "DailyLimit", + "nodeType": "StructDefinition", + "scope": 1973, + "src": "570:106:17", + "visibility": "public" + }, + { + "body": { + "id": 1800, + "nodeType": "Block", + "src": "994:146:17", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [], "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1496, - "name": "require", + "argumentTypes": [], + "id": 1774, + "name": "setManager", "nodeType": "Identifier", - "overloadedDeclarations": [ - 2399, - 2400 - ], - "referencedDeclaration": 2399, - "src": "1793:7:10", + "overloadedDeclarations": [], + "referencedDeclaration": 749, + "src": "1004:10:17", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", + "typeString": "function ()" } }, - "id": 1503, + "id": 1775, "isConstant": false, "isLValue": false, "isPure": false, @@ -5220,913 +3641,778 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1793:46:10", + "src": "1004:12:17", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1504, + "id": 1776, "nodeType": "ExpressionStatement", - "src": "1793:46:10" + "src": "1004:12:17" }, { - "expression": { - "argumentTypes": null, - "arguments": [ - { + "body": { + "expression": { + "argumentTypes": null, + "id": 1797, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftHandSide": { "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 1522, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { + "expression": { "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 1513, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { + "baseExpression": { "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1509, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1506, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1493, - "src": "1924:4:10", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "id": 1507, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "1924:11:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1508, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1939:1:10", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1924:16:10", + "id": 1788, + "name": "dailyLimits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1758, + "src": "1082:11:17", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1765_storage_$", + "typeString": "mapping(address => struct DailyLimitModule.DailyLimit storage ref)" } }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { + "id": 1792, + "indexExpression": { "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1512, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { + "baseExpression": { "argumentTypes": null, - "id": 1510, - "name": "value", + "id": 1789, + "name": "tokens", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1491, - "src": "1944:5:10", + "referencedDeclaration": 1768, + "src": "1094:6:17", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" } }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1511, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1952:1:10", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1944:9:10", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "src": "1924:29:10", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "||", - "rightExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "id": 1521, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1517, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { + "id": 1791, + "indexExpression": { "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1514, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1493, - "src": "1957:4:10", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - "id": 1515, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "1957:11:10", + "id": 1790, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1778, + "src": "1101:1:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1516, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1971:1:10", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1957:15:10", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "BinaryOperation", - "operator": "&&", - "rightExpression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1520, "isConstant": false, - "isLValue": false, + "isLValue": true, "isPure": false, "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1518, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1491, - "src": "1976:5:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "hexValue": "30", - "id": 1519, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1985:1:10", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "1976:10:10", + "nodeType": "IndexAccess", + "src": "1094:9:17", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_address", + "typeString": "address" } }, - "src": "1957:29:10", + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1082:22:17", + "typeDescriptions": { + "typeIdentifier": "t_struct$_DailyLimit_$1765_storage", + "typeString": "struct DailyLimitModule.DailyLimit storage ref" + } + }, + "id": 1793, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": true, + "memberName": "dailyLimit", + "nodeType": "MemberAccess", + "referencedDeclaration": 1760, + "src": "1082:33:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 1794, + "name": "_dailyLimits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1771, + "src": "1118:12:17", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[] memory" + } + }, + "id": 1796, + "indexExpression": { + "argumentTypes": null, + "id": 1795, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1778, + "src": "1131:1:17", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "src": "1924:62:10", + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1118:15:17", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } - ], - "id": 1505, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 2399, - 2400 - ], - "referencedDeclaration": 2399, - "src": "1916:7:10", + }, + "src": "1082:51:17", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "id": 1523, + "id": 1798, + "nodeType": "ExpressionStatement", + "src": "1082:51:17" + }, + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1784, "isConstant": false, "isLValue": false, "isPure": false, - "kind": "functionCall", "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1916:71:10", + "leftExpression": { + "argumentTypes": null, + "id": 1781, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1778, + "src": "1046:1:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "<", + "rightExpression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1782, + "name": "tokens", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1768, + "src": "1050:6:17", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[] memory" + } + }, + "id": 1783, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "length", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1050:13:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "1046:17:17", "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - "id": 1524, - "nodeType": "ExpressionStatement", - "src": "1916:71:10" - }, - { - "assignments": [], - "declarations": [ - { - "constant": false, - "id": 1526, - "name": "token", - "nodeType": "VariableDeclaration", - "scope": 1606, - "src": "1997:13:10", - "stateVariable": false, - "storageLocation": "default", + "id": 1799, + "initializationExpression": { + "assignments": [ + 1778 + ], + "declarations": [ + { + "constant": false, + "id": 1778, + "name": "i", + "nodeType": "VariableDeclaration", + "scope": 1801, + "src": "1031:9:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1777, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1031:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1780, + "initialValue": { + "argumentTypes": null, + "hexValue": "30", + "id": 1779, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1043:1:17", + "subdenomination": null, "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" }, - "typeName": { - "id": 1525, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1997:7:10", + "value": "0" + }, + "nodeType": "VariableDeclarationStatement", + "src": "1031:13:17" + }, + "loopExpression": { + "expression": { + "argumentTypes": null, + "id": 1786, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "nodeType": "UnaryOperation", + "operator": "++", + "prefix": false, + "src": "1065:3:17", + "subExpression": { + "argumentTypes": null, + "id": 1785, + "name": "i", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1778, + "src": "1065:1:17", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "value": null, - "visibility": "internal" - } - ], - "id": 1527, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "1997:13:10" - }, + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "id": 1787, + "nodeType": "ExpressionStatement", + "src": "1065:3:17" + }, + "nodeType": "ForStatement", + "src": "1026:107:17" + } + ] + }, + "documentation": "@dev Setup function sets initial storage of contract.\n @param tokens List of token addresses. Ether is represented with address 0x0.\n @param _dailyLimits List of daily limits in smalles units (e.g. Wei for Ether).", + "id": 1801, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "setup", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1772, + "nodeType": "ParameterList", + "parameters": [ { - "assignments": [], - "declarations": [ - { - "constant": false, - "id": 1529, - "name": "receiver", - "nodeType": "VariableDeclaration", - "scope": 1606, - "src": "2020:16:10", - "stateVariable": false, - "storageLocation": "default", + "constant": false, + "id": 1768, + "name": "tokens", + "nodeType": "VariableDeclaration", + "scope": 1801, + "src": "933:16:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", + "typeString": "address[]" + }, + "typeName": { + "baseType": { + "id": 1766, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "933:7:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" - }, - "typeName": { - "id": 1528, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2020:7:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" + } + }, + "id": 1767, + "length": null, + "nodeType": "ArrayTypeName", + "src": "933:9:17", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", + "typeString": "address[]" } - ], - "id": 1530, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "2020:16:10" + }, + "value": null, + "visibility": "internal" }, { - "assignments": [], - "declarations": [ - { - "constant": false, - "id": 1532, - "name": "amount", - "nodeType": "VariableDeclaration", - "scope": 1606, - "src": "2046:14:10", - "stateVariable": false, - "storageLocation": "default", + "constant": false, + "id": 1771, + "name": "_dailyLimits", + "nodeType": "VariableDeclaration", + "scope": 1801, + "src": "951:22:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", + "typeString": "uint256[]" + }, + "typeName": { + "baseType": { + "id": 1769, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "951:7:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" - }, - "typeName": { - "id": 1531, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2046:7:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" + } + }, + "id": 1770, + "length": null, + "nodeType": "ArrayTypeName", + "src": "951:9:17", + "typeDescriptions": { + "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr", + "typeString": "uint256[]" } - ], - "id": 1533, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "2046:14:10" - }, + }, + "value": null, + "visibility": "internal" + } + ], + "src": "932:42:17" + }, + "payable": false, + "returnParameters": { + "id": 1773, + "nodeType": "ParameterList", + "parameters": [], + "src": "994:0:17" + }, + "scope": 1973, + "src": "918:222:17", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1817, + "nodeType": "Block", + "src": "1467:59:17", + "statements": [ { - "condition": { + "expression": { "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1537, + "id": 1815, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "leftExpression": { + "leftHandSide": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1534, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1493, - "src": "2074:4:10", + "baseExpression": { + "argumentTypes": null, + "id": 1810, + "name": "dailyLimits", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1758, + "src": "1477:11:17", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1765_storage_$", + "typeString": "mapping(address => struct DailyLimitModule.DailyLimit storage ref)" + } + }, + "id": 1812, + "indexExpression": { + "argumentTypes": null, + "id": 1811, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1803, + "src": "1489:5:17", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "1477:18:17", "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" + "typeIdentifier": "t_struct$_DailyLimit_$1765_storage", + "typeString": "struct DailyLimitModule.DailyLimit storage ref" } }, - "id": 1535, + "id": 1813, "isConstant": false, - "isLValue": false, + "isLValue": true, "isPure": false, - "lValueRequested": false, - "memberName": "length", + "lValueRequested": true, + "memberName": "dailyLimit", "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2074:11:10", + "referencedDeclaration": 1760, + "src": "1477:29:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { + "nodeType": "Assignment", + "operator": "=", + "rightHandSide": { "argumentTypes": null, - "hexValue": "30", - "id": 1536, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2089:1:10", - "subdenomination": null, + "id": 1814, + "name": "dailyLimit", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1805, + "src": "1509:10:17", "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } }, - "src": "2074:16:10", + "src": "1477:42:17", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "falseBody": { - "id": 1565, - "nodeType": "Block", - "src": "2195:413:10", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 1553, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1551, - "name": "token", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1526, - "src": "2209:5:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 1552, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1489, - "src": "2217:2:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "2209:10:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 1554, - "nodeType": "ExpressionStatement", - "src": "2209:10:10" - }, + "id": 1816, + "nodeType": "ExpressionStatement", + "src": "1477:42:17" + } + ] + }, + "documentation": "@dev Allows to update the daily limit for a specified token. This can only be done via a Safe transaction.\n @param token Token contract address.\n @param dailyLimit Daily limit in smallest token unit.", + "id": 1818, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 1808, + "modifierName": { + "argumentTypes": null, + "id": 1807, + "name": "authorized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 730, + "src": "1452:10:17", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "1452:10:17" + } + ], + "name": "changeDailyLimit", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1806, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1803, + "name": "token", + "nodeType": "VariableDeclaration", + "scope": 1818, + "src": "1394:13:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1802, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1394:7:17", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1805, + "name": "dailyLimit", + "nodeType": "VariableDeclaration", + "scope": 1818, + "src": "1409:18:17", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1804, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1409:7:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1393:35:17" + }, + "payable": false, + "returnParameters": { + "id": 1809, + "nodeType": "ParameterList", + "parameters": [], + "src": "1467:0:17" + }, + "scope": 1973, + "src": "1368:158:17", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": { + "id": 1902, + "nodeType": "Block", + "src": "1979:695:17", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ { - "assignments": [], - "declarations": [ + "argumentTypes": null, + "arguments": [ { - "constant": false, - "id": 1556, - "name": "functionIdentifier", - "nodeType": "VariableDeclaration", - "scope": 1606, - "src": "2233:25:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - "typeName": { - "id": 1555, - "name": "bytes4", - "nodeType": "ElementaryTypeName", - "src": "2233:6:10", + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1832, + "name": "msg", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2598, + "src": "2104:3:17", "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" + "typeIdentifier": "t_magic_message", + "typeString": "msg" } }, - "value": null, - "visibility": "internal" - } - ], - "id": 1557, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "2233:25:10" - }, - { - "externalReferences": [ - { - "functionIdentifier": { - "declaration": 1556, - "isOffset": false, - "isSlot": false, - "src": "2367:18:10", - "valueSize": 1 - } - }, - { - "data": { - "declaration": 1493, - "isOffset": false, - "isSlot": false, - "src": "2399:4:10", - "valueSize": 1 - } - }, - { - "receiver": { - "declaration": 1529, - "isOffset": false, - "isSlot": false, - "src": "2428:8:10", - "valueSize": 1 - } - }, - { - "amount": { - "declaration": 1532, - "isOffset": false, - "isSlot": false, - "src": "2479:6:10", - "valueSize": 1 - } - }, - { - "data": { - "declaration": 1493, - "isOffset": false, - "isSlot": false, - "src": "2450:4:10", - "valueSize": 1 - } - }, - { - "data": { - "declaration": 1493, - "isOffset": false, - "isSlot": false, - "src": "2499:4:10", - "valueSize": 1 + "id": 1833, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "sender", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2104:10:17", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } } ], - "id": 1558, - "nodeType": "InlineAssembly", - "operations": "{\n functionIdentifier := mload(add(data, 0x20))\n receiver := mload(add(data, 0x24))\n amount := mload(add(data, 0x44))\n}", - "src": "2340:205:10" - }, - { "expression": { - "argumentTypes": null, - "arguments": [ + "argumentTypes": [ { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - "id": 1562, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { "argumentTypes": null, - "id": 1560, - "name": "functionIdentifier", + "id": 1829, + "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1556, - "src": "2546:18:10", + "referencedDeclaration": 717, + "src": "2087:7:17", "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" + "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeString": "contract ModuleManager" } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 1561, - "name": "TRANSFER_FUNCTION_IDENTIFIER", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1421, - "src": "2568:28:10", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeString": "contract ModuleManager" } - }, - "src": "2546:50:10", + ], + "id": 1828, + "name": "OwnerManager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1472, + "src": "2074:12:17", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1472_$", + "typeString": "type(contract OwnerManager)" } - ], - "id": 1559, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 2399, - 2400 - ], - "referencedDeclaration": 2399, - "src": "2538:7:10", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1563, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2538:59:10", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1564, - "nodeType": "ExpressionStatement", - "src": "2538:59:10" - } - ] - }, - "id": 1566, - "nodeType": "IfStatement", - "src": "2070:538:10", - "trueBody": { - "id": 1550, - "nodeType": "Block", - "src": "2092:89:10", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 1540, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1538, - "name": "token", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1526, - "src": "2106:5:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "30", - "id": 1539, + }, + "id": 1830, "isConstant": false, "isLValue": false, - "isPure": true, - "kind": "number", + "isPure": false, + "kind": "typeConversion", "lValueRequested": false, - "nodeType": "Literal", - "src": "2114:1:10", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2106:9:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 1541, - "nodeType": "ExpressionStatement", - "src": "2106:9:10" - }, - { - "expression": { - "argumentTypes": null, - "id": 1544, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1542, - "name": "receiver", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1529, - "src": "2129:8:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 1543, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1489, - "src": "2140:2:10", + "names": [], + "nodeType": "FunctionCall", + "src": "2074:21:17", "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "typeIdentifier": "t_contract$_OwnerManager_$1472", + "typeString": "contract OwnerManager" } }, - "src": "2129:13:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 1545, - "nodeType": "ExpressionStatement", - "src": "2129:13:10" - }, - { - "expression": { - "argumentTypes": null, - "id": 1548, + "id": 1831, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1546, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1532, - "src": "2156:6:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 1547, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1491, - "src": "2165:5:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "2156:14:10", + "memberName": "isOwner", + "nodeType": "MemberAccess", + "referencedDeclaration": 1422, + "src": "2074:29:17", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", + "typeString": "function (address) view external returns (bool)" } }, - "id": 1549, - "nodeType": "ExpressionStatement", - "src": "2156:14:10" + "id": 1834, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2074:41:17", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } } - ] - } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1827, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2601, + 2602 + ], + "referencedDeclaration": 2601, + "src": "2066:7:17", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1835, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2066:50:17", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1836, + "nodeType": "ExpressionStatement", + "src": "2066:50:17" }, { "expression": { @@ -6138,19 +4424,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1570, + "id": 1840, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1568, - "name": "receiver", + "id": 1838, + "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1529, - "src": "2625:8:10", + "referencedDeclaration": 1822, + "src": "2134:2:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6161,14 +4447,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1569, + "id": 1839, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2637:1:10", + "src": "2140:1:17", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -6176,7 +4462,7 @@ }, "value": "0" }, - "src": "2625:13:10", + "src": "2134:7:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6190,21 +4476,21 @@ "typeString": "bool" } ], - "id": 1567, + "id": 1837, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "2617:7:10", + "referencedDeclaration": 2601, + "src": "2126:7:17", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1571, + "id": 1841, "isConstant": false, "isLValue": false, "isPure": false, @@ -6212,15 +4498,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2617:22:10", + "src": "2126:16:17", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1572, + "id": 1842, "nodeType": "ExpressionStatement", - "src": "2617:22:10" + "src": "2126:16:17" }, { "expression": { @@ -6232,19 +4518,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1576, + "id": 1846, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1574, + "id": 1844, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1532, - "src": "2657:6:10", + "referencedDeclaration": 1824, + "src": "2160:6:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6255,14 +4541,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1575, + "id": 1845, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2666:1:10", + "src": "2169:1:17", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -6270,7 +4556,7 @@ }, "value": "0" }, - "src": "2657:10:10", + "src": "2160:10:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6284,21 +4570,21 @@ "typeString": "bool" } ], - "id": 1573, + "id": 1843, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "2649:7:10", + "referencedDeclaration": 2601, + "src": "2152:7:17", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1577, + "id": 1847, "isConstant": false, "isLValue": false, "isPure": false, @@ -6306,15 +4592,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2649:19:10", + "src": "2152:19:17", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1578, + "id": 1848, "nodeType": "ExpressionStatement", - "src": "2649:19:10" + "src": "2152:19:17" }, { "expression": { @@ -6325,12 +4611,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1581, + "id": 1851, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1526, - "src": "2763:5:10", + "referencedDeclaration": 1820, + "src": "2266:5:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6338,12 +4624,12 @@ }, { "argumentTypes": null, - "id": 1582, + "id": 1852, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1532, - "src": "2770:6:10", + "referencedDeclaration": 1824, + "src": "2273:6:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6361,18 +4647,18 @@ "typeString": "uint256" } ], - "id": 1580, + "id": 1850, "name": "isUnderLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1680, - "src": "2750:12:10", + "referencedDeclaration": 1959, + "src": "2253:12:17", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) returns (bool)" } }, - "id": 1583, + "id": 1853, "isConstant": false, "isLValue": false, "isPure": false, @@ -6380,7 +4666,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2750:27:10", + "src": "2253:27:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6394,21 +4680,21 @@ "typeString": "bool" } ], - "id": 1579, + "id": 1849, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "2742:7:10", + "referencedDeclaration": 2601, + "src": "2245:7:17", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1584, + "id": 1854, "isConstant": false, "isLValue": false, "isPure": false, @@ -6416,20 +4702,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2742:36:10", + "src": "2245:36:17", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1585, + "id": 1855, "nodeType": "ExpressionStatement", - "src": "2742:36:10" + "src": "2245:36:17" }, { "expression": { "argumentTypes": null, - "id": 1591, + "id": 1861, "isConstant": false, "isLValue": false, "isPure": false, @@ -6440,26 +4726,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1586, + "id": 1856, "name": "dailyLimits", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1425, - "src": "2788:11:10", + "referencedDeclaration": 1758, + "src": "2291:11:17", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1432_storage_$", + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1765_storage_$", "typeString": "mapping(address => struct DailyLimitModule.DailyLimit storage ref)" } }, - "id": 1588, + "id": 1858, "indexExpression": { "argumentTypes": null, - "id": 1587, + "id": 1857, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1526, - "src": "2800:5:10", + "referencedDeclaration": 1820, + "src": "2303:5:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6470,21 +4756,21 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2788:18:10", + "src": "2291:18:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1432_storage", + "typeIdentifier": "t_struct$_DailyLimit_$1765_storage", "typeString": "struct DailyLimitModule.DailyLimit storage ref" } }, - "id": 1589, + "id": 1859, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "spentToday", "nodeType": "MemberAccess", - "referencedDeclaration": 1429, - "src": "2788:29:10", + "referencedDeclaration": 1762, + "src": "2291:29:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6494,266 +4780,651 @@ "operator": "+=", "rightHandSide": { "argumentTypes": null, - "id": 1590, + "id": 1860, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1532, - "src": "2821:6:10", + "referencedDeclaration": 1824, + "src": "2324:6:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2788:39:10", + "src": "2291:39:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1592, + "id": 1862, "nodeType": "ExpressionStatement", - "src": "2788:39:10" + "src": "2291:39:17" }, { - "expression": { + "condition": { "argumentTypes": null, - "arguments": [ + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1865, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1863, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1820, + "src": "2344:5:17", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1864, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2353:1:17", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "2344:10:17", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 1900, + "nodeType": "Block", + "src": "2466:202:17", + "statements": [ { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1596, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1489, - "src": "2879:2:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 1597, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1491, - "src": "2883:5:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, + "assignments": [ + 1880 + ], + "declarations": [ { - "argumentTypes": null, - "id": 1598, + "constant": false, + "id": 1880, "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1493, - "src": "2890:4:10", + "nodeType": "VariableDeclaration", + "scope": 1903, + "src": "2480:17:17", + "stateVariable": false, + "storageLocation": "memory", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "expression": { + "typeString": "bytes" + }, + "typeName": { + "id": 1879, + "name": "bytes", + "nodeType": "ElementaryTypeName", + "src": "2480:5:17", + "typeDescriptions": { + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 1887, + "initialValue": { + "argumentTypes": null, + "arguments": [ + { "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1599, - "name": "Enum", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 6, - "src": "2896:4:10", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Enum_$6_$", - "typeString": "type(contract Enum)" - } - }, - "id": 1600, + "hexValue": "7472616e7366657228616464726573732c75696e7432353629", + "id": 1883, "isConstant": false, "isLValue": false, - "isPure": false, + "isPure": true, + "kind": "string", "lValueRequested": false, - "memberName": "Operation", - "nodeType": "MemberAccess", - "referencedDeclaration": 5, - "src": "2896:14:10", + "nodeType": "Literal", + "src": "2524:27:17", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_a9059cbb2ab09eb219583f4a59a5d0623ade346d962bcd4e46b11da047c9049b", + "typeString": "literal_string \"transfer(address,uint256)\"" + }, + "value": "transfer(address,uint256)" + }, + { + "argumentTypes": null, + "id": 1884, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1822, + "src": "2553:2:17", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1885, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1824, + "src": "2557:6:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_stringliteral_a9059cbb2ab09eb219583f4a59a5d0623ade346d962bcd4e46b11da047c9049b", + "typeString": "literal_string \"transfer(address,uint256)\"" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1881, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2585, + "src": "2500:3:17", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_Operation_$5_$", - "typeString": "type(enum Enum.Operation)" + "typeIdentifier": "t_magic_abi", + "typeString": "abi" } }, - "id": 1601, + "id": 1882, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, - "memberName": "Call", + "memberName": "encodeWithSignature", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2896:19:10", + "src": "2500:23:17", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", - "typeString": "enum Enum.Operation" + "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (string memory) pure returns (bytes memory)" } + }, + "id": 1886, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2500:64:17", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" } - ], + }, + "nodeType": "VariableDeclarationStatement", + "src": "2480:84:17" + }, + { "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, + "argumentTypes": null, + "arguments": [ { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1891, + "name": "token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1820, + "src": "2620:5:17", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "hexValue": "30", + "id": 1892, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2627:1:17", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + { + "argumentTypes": null, + "id": 1893, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1880, + "src": "2630:4:17", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1894, + "name": "Enum", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 30, + "src": "2636:4:17", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Enum_$30_$", + "typeString": "type(contract Enum)" + } + }, + "id": 1895, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "Operation", + "nodeType": "MemberAccess", + "referencedDeclaration": 29, + "src": "2636:14:17", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_Operation_$29_$", + "typeString": "type(enum Enum.Operation)" + } + }, + "id": 1896, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Call", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2636:19:17", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + ], + "expression": { + "argumentTypes": null, + "id": 1889, + "name": "manager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 717, + "src": "2586:7:17", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeString": "contract ModuleManager" + } + }, + "id": 1890, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "execTransactionFromModule", + "nodeType": "MemberAccess", + "referencedDeclaration": 927, + "src": "2586:33:17", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$returns$_t_bool_$", + "typeString": "function (address,uint256,bytes memory,enum Enum.Operation) external returns (bool)" + } + }, + "id": 1897, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2586:70:17", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1888, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2601, + 2602 + ], + "referencedDeclaration": 2601, + "src": "2578:7:17", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1898, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2578:79:17", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1899, + "nodeType": "ExpressionStatement", + "src": "2578:79:17" + } + ] + }, + "id": 1901, + "nodeType": "IfStatement", + "src": "2340:328:17", + "trueBody": { + "id": 1878, + "nodeType": "Block", + "src": "2356:104:17", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ { - "typeIdentifier": "t_enum$_Operation_$5", - "typeString": "enum Enum.Operation" + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1869, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1822, + "src": "2412:2:17", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1870, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1824, + "src": "2416:6:17", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "hexValue": "", + "id": 1871, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2424:2:17", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + "value": "" + }, + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 1872, + "name": "Enum", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 30, + "src": "2428:4:17", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_Enum_$30_$", + "typeString": "type(contract Enum)" + } + }, + "id": 1873, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "Operation", + "nodeType": "MemberAccess", + "referencedDeclaration": 29, + "src": "2428:14:17", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_enum$_Operation_$29_$", + "typeString": "type(enum Enum.Operation)" + } + }, + "id": 1874, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "Call", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2428:19:17", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", + "typeString": "literal_string \"\"" + }, + { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + ], + "expression": { + "argumentTypes": null, + "id": 1867, + "name": "manager", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 717, + "src": "2378:7:17", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeString": "contract ModuleManager" + } + }, + "id": 1868, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "execTransactionFromModule", + "nodeType": "MemberAccess", + "referencedDeclaration": 927, + "src": "2378:33:17", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$returns$_t_bool_$", + "typeString": "function (address,uint256,bytes memory,enum Enum.Operation) external returns (bool)" + } + }, + "id": 1875, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2378:70:17", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } } ], "expression": { - "argumentTypes": null, - "id": 1594, - "name": "manager", + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1866, + "name": "require", "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 588, - "src": "2845:7:10", + "overloadedDeclarations": [ + 2601, + 2602 + ], + "referencedDeclaration": 2601, + "src": "2370:7:17", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$971", - "typeString": "contract ModuleManager" + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" } }, - "id": 1595, + "id": 1876, "isConstant": false, "isLValue": false, "isPure": false, + "kind": "functionCall", "lValueRequested": false, - "memberName": "execTransactionFromModule", - "nodeType": "MemberAccess", - "referencedDeclaration": 798, - "src": "2845:33:10", + "names": [], + "nodeType": "FunctionCall", + "src": "2370:79:17", "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$returns$_t_bool_$", - "typeString": "function (address,uint256,bytes memory,enum Enum.Operation) external returns (bool)" + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" } }, - "id": 1602, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2845:71:10", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1593, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 2399, - 2400 - ], - "referencedDeclaration": 2399, - "src": "2837:7:10", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "id": 1877, + "nodeType": "ExpressionStatement", + "src": "2370:79:17" } - }, - "id": 1603, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2837:80:10", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1604, - "nodeType": "ExpressionStatement", - "src": "2837:80:10" + ] + } } ] }, - "documentation": null, - "id": 1606, + "documentation": "@dev Returns if Safe transaction is a valid daily limit transaction.\n @param token Address of the token that should be transfered (0 for Ether)\n @param to Address to which the tokens should be transfered\n @param amount Amount of tokens (or Ether) that should be transfered\n @return Returns if transaction can be executed.", + "id": 1903, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [], - "name": "executeInternal", + "name": "executeDailyLimit", "nodeType": "FunctionDefinition", "parameters": { - "id": 1494, + "id": 1825, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1487, - "name": "sender", - "nodeType": "VariableDeclaration", - "scope": 1606, - "src": "1630:14:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1486, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1630:7:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1489, - "name": "to", + "id": 1820, + "name": "token", "nodeType": "VariableDeclaration", - "scope": 1606, - "src": "1646:10:10", + "scope": 1903, + "src": "1917:13:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6761,10 +5432,10 @@ "typeString": "address" }, "typeName": { - "id": 1488, + "id": 1819, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1646:7:10", + "src": "1917:7:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6775,220 +5446,11 @@ }, { "constant": false, - "id": 1491, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 1606, - "src": "1658:13:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1490, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1658:7:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1493, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 1606, - "src": "1673:10:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 1492, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "1673:5:10", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1629:55:10" - }, - "payable": false, - "returnParameters": { - "id": 1495, - "nodeType": "ParameterList", - "parameters": [], - "src": "1706:0:10" - }, - "scope": 1694, - "src": "1605:1319:10", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 1623, - "nodeType": "Block", - "src": "3393:61:10", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1616, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2396, - "src": "3419:3:10", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 1617, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "3419:10:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 1618, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1608, - "src": "3431:2:10", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 1619, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1610, - "src": "3435:5:10", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1620, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1612, - "src": "3442:4:10", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 1615, - "name": "executeInternal", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1606, - "src": "3403:15:10", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", - "typeString": "function (address,address,uint256,bytes memory)" - } - }, - "id": 1621, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3403:44:10", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1622, - "nodeType": "ExpressionStatement", - "src": "3403:44:10" - } - ] - }, - "documentation": "@dev Returns if Safe transaction is a valid daily limit transaction.\n @param to Receiver address in case of Ether transfer, token address in case of a token transfer.\n @param value Ether value in case of an Ether transfer.\n @param data Encoded token transfer. Empty in case of Ether transfer.\n @return Returns if transaction can be executed.", - "id": 1624, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "executeDailyLimit", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1613, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1608, + "id": 1822, "name": "to", "nodeType": "VariableDeclaration", - "scope": 1624, - "src": "3335:10:10", + "scope": 1903, + "src": "1932:10:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6996,10 +5458,10 @@ "typeString": "address" }, "typeName": { - "id": 1607, + "id": 1821, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3335:7:10", + "src": "1932:7:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7010,11 +5472,11 @@ }, { "constant": false, - "id": 1610, - "name": "value", + "id": 1824, + "name": "amount", "nodeType": "VariableDeclaration", - "scope": 1624, - "src": "3347:13:10", + "scope": 1903, + "src": "1944:14:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7022,10 +5484,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1609, + "id": 1823, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3347:7:10", + "src": "1944:7:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7033,82 +5495,56 @@ }, "value": null, "visibility": "internal" - }, - { - "constant": false, - "id": 1612, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 1624, - "src": "3362:10:10", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 1611, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "3362:5:10", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" } ], - "src": "3334:39:10" + "src": "1916:43:17" }, "payable": false, "returnParameters": { - "id": 1614, + "id": 1826, "nodeType": "ParameterList", "parameters": [], - "src": "3393:0:10" + "src": "1979:0:17" }, - "scope": 1694, - "src": "3308:146:10", + "scope": 1973, + "src": "1890:784:17", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1679, + "id": 1958, "nodeType": "Block", - "src": "3557:391:10", + "src": "2777:391:17", "statements": [ { "assignments": [ - 1634 + 1913 ], "declarations": [ { "constant": false, - "id": 1634, + "id": 1913, "name": "dailyLimit", "nodeType": "VariableDeclaration", - "scope": 1680, - "src": "3567:29:10", + "scope": 1959, + "src": "2787:29:17", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1432_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1765_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit" }, "typeName": { "contractScope": null, - "id": 1633, + "id": 1912, "name": "DailyLimit", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1432, - "src": "3567:10:10", + "referencedDeclaration": 1765, + "src": "2787:10:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1432_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1765_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit" } }, @@ -7116,31 +5552,31 @@ "visibility": "internal" } ], - "id": 1638, + "id": 1917, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1635, + "id": 1914, "name": "dailyLimits", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1425, - "src": "3599:11:10", + "referencedDeclaration": 1758, + "src": "2819:11:17", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1432_storage_$", + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1765_storage_$", "typeString": "mapping(address => struct DailyLimitModule.DailyLimit storage ref)" } }, - "id": 1637, + "id": 1916, "indexExpression": { "argumentTypes": null, - "id": 1636, + "id": 1915, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1626, - "src": "3611:5:10", + "referencedDeclaration": 1905, + "src": "2831:5:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7151,14 +5587,14 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3599:18:10", + "src": "2819:18:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1432_storage", + "typeIdentifier": "t_struct$_DailyLimit_$1765_storage", "typeString": "struct DailyLimitModule.DailyLimit storage ref" } }, "nodeType": "VariableDeclarationStatement", - "src": "3567:50:10" + "src": "2787:50:17" }, { "condition": { @@ -7167,7 +5603,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1643, + "id": 1922, "isConstant": false, "isLValue": false, "isPure": false, @@ -7177,18 +5613,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 1639, + "id": 1918, "name": "today", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1693, - "src": "3631:5:10", + "referencedDeclaration": 1972, + "src": "2851:5:17", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 1640, + "id": 1919, "isConstant": false, "isLValue": false, "isPure": false, @@ -7196,7 +5632,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3631:7:10", + "src": "2851:7:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7208,50 +5644,50 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1641, + "id": 1920, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1634, - "src": "3641:10:10", + "referencedDeclaration": 1913, + "src": "2861:10:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1432_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1765_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, - "id": 1642, + "id": 1921, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "lastDay", "nodeType": "MemberAccess", - "referencedDeclaration": 1431, - "src": "3641:18:10", + "referencedDeclaration": 1764, + "src": "2861:18:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3631:28:10", + "src": "2851:28:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 1658, + "id": 1937, "nodeType": "IfStatement", - "src": "3627:126:10", + "src": "2847:126:17", "trueBody": { - "id": 1657, + "id": 1936, "nodeType": "Block", - "src": "3661:92:10", + "src": "2881:92:17", "statements": [ { "expression": { "argumentTypes": null, - "id": 1649, + "id": 1928, "isConstant": false, "isLValue": false, "isPure": false, @@ -7260,26 +5696,26 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1644, + "id": 1923, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1634, - "src": "3675:10:10", + "referencedDeclaration": 1913, + "src": "2895:10:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1432_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1765_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, - "id": 1646, + "id": 1925, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "lastDay", "nodeType": "MemberAccess", - "referencedDeclaration": 1431, - "src": "3675:18:10", + "referencedDeclaration": 1764, + "src": "2895:18:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7292,18 +5728,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 1647, + "id": 1926, "name": "today", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1693, - "src": "3696:5:10", + "referencedDeclaration": 1972, + "src": "2916:5:17", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 1648, + "id": 1927, "isConstant": false, "isLValue": false, "isPure": false, @@ -7311,26 +5747,26 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3696:7:10", + "src": "2916:7:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3675:28:10", + "src": "2895:28:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1650, + "id": 1929, "nodeType": "ExpressionStatement", - "src": "3675:28:10" + "src": "2895:28:17" }, { "expression": { "argumentTypes": null, - "id": 1655, + "id": 1934, "isConstant": false, "isLValue": false, "isPure": false, @@ -7339,26 +5775,26 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1651, + "id": 1930, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1634, - "src": "3717:10:10", + "referencedDeclaration": 1913, + "src": "2937:10:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1432_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1765_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, - "id": 1653, + "id": 1932, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "spentToday", "nodeType": "MemberAccess", - "referencedDeclaration": 1429, - "src": "3717:21:10", + "referencedDeclaration": 1762, + "src": "2937:21:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7369,14 +5805,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "30", - "id": 1654, + "id": 1933, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3741:1:10", + "src": "2961:1:17", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -7384,15 +5820,15 @@ }, "value": "0" }, - "src": "3717:25:10", + "src": "2937:25:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1656, + "id": 1935, "nodeType": "ExpressionStatement", - "src": "3717:25:10" + "src": "2937:25:17" } ] } @@ -7404,7 +5840,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 1673, + "id": 1952, "isConstant": false, "isLValue": false, "isPure": false, @@ -7415,7 +5851,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1665, + "id": 1944, "isConstant": false, "isLValue": false, "isPure": false, @@ -7426,7 +5862,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1662, + "id": 1941, "isConstant": false, "isLValue": false, "isPure": false, @@ -7435,26 +5871,26 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1659, + "id": 1938, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1634, - "src": "3769:10:10", + "referencedDeclaration": 1913, + "src": "2989:10:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1432_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1765_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, - "id": 1660, + "id": 1939, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "spentToday", "nodeType": "MemberAccess", - "referencedDeclaration": 1429, - "src": "3769:21:10", + "referencedDeclaration": 1762, + "src": "2989:21:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7464,18 +5900,18 @@ "operator": "+", "rightExpression": { "argumentTypes": null, - "id": 1661, + "id": 1940, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1628, - "src": "3793:6:10", + "referencedDeclaration": 1907, + "src": "3013:6:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3769:30:10", + "src": "2989:30:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7487,32 +5923,32 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1663, + "id": 1942, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1634, - "src": "3803:10:10", + "referencedDeclaration": 1913, + "src": "3023:10:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1432_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1765_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, - "id": 1664, + "id": 1943, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "dailyLimit", "nodeType": "MemberAccess", - "referencedDeclaration": 1427, - "src": "3803:21:10", + "referencedDeclaration": 1760, + "src": "3023:21:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3769:55:10", + "src": "2989:55:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7526,7 +5962,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1672, + "id": 1951, "isConstant": false, "isLValue": false, "isPure": false, @@ -7537,7 +5973,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1669, + "id": 1948, "isConstant": false, "isLValue": false, "isPure": false, @@ -7546,26 +5982,26 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1666, + "id": 1945, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1634, - "src": "3840:10:10", + "referencedDeclaration": 1913, + "src": "3060:10:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1432_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1765_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, - "id": 1667, + "id": 1946, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "spentToday", "nodeType": "MemberAccess", - "referencedDeclaration": 1429, - "src": "3840:21:10", + "referencedDeclaration": 1762, + "src": "3060:21:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7575,18 +6011,18 @@ "operator": "+", "rightExpression": { "argumentTypes": null, - "id": 1668, + "id": 1947, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1628, - "src": "3864:6:10", + "referencedDeclaration": 1907, + "src": "3084:6:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3840:30:10", + "src": "3060:30:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7598,59 +6034,59 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1670, + "id": 1949, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1634, - "src": "3873:10:10", + "referencedDeclaration": 1913, + "src": "3093:10:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1432_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1765_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, - "id": 1671, + "id": 1950, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "spentToday", "nodeType": "MemberAccess", - "referencedDeclaration": 1429, - "src": "3873:21:10", + "referencedDeclaration": 1762, + "src": "3093:21:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3840:54:10", + "src": "3060:54:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "3769:125:10", + "src": "2989:125:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 1676, + "id": 1955, "nodeType": "IfStatement", - "src": "3762:157:10", + "src": "2982:157:17", "trueBody": { "expression": { "argumentTypes": null, "hexValue": "74727565", - "id": 1674, + "id": 1953, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "3915:4:10", + "src": "3135:4:17", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -7658,24 +6094,24 @@ }, "value": "true" }, - "functionReturnParameters": 1632, - "id": 1675, + "functionReturnParameters": 1911, + "id": 1954, "nodeType": "Return", - "src": "3908:11:10" + "src": "3128:11:17" } }, { "expression": { "argumentTypes": null, "hexValue": "66616c7365", - "id": 1677, + "id": 1956, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "3936:5:10", + "src": "3156:5:17", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -7683,15 +6119,15 @@ }, "value": "false" }, - "functionReturnParameters": 1632, - "id": 1678, + "functionReturnParameters": 1911, + "id": 1957, "nodeType": "Return", - "src": "3929:12:10" + "src": "3149:12:17" } ] }, "documentation": null, - "id": 1680, + "id": 1959, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -7699,16 +6135,16 @@ "name": "isUnderLimit", "nodeType": "FunctionDefinition", "parameters": { - "id": 1629, + "id": 1908, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1626, + "id": 1905, "name": "token", "nodeType": "VariableDeclaration", - "scope": 1680, - "src": "3482:13:10", + "scope": 1959, + "src": "2702:13:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7716,10 +6152,10 @@ "typeString": "address" }, "typeName": { - "id": 1625, + "id": 1904, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3482:7:10", + "src": "2702:7:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7730,11 +6166,11 @@ }, { "constant": false, - "id": 1628, + "id": 1907, "name": "amount", "nodeType": "VariableDeclaration", - "scope": 1680, - "src": "3497:14:10", + "scope": 1959, + "src": "2717:14:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7742,10 +6178,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1627, + "id": 1906, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3497:7:10", + "src": "2717:7:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7755,20 +6191,20 @@ "visibility": "internal" } ], - "src": "3481:31:10" + "src": "2701:31:17" }, "payable": false, "returnParameters": { - "id": 1632, + "id": 1911, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1631, + "id": 1910, "name": "", "nodeType": "VariableDeclaration", - "scope": 1680, - "src": "3547:4:10", + "scope": 1959, + "src": "2767:4:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7776,10 +6212,10 @@ "typeString": "bool" }, "typeName": { - "id": 1630, + "id": 1909, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "3547:4:10", + "src": "2767:4:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7789,19 +6225,19 @@ "visibility": "internal" } ], - "src": "3546:6:10" + "src": "2766:6:17" }, - "scope": 1694, - "src": "3460:488:10", + "scope": 1973, + "src": "2680:488:17", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1692, + "id": 1971, "nodeType": "Block", - "src": "4112:44:10", + "src": "3332:44:17", "statements": [ { "expression": { @@ -7810,19 +6246,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1690, + "id": 1969, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1685, + "id": 1964, "name": "now", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2398, - "src": "4129:3:10", + "referencedDeclaration": 2600, + "src": "3349:3:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7839,19 +6275,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1688, + "id": 1967, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1686, + "id": 1965, "name": "now", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2398, - "src": "4136:3:10", + "referencedDeclaration": 2600, + "src": "3356:3:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7862,14 +6298,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31", - "id": 1687, + "id": 1966, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4142:6:10", + "src": "3362:6:17", "subdenomination": "days", "typeDescriptions": { "typeIdentifier": "t_rational_86400_by_1", @@ -7877,41 +6313,41 @@ }, "value": "1" }, - "src": "4136:12:10", + "src": "3356:12:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], - "id": 1689, + "id": 1968, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "4135:14:10", + "src": "3355:14:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4129:20:10", + "src": "3349:20:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 1684, - "id": 1691, + "functionReturnParameters": 1963, + "id": 1970, "nodeType": "Return", - "src": "4122:27:10" + "src": "3342:27:17" } ] }, "documentation": "@dev Returns last midnight as Unix timestamp.\n @return Unix timestamp.", - "id": 1693, + "id": 1972, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -7919,23 +6355,23 @@ "name": "today", "nodeType": "FunctionDefinition", "parameters": { - "id": 1681, + "id": 1960, "nodeType": "ParameterList", "parameters": [], - "src": "4054:2:10" + "src": "3274:2:17" }, "payable": false, "returnParameters": { - "id": 1684, + "id": 1963, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1683, + "id": 1962, "name": "", "nodeType": "VariableDeclaration", - "scope": 1693, - "src": "4102:4:10", + "scope": 1972, + "src": "3322:4:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7943,10 +6379,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1682, + "id": 1961, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "4102:4:10", + "src": "3322:4:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7956,63 +6392,45 @@ "visibility": "internal" } ], - "src": "4101:6:10" + "src": "3321:6:17" }, - "scope": 1694, - "src": "4040:116:10", + "scope": 1973, + "src": "3260:116:17", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 1695, - "src": "296:3862:10" + "scope": 1974, + "src": "296:3082:17" } ], - "src": "0:4159:10" + "src": "0:3379:17" }, "compiler": { "name": "solc", - "version": "0.4.23+commit.124ca40d.Emscripten.clang" + "version": "0.4.24+commit.e67f0147.Emscripten.clang" }, "networks": { "4": { "events": {}, "links": {}, - "address": "0x831ec5aaad91423fb78d3e1ad1fcf9d5006774df", - "transactionHash": "0xdae4c3a40843ab9bf9e62becc882075695bb8c0bcc3f3a3aa3016559b63f90e4" - }, - "1525950336085": { - "events": {}, - "links": {}, - "address": "0xe52c225329d3fb9f6933bd52e7067a24d20f7983", - "transactionHash": "0xaffd9cdbf1bd14f5f349af2782a1b4dbebd9ac97abedbcfb9aee5fb1707afe96" + "address": "0x7fbf23d81d86e6d983bb5526e1456a314057ffb0", + "transactionHash": "0x6c99547388ac2e4a058dfefd9a50240efb12fa4b21c127c89dcca96ca3e918d1" }, - "1526283540628": { - "events": {}, - "links": {}, - "address": "0x452dd8d6f81786c3ad3ec3cbcf024687659c682a", - "transactionHash": "0xaffd9cdbf1bd14f5f349af2782a1b4dbebd9ac97abedbcfb9aee5fb1707afe96" - }, - "1526478212260": { - "events": {}, - "links": {}, - "address": "0x180cb429f1d8b3e99b718640d3895155e2190452", - "transactionHash": "0xefeddc1db847371ef66ea36caf0a583b6bb2b9a08fdbeb73ee0f1563131ca3e2" - }, - "1526973574996": { + "1527316019334": { "events": {}, "links": {}, - "address": "0xdf2e7bbb8f57db7d8b11f9d8a77b0754979111c1", - "transactionHash": "0xefeddc1db847371ef66ea36caf0a583b6bb2b9a08fdbeb73ee0f1563131ca3e2" + "address": "0xc78d5518d62b7a5bd2659c432996dd55ca07f1eb", + "transactionHash": "0xa9c94eb8ff4c3c857211c3b03fa7356009f4952d8cc71d3953be16cd0152a022" }, - "1527316019334": { + "1527420696956": { "events": {}, "links": {}, - "address": "0x1d916d0b2c243d732ee103132c7d85e8bda13beb", - "transactionHash": "0xefeddc1db847371ef66ea36caf0a583b6bb2b9a08fdbeb73ee0f1563131ca3e2" + "address": "0xf289e80fb030333c4b18827149f3148c1597e5cd", + "transactionHash": "0x25e24bddf0042536191b50d1de301cc2aaa3356b6aac5044c793dcbe358a72f9" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-26T06:28:28.347Z" + "updatedAt": "2018-05-27T11:31:46.254Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/DailyLimitModuleWithSignature.json b/safe-contracts/build/contracts/DailyLimitModuleWithSignature.json deleted file mode 100644 index 60d71e9923..0000000000 --- a/safe-contracts/build/contracts/DailyLimitModuleWithSignature.json +++ /dev/null @@ -1,2573 +0,0 @@ -{ - "contractName": "DailyLimitModuleWithSignature", - "abi": [ - { - "constant": false, - "inputs": [ - { - "name": "tokens", - "type": "address[]" - }, - { - "name": "_dailyLimits", - "type": "uint256[]" - } - ], - "name": "setup", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "TRANSFER_FUNCTION_IDENTIFIER", - "outputs": [ - { - "name": "", - "type": "bytes4" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "manager", - "outputs": [ - { - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_masterCopy", - "type": "address" - } - ], - "name": "changeMasterCopy", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "token", - "type": "address" - }, - { - "name": "dailyLimit", - "type": "uint256" - } - ], - "name": "changeDailyLimit", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "NAME", - "outputs": [ - { - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "nonce", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "today", - "outputs": [ - { - "name": "", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "", - "type": "address" - } - ], - "name": "dailyLimits", - "outputs": [ - { - "name": "dailyLimit", - "type": "uint256" - }, - { - "name": "spentToday", - "type": "uint256" - }, - { - "name": "lastDay", - "type": "uint256" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "to", - "type": "address" - }, - { - "name": "value", - "type": "uint256" - }, - { - "name": "data", - "type": "bytes" - } - ], - "name": "executeDailyLimit", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "VERSION", - "outputs": [ - { - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "to", - "type": "address" - }, - { - "name": "value", - "type": "uint256" - }, - { - "name": "data", - "type": "bytes" - }, - { - "name": "v", - "type": "uint8" - }, - { - "name": "r", - "type": "bytes32" - }, - { - "name": "s", - "type": "bytes32" - } - ], - "name": "executeDailyLimitWithSignature", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "to", - "type": "address" - }, - { - "name": "value", - "type": "uint256" - }, - { - "name": "data", - "type": "bytes" - }, - { - "name": "_nonce", - "type": "uint256" - } - ], - "name": "getTransactionHash", - "outputs": [ - { - "name": "", - "type": "bytes32" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x608060405234801561001057600080fd5b506111d9806100206000396000f3006080604052600436106100c5576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806328814f03146100ca578063430e47f814610173578063481c6a75146101dc5780634bedd30f146102335780637de7edef146102ef57806381c5e03b14610332578063a3f4df7e1461037f578063affed0e01461040f578063b74e452b1461043a578063b98a34de14610465578063d7bffc921461051e578063fce7379a14610583578063ffa1ad7414610616575b600080fd5b3480156100d657600080fd5b5061017160048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192905050506106a6565b005b34801561017f57600080fd5b50610188610745565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b3480156101e857600080fd5b506101f1610769565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561023f57600080fd5b506102ed600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff1690602001909291908035600019169060200190929190803560001916906020019092919050505061078f565b005b3480156102fb57600080fd5b50610330600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061084c565b005b34801561033e57600080fd5b5061037d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610911565b005b34801561038b57600080fd5b506103946109b8565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103d45780820151818401526020810190506103b9565b50505050905090810190601f1680156104015780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561041b57600080fd5b506104246109f1565b6040518082815260200191505060405180910390f35b34801561044657600080fd5b5061044f6109f7565b6040518082815260200191505060405180910390f35b34801561047157600080fd5b50610500600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929080359060200190929190505050610a0f565b60405180826000191660001916815260200191505060405180910390f35b34801561052a57600080fd5b5061055f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610bf2565b60405180848152602001838152602001828152602001935050505060405180910390f35b34801561058f57600080fd5b50610614600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610c1c565b005b34801561062257600080fd5b5061062b610c2d565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561066b578082015181840152602081019050610650565b50505050905090810190601f1680156106985780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60006106b0610c66565b600090505b82518110156107405781818151811015156106cc57fe5b906020019060200201516002600085848151811015156106e857fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555080806001019150506106b5565b505050565b7fa9059cbb0000000000000000000000000000000000000000000000000000000081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806107a0888888600354610a0f565b9150600182868686604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af1158015610819573d6000803e3d6000fd5b505050602060405103519050600160036000828254019250508190555061084281898989610cf0565b5050505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156108a857600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156108ce57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561096d57600080fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055505050565b6040805190810160405280601281526020017f4461696c79204c696d6974204d6f64756c65000000000000000000000000000081525081565b60035481565b60006201518042811515610a0757fe5b064203905090565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f010000000000000000000000000000000000000000000000000000000000000002308787878760405180887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101877effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140184815260200183805190602001908083835b602083101515610baf5780518252602082019150602081019050602083039250610b8a565b6001836020036101000a03801982511681845116808217855250505050505090500182815260200197505050505050505060405180910390209050949350505050565b60026020528060005260406000206000915090508060000154908060010154908060020154905083565b610c2833848484610cf0565b505050565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610cad57600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600080600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e896040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015610db357600080fd5b505af1158015610dc7573d6000803e3d6000fd5b505050506040513d6020811015610ddd57600080fd5b81019080805190602001909291905050501515610df957600080fd5b60008551148015610e0a5750600086115b80610e22575060008551118015610e215750600086145b5b1515610e2d57600080fd5b600085511415610e465760009350869250859150610ecb565b8693506020850151905060248501519250604485015191507fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141515610eca57600080fd5b5b60008373ffffffffffffffffffffffffffffffffffffffff1614151515610ef157600080fd5b600082111515610f0057600080fd5b610f0a84836110fe565b1515610f1557600080fd5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008282540192505081905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a788888860006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200183600281111561101f57fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b8381101561105f578082015181840152602081019050611044565b50505050905090810190601f16801561108c5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b1580156110ae57600080fd5b505af11580156110c2573d6000803e3d6000fd5b505050506040513d60208110156110d857600080fd5b810190808051906020019092919050505015156110f457600080fd5b5050505050505050565b600080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050806002015461114f6109f7565b11156111705761115d6109f7565b8160020181905550600081600101819055505b806000015483826001015401111580156111935750806001015483826001015401115b156111a157600191506111a6565b600091505b50929150505600a165627a7a723058206053bd547ec094a1d800289a5c392f5dd89e41cd33f47d9a2cbbbcd1c14c52670029", - "deployedBytecode": "0x6080604052600436106100c5576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806328814f03146100ca578063430e47f814610173578063481c6a75146101dc5780634bedd30f146102335780637de7edef146102ef57806381c5e03b14610332578063a3f4df7e1461037f578063affed0e01461040f578063b74e452b1461043a578063b98a34de14610465578063d7bffc921461051e578063fce7379a14610583578063ffa1ad7414610616575b600080fd5b3480156100d657600080fd5b5061017160048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192905050506106a6565b005b34801561017f57600080fd5b50610188610745565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b3480156101e857600080fd5b506101f1610769565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561023f57600080fd5b506102ed600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff1690602001909291908035600019169060200190929190803560001916906020019092919050505061078f565b005b3480156102fb57600080fd5b50610330600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061084c565b005b34801561033e57600080fd5b5061037d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610911565b005b34801561038b57600080fd5b506103946109b8565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103d45780820151818401526020810190506103b9565b50505050905090810190601f1680156104015780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561041b57600080fd5b506104246109f1565b6040518082815260200191505060405180910390f35b34801561044657600080fd5b5061044f6109f7565b6040518082815260200191505060405180910390f35b34801561047157600080fd5b50610500600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929080359060200190929190505050610a0f565b60405180826000191660001916815260200191505060405180910390f35b34801561052a57600080fd5b5061055f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610bf2565b60405180848152602001838152602001828152602001935050505060405180910390f35b34801561058f57600080fd5b50610614600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610c1c565b005b34801561062257600080fd5b5061062b610c2d565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561066b578082015181840152602081019050610650565b50505050905090810190601f1680156106985780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60006106b0610c66565b600090505b82518110156107405781818151811015156106cc57fe5b906020019060200201516002600085848151811015156106e857fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000018190555080806001019150506106b5565b505050565b7fa9059cbb0000000000000000000000000000000000000000000000000000000081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000806107a0888888600354610a0f565b9150600182868686604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af1158015610819573d6000803e3d6000fd5b505050602060405103519050600160036000828254019250508190555061084281898989610cf0565b5050505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156108a857600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156108ce57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561096d57600080fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055505050565b6040805190810160405280601281526020017f4461696c79204c696d6974204d6f64756c65000000000000000000000000000081525081565b60035481565b60006201518042811515610a0757fe5b064203905090565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f010000000000000000000000000000000000000000000000000000000000000002308787878760405180887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101877effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140184815260200183805190602001908083835b602083101515610baf5780518252602082019150602081019050602083039250610b8a565b6001836020036101000a03801982511681845116808217855250505050505090500182815260200197505050505050505060405180910390209050949350505050565b60026020528060005260406000206000915090508060000154908060010154908060020154905083565b610c2833848484610cf0565b505050565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610cad57600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600080600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e896040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015610db357600080fd5b505af1158015610dc7573d6000803e3d6000fd5b505050506040513d6020811015610ddd57600080fd5b81019080805190602001909291905050501515610df957600080fd5b60008551148015610e0a5750600086115b80610e22575060008551118015610e215750600086145b5b1515610e2d57600080fd5b600085511415610e465760009350869250859150610ecb565b8693506020850151905060248501519250604485015191507fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141515610eca57600080fd5b5b60008373ffffffffffffffffffffffffffffffffffffffff1614151515610ef157600080fd5b600082111515610f0057600080fd5b610f0a84836110fe565b1515610f1557600080fd5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060010160008282540192505081905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a788888860006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200183600281111561101f57fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b8381101561105f578082015181840152602081019050611044565b50505050905090810190601f16801561108c5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b1580156110ae57600080fd5b505af11580156110c2573d6000803e3d6000fd5b505050506040513d60208110156110d857600080fd5b810190808051906020019092919050505015156110f457600080fd5b5050505050505050565b600080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000209050806002015461114f6109f7565b11156111705761115d6109f7565b8160020181905550600081600101819055505b806000015483826001015401111580156111935750806001015483826001015401115b156111a157600191506111a6565b600091505b50929150505600a165627a7a723058206053bd547ec094a1d800289a5c392f5dd89e41cd33f47d9a2cbbbcd1c14c52670029", - "sourceMap": "241:1458:11:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;241:1458:11;;;;;;;", - "deployedSourceMap": "241:1458:11:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;991:222:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;991:222:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;441:67;;8:9:-1;5:2;;;30:1;27;20:12;5:2;441:67:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;262:28:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;262:28:5;;;;;;;;;;;;;;;;;;;;;;;;;;;874:346:11;;8:9:-1;5:2;;;30:1;27;20:12;5:2;874:346:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;626:208:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:208:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;1441:158:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1441:158:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;339:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;339:50:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;339:50:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;307:20:11;;8:9:-1;5:2;;;30:1;27;20:12;5:2;307:20:11;;;;;;;;;;;;;;;;;;;;;;;4040:116:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4040:116:10;;;;;;;;;;;;;;;;;;;;;;;1471:226:11;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1471:226:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;586:50:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;586:50:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3308:146;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3308:146:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;395:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;395:40:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;395:40:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;991:222;1104:9;1077:12;:10;:12::i;:::-;1116:1;1104:13;;1099:107;1123:6;:13;1119:1;:17;1099:107;;;1191:12;1204:1;1191:15;;;;;;;;;;;;;;;;;;1155:11;:22;1167:6;1174:1;1167:9;;;;;;;;;;;;;;;;;;1155:22;;;;;;;;;;;;;;;:33;;:51;;;;1138:3;;;;;;;1099:107;;;991:222;;;:::o;441:67::-;;;:::o;262:28:5:-;;;;;;;;;;;;;:::o;874:346:11:-;1013:23;1091:14;1039:42;1058:2;1062:5;1069:4;1075:5;;1039:18;:42::i;:::-;1013:68;;1108:35;1118:15;1135:1;1138;1141;1108:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1108:35:11;;;;;;;;1091:52;;1162:1;1153:5;;:10;;;;;;;;;;;1173:40;1189:6;1197:2;1201:5;1208:4;1173:15;:40::i;:::-;874:346;;;;;;;;:::o;626:208:4:-;359:7:5;;;;;;;;;;;337:30;;:10;:30;;;329:39;;;;;;;;791:1:4;776:11;:16;;;;768:25;;;;;;;;816:11;803:10;;:24;;;;;;;;;;;;;;;;;;626:208;:::o;1441:158:10:-;359:7:5;;;;;;;;;;;337:30;;:10;:30;;;329:39;;;;;;;;1582:10:10;1550:11;:18;1562:5;1550:18;;;;;;;;;;;;;;;:29;;:42;;;;1441:158;;:::o;339:50::-;;;;;;;;;;;;;;;;;;;;:::o;307:20:11:-;;;;:::o;4040:116:10:-;4102:4;4142:6;4136:3;:12;;;;;;;;4129:3;:20;4122:27;;4040:116;:::o;1471:226:11:-;1599:7;1644:4;1639:10;;1656:1;1651:7;;1660:4;1666:2;1670:5;1677:4;1683:6;1629:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;1629:61:11;;;;;;;;;;;;;;;;;;;;;;;;;;;1622:68;;1471:226;;;;;;:::o;586:50:10:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3308:146::-;3403:44;3419:10;3431:2;3435:5;3442:4;3403:15;:44::i;:::-;3308:146;;;:::o;395:40::-;;;;;;;;;;;;;;;;;;;;:::o;392:268:5:-;606:1;594:7;;;;;;;;;;;586:21;;;578:30;;;;;;;;642:10;618:7;;:35;;;;;;;;;;;;;;;;;;392:268::o;1605:1319:10:-;1997:13;2020:16;2046:14;2233:25;1814:7;;;;;;;;;;;1801:29;;;1831:6;1801:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1801:37:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1801:37:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1801:37:10;;;;;;;;;;;;;;;;1793:46;;;;;;;;1939:1;1924:4;:11;:16;:29;;;;;1952:1;1944:5;:9;1924:29;:62;;;;1971:1;1957:4;:11;:15;:29;;;;;1985:1;1976:5;:10;1957:29;1924:62;1916:71;;;;;;;;2089:1;2074:4;:11;:16;2070:538;;;2114:1;2106:9;;2140:2;2129:13;;2165:5;2156:14;;2070:538;;;2217:2;2209:10;;2405:4;2399;2395:15;2389:22;2367:44;;2456:4;2450;2446:15;2440:22;2428:34;;2505:4;2499;2495:15;2489:22;2479:32;;2568:28;2546:50;;;:18;:50;;;;2538:59;;;;;;;;2070:538;2637:1;2625:8;:13;;;;2617:22;;;;;;;;2666:1;2657:6;:10;2649:19;;;;;;;;2750:27;2763:5;2770:6;2750:12;:27::i;:::-;2742:36;;;;;;;;2821:6;2788:11;:18;2800:5;2788:18;;;;;;;;;;;;;;;:29;;;:39;;;;;;;;;;;2845:7;;;;;;;;;;;:33;;;2879:2;2883:5;2890:4;2896:19;2845:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;2845:71:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2845:71:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2845:71:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2845:71:10;;;;;;;;;;;;;;;;2837:80;;;;;;;;1605:1319;;;;;;;;:::o;3460:488::-;3547:4;3567:29;3599:11;:18;3611:5;3599:18;;;;;;;;;;;;;;;3567:50;;3641:10;:18;;;3631:7;:5;:7::i;:::-;:28;3627:126;;;3696:7;:5;:7::i;:::-;3675:10;:18;;:28;;;;3741:1;3717:10;:21;;:25;;;;3627:126;3803:10;:21;;;3793:6;3769:10;:21;;;:30;:55;;:125;;;;;3873:10;:21;;;3864:6;3840:10;:21;;;:30;:54;3769:125;3762:157;;;3915:4;3908:11;;;;3762:157;3936:5;3929:12;;3460:488;;;;;;:::o", - "source": "pragma solidity 0.4.23;\nimport \"./DailyLimitModule.sol\";\n\n\n/// @title Daily Limit Module With Signature - Allows to transfer limited amounts of ERC20 tokens and Ether without confirmations.\n/// @author Richard Meissner - \ncontract DailyLimitModuleWithSignature is DailyLimitModule {\n\n uint256 public nonce;\n\n /// @dev Returns if Safe transaction is a valid daily limit transaction.\n /// @param to Receiver address in case of Ether transfer, token address in case of a token transfer.\n /// @param value Ether value in case of an Ether transfer.\n /// @param data Encoded token transfer. Empty in case of Ether transfer.\n /// @param v Part of the signature of the sender.\n /// @param r Part of the signature of the sender.\n /// @param s Part of the signature of the sender.\n /// @return Returns if transaction can be executed.\n function executeDailyLimitWithSignature(address to, uint256 value, bytes data, uint8 v, bytes32 r, bytes32 s)\n public\n {\n bytes32 transactionHash = getTransactionHash(to, value, data, nonce);\n address sender = ecrecover(transactionHash, v, r, s);\n nonce += 1;\n executeInternal(sender, to, value, data);\n }\n\n /// @dev Returns transactions hash to be signed by owners.\n /// @param to Destination address.\n /// @param value Ether value.\n /// @param data Data payload.\n /// @param _nonce Transaction nonce.\n /// @return Transaction hash.\n function getTransactionHash(address to, uint256 value, bytes data, uint256 _nonce)\n public\n view\n returns (bytes32)\n {\n return keccak256(byte(0x19), byte(0), this, to, value, data, _nonce);\n }\n}\n", - "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/DailyLimitModuleWithSignature.sol", - "ast": { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/DailyLimitModuleWithSignature.sol", - "exportedSymbols": { - "DailyLimitModuleWithSignature": [ - 1775 - ] - }, - "id": 1776, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 1696, - "literals": [ - "solidity", - "0.4", - ".23" - ], - "nodeType": "PragmaDirective", - "src": "0:23:11" - }, - { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/DailyLimitModule.sol", - "file": "./DailyLimitModule.sol", - "id": 1697, - "nodeType": "ImportDirective", - "scope": 1776, - "sourceUnit": 1695, - "src": "24:32:11", - "symbolAliases": [], - "unitAlias": "" - }, - { - "baseContracts": [ - { - "arguments": null, - "baseName": { - "contractScope": null, - "id": 1698, - "name": "DailyLimitModule", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1694, - "src": "283:16:11", - "typeDescriptions": { - "typeIdentifier": "t_contract$_DailyLimitModule_$1694", - "typeString": "contract DailyLimitModule" - } - }, - "id": 1699, - "nodeType": "InheritanceSpecifier", - "src": "283:16:11" - } - ], - "contractDependencies": [ - 580, - 621, - 1359, - 1694 - ], - "contractKind": "contract", - "documentation": "@title Daily Limit Module With Signature - Allows to transfer limited amounts of ERC20 tokens and Ether without confirmations.\n @author Richard Meissner - ", - "fullyImplemented": true, - "id": 1775, - "linearizedBaseContracts": [ - 1775, - 1694, - 621, - 580, - 1359 - ], - "name": "DailyLimitModuleWithSignature", - "nodeType": "ContractDefinition", - "nodes": [ - { - "constant": false, - "id": 1701, - "name": "nonce", - "nodeType": "VariableDeclaration", - "scope": 1775, - "src": "307:20:11", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1700, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "307:7:11", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "public" - }, - { - "body": { - "id": 1745, - "nodeType": "Block", - "src": "1003:217:11", - "statements": [ - { - "assignments": [ - 1717 - ], - "declarations": [ - { - "constant": false, - "id": 1717, - "name": "transactionHash", - "nodeType": "VariableDeclaration", - "scope": 1746, - "src": "1013:23:11", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1716, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1013:7:11", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1724, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1719, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1703, - "src": "1058:2:11", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 1720, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1705, - "src": "1062:5:11", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1721, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1707, - "src": "1069:4:11", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "id": 1722, - "name": "nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1701, - "src": "1075:5:11", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1718, - "name": "getTransactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1774, - "src": "1039:18:11", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$", - "typeString": "function (address,uint256,bytes memory,uint256) view returns (bytes32)" - } - }, - "id": 1723, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1039:42:11", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1013:68:11" - }, - { - "assignments": [ - 1726 - ], - "declarations": [ - { - "constant": false, - "id": 1726, - "name": "sender", - "nodeType": "VariableDeclaration", - "scope": 1746, - "src": "1091:14:11", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1725, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1091:7:11", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1733, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1728, - "name": "transactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1717, - "src": "1118:15:11", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 1729, - "name": "v", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1709, - "src": "1135:1:11", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - { - "argumentTypes": null, - "id": 1730, - "name": "r", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1711, - "src": "1138:1:11", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 1731, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1713, - "src": "1141:1:11", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 1727, - "name": "ecrecover", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2388, - "src": "1108:9:11", - "typeDescriptions": { - "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", - "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)" - } - }, - "id": 1732, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1108:35:11", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1091:52:11" - }, - { - "expression": { - "argumentTypes": null, - "id": 1736, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1734, - "name": "nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1701, - "src": "1153:5:11", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "+=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "31", - "id": 1735, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1162:1:11", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "1153:10:11", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1737, - "nodeType": "ExpressionStatement", - "src": "1153:10:11" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1739, - "name": "sender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1726, - "src": "1189:6:11", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 1740, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1703, - "src": "1197:2:11", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 1741, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1705, - "src": "1201:5:11", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1742, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1707, - "src": "1208:4:11", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 1738, - "name": "executeInternal", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1606, - "src": "1173:15:11", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", - "typeString": "function (address,address,uint256,bytes memory)" - } - }, - "id": 1743, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1173:40:11", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1744, - "nodeType": "ExpressionStatement", - "src": "1173:40:11" - } - ] - }, - "documentation": "@dev Returns if Safe transaction is a valid daily limit transaction.\n @param to Receiver address in case of Ether transfer, token address in case of a token transfer.\n @param value Ether value in case of an Ether transfer.\n @param data Encoded token transfer. Empty in case of Ether transfer.\n @param v Part of the signature of the sender.\n @param r Part of the signature of the sender.\n @param s Part of the signature of the sender.\n @return Returns if transaction can be executed.", - "id": 1746, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "executeDailyLimitWithSignature", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1714, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1703, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 1746, - "src": "914:10:11", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1702, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "914:7:11", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1705, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 1746, - "src": "926:13:11", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1704, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "926:7:11", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1707, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 1746, - "src": "941:10:11", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 1706, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "941:5:11", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1709, - "name": "v", - "nodeType": "VariableDeclaration", - "scope": 1746, - "src": "953:7:11", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 1708, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "953:5:11", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1711, - "name": "r", - "nodeType": "VariableDeclaration", - "scope": 1746, - "src": "962:9:11", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1710, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "962:7:11", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1713, - "name": "s", - "nodeType": "VariableDeclaration", - "scope": 1746, - "src": "973:9:11", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1712, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "973:7:11", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "913:70:11" - }, - "payable": false, - "returnParameters": { - "id": 1715, - "nodeType": "ParameterList", - "parameters": [], - "src": "1003:0:11" - }, - "scope": 1775, - "src": "874:346:11", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1773, - "nodeType": "Block", - "src": "1612:85:11", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30783139", - "id": 1761, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1644:4:11", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_25_by_1", - "typeString": "int_const 25" - }, - "value": "0x19" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_25_by_1", - "typeString": "int_const 25" - } - ], - "id": 1760, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "1639:4:11", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes1_$", - "typeString": "type(bytes1)" - }, - "typeName": "byte" - }, - "id": 1762, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1639:10:11", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30", - "id": 1764, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1656:1:11", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 1763, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "1651:4:11", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes1_$", - "typeString": "type(bytes1)" - }, - "typeName": "byte" - }, - "id": 1765, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1651:7:11", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - } - }, - { - "argumentTypes": null, - "id": 1766, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2431, - "src": "1660:4:11", - "typeDescriptions": { - "typeIdentifier": "t_contract$_DailyLimitModuleWithSignature_$1775", - "typeString": "contract DailyLimitModuleWithSignature" - } - }, - { - "argumentTypes": null, - "id": 1767, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1748, - "src": "1666:2:11", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 1768, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1750, - "src": "1670:5:11", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1769, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1752, - "src": "1677:4:11", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "id": 1770, - "name": "_nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1754, - "src": "1683:6:11", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - }, - { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - }, - { - "typeIdentifier": "t_contract$_DailyLimitModuleWithSignature_$1775", - "typeString": "contract DailyLimitModuleWithSignature" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1759, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2390, - "src": "1629:9:11", - "typeDescriptions": { - "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", - "typeString": "function () pure returns (bytes32)" - } - }, - "id": 1771, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1629:61:11", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "functionReturnParameters": 1758, - "id": 1772, - "nodeType": "Return", - "src": "1622:68:11" - } - ] - }, - "documentation": "@dev Returns transactions hash to be signed by owners.\n @param to Destination address.\n @param value Ether value.\n @param data Data payload.\n @param _nonce Transaction nonce.\n @return Transaction hash.", - "id": 1774, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "getTransactionHash", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1755, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1748, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 1774, - "src": "1499:10:11", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1747, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1499:7:11", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1750, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 1774, - "src": "1511:13:11", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1749, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1511:7:11", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1752, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 1774, - "src": "1526:10:11", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 1751, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "1526:5:11", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1754, - "name": "_nonce", - "nodeType": "VariableDeclaration", - "scope": 1774, - "src": "1538:14:11", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1753, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1538:7:11", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1498:55:11" - }, - "payable": false, - "returnParameters": { - "id": 1758, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1757, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 1774, - "src": "1599:7:11", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1756, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1599:7:11", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1598:9:11" - }, - "scope": 1775, - "src": "1471:226:11", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - } - ], - "scope": 1776, - "src": "241:1458:11" - } - ], - "src": "0:1700:11" - }, - "legacyAST": { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/DailyLimitModuleWithSignature.sol", - "exportedSymbols": { - "DailyLimitModuleWithSignature": [ - 1775 - ] - }, - "id": 1776, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 1696, - "literals": [ - "solidity", - "0.4", - ".23" - ], - "nodeType": "PragmaDirective", - "src": "0:23:11" - }, - { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/DailyLimitModule.sol", - "file": "./DailyLimitModule.sol", - "id": 1697, - "nodeType": "ImportDirective", - "scope": 1776, - "sourceUnit": 1695, - "src": "24:32:11", - "symbolAliases": [], - "unitAlias": "" - }, - { - "baseContracts": [ - { - "arguments": null, - "baseName": { - "contractScope": null, - "id": 1698, - "name": "DailyLimitModule", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1694, - "src": "283:16:11", - "typeDescriptions": { - "typeIdentifier": "t_contract$_DailyLimitModule_$1694", - "typeString": "contract DailyLimitModule" - } - }, - "id": 1699, - "nodeType": "InheritanceSpecifier", - "src": "283:16:11" - } - ], - "contractDependencies": [ - 580, - 621, - 1359, - 1694 - ], - "contractKind": "contract", - "documentation": "@title Daily Limit Module With Signature - Allows to transfer limited amounts of ERC20 tokens and Ether without confirmations.\n @author Richard Meissner - ", - "fullyImplemented": true, - "id": 1775, - "linearizedBaseContracts": [ - 1775, - 1694, - 621, - 580, - 1359 - ], - "name": "DailyLimitModuleWithSignature", - "nodeType": "ContractDefinition", - "nodes": [ - { - "constant": false, - "id": 1701, - "name": "nonce", - "nodeType": "VariableDeclaration", - "scope": 1775, - "src": "307:20:11", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1700, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "307:7:11", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "public" - }, - { - "body": { - "id": 1745, - "nodeType": "Block", - "src": "1003:217:11", - "statements": [ - { - "assignments": [ - 1717 - ], - "declarations": [ - { - "constant": false, - "id": 1717, - "name": "transactionHash", - "nodeType": "VariableDeclaration", - "scope": 1746, - "src": "1013:23:11", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1716, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1013:7:11", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1724, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1719, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1703, - "src": "1058:2:11", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 1720, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1705, - "src": "1062:5:11", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1721, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1707, - "src": "1069:4:11", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "id": 1722, - "name": "nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1701, - "src": "1075:5:11", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1718, - "name": "getTransactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1774, - "src": "1039:18:11", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bytes32_$", - "typeString": "function (address,uint256,bytes memory,uint256) view returns (bytes32)" - } - }, - "id": 1723, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1039:42:11", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1013:68:11" - }, - { - "assignments": [ - 1726 - ], - "declarations": [ - { - "constant": false, - "id": 1726, - "name": "sender", - "nodeType": "VariableDeclaration", - "scope": 1746, - "src": "1091:14:11", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1725, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1091:7:11", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1733, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1728, - "name": "transactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1717, - "src": "1118:15:11", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 1729, - "name": "v", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1709, - "src": "1135:1:11", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - { - "argumentTypes": null, - "id": 1730, - "name": "r", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1711, - "src": "1138:1:11", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 1731, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1713, - "src": "1141:1:11", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 1727, - "name": "ecrecover", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2388, - "src": "1108:9:11", - "typeDescriptions": { - "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", - "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)" - } - }, - "id": 1732, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1108:35:11", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1091:52:11" - }, - { - "expression": { - "argumentTypes": null, - "id": 1736, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 1734, - "name": "nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1701, - "src": "1153:5:11", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "+=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "31", - "id": 1735, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1162:1:11", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_1_by_1", - "typeString": "int_const 1" - }, - "value": "1" - }, - "src": "1153:10:11", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1737, - "nodeType": "ExpressionStatement", - "src": "1153:10:11" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1739, - "name": "sender", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1726, - "src": "1189:6:11", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 1740, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1703, - "src": "1197:2:11", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 1741, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1705, - "src": "1201:5:11", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1742, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1707, - "src": "1208:4:11", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - ], - "id": 1738, - "name": "executeInternal", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1606, - "src": "1173:15:11", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$", - "typeString": "function (address,address,uint256,bytes memory)" - } - }, - "id": 1743, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1173:40:11", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1744, - "nodeType": "ExpressionStatement", - "src": "1173:40:11" - } - ] - }, - "documentation": "@dev Returns if Safe transaction is a valid daily limit transaction.\n @param to Receiver address in case of Ether transfer, token address in case of a token transfer.\n @param value Ether value in case of an Ether transfer.\n @param data Encoded token transfer. Empty in case of Ether transfer.\n @param v Part of the signature of the sender.\n @param r Part of the signature of the sender.\n @param s Part of the signature of the sender.\n @return Returns if transaction can be executed.", - "id": 1746, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "executeDailyLimitWithSignature", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1714, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1703, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 1746, - "src": "914:10:11", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1702, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "914:7:11", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1705, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 1746, - "src": "926:13:11", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1704, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "926:7:11", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1707, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 1746, - "src": "941:10:11", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 1706, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "941:5:11", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1709, - "name": "v", - "nodeType": "VariableDeclaration", - "scope": 1746, - "src": "953:7:11", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - "typeName": { - "id": 1708, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "953:5:11", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1711, - "name": "r", - "nodeType": "VariableDeclaration", - "scope": 1746, - "src": "962:9:11", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1710, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "962:7:11", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1713, - "name": "s", - "nodeType": "VariableDeclaration", - "scope": 1746, - "src": "973:9:11", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1712, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "973:7:11", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "913:70:11" - }, - "payable": false, - "returnParameters": { - "id": 1715, - "nodeType": "ParameterList", - "parameters": [], - "src": "1003:0:11" - }, - "scope": 1775, - "src": "874:346:11", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1773, - "nodeType": "Block", - "src": "1612:85:11", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30783139", - "id": 1761, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1644:4:11", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_25_by_1", - "typeString": "int_const 25" - }, - "value": "0x19" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_25_by_1", - "typeString": "int_const 25" - } - ], - "id": 1760, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "1639:4:11", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes1_$", - "typeString": "type(bytes1)" - }, - "typeName": "byte" - }, - "id": 1762, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1639:10:11", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30", - "id": 1764, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1656:1:11", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 1763, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "1651:4:11", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes1_$", - "typeString": "type(bytes1)" - }, - "typeName": "byte" - }, - "id": 1765, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1651:7:11", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - } - }, - { - "argumentTypes": null, - "id": 1766, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2431, - "src": "1660:4:11", - "typeDescriptions": { - "typeIdentifier": "t_contract$_DailyLimitModuleWithSignature_$1775", - "typeString": "contract DailyLimitModuleWithSignature" - } - }, - { - "argumentTypes": null, - "id": 1767, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1748, - "src": "1666:2:11", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 1768, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1750, - "src": "1670:5:11", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 1769, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1752, - "src": "1677:4:11", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "id": 1770, - "name": "_nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1754, - "src": "1683:6:11", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - }, - { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - }, - { - "typeIdentifier": "t_contract$_DailyLimitModuleWithSignature_$1775", - "typeString": "contract DailyLimitModuleWithSignature" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 1759, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2390, - "src": "1629:9:11", - "typeDescriptions": { - "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", - "typeString": "function () pure returns (bytes32)" - } - }, - "id": 1771, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1629:61:11", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "functionReturnParameters": 1758, - "id": 1772, - "nodeType": "Return", - "src": "1622:68:11" - } - ] - }, - "documentation": "@dev Returns transactions hash to be signed by owners.\n @param to Destination address.\n @param value Ether value.\n @param data Data payload.\n @param _nonce Transaction nonce.\n @return Transaction hash.", - "id": 1774, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "getTransactionHash", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1755, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1748, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 1774, - "src": "1499:10:11", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1747, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1499:7:11", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1750, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 1774, - "src": "1511:13:11", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1749, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1511:7:11", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1752, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 1774, - "src": "1526:10:11", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 1751, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "1526:5:11", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1754, - "name": "_nonce", - "nodeType": "VariableDeclaration", - "scope": 1774, - "src": "1538:14:11", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1753, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1538:7:11", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1498:55:11" - }, - "payable": false, - "returnParameters": { - "id": 1758, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1757, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 1774, - "src": "1599:7:11", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 1756, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1599:7:11", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1598:9:11" - }, - "scope": 1775, - "src": "1471:226:11", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - } - ], - "scope": 1776, - "src": "241:1458:11" - } - ], - "src": "0:1700:11" - }, - "compiler": { - "name": "solc", - "version": "0.4.23+commit.124ca40d.Emscripten.clang" - }, - "networks": { - "4": { - "events": {}, - "links": {}, - "address": "0x7e0c709947a6d2c283c16a69182104016c7e212c", - "transactionHash": "0x4d4459efdc04c3c67835de906ac494897ade960b27a6353943677b35f5a3b555" - }, - "1525950336085": { - "events": {}, - "links": {}, - "address": "0x788256524db64c2b23ff2e417a833927550a2d65", - "transactionHash": "0x13942c7ebe4c7c49493ac8d9d8ee3c329a0be8b7a78717117e0c5d43cbf8632c" - }, - "1526283540628": { - "events": {}, - "links": {}, - "address": "0x3e2ade0d97956160691a96fb2adf83844155708d", - "transactionHash": "0x13942c7ebe4c7c49493ac8d9d8ee3c329a0be8b7a78717117e0c5d43cbf8632c" - }, - "1526478212260": { - "events": {}, - "links": {}, - "address": "0xdb5a513347baaf6454bdfcb439d6c712c52a754e", - "transactionHash": "0x21a453f823a02858ff598704a36731ed3a5264592902c73a7e68ee53d3fb635d" - }, - "1526973574996": { - "events": {}, - "links": {}, - "address": "0x924ca341d09a83622d62128543b45530d43afa51", - "transactionHash": "0x21a453f823a02858ff598704a36731ed3a5264592902c73a7e68ee53d3fb635d" - }, - "1527316019334": { - "events": {}, - "links": {}, - "address": "0x7bd57821cda477c45be7999e6b08de00886999c9", - "transactionHash": "0x21a453f823a02858ff598704a36731ed3a5264592902c73a7e68ee53d3fb635d" - } - }, - "schemaVersion": "2.0.0", - "updatedAt": "2018-05-26T06:28:28.345Z" -} \ No newline at end of file diff --git a/safe-contracts/build/contracts/DelegateConstructorProxy.json b/safe-contracts/build/contracts/DelegateConstructorProxy.json index 25dc2fc85a..939b532247 100644 --- a/safe-contracts/build/contracts/DelegateConstructorProxy.json +++ b/safe-contracts/build/contracts/DelegateConstructorProxy.json @@ -50,11 +50,11 @@ "type": "fallback" } ], - "bytecode": "0x608060405234801561001057600080fd5b5060405161026d38038061026d83398101806040528101908080519060200190929190805182019291905050508160008173ffffffffffffffffffffffffffffffffffffffff161415151561006457600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506000815111156100f15773ffffffffffffffffffffffffffffffffffffffff60005416600080835160208501846127105a03f46040513d6000823e60008214156100ed573d81fd5b5050505b505061016b806101026000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461008b5780635c60da1b146100b6575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e6000811415610086573d6000fd5b3d6000f35b34801561009757600080fd5b506100a061010d565b6040518082815260200191505060405180910390f35b3480156100c257600080fd5b506100cb610116565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006002905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a72305820caf2b106039b60d7c8f99a3087b6cbf6014cdee3748f0823ccd8cbf983ee4a720029", - "deployedBytecode": "0x60806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461008b5780635c60da1b146100b6575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e6000811415610086573d6000fd5b3d6000f35b34801561009757600080fd5b506100a061010d565b6040518082815260200191505060405180910390f35b3480156100c257600080fd5b506100cb610116565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006002905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a72305820caf2b106039b60d7c8f99a3087b6cbf6014cdee3748f0823ccd8cbf983ee4a720029", - "sourceMap": "355:882:0:-;;;610:625;8:9:-1;5:2;;;30:1;27;20:12;5:2;610:625:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;668:11;593:1:12;578:11;:16;;;;570:25;;;;;;;;618:11;605:10;;:24;;;;;;;;;;;;;;;;;;508:128;735:1:0;714:11;:18;:22;710:519;;;879:42;875:1;869:8;865:57;1043:1;1040;1026:11;1020:18;1013:4;1000:11;996:22;984:10;976:5;971:3;967:15;954:91;1079:4;1073:11;1124:14;1121:1;1116:3;1101:38;1171:1;1162:7;1159:14;1156:2;;;1188:14;1183:3;1176:27;1156:2;829:390;;;;610:625;;355:882;;;;;;", - "deployedSourceMap": "355:882:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;915:42:12;911:1;905:8;901:57;990:14;987:1;984;971:34;1085:1;1082;1066:14;1063:1;1051:10;1046:3;1033:54;1121:16;1118:1;1115;1100:38;1166:1;1157:7;1154:14;1151:2;;;1181:16;1178:1;1171:27;1151:2;1223:16;1220:1;1213:27;1386:104;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1386:104:12;;;;;;;;;;;;;;;;;;;;;;;1262:118;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1262:118:12;;;;;;;;;;;;;;;;;;;;;;;;;;;1386:104;1452:7;1482:1;1475:8;;1386:104;:::o;1262:118::-;1333:7;1363:10;;;;;;;;;;;1356:17;;1262:118;:::o", - "source": "pragma solidity 0.4.23;\nimport \"./Proxy.sol\";\n\n\n/// @title Delegate Constructor Proxy - Generic proxy contract allows to execute all transactions applying the code of a master contract. It is possible to send along initialization data with the constructor.\n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract DelegateConstructorProxy is Proxy {\n\n /// @dev Constructor function sets address of master copy contract.\n /// @param _masterCopy Master copy address.\n /// @param initializer Data used for a delegate call to initialize the contract.\n constructor(address _masterCopy, bytes initializer) Proxy(_masterCopy)\n public\n {\n if (initializer.length > 0) {\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n let masterCopy := and(sload(0), 0xffffffffffffffffffffffffffffffffffffffff)\n let success := delegatecall(sub(gas, 10000), masterCopy, add(initializer, 0x20), mload(initializer), 0, 0)\n let ptr := mload(0x40)\n returndatacopy(ptr, 0, returndatasize)\n if eq(success, 0) { revert(ptr, returndatasize) }\n }\n }\n }\n}\n", + "bytecode": "0x608060405234801561001057600080fd5b5060405161026d38038061026d83398101806040528101908080519060200190929190805182019291905050508160008173ffffffffffffffffffffffffffffffffffffffff161415151561006457600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506000815111156100f15773ffffffffffffffffffffffffffffffffffffffff60005416600080835160208501846127105a03f46040513d6000823e60008214156100ed573d81fd5b5050505b505061016b806101026000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461008b5780635c60da1b146100b6575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e6000811415610086573d6000fd5b3d6000f35b34801561009757600080fd5b506100a061010d565b6040518082815260200191505060405180910390f35b3480156100c257600080fd5b506100cb610116565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006002905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a723058205cd4a89651ca60d8b50982ec7e3fbdce37b95b9583ada7bf65fc3dad95a54f750029", + "deployedBytecode": "0x60806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461008b5780635c60da1b146100b6575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e6000811415610086573d6000fd5b3d6000f35b34801561009757600080fd5b506100a061010d565b6040518082815260200191505060405180910390f35b3480156100c257600080fd5b506100cb610116565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006002905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a723058205cd4a89651ca60d8b50982ec7e3fbdce37b95b9583ada7bf65fc3dad95a54f750029", + "sourceMap": "355:882:0:-;;;610:625;8:9:-1;5:2;;;30:1;27;20:12;5:2;610:625:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;668:11;593:1:11;578:11;:16;;;;570:25;;;;;;;;618:11;605:10;;:24;;;;;;;;;;;;;;;;;;508:128;735:1:0;714:11;:18;:22;710:519;;;879:42;875:1;869:8;865:57;1043:1;1040;1026:11;1020:18;1013:4;1000:11;996:22;984:10;976:5;971:3;967:15;954:91;1079:4;1073:11;1124:14;1121:1;1116:3;1101:38;1171:1;1162:7;1159:14;1156:2;;;1188:14;1183:3;1176:27;1156:2;829:390;;;;610:625;;355:882;;;;;;", + "deployedSourceMap": "355:882:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;915:42:11;911:1;905:8;901:57;990:14;987:1;984;971:34;1085:1;1082;1066:14;1063:1;1051:10;1046:3;1033:54;1121:16;1118:1;1115;1100:38;1166:1;1157:7;1154:14;1151:2;;;1181:16;1178:1;1171:27;1151:2;1223:16;1220:1;1213:27;1386:104;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1386:104:11;;;;;;;;;;;;;;;;;;;;;;;1262:118;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1262:118:11;;;;;;;;;;;;;;;;;;;;;;;;;;;1386:104;1452:7;1482:1;1475:8;;1386:104;:::o;1262:118::-;1333:7;1363:10;;;;;;;;;;;1356:17;;1262:118;:::o", + "source": "pragma solidity 0.4.24;\nimport \"./Proxy.sol\";\n\n\n/// @title Delegate Constructor Proxy - Generic proxy contract allows to execute all transactions applying the code of a master contract. It is possible to send along initialization data with the constructor.\n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract DelegateConstructorProxy is Proxy {\n\n /// @dev Constructor function sets address of master copy contract.\n /// @param _masterCopy Master copy address.\n /// @param initializer Data used for a delegate call to initialize the contract.\n constructor(address _masterCopy, bytes initializer) Proxy(_masterCopy)\n public\n {\n if (initializer.length > 0) {\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n let masterCopy := and(sload(0), 0xffffffffffffffffffffffffffffffffffffffff)\n let success := delegatecall(sub(gas, 10000), masterCopy, add(initializer, 0x20), mload(initializer), 0, 0)\n let ptr := mload(0x40)\n returndatacopy(ptr, 0, returndatasize)\n if eq(success, 0) { revert(ptr, returndatasize) }\n }\n }\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/DelegateConstructorProxy.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/DelegateConstructorProxy.sol", @@ -71,7 +71,7 @@ "literals": [ "solidity", "0.4", - ".23" + ".24" ], "nodeType": "PragmaDirective", "src": "0:23:0" @@ -82,7 +82,7 @@ "id": 2, "nodeType": "ImportDirective", "scope": 24, - "sourceUnit": 1509, + "sourceUnit": 1569, "src": "24:21:0", "symbolAliases": [], "unitAlias": "" @@ -96,10 +96,10 @@ "id": 3, "name": "Proxy", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1508, + "referencedDeclaration": 1568, "src": "392:5:0", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1508", + "typeIdentifier": "t_contract$_Proxy_$1568", "typeString": "contract Proxy" } }, @@ -109,7 +109,7 @@ } ], "contractDependencies": [ - 1508 + 1568 ], "contractKind": "contract", "documentation": "@title Delegate Constructor Proxy - Generic proxy contract allows to execute all transactions applying the code of a master contract. It is possible to send along initialization data with the constructor.\n @author Stefan George - \n @author Richard Meissner - ", @@ -117,7 +117,7 @@ "id": 23, "linearizedBaseContracts": [ 23, - 1508 + 1568 ], "name": "DelegateConstructorProxy", "nodeType": "ContractDefinition", @@ -264,10 +264,10 @@ "name": "Proxy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1508, + "referencedDeclaration": 1568, "src": "662:5:0", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Proxy_$1508_$", + "typeIdentifier": "t_type$_t_contract$_Proxy_$1568_$", "typeString": "type(contract Proxy)" } }, @@ -371,7 +371,7 @@ "literals": [ "solidity", "0.4", - ".23" + ".24" ], "nodeType": "PragmaDirective", "src": "0:23:0" @@ -382,7 +382,7 @@ "id": 2, "nodeType": "ImportDirective", "scope": 24, - "sourceUnit": 1509, + "sourceUnit": 1569, "src": "24:21:0", "symbolAliases": [], "unitAlias": "" @@ -396,10 +396,10 @@ "id": 3, "name": "Proxy", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1508, + "referencedDeclaration": 1568, "src": "392:5:0", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1508", + "typeIdentifier": "t_contract$_Proxy_$1568", "typeString": "contract Proxy" } }, @@ -409,7 +409,7 @@ } ], "contractDependencies": [ - 1508 + 1568 ], "contractKind": "contract", "documentation": "@title Delegate Constructor Proxy - Generic proxy contract allows to execute all transactions applying the code of a master contract. It is possible to send along initialization data with the constructor.\n @author Stefan George - \n @author Richard Meissner - ", @@ -417,7 +417,7 @@ "id": 23, "linearizedBaseContracts": [ 23, - 1508 + 1568 ], "name": "DelegateConstructorProxy", "nodeType": "ContractDefinition", @@ -564,10 +564,10 @@ "name": "Proxy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1508, + "referencedDeclaration": 1568, "src": "662:5:0", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Proxy_$1508_$", + "typeIdentifier": "t_type$_t_contract$_Proxy_$1568_$", "typeString": "type(contract Proxy)" } }, @@ -658,9 +658,9 @@ }, "compiler": { "name": "solc", - "version": "0.4.23+commit.124ca40d.Emscripten.clang" + "version": "0.4.24+commit.e67f0147.Emscripten.clang" }, "networks": {}, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-10T10:43:07.891Z" + "updatedAt": "2018-05-27T11:12:45.574Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/ERC20Token.json b/safe-contracts/build/contracts/ERC20Token.json new file mode 100644 index 0000000000..406c841d47 --- /dev/null +++ b/safe-contracts/build/contracts/ERC20Token.json @@ -0,0 +1,1799 @@ +{ + "contractName": "ERC20Token", + "abi": [ + { + "constant": true, + "inputs": [], + "name": "totalSupply", + "outputs": [ + { + "name": "", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "_from", + "type": "address" + }, + { + "indexed": true, + "name": "_to", + "type": "address" + }, + { + "indexed": false, + "name": "_value", + "type": "uint256" + } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "name": "_owner", + "type": "address" + }, + { + "indexed": true, + "name": "_spender", + "type": "address" + }, + { + "indexed": false, + "name": "_value", + "type": "uint256" + } + ], + "name": "Approval", + "type": "event" + }, + { + "constant": true, + "inputs": [ + { + "name": "_owner", + "type": "address" + } + ], + "name": "balanceOf", + "outputs": [ + { + "name": "balance", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_to", + "type": "address" + }, + { + "name": "_value", + "type": "uint256" + } + ], + "name": "transfer", + "outputs": [ + { + "name": "success", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_from", + "type": "address" + }, + { + "name": "_to", + "type": "address" + }, + { + "name": "_value", + "type": "uint256" + } + ], + "name": "transferFrom", + "outputs": [ + { + "name": "success", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": false, + "inputs": [ + { + "name": "_spender", + "type": "address" + }, + { + "name": "_value", + "type": "uint256" + } + ], + "name": "approve", + "outputs": [ + { + "name": "success", + "type": "bool" + } + ], + "payable": false, + "stateMutability": "nonpayable", + "type": "function" + }, + { + "constant": true, + "inputs": [ + { + "name": "_owner", + "type": "address" + }, + { + "name": "_spender", + "type": "address" + } + ], + "name": "allowance", + "outputs": [ + { + "name": "remaining", + "type": "uint256" + } + ], + "payable": false, + "stateMutability": "view", + "type": "function" + } + ], + "bytecode": "0x", + "deployedBytecode": "0x", + "sourceMap": "", + "deployedSourceMap": "", + "source": "pragma solidity ^0.4.23;\n\n// Abstract contract for the full ERC 20 Token standard\n// https://github.com/ethereum/EIPs/issues/20\n\ncontract ERC20Token {\n /* This is a slight change to the ERC20 base standard.\n function totalSupply() constant returns (uint256 supply);\n is replaced with:\n uint256 public totalSupply;\n This automatically creates a getter function for the totalSupply.\n This is moved to the base contract since public getter functions are not\n currently recognised as an implementation of the matching abstract\n function by the compiler.\n */\n /// total amount of tokens\n uint256 public totalSupply;\n\n /// @param _owner The address from which the balance will be retrieved\n /// @return The balance\n function balanceOf(address _owner) public constant returns (uint256 balance);\n\n /// @notice send `_value` token to `_to` from `msg.sender`\n /// @param _to The address of the recipient\n /// @param _value The amount of token to be transferred\n /// @return Whether the transfer was successful or not\n function transfer(address _to, uint256 _value) public returns (bool success);\n\n /// @notice send `_value` token to `_to` from `_from` on the condition it is approved by `_from`\n /// @param _from The address of the sender\n /// @param _to The address of the recipient\n /// @param _value The amount of token to be transferred\n /// @return Whether the transfer was successful or not\n function transferFrom(address _from, address _to, uint256 _value) public returns (bool success);\n\n /// @notice `msg.sender` approves `_spender` to spend `_value` tokens\n /// @param _spender The address of the account able to transfer the tokens\n /// @param _value The amount of tokens to be approved for transfer\n /// @return Whether the approval was successful or not\n function approve(address _spender, uint256 _value) public returns (bool success);\n\n /// @param _owner The address of the account owning tokens\n /// @param _spender The address of the account able to transfer the tokens\n /// @return Amount of remaining tokens allowed to spent\n function allowance(address _owner, address _spender) public constant returns (uint256 remaining);\n\n event Transfer(address indexed _from, address indexed _to, uint256 _value);\n event Approval(address indexed _owner, address indexed _spender, uint256 _value);\n}", + "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/interfaces/ERC20Token.sol", + "ast": { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/interfaces/ERC20Token.sol", + "exportedSymbols": { + "ERC20Token": [ + 1685 + ] + }, + "id": 1686, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1621, + "literals": [ + "solidity", + "^", + "0.4", + ".23" + ], + "nodeType": "PragmaDirective", + "src": "0:24:14" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": false, + "id": 1685, + "linearizedBaseContracts": [ + 1685 + ], + "name": "ERC20Token", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 1623, + "name": "totalSupply", + "nodeType": "VariableDeclaration", + "scope": 1685, + "src": "616:26:14", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1622, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "616:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "public" + }, + { + "body": null, + "documentation": "@param _owner The address from which the balance will be retrieved\n @return The balance", + "id": 1630, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "balanceOf", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1626, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1625, + "name": "_owner", + "nodeType": "VariableDeclaration", + "scope": 1630, + "src": "771:14:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1624, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "771:7:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "770:16:14" + }, + "payable": false, + "returnParameters": { + "id": 1629, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1628, + "name": "balance", + "nodeType": "VariableDeclaration", + "scope": 1630, + "src": "812:15:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1627, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "812:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "811:17:14" + }, + "scope": 1685, + "src": "752:77:14", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": "@notice send `_value` token to `_to` from `msg.sender`\n @param _to The address of the recipient\n @param _value The amount of token to be transferred\n @return Whether the transfer was successful or not", + "id": 1639, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "transfer", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1635, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1632, + "name": "_to", + "nodeType": "VariableDeclaration", + "scope": 1639, + "src": "1083:11:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1631, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1083:7:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1634, + "name": "_value", + "nodeType": "VariableDeclaration", + "scope": 1639, + "src": "1096:14:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1633, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1096:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1082:29:14" + }, + "payable": false, + "returnParameters": { + "id": 1638, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1637, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 1639, + "src": "1128:12:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1636, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1128:4:14", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1127:14:14" + }, + "scope": 1685, + "src": "1065:77:14", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": "@notice send `_value` token to `_to` from `_from` on the condition it is approved by `_from`\n @param _from The address of the sender\n @param _to The address of the recipient\n @param _value The amount of token to be transferred\n @return Whether the transfer was successful or not", + "id": 1650, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1646, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1641, + "name": "_from", + "nodeType": "VariableDeclaration", + "scope": 1650, + "src": "1485:13:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1640, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1485:7:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1643, + "name": "_to", + "nodeType": "VariableDeclaration", + "scope": 1650, + "src": "1500:11:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1642, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1500:7:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1645, + "name": "_value", + "nodeType": "VariableDeclaration", + "scope": 1650, + "src": "1513:14:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1644, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1513:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1484:44:14" + }, + "payable": false, + "returnParameters": { + "id": 1649, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1648, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 1650, + "src": "1545:12:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1647, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1545:4:14", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1544:14:14" + }, + "scope": 1685, + "src": "1463:96:14", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": "@notice `msg.sender` approves `_spender` to spend `_value` tokens\n @param _spender The address of the account able to transfer the tokens\n @param _value The amount of tokens to be approved for transfer\n @return Whether the approval was successful or not", + "id": 1659, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "approve", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1655, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1652, + "name": "_spender", + "nodeType": "VariableDeclaration", + "scope": 1659, + "src": "1865:16:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1651, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1865:7:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1654, + "name": "_value", + "nodeType": "VariableDeclaration", + "scope": 1659, + "src": "1883:14:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1653, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1883:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1864:34:14" + }, + "payable": false, + "returnParameters": { + "id": 1658, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1657, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 1659, + "src": "1915:12:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1656, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1915:4:14", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1914:14:14" + }, + "scope": 1685, + "src": "1848:81:14", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": "@param _owner The address of the account owning tokens\n @param _spender The address of the account able to transfer the tokens\n @return Amount of remaining tokens allowed to spent", + "id": 1668, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "allowance", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1664, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1661, + "name": "_owner", + "nodeType": "VariableDeclaration", + "scope": 1668, + "src": "2156:14:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1660, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2156:7:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1663, + "name": "_spender", + "nodeType": "VariableDeclaration", + "scope": 1668, + "src": "2172:16:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1662, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2172:7:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2155:34:14" + }, + "payable": false, + "returnParameters": { + "id": 1667, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1666, + "name": "remaining", + "nodeType": "VariableDeclaration", + "scope": 1668, + "src": "2215:17:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1665, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2215:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2214:19:14" + }, + "scope": 1685, + "src": "2137:97:14", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "anonymous": false, + "documentation": null, + "id": 1676, + "name": "Transfer", + "nodeType": "EventDefinition", + "parameters": { + "id": 1675, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1670, + "indexed": true, + "name": "_from", + "nodeType": "VariableDeclaration", + "scope": 1676, + "src": "2255:21:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1669, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2255:7:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1672, + "indexed": true, + "name": "_to", + "nodeType": "VariableDeclaration", + "scope": 1676, + "src": "2278:19:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1671, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2278:7:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1674, + "indexed": false, + "name": "_value", + "nodeType": "VariableDeclaration", + "scope": 1676, + "src": "2299:14:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1673, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2299:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2254:60:14" + }, + "src": "2240:75:14" + }, + { + "anonymous": false, + "documentation": null, + "id": 1684, + "name": "Approval", + "nodeType": "EventDefinition", + "parameters": { + "id": 1683, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1678, + "indexed": true, + "name": "_owner", + "nodeType": "VariableDeclaration", + "scope": 1684, + "src": "2335:22:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1677, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2335:7:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1680, + "indexed": true, + "name": "_spender", + "nodeType": "VariableDeclaration", + "scope": 1684, + "src": "2359:24:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1679, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2359:7:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1682, + "indexed": false, + "name": "_value", + "nodeType": "VariableDeclaration", + "scope": 1684, + "src": "2385:14:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1681, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2385:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2334:66:14" + }, + "src": "2320:81:14" + } + ], + "scope": 1686, + "src": "129:2274:14" + } + ], + "src": "0:2403:14" + }, + "legacyAST": { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/interfaces/ERC20Token.sol", + "exportedSymbols": { + "ERC20Token": [ + 1685 + ] + }, + "id": 1686, + "nodeType": "SourceUnit", + "nodes": [ + { + "id": 1621, + "literals": [ + "solidity", + "^", + "0.4", + ".23" + ], + "nodeType": "PragmaDirective", + "src": "0:24:14" + }, + { + "baseContracts": [], + "contractDependencies": [], + "contractKind": "contract", + "documentation": null, + "fullyImplemented": false, + "id": 1685, + "linearizedBaseContracts": [ + 1685 + ], + "name": "ERC20Token", + "nodeType": "ContractDefinition", + "nodes": [ + { + "constant": false, + "id": 1623, + "name": "totalSupply", + "nodeType": "VariableDeclaration", + "scope": 1685, + "src": "616:26:14", + "stateVariable": true, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1622, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "616:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "public" + }, + { + "body": null, + "documentation": "@param _owner The address from which the balance will be retrieved\n @return The balance", + "id": 1630, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "balanceOf", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1626, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1625, + "name": "_owner", + "nodeType": "VariableDeclaration", + "scope": 1630, + "src": "771:14:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1624, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "771:7:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "770:16:14" + }, + "payable": false, + "returnParameters": { + "id": 1629, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1628, + "name": "balance", + "nodeType": "VariableDeclaration", + "scope": 1630, + "src": "812:15:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1627, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "812:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "811:17:14" + }, + "scope": 1685, + "src": "752:77:14", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": "@notice send `_value` token to `_to` from `msg.sender`\n @param _to The address of the recipient\n @param _value The amount of token to be transferred\n @return Whether the transfer was successful or not", + "id": 1639, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "transfer", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1635, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1632, + "name": "_to", + "nodeType": "VariableDeclaration", + "scope": 1639, + "src": "1083:11:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1631, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1083:7:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1634, + "name": "_value", + "nodeType": "VariableDeclaration", + "scope": 1639, + "src": "1096:14:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1633, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1096:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1082:29:14" + }, + "payable": false, + "returnParameters": { + "id": 1638, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1637, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 1639, + "src": "1128:12:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1636, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1128:4:14", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1127:14:14" + }, + "scope": 1685, + "src": "1065:77:14", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": "@notice send `_value` token to `_to` from `_from` on the condition it is approved by `_from`\n @param _from The address of the sender\n @param _to The address of the recipient\n @param _value The amount of token to be transferred\n @return Whether the transfer was successful or not", + "id": 1650, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "transferFrom", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1646, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1641, + "name": "_from", + "nodeType": "VariableDeclaration", + "scope": 1650, + "src": "1485:13:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1640, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1485:7:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1643, + "name": "_to", + "nodeType": "VariableDeclaration", + "scope": 1650, + "src": "1500:11:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1642, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1500:7:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1645, + "name": "_value", + "nodeType": "VariableDeclaration", + "scope": 1650, + "src": "1513:14:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1644, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1513:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1484:44:14" + }, + "payable": false, + "returnParameters": { + "id": 1649, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1648, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 1650, + "src": "1545:12:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1647, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1545:4:14", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1544:14:14" + }, + "scope": 1685, + "src": "1463:96:14", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": "@notice `msg.sender` approves `_spender` to spend `_value` tokens\n @param _spender The address of the account able to transfer the tokens\n @param _value The amount of tokens to be approved for transfer\n @return Whether the approval was successful or not", + "id": 1659, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [], + "name": "approve", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1655, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1652, + "name": "_spender", + "nodeType": "VariableDeclaration", + "scope": 1659, + "src": "1865:16:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1651, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1865:7:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1654, + "name": "_value", + "nodeType": "VariableDeclaration", + "scope": 1659, + "src": "1883:14:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1653, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "1883:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1864:34:14" + }, + "payable": false, + "returnParameters": { + "id": 1658, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1657, + "name": "success", + "nodeType": "VariableDeclaration", + "scope": 1659, + "src": "1915:12:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + }, + "typeName": { + "id": 1656, + "name": "bool", + "nodeType": "ElementaryTypeName", + "src": "1915:4:14", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "1914:14:14" + }, + "scope": 1685, + "src": "1848:81:14", + "stateMutability": "nonpayable", + "superFunction": null, + "visibility": "public" + }, + { + "body": null, + "documentation": "@param _owner The address of the account owning tokens\n @param _spender The address of the account able to transfer the tokens\n @return Amount of remaining tokens allowed to spent", + "id": 1668, + "implemented": false, + "isConstructor": false, + "isDeclaredConst": true, + "modifiers": [], + "name": "allowance", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 1664, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1661, + "name": "_owner", + "nodeType": "VariableDeclaration", + "scope": 1668, + "src": "2156:14:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1660, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2156:7:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1663, + "name": "_spender", + "nodeType": "VariableDeclaration", + "scope": 1668, + "src": "2172:16:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1662, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2172:7:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2155:34:14" + }, + "payable": false, + "returnParameters": { + "id": 1667, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1666, + "name": "remaining", + "nodeType": "VariableDeclaration", + "scope": 1668, + "src": "2215:17:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1665, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2215:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2214:19:14" + }, + "scope": 1685, + "src": "2137:97:14", + "stateMutability": "view", + "superFunction": null, + "visibility": "public" + }, + { + "anonymous": false, + "documentation": null, + "id": 1676, + "name": "Transfer", + "nodeType": "EventDefinition", + "parameters": { + "id": 1675, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1670, + "indexed": true, + "name": "_from", + "nodeType": "VariableDeclaration", + "scope": 1676, + "src": "2255:21:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1669, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2255:7:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1672, + "indexed": true, + "name": "_to", + "nodeType": "VariableDeclaration", + "scope": 1676, + "src": "2278:19:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1671, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2278:7:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1674, + "indexed": false, + "name": "_value", + "nodeType": "VariableDeclaration", + "scope": 1676, + "src": "2299:14:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1673, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2299:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2254:60:14" + }, + "src": "2240:75:14" + }, + { + "anonymous": false, + "documentation": null, + "id": 1684, + "name": "Approval", + "nodeType": "EventDefinition", + "parameters": { + "id": 1683, + "nodeType": "ParameterList", + "parameters": [ + { + "constant": false, + "id": 1678, + "indexed": true, + "name": "_owner", + "nodeType": "VariableDeclaration", + "scope": 1684, + "src": "2335:22:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1677, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2335:7:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1680, + "indexed": true, + "name": "_spender", + "nodeType": "VariableDeclaration", + "scope": 1684, + "src": "2359:24:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1679, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2359:7:14", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1682, + "indexed": false, + "name": "_value", + "nodeType": "VariableDeclaration", + "scope": 1684, + "src": "2385:14:14", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 1681, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2385:7:14", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "src": "2334:66:14" + }, + "src": "2320:81:14" + } + ], + "scope": 1686, + "src": "129:2274:14" + } + ], + "src": "0:2403:14" + }, + "compiler": { + "name": "solc", + "version": "0.4.24+commit.e67f0147.Emscripten.clang" + }, + "networks": {}, + "schemaVersion": "2.0.0", + "updatedAt": "2018-05-27T11:12:45.584Z" +} \ No newline at end of file diff --git a/safe-contracts/build/contracts/Enum.json b/safe-contracts/build/contracts/Enum.json index 432757f67b..94e98a6e03 100644 --- a/safe-contracts/build/contracts/Enum.json +++ b/safe-contracts/build/contracts/Enum.json @@ -1,31 +1,31 @@ { "contractName": "Enum", "abi": [], - "bytecode": "0x6080604052348015600f57600080fd5b50603580601d6000396000f3006080604052600080fd00a165627a7a72305820346c40fd38e691d9042d78bf7c33e05e8eafc3767b153318d8f2a9f5daf08bcf0029", - "deployedBytecode": "0x6080604052600080fd00a165627a7a72305820346c40fd38e691d9042d78bf7c33e05e8eafc3767b153318d8f2a9f5daf08bcf0029", - "sourceMap": "115:95:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;115:95:0;;;;;;;", - "deployedSourceMap": "115:95:0:-;;;;;", - "source": "pragma solidity 0.4.23;\n\n\n/// @title Enum - Collection of enums\n/// @author Richard Meissner - \ncontract Enum {\n enum Operation {\n Call,\n DelegateCall,\n Create\n }\n}\n", + "bytecode": "0x6080604052348015600f57600080fd5b50603580601d6000396000f3006080604052600080fd00a165627a7a72305820641ab8b295edfaa2b1c8a8e0ae7d17ea2f4c8b95ea27e45d8947ed9a4799ca1f0029", + "deployedBytecode": "0x6080604052600080fd00a165627a7a72305820641ab8b295edfaa2b1c8a8e0ae7d17ea2f4c8b95ea27e45d8947ed9a4799ca1f0029", + "sourceMap": "115:95:1:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;115:95:1;;;;;;;", + "deployedSourceMap": "115:95:1:-;;;;;", + "source": "pragma solidity 0.4.24;\n\n\n/// @title Enum - Collection of enums\n/// @author Richard Meissner - \ncontract Enum {\n enum Operation {\n Call,\n DelegateCall,\n Create\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Enum.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Enum.sol", "exportedSymbols": { "Enum": [ - 6 + 30 ] }, - "id": 7, + "id": 31, "nodeType": "SourceUnit", "nodes": [ { - "id": 1, + "id": 25, "literals": [ "solidity", "0.4", - ".23" + ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:0" + "src": "0:23:1" }, { "baseContracts": [], @@ -33,66 +33,66 @@ "contractKind": "contract", "documentation": "@title Enum - Collection of enums\n @author Richard Meissner - ", "fullyImplemented": true, - "id": 6, + "id": 30, "linearizedBaseContracts": [ - 6 + 30 ], "name": "Enum", "nodeType": "ContractDefinition", "nodes": [ { "canonicalName": "Enum.Operation", - "id": 5, + "id": 29, "members": [ { - "id": 2, + "id": 26, "name": "Call", "nodeType": "EnumValue", - "src": "160:4:0" + "src": "160:4:1" }, { - "id": 3, + "id": 27, "name": "DelegateCall", "nodeType": "EnumValue", - "src": "174:12:0" + "src": "174:12:1" }, { - "id": 4, + "id": 28, "name": "Create", "nodeType": "EnumValue", - "src": "196:6:0" + "src": "196:6:1" } ], "name": "Operation", "nodeType": "EnumDefinition", - "src": "135:73:0" + "src": "135:73:1" } ], - "scope": 7, - "src": "115:95:0" + "scope": 31, + "src": "115:95:1" } ], - "src": "0:211:0" + "src": "0:211:1" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Enum.sol", "exportedSymbols": { "Enum": [ - 6 + 30 ] }, - "id": 7, + "id": 31, "nodeType": "SourceUnit", "nodes": [ { - "id": 1, + "id": 25, "literals": [ "solidity", "0.4", - ".23" + ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:0" + "src": "0:23:1" }, { "baseContracts": [], @@ -100,52 +100,52 @@ "contractKind": "contract", "documentation": "@title Enum - Collection of enums\n @author Richard Meissner - ", "fullyImplemented": true, - "id": 6, + "id": 30, "linearizedBaseContracts": [ - 6 + 30 ], "name": "Enum", "nodeType": "ContractDefinition", "nodes": [ { "canonicalName": "Enum.Operation", - "id": 5, + "id": 29, "members": [ { - "id": 2, + "id": 26, "name": "Call", "nodeType": "EnumValue", - "src": "160:4:0" + "src": "160:4:1" }, { - "id": 3, + "id": 27, "name": "DelegateCall", "nodeType": "EnumValue", - "src": "174:12:0" + "src": "174:12:1" }, { - "id": 4, + "id": 28, "name": "Create", "nodeType": "EnumValue", - "src": "196:6:0" + "src": "196:6:1" } ], "name": "Operation", "nodeType": "EnumDefinition", - "src": "135:73:0" + "src": "135:73:1" } ], - "scope": 7, - "src": "115:95:0" + "scope": 31, + "src": "115:95:1" } ], - "src": "0:211:0" + "src": "0:211:1" }, "compiler": { "name": "solc", - "version": "0.4.23+commit.124ca40d.Emscripten.clang" + "version": "0.4.24+commit.e67f0147.Emscripten.clang" }, "networks": {}, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-16T10:51:14.736Z" + "updatedAt": "2018-05-27T11:12:45.575Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/GnosisSafe.json b/safe-contracts/build/contracts/GnosisSafe.json index b132687aed..26770b8b50 100644 --- a/safe-contracts/build/contracts/GnosisSafe.json +++ b/safe-contracts/build/contracts/GnosisSafe.json @@ -301,62 +301,62 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50612100806100206000396000f3006080604052600436106100e6576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632f54bf6e146100e8578063468721a714610143578063610b5925146101fb57806385e332cd1461023e57806386040aa9146102955780638cff635514610305578063a04222e11461035c578063a0e67e2b14610435578063a3f4df7e146104a1578063b2494df314610531578063b7f3358d1461059d578063b91a667f146105cd578063e009cfde1461061d578063e318b52b14610680578063e75235b814610703578063ffa1ad7414610734575b005b3480156100f457600080fd5b50610129600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107c4565b604051808215151515815260200191505060405180910390f35b34801561014f57600080fd5b506101e1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050610846565b604051808215151515815260200191505060405180910390f35b34801561020757600080fd5b5061023c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506108e2565b005b34801561024a57600080fd5b50610253610b5b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102a157600080fd5b50610303600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050610b60565b005b34801561031157600080fd5b5061031a610de6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561036857600080fd5b5061043360048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610deb565b005b34801561044157600080fd5b5061044a610e05565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561048d578082015181840152602081019050610472565b505050509050019250505060405180910390f35b3480156104ad57600080fd5b506104b6610fa0565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104f65780820151818401526020810190506104db565b50505050905090810190601f1680156105235780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561053d57600080fd5b50610546610fd9565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561058957808201518184015260208101905061056e565b505050509050019250505060405180910390f35b3480156105a957600080fd5b506105cb600480360381019080803560ff16906020019092919050505061127c565b005b3480156105d957600080fd5b5061061b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506112fb565b005b34801561062957600080fd5b5061067e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115b3565b005b34801561068c57600080fd5b50610701600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117e2565b005b34801561070f57600080fd5b50610718611b77565b604051808260ff1660ff16815260200191505060405180910390f35b34801561074057600080fd5b50610749611b8e565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561078957808201518184015260208101905061076e565b50505050905090810190601f1680156107b65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b6000806000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515156108cb57600080fd5b6108d8858585855a611bc7565b9050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561091c57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156109705750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b151561097b57600080fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156109fe57600080fd5b600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b9a57600080fd5b8060ff1660016002540310151515610bb157600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610c4a57600080fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260008154809291906001900391905055508060ff16600360009054906101000a900460ff1660ff16141515610de157610de08161127c565b5b505050565b600181565b610df58484611cc4565b610dff8282611f54565b50505050565b606080600080600254604051908082528060200260200182016040528015610e3c5781602001602082028038833980820191505090505b5092506000915060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515610f9757808383815181101515610eec57fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508180600101925050610ea7565b82935050505090565b6040805190810160405280600e81526020017f4d6f64756c65204d616e6167657200000000000000000000000000000000000081525081565b6060600080606060009250600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156110eb576000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050611047565b8260405190808252806020026020018201604052801561111a5781602001602082028038833980820191505090505b50905060009250600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515611273578181848151811015156111c957fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050611184565b80935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156112b657600080fd5b6002548160ff16111515156112ca57600080fd5b60018160ff16101515156112dd57600080fd5b80600360006101000a81548160ff021916908360ff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561133557600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff16141580156113895750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b151561139457600080fd5b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561141857600080fd5b60016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506002600081548092919060010191905055508060ff16600360009054906101000a900460ff1660ff161415156115af576115ae8161127c565b5b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156115ed57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561168557600080fd5b6000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561181c57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156118705750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b151561187b57600080fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156118ff57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561199857600080fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000600360009054906101000a900460ff16905090565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b60008060006002811115611bd757fe5b846002811115611be357fe5b1415611bfc57611bf587878786612092565b9150611cba565b60016002811115611c0957fe5b846002811115611c1557fe5b1415611c2d57611c268786856120ab565b9150611cb9565b611c36856120c2565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b600080600080600360009054906101000a900460ff1660ff16141515611ce957600080fd5b84518460ff1611151515611cfc57600080fd5b60018460ff1610151515611d0f57600080fd5b60019250600091505b8451821015611eac578482815181101515611d2f57fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff1614158015611d8f5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515611d9a57600080fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611e1e57600080fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508092508180600101925050611d18565b60018060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550845160028190555083600360006101000a81548160ff021916908360ff1602179055505050505050565b6000806000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611fd857600080fd5b6001600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008273ffffffffffffffffffffffffffffffffffffffff1614151561208e5761208282825a6120ab565b151561208d57600080fd5b5b5050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f090509190505600a165627a7a723058208d0d6dcd63a5e2ddebea816d26f7dc74ebbf2ef27fc9c39f932838e0e2d2710f0029", - "deployedBytecode": "0x6080604052600436106100e6576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632f54bf6e146100e8578063468721a714610143578063610b5925146101fb57806385e332cd1461023e57806386040aa9146102955780638cff635514610305578063a04222e11461035c578063a0e67e2b14610435578063a3f4df7e146104a1578063b2494df314610531578063b7f3358d1461059d578063b91a667f146105cd578063e009cfde1461061d578063e318b52b14610680578063e75235b814610703578063ffa1ad7414610734575b005b3480156100f457600080fd5b50610129600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107c4565b604051808215151515815260200191505060405180910390f35b34801561014f57600080fd5b506101e1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050610846565b604051808215151515815260200191505060405180910390f35b34801561020757600080fd5b5061023c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506108e2565b005b34801561024a57600080fd5b50610253610b5b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102a157600080fd5b50610303600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050610b60565b005b34801561031157600080fd5b5061031a610de6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561036857600080fd5b5061043360048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610deb565b005b34801561044157600080fd5b5061044a610e05565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561048d578082015181840152602081019050610472565b505050509050019250505060405180910390f35b3480156104ad57600080fd5b506104b6610fa0565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104f65780820151818401526020810190506104db565b50505050905090810190601f1680156105235780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561053d57600080fd5b50610546610fd9565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561058957808201518184015260208101905061056e565b505050509050019250505060405180910390f35b3480156105a957600080fd5b506105cb600480360381019080803560ff16906020019092919050505061127c565b005b3480156105d957600080fd5b5061061b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506112fb565b005b34801561062957600080fd5b5061067e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115b3565b005b34801561068c57600080fd5b50610701600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117e2565b005b34801561070f57600080fd5b50610718611b77565b604051808260ff1660ff16815260200191505060405180910390f35b34801561074057600080fd5b50610749611b8e565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561078957808201518184015260208101905061076e565b50505050905090810190601f1680156107b65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b6000806000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515156108cb57600080fd5b6108d8858585855a611bc7565b9050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561091c57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156109705750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b151561097b57600080fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156109fe57600080fd5b600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b9a57600080fd5b8060ff1660016002540310151515610bb157600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610c4a57600080fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260008154809291906001900391905055508060ff16600360009054906101000a900460ff1660ff16141515610de157610de08161127c565b5b505050565b600181565b610df58484611cc4565b610dff8282611f54565b50505050565b606080600080600254604051908082528060200260200182016040528015610e3c5781602001602082028038833980820191505090505b5092506000915060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515610f9757808383815181101515610eec57fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508180600101925050610ea7565b82935050505090565b6040805190810160405280600e81526020017f4d6f64756c65204d616e6167657200000000000000000000000000000000000081525081565b6060600080606060009250600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156110eb576000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050611047565b8260405190808252806020026020018201604052801561111a5781602001602082028038833980820191505090505b50905060009250600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515611273578181848151811015156111c957fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050611184565b80935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156112b657600080fd5b6002548160ff16111515156112ca57600080fd5b60018160ff16101515156112dd57600080fd5b80600360006101000a81548160ff021916908360ff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561133557600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff16141580156113895750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b151561139457600080fd5b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561141857600080fd5b60016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506002600081548092919060010191905055508060ff16600360009054906101000a900460ff1660ff161415156115af576115ae8161127c565b5b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156115ed57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561168557600080fd5b6000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561181c57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156118705750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b151561187b57600080fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156118ff57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561199857600080fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000600360009054906101000a900460ff16905090565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b60008060006002811115611bd757fe5b846002811115611be357fe5b1415611bfc57611bf587878786612092565b9150611cba565b60016002811115611c0957fe5b846002811115611c1557fe5b1415611c2d57611c268786856120ab565b9150611cb9565b611c36856120c2565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b600080600080600360009054906101000a900460ff1660ff16141515611ce957600080fd5b84518460ff1611151515611cfc57600080fd5b60018460ff1610151515611d0f57600080fd5b60019250600091505b8451821015611eac578482815181101515611d2f57fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff1614158015611d8f5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515611d9a57600080fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611e1e57600080fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508092508180600101925050611d18565b60018060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550845160028190555083600360006101000a81548160ff021916908360ff1602179055505050505050565b6000806000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611fd857600080fd5b6001600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008273ffffffffffffffffffffffffffffffffffffffff1614151561208e5761208282825a6120ab565b151561208d57600080fd5b5b5050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f090509190505600a165627a7a723058208d0d6dcd63a5e2ddebea816d26f7dc74ebbf2ef27fc9c39f932838e0e2d2710f0029", - "sourceMap": "322:674:1:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;322:674:1;;;;;;;", - "deployedSourceMap": "322:674:1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4841:129:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4841:129:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2522:377:6;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2522:377:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1235:391;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1235:391:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;499:55;;8:9:-1;5:2;;;30:1;27;20:12;5:2;499:55:6;;;;;;;;;;;;;;;;;;;;;;;;;;;2776:573:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2776:573:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;287:54;;8:9:-1;5:2;;;30:1;27;20:12;5:2;287:54:7;;;;;;;;;;;;;;;;;;;;;;;;;;;693:301:1;;8:9:-1;5:2;;;30:1;27;20:12;5:2;693:301:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5052:458:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5052:458:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;5052:458:7;;;;;;;;;;;;;;;;;401:46:6;;8:9:-1;5:2;;;30:1;27;20:12;5:2;401:46:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;401:46:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4423:738;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4423:738:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;4423:738:6;;;;;;;;;;;;;;;;;4398:318:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4398:318:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;1906:528;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1906:528:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1887:299:6;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1887:299:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3683:526:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3683:526:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4722:113;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4722:113:7;;;;;;;;;;;;;;;;;;;;;;;;;;;453:40:6;;8:9:-1;5:2;;;30:1;27;20:12;5:2;453:40:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;453:40:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4841:129:7;4918:4;4962:1;4945:6;:13;4952:5;4945:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;;4938:25;;4841:129;;;:::o;2522:377:6:-;2654:12;2762:1;2739:7;:19;2747:10;2739:19;;;;;;;;;;;;;;;;;;;;;;;;;:24;;;;2731:33;;;;;;;;2846:46;2854:2;2858:5;2865:4;2871:9;2882;2846:7;:46::i;:::-;2836:56;;2522:377;;;;;;:::o;1235:391::-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;1401:1:6;1390:6;1382:20;;;;:59;;;;;550:3;1406:35;;1414:6;1406:35;;;;1382:59;1374:68;;;;;;;;1520:1;1501:7;:15;1509:6;1501:15;;;;;;;;;;;;;;;;;;;;;;;;;:20;;;1493:29;;;;;;;;1550:7;:25;550:3;1550:25;;;;;;;;;;;;;;;;;;;;;;;;;1532:7;:15;1540:6;1532:15;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;1613:6;1585:7;:25;550:3;1585:25;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;1235:391;:::o;499:55::-;550:3;499:55;:::o;2776:573:7:-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;3000:10:7;2982:28;;2995:1;2982:10;;:14;:28;;2974:37;;;;;;;;3112:5;3091:26;;:6;:17;3098:9;3091:17;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;3083:35;;;;;;;;3148:6;:13;3155:5;3148:13;;;;;;;;;;;;;;;;;;;;;;;;;3128:6;:17;3135:9;3128:17;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;3187:1;3171:6;:13;3178:5;3171:13;;;;;;;;;;;;;;;;:17;;;;;;;;;;;;;;;;;;3198:10;;:12;;;;;;;;;;;;;;3291:10;3278:23;;:9;;;;;;;;;;;:23;;;;3274:68;;;3315:27;3331:10;3315:15;:27::i;:::-;3274:68;2776:573;;;:::o;287:54::-;337:3;287:54;:::o;693:301:1:-;798:32;810:7;819:10;798:11;:32::i;:::-;965:22;978:2;982:4;965:12;:22::i;:::-;693:301;;;;:::o;5052:458:7:-;5118:9;5143:22;5237:13;5264:20;5182:10;;5168:25;;;;;;;;;;;;;;;;;;;;;;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;5168:25:7;;;;5143:50;;5253:1;5237:17;;5287:6;:23;337:3;5287:23;;;;;;;;;;;;;;;;;;;;;;;;;5264:46;;5320:162;337:3;5326:31;;:12;:31;;;;5320:162;;;5388:12;5373:5;5379;5373:12;;;;;;;;;;;;;;;;;:27;;;;;;;;;;;5429:6;:20;5436:12;5429:20;;;;;;;;;;;;;;;;;;;;;;;;;5414:35;;5463:8;;;;;;;5320:162;;;5498:5;5491:12;;5052:458;;;;:::o;401:46:6:-;;;;;;;;;;;;;;;;;;;;:::o;4423:738::-;4490:9;4549:19;4582:21;4782:22;4571:1;4549:23;;4606:7;:25;550:3;4606:25;;;;;;;;;;;;;;;;;;;;;;;;;4582:49;;4641:132;550:3;4647:33;;:13;:33;;;;4641:132;;;4712:7;:22;4720:13;4712:22;;;;;;;;;;;;;;;;;;;;;;;;;4696:38;;4748:14;;;;;;;4641:132;;;4821:11;4807:26;;;;;;;;;;;;;;;;;;;;;;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;4807:26:6;;;;4782:51;;4891:1;4877:15;;4918:7;:25;550:3;4918:25;;;;;;;;;;;;;;;;;;;;;;;;;4902:41;;4953:180;550:3;4959:33;;:13;:33;;;;4953:180;;;5029:13;5008:5;5014:11;5008:18;;;;;;;;;;;;;;;;;:34;;;;;;;;;;;5072:7;:22;5080:13;5072:22;;;;;;;;;;;;;;;;;;;;;;;;;5056:38;;5108:14;;;;;;;4953:180;;;5149:5;5142:12;;4423:738;;;;:::o;4398:318:7:-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;4580:10:7;;4566;:24;;;;4558:33;;;;;;;;4675:1;4661:10;:15;;;;4653:24;;;;;;;;4699:10;4687:9;;:22;;;;;;;;;;;;;;;;;;4398:318;:::o;1906:528::-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;2076:1:7;2067:5;:10;;;;:38;;;;;337:3;2081:24;;:5;:24;;;;2067:38;2059:47;;;;;;;;2181:1;2164:6;:13;2171:5;2164:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;2156:27;;;;;;;;2209:6;:23;337:3;2209:23;;;;;;;;;;;;;;;;;;;;;;;;;2193:6;:13;2200:5;2193:13;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;2268:5;2242:6;:23;337:3;2242:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;2283:10;;:12;;;;;;;;;;;;;2376:10;2363:23;;:9;;;;;;;;;;;:23;;;;2359:68;;;2400:27;2416:10;2400:15;:27::i;:::-;2359:68;1906:528;;:::o;1887:299:6:-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;2095:6:6;2064:38;;:7;:19;2072:10;2064:19;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;2056:47;;;;;;;;2135:7;:15;2143:6;2135:15;;;;;;;;;;;;;;;;;;;;;;;;;2113:7;:19;2121:10;2113:19;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;2178:1;2160:7;:15;2168:6;2160:15;;;;;;;;;;;;;;;;:19;;;;;;;;;;;;;;;;;;1887:299;;:::o;3683:526:7:-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;3866:1:7;3854:8;:13;;;;:44;;;;;337:3;3871:27;;:8;:27;;;;3854:44;3846:53;;;;;;;;3977:1;3957:6;:16;3964:8;3957:16;;;;;;;;;;;;;;;;;;;;;;;;;:21;;;3949:30;;;;;;;;4080:8;4059:29;;:6;:17;4066:9;4059:17;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;4051:38;;;;;;;;4118:6;:16;4125:8;4118:16;;;;;;;;;;;;;;;;;;;;;;;;;4099:6;:16;4106:8;4099:16;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;4164:8;4144:6;:17;4151:9;4144:17;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;4201:1;4182:6;:16;4189:8;4182:16;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;3683:526;;;:::o;4722:113::-;4791:5;4819:9;;;;;;;;;;;4812:16;;4722:113;:::o;453:40:6:-;;;;;;;;;;;;;;;;;;;;:::o;2905:548::-;3036:12;3307:19;3081;3068:32;;;;;;;;:9;:32;;;;;;;;;3064:383;;;3124:35;3136:2;3140:5;3147:4;3153:5;3124:11;:35::i;:::-;3114:45;;3064:383;;;3191:27;3178:40;;;;;;;;:9;:40;;;;;;;;;3174:273;;;3242:36;3262:2;3266:4;3272:5;3242:19;:36::i;:::-;3232:46;;3174:273;;;3329:19;3343:4;3329:13;:19::i;:::-;3307:41;;3387:1;3372:11;:16;;;;3362:26;;3407:29;3424:11;3407:29;;;;;;;;;;;;;;;;;;;;;;3174:273;3064:383;2905:548;;;;;;;;:::o;641:1025:7:-;1132:20;1185:9;1284:13;875:1;862:9;;;;;;;;;;;:14;;;854:23;;;;;;;;984:7;:14;970:10;:28;;;;962:37;;;;;;;;1083:1;1069:10;:15;;;;1061:24;;;;;;;;337:3;1132:38;;1197:1;1185:13;;1180:363;1204:7;:14;1200:1;:18;1180:363;;;1300:7;1308:1;1300:10;;;;;;;;;;;;;;;;;;1284:26;;1341:1;1332:5;:10;;;;:38;;;;;337:3;1346:24;;:5;:24;;;;1332:38;1324:47;;;;;;;;1454:1;1437:6;:13;1444:5;1437:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;1429:27;;;;;;;;1493:5;1470:6;:20;1477:12;1470:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;1527:5;1512:20;;1220:3;;;;;;;1180:363;;;337:3;1552:6;:20;1559:12;1552:20;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;1613:7;:14;1600:10;:27;;;;1649:10;1637:9;;:22;;;;;;;;;;;;;;;;;;641:1025;;;;;:::o;735:333:6:-;849:1;820:7;:25;550:3;820:25;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;812:39;;;;;;;;550:3;861:7;:25;550:3;861:25;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;925:1;919:2;:7;;;;915:146;;;1020:40;1040:2;1044:4;1050:9;1020:19;:40::i;:::-;1012:49;;;;;;;;915:146;735:333;;:::o;3459:309::-;3568:12;3750:1;3747;3740:4;3734:11;3727:4;3721;3717:15;3710:5;3706:2;3699:5;3694:58;3683:69;;3669:93;;;;;;:::o;3774:303::-;3876:12;4059:1;4056;4049:4;4043:11;4036:4;4030;4026:15;4022:2;4015:5;4002:59;3991:70;;3977:94;;;;;:::o;4083:261::-;4152:19;4322:4;4316:11;4309:4;4303;4299:15;4296:1;4289:39;4274:54;;4260:78;;;:::o", - "source": "pragma solidity 0.4.23;\nimport \"./Module.sol\";\nimport \"./ModuleManager.sol\";\nimport \"./OwnerManager.sol\";\n\n\n/// @title Gnosis Safe - A multisignature wallet with support for modules and owners. This contract needs to be extented to add functionality to execute transactions.\n/// @author Stefan George - \ncontract GnosisSafe is ModuleManager, OwnerManager {\n\n /// @dev Setup function sets initial storage of contract.\n /// @param _owners List of Safe owners.\n /// @param _threshold Number of required confirmations for a Safe transaction.\n /// @param to Contract address for optional delegate call.\n /// @param data Data payload for optional delegate call.\n function setup(address[] _owners, uint8 _threshold, address to, bytes data)\n public\n {\n setupOwners(_owners, _threshold);\n // As setupOwners can only be called if the contract has not been initialized we don't need a check for setupModules\n setupModules(to, data);\n }\n}\n", + "bytecode": "0x608060405234801561001057600080fd5b50612100806100206000396000f3006080604052600436106100e6576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632f54bf6e146100e8578063468721a714610143578063610b5925146101fb57806385e332cd1461023e57806386040aa9146102955780638cff635514610305578063a04222e11461035c578063a0e67e2b14610435578063a3f4df7e146104a1578063b2494df314610531578063b7f3358d1461059d578063b91a667f146105cd578063e009cfde1461061d578063e318b52b14610680578063e75235b814610703578063ffa1ad7414610734575b005b3480156100f457600080fd5b50610129600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107c4565b604051808215151515815260200191505060405180910390f35b34801561014f57600080fd5b506101e1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050610846565b604051808215151515815260200191505060405180910390f35b34801561020757600080fd5b5061023c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506108e2565b005b34801561024a57600080fd5b50610253610b5b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102a157600080fd5b50610303600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050610b60565b005b34801561031157600080fd5b5061031a610de6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561036857600080fd5b5061043360048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610deb565b005b34801561044157600080fd5b5061044a610e05565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561048d578082015181840152602081019050610472565b505050509050019250505060405180910390f35b3480156104ad57600080fd5b506104b6610fa0565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104f65780820151818401526020810190506104db565b50505050905090810190601f1680156105235780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561053d57600080fd5b50610546610fd9565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561058957808201518184015260208101905061056e565b505050509050019250505060405180910390f35b3480156105a957600080fd5b506105cb600480360381019080803560ff16906020019092919050505061127c565b005b3480156105d957600080fd5b5061061b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506112fb565b005b34801561062957600080fd5b5061067e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115b3565b005b34801561068c57600080fd5b50610701600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117e2565b005b34801561070f57600080fd5b50610718611b77565b604051808260ff1660ff16815260200191505060405180910390f35b34801561074057600080fd5b50610749611b8e565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561078957808201518184015260208101905061076e565b50505050905090810190601f1680156107b65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b6000806000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515156108cb57600080fd5b6108d8858585855a611bc7565b9050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561091c57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156109705750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b151561097b57600080fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156109fe57600080fd5b600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b9a57600080fd5b8060ff1660016002540310151515610bb157600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610c4a57600080fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260008154809291906001900391905055508060ff16600360009054906101000a900460ff1660ff16141515610de157610de08161127c565b5b505050565b600181565b610df58484611cc4565b610dff8282611f54565b50505050565b606080600080600254604051908082528060200260200182016040528015610e3c5781602001602082028038833980820191505090505b5092506000915060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515610f9757808383815181101515610eec57fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508180600101925050610ea7565b82935050505090565b6040805190810160405280600e81526020017f4d6f64756c65204d616e6167657200000000000000000000000000000000000081525081565b6060600080606060009250600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156110eb576000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050611047565b8260405190808252806020026020018201604052801561111a5781602001602082028038833980820191505090505b50905060009250600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515611273578181848151811015156111c957fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050611184565b80935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156112b657600080fd5b6002548160ff16111515156112ca57600080fd5b60018160ff16101515156112dd57600080fd5b80600360006101000a81548160ff021916908360ff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561133557600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff16141580156113895750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b151561139457600080fd5b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561141857600080fd5b60016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506002600081548092919060010191905055508060ff16600360009054906101000a900460ff1660ff161415156115af576115ae8161127c565b5b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156115ed57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561168557600080fd5b6000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561181c57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156118705750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b151561187b57600080fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156118ff57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561199857600080fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000600360009054906101000a900460ff16905090565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b60008060006002811115611bd757fe5b846002811115611be357fe5b1415611bfc57611bf587878786612092565b9150611cba565b60016002811115611c0957fe5b846002811115611c1557fe5b1415611c2d57611c268786856120ab565b9150611cb9565b611c36856120c2565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b600080600080600360009054906101000a900460ff1660ff16141515611ce957600080fd5b84518460ff1611151515611cfc57600080fd5b60018460ff1610151515611d0f57600080fd5b60019250600091505b8451821015611eac578482815181101515611d2f57fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff1614158015611d8f5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515611d9a57600080fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611e1e57600080fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508092508180600101925050611d18565b60018060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550845160028190555083600360006101000a81548160ff021916908360ff1602179055505050505050565b6000806000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611fd857600080fd5b6001600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008273ffffffffffffffffffffffffffffffffffffffff1614151561208e5761208282825a6120ab565b151561208d57600080fd5b5b5050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f090509190505600a165627a7a72305820320bc4a9d7df05e83245d3a6f7c0c117f907d8577ab1a6fb3eb23fc392c0a32b0029", + "deployedBytecode": "0x6080604052600436106100e6576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632f54bf6e146100e8578063468721a714610143578063610b5925146101fb57806385e332cd1461023e57806386040aa9146102955780638cff635514610305578063a04222e11461035c578063a0e67e2b14610435578063a3f4df7e146104a1578063b2494df314610531578063b7f3358d1461059d578063b91a667f146105cd578063e009cfde1461061d578063e318b52b14610680578063e75235b814610703578063ffa1ad7414610734575b005b3480156100f457600080fd5b50610129600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107c4565b604051808215151515815260200191505060405180910390f35b34801561014f57600080fd5b506101e1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050610846565b604051808215151515815260200191505060405180910390f35b34801561020757600080fd5b5061023c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506108e2565b005b34801561024a57600080fd5b50610253610b5b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102a157600080fd5b50610303600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050610b60565b005b34801561031157600080fd5b5061031a610de6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561036857600080fd5b5061043360048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610deb565b005b34801561044157600080fd5b5061044a610e05565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561048d578082015181840152602081019050610472565b505050509050019250505060405180910390f35b3480156104ad57600080fd5b506104b6610fa0565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104f65780820151818401526020810190506104db565b50505050905090810190601f1680156105235780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561053d57600080fd5b50610546610fd9565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561058957808201518184015260208101905061056e565b505050509050019250505060405180910390f35b3480156105a957600080fd5b506105cb600480360381019080803560ff16906020019092919050505061127c565b005b3480156105d957600080fd5b5061061b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506112fb565b005b34801561062957600080fd5b5061067e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115b3565b005b34801561068c57600080fd5b50610701600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117e2565b005b34801561070f57600080fd5b50610718611b77565b604051808260ff1660ff16815260200191505060405180910390f35b34801561074057600080fd5b50610749611b8e565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561078957808201518184015260208101905061076e565b50505050905090810190601f1680156107b65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b6000806000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515156108cb57600080fd5b6108d8858585855a611bc7565b9050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561091c57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156109705750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b151561097b57600080fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156109fe57600080fd5b600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b9a57600080fd5b8060ff1660016002540310151515610bb157600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610c4a57600080fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260008154809291906001900391905055508060ff16600360009054906101000a900460ff1660ff16141515610de157610de08161127c565b5b505050565b600181565b610df58484611cc4565b610dff8282611f54565b50505050565b606080600080600254604051908082528060200260200182016040528015610e3c5781602001602082028038833980820191505090505b5092506000915060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515610f9757808383815181101515610eec57fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508180600101925050610ea7565b82935050505090565b6040805190810160405280600e81526020017f4d6f64756c65204d616e6167657200000000000000000000000000000000000081525081565b6060600080606060009250600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156110eb576000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050611047565b8260405190808252806020026020018201604052801561111a5781602001602082028038833980820191505090505b50905060009250600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515611273578181848151811015156111c957fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050611184565b80935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156112b657600080fd5b6002548160ff16111515156112ca57600080fd5b60018160ff16101515156112dd57600080fd5b80600360006101000a81548160ff021916908360ff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561133557600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff16141580156113895750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b151561139457600080fd5b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561141857600080fd5b60016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506002600081548092919060010191905055508060ff16600360009054906101000a900460ff1660ff161415156115af576115ae8161127c565b5b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156115ed57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561168557600080fd5b6000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561181c57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156118705750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b151561187b57600080fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156118ff57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561199857600080fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000600360009054906101000a900460ff16905090565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b60008060006002811115611bd757fe5b846002811115611be357fe5b1415611bfc57611bf587878786612092565b9150611cba565b60016002811115611c0957fe5b846002811115611c1557fe5b1415611c2d57611c268786856120ab565b9150611cb9565b611c36856120c2565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b600080600080600360009054906101000a900460ff1660ff16141515611ce957600080fd5b84518460ff1611151515611cfc57600080fd5b60018460ff1610151515611d0f57600080fd5b60019250600091505b8451821015611eac578482815181101515611d2f57fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff1614158015611d8f5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515611d9a57600080fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611e1e57600080fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508092508180600101925050611d18565b60018060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550845160028190555083600360006101000a81548160ff021916908360ff1602179055505050505050565b6000806000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611fd857600080fd5b6001600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008273ffffffffffffffffffffffffffffffffffffffff1614151561208e5761208282825a6120ab565b151561208d57600080fd5b5b5050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f090509190505600a165627a7a72305820320bc4a9d7df05e83245d3a6f7c0c117f907d8577ab1a6fb3eb23fc392c0a32b0029", + "sourceMap": "322:674:2:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;322:674:2;;;;;;;", + "deployedSourceMap": "322:674:2:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4841:129:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4841:129:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2522:377:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2522:377:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1235:391;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1235:391:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;499:55;;8:9:-1;5:2;;;30:1;27;20:12;5:2;499:55:8;;;;;;;;;;;;;;;;;;;;;;;;;;;2776:573:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2776:573:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;287:54;;8:9:-1;5:2;;;30:1;27;20:12;5:2;287:54:9;;;;;;;;;;;;;;;;;;;;;;;;;;;693:301:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;693:301:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5052:458:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5052:458:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;5052:458:9;;;;;;;;;;;;;;;;;401:46:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;401:46:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;401:46:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4423:738;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4423:738:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;4423:738:8;;;;;;;;;;;;;;;;;4398:318:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4398:318:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;1906:528;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1906:528:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1887:299:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1887:299:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3683:526:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3683:526:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4722:113;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4722:113:9;;;;;;;;;;;;;;;;;;;;;;;;;;;453:40:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;453:40:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;453:40:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4841:129:9;4918:4;4962:1;4945:6;:13;4952:5;4945:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;;4938:25;;4841:129;;;:::o;2522:377:8:-;2654:12;2762:1;2739:7;:19;2747:10;2739:19;;;;;;;;;;;;;;;;;;;;;;;;;:24;;;;2731:33;;;;;;;;2846:46;2854:2;2858:5;2865:4;2871:9;2882;2846:7;:46::i;:::-;2836:56;;2522:377;;;;;;:::o;1235:391::-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;1401:1:8;1390:6;1382:20;;;;:59;;;;;550:3;1406:35;;1414:6;1406:35;;;;1382:59;1374:68;;;;;;;;1520:1;1501:7;:15;1509:6;1501:15;;;;;;;;;;;;;;;;;;;;;;;;;:20;;;1493:29;;;;;;;;1550:7;:25;550:3;1550:25;;;;;;;;;;;;;;;;;;;;;;;;;1532:7;:15;1540:6;1532:15;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;1613:6;1585:7;:25;550:3;1585:25;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;1235:391;:::o;499:55::-;550:3;499:55;:::o;2776:573:9:-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;3000:10:9;2982:28;;2995:1;2982:10;;:14;:28;;2974:37;;;;;;;;3112:5;3091:26;;:6;:17;3098:9;3091:17;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;3083:35;;;;;;;;3148:6;:13;3155:5;3148:13;;;;;;;;;;;;;;;;;;;;;;;;;3128:6;:17;3135:9;3128:17;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;3187:1;3171:6;:13;3178:5;3171:13;;;;;;;;;;;;;;;;:17;;;;;;;;;;;;;;;;;;3198:10;;:12;;;;;;;;;;;;;;3291:10;3278:23;;:9;;;;;;;;;;;:23;;;;3274:68;;;3315:27;3331:10;3315:15;:27::i;:::-;3274:68;2776:573;;;:::o;287:54::-;337:3;287:54;:::o;693:301:2:-;798:32;810:7;819:10;798:11;:32::i;:::-;965:22;978:2;982:4;965:12;:22::i;:::-;693:301;;;;:::o;5052:458:9:-;5118:9;5143:22;5237:13;5264:20;5182:10;;5168:25;;;;;;;;;;;;;;;;;;;;;;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;5168:25:9;;;;5143:50;;5253:1;5237:17;;5287:6;:23;337:3;5287:23;;;;;;;;;;;;;;;;;;;;;;;;;5264:46;;5320:162;337:3;5326:31;;:12;:31;;;;5320:162;;;5388:12;5373:5;5379;5373:12;;;;;;;;;;;;;;;;;:27;;;;;;;;;;;5429:6;:20;5436:12;5429:20;;;;;;;;;;;;;;;;;;;;;;;;;5414:35;;5463:8;;;;;;;5320:162;;;5498:5;5491:12;;5052:458;;;;:::o;401:46:8:-;;;;;;;;;;;;;;;;;;;;:::o;4423:738::-;4490:9;4549:19;4582:21;4782:22;4571:1;4549:23;;4606:7;:25;550:3;4606:25;;;;;;;;;;;;;;;;;;;;;;;;;4582:49;;4641:132;550:3;4647:33;;:13;:33;;;;4641:132;;;4712:7;:22;4720:13;4712:22;;;;;;;;;;;;;;;;;;;;;;;;;4696:38;;4748:14;;;;;;;4641:132;;;4821:11;4807:26;;;;;;;;;;;;;;;;;;;;;;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;4807:26:8;;;;4782:51;;4891:1;4877:15;;4918:7;:25;550:3;4918:25;;;;;;;;;;;;;;;;;;;;;;;;;4902:41;;4953:180;550:3;4959:33;;:13;:33;;;;4953:180;;;5029:13;5008:5;5014:11;5008:18;;;;;;;;;;;;;;;;;:34;;;;;;;;;;;5072:7;:22;5080:13;5072:22;;;;;;;;;;;;;;;;;;;;;;;;;5056:38;;5108:14;;;;;;;4953:180;;;5149:5;5142:12;;4423:738;;;;:::o;4398:318:9:-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;4580:10:9;;4566;:24;;;;4558:33;;;;;;;;4675:1;4661:10;:15;;;;4653:24;;;;;;;;4699:10;4687:9;;:22;;;;;;;;;;;;;;;;;;4398:318;:::o;1906:528::-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;2076:1:9;2067:5;:10;;;;:38;;;;;337:3;2081:24;;:5;:24;;;;2067:38;2059:47;;;;;;;;2181:1;2164:6;:13;2171:5;2164:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;2156:27;;;;;;;;2209:6;:23;337:3;2209:23;;;;;;;;;;;;;;;;;;;;;;;;;2193:6;:13;2200:5;2193:13;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;2268:5;2242:6;:23;337:3;2242:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;2283:10;;:12;;;;;;;;;;;;;2376:10;2363:23;;:9;;;;;;;;;;;:23;;;;2359:68;;;2400:27;2416:10;2400:15;:27::i;:::-;2359:68;1906:528;;:::o;1887:299:8:-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;2095:6:8;2064:38;;:7;:19;2072:10;2064:19;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;2056:47;;;;;;;;2135:7;:15;2143:6;2135:15;;;;;;;;;;;;;;;;;;;;;;;;;2113:7;:19;2121:10;2113:19;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;2178:1;2160:7;:15;2168:6;2160:15;;;;;;;;;;;;;;;;:19;;;;;;;;;;;;;;;;;;1887:299;;:::o;3683:526:9:-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;3866:1:9;3854:8;:13;;;;:44;;;;;337:3;3871:27;;:8;:27;;;;3854:44;3846:53;;;;;;;;3977:1;3957:6;:16;3964:8;3957:16;;;;;;;;;;;;;;;;;;;;;;;;;:21;;;3949:30;;;;;;;;4080:8;4059:29;;:6;:17;4066:9;4059:17;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;4051:38;;;;;;;;4118:6;:16;4125:8;4118:16;;;;;;;;;;;;;;;;;;;;;;;;;4099:6;:16;4106:8;4099:16;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;4164:8;4144:6;:17;4151:9;4144:17;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;4201:1;4182:6;:16;4189:8;4182:16;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;3683:526;;;:::o;4722:113::-;4791:5;4819:9;;;;;;;;;;;4812:16;;4722:113;:::o;453:40:8:-;;;;;;;;;;;;;;;;;;;;:::o;2905:548::-;3036:12;3307:19;3081;3068:32;;;;;;;;:9;:32;;;;;;;;;3064:383;;;3124:35;3136:2;3140:5;3147:4;3153:5;3124:11;:35::i;:::-;3114:45;;3064:383;;;3191:27;3178:40;;;;;;;;:9;:40;;;;;;;;;3174:273;;;3242:36;3262:2;3266:4;3272:5;3242:19;:36::i;:::-;3232:46;;3174:273;;;3329:19;3343:4;3329:13;:19::i;:::-;3307:41;;3387:1;3372:11;:16;;;;3362:26;;3407:29;3424:11;3407:29;;;;;;;;;;;;;;;;;;;;;;3174:273;3064:383;2905:548;;;;;;;;:::o;641:1025:9:-;1132:20;1185:9;1284:13;875:1;862:9;;;;;;;;;;;:14;;;854:23;;;;;;;;984:7;:14;970:10;:28;;;;962:37;;;;;;;;1083:1;1069:10;:15;;;;1061:24;;;;;;;;337:3;1132:38;;1197:1;1185:13;;1180:363;1204:7;:14;1200:1;:18;1180:363;;;1300:7;1308:1;1300:10;;;;;;;;;;;;;;;;;;1284:26;;1341:1;1332:5;:10;;;;:38;;;;;337:3;1346:24;;:5;:24;;;;1332:38;1324:47;;;;;;;;1454:1;1437:6;:13;1444:5;1437:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;1429:27;;;;;;;;1493:5;1470:6;:20;1477:12;1470:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;1527:5;1512:20;;1220:3;;;;;;;1180:363;;;337:3;1552:6;:20;1559:12;1552:20;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;1613:7;:14;1600:10;:27;;;;1649:10;1637:9;;:22;;;;;;;;;;;;;;;;;;641:1025;;;;;:::o;735:333:8:-;849:1;820:7;:25;550:3;820:25;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;812:39;;;;;;;;550:3;861:7;:25;550:3;861:25;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;925:1;919:2;:7;;;;915:146;;;1020:40;1040:2;1044:4;1050:9;1020:19;:40::i;:::-;1012:49;;;;;;;;915:146;735:333;;:::o;3459:309::-;3568:12;3750:1;3747;3740:4;3734:11;3727:4;3721;3717:15;3710:5;3706:2;3699:5;3694:58;3683:69;;3669:93;;;;;;:::o;3774:303::-;3876:12;4059:1;4056;4049:4;4043:11;4036:4;4030;4026:15;4022:2;4015:5;4002:59;3991:70;;3977:94;;;;;:::o;4083:261::-;4152:19;4322:4;4316:11;4309:4;4303;4299:15;4296:1;4289:39;4274:54;;4260:78;;;:::o", + "source": "pragma solidity 0.4.24;\nimport \"./Module.sol\";\nimport \"./ModuleManager.sol\";\nimport \"./OwnerManager.sol\";\n\n\n/// @title Gnosis Safe - A multisignature wallet with support for modules and owners. This contract needs to be extented to add functionality to execute transactions.\n/// @author Stefan George - \ncontract GnosisSafe is ModuleManager, OwnerManager {\n\n /// @dev Setup function sets initial storage of contract.\n /// @param _owners List of Safe owners.\n /// @param _threshold Number of required confirmations for a Safe transaction.\n /// @param to Contract address for optional delegate call.\n /// @param data Data payload for optional delegate call.\n function setup(address[] _owners, uint8 _threshold, address to, bytes data)\n public\n {\n setupOwners(_owners, _threshold);\n // As setupOwners can only be called if the contract has not been initialized we don't need a check for setupModules\n setupModules(to, data);\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", "exportedSymbols": { "GnosisSafe": [ - 39 + 63 ] }, - "id": 40, + "id": 64, "nodeType": "SourceUnit", "nodes": [ { - "id": 8, + "id": 32, "literals": [ "solidity", "0.4", - ".23" + ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:1" + "src": "0:23:2" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "file": "./Module.sol", - "id": 9, + "id": 33, "nodeType": "ImportDirective", - "scope": 40, - "sourceUnit": 622, - "src": "24:22:1", + "scope": 64, + "sourceUnit": 751, + "src": "24:22:2", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ModuleManager.sol", "file": "./ModuleManager.sol", - "id": 10, + "id": 34, "nodeType": "ImportDirective", - "scope": 40, - "sourceUnit": 972, - "src": "47:29:1", + "scope": 64, + "sourceUnit": 1101, + "src": "47:29:2", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", "file": "./OwnerManager.sol", - "id": 11, + "id": 35, "nodeType": "ImportDirective", - "scope": 40, - "sourceUnit": 1344, - "src": "77:28:1", + "scope": 64, + "sourceUnit": 1473, + "src": "77:28:2", "symbolAliases": [], "unitAlias": "" }, @@ -366,62 +366,62 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 12, + "id": 36, "name": "ModuleManager", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 971, - "src": "345:13:1", + "referencedDeclaration": 1100, + "src": "345:13:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" } }, - "id": 13, + "id": 37, "nodeType": "InheritanceSpecifier", - "src": "345:13:1" + "src": "345:13:2" }, { "arguments": null, "baseName": { "contractScope": null, - "id": 14, + "id": 38, "name": "OwnerManager", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1343, - "src": "360:12:1", + "referencedDeclaration": 1472, + "src": "360:12:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_OwnerManager_$1343", + "typeIdentifier": "t_contract$_OwnerManager_$1472", "typeString": "contract OwnerManager" } }, - "id": 15, + "id": 39, "nodeType": "InheritanceSpecifier", - "src": "360:12:1" + "src": "360:12:2" } ], "contractDependencies": [ - 971, - 1343, - 1359 + 1100, + 1472, + 1619 ], "contractKind": "contract", "documentation": "@title Gnosis Safe - A multisignature wallet with support for modules and owners. This contract needs to be extented to add functionality to execute transactions.\n @author Stefan George - ", "fullyImplemented": true, - "id": 39, + "id": 63, "linearizedBaseContracts": [ - 39, - 1343, - 971, - 1359 + 63, + 1472, + 1100, + 1619 ], "name": "GnosisSafe", "nodeType": "ContractDefinition", "nodes": [ { "body": { - "id": 37, + "id": 61, "nodeType": "Block", - "src": "788:206:1", + "src": "788:206:2", "statements": [ { "expression": { @@ -429,12 +429,12 @@ "arguments": [ { "argumentTypes": null, - "id": 28, + "id": 52, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 18, - "src": "810:7:1", + "referencedDeclaration": 42, + "src": "810:7:2", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" @@ -442,12 +442,12 @@ }, { "argumentTypes": null, - "id": 29, + "id": 53, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 20, - "src": "819:10:1", + "referencedDeclaration": 44, + "src": "819:10:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -465,18 +465,18 @@ "typeString": "uint8" } ], - "id": 27, + "id": 51, "name": "setupOwners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1083, - "src": "798:11:1", + "referencedDeclaration": 1212, + "src": "798:11:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_uint8_$returns$__$", "typeString": "function (address[] memory,uint8)" } }, - "id": 30, + "id": 54, "isConstant": false, "isLValue": false, "isPure": false, @@ -484,15 +484,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "798:32:1", + "src": "798:32:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 31, + "id": 55, "nodeType": "ExpressionStatement", - "src": "798:32:1" + "src": "798:32:2" }, { "expression": { @@ -500,12 +500,12 @@ "arguments": [ { "argumentTypes": null, - "id": 33, + "id": 57, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 22, - "src": "978:2:1", + "referencedDeclaration": 46, + "src": "978:2:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -513,12 +513,12 @@ }, { "argumentTypes": null, - "id": 34, + "id": 58, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 24, - "src": "982:4:1", + "referencedDeclaration": 48, + "src": "982:4:2", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -536,18 +536,18 @@ "typeString": "bytes memory" } ], - "id": 32, + "id": 56, "name": "setupModules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 686, - "src": "965:12:1", + "referencedDeclaration": 815, + "src": "965:12:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (address,bytes memory)" } }, - "id": 35, + "id": 59, "isConstant": false, "isLValue": false, "isPure": false, @@ -555,20 +555,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "965:22:1", + "src": "965:22:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 36, + "id": 60, "nodeType": "ExpressionStatement", - "src": "965:22:1" + "src": "965:22:2" } ] }, "documentation": "@dev Setup function sets initial storage of contract.\n @param _owners List of Safe owners.\n @param _threshold Number of required confirmations for a Safe transaction.\n @param to Contract address for optional delegate call.\n @param data Data payload for optional delegate call.", - "id": 38, + "id": 62, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -576,16 +576,16 @@ "name": "setup", "nodeType": "FunctionDefinition", "parameters": { - "id": 25, + "id": 49, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 18, + "id": 42, "name": "_owners", "nodeType": "VariableDeclaration", - "scope": 38, - "src": "708:17:1", + "scope": 62, + "src": "708:17:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -594,19 +594,19 @@ }, "typeName": { "baseType": { - "id": 16, + "id": 40, "name": "address", "nodeType": "ElementaryTypeName", - "src": "708:7:1", + "src": "708:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 17, + "id": 41, "length": null, "nodeType": "ArrayTypeName", - "src": "708:9:1", + "src": "708:9:2", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -617,11 +617,11 @@ }, { "constant": false, - "id": 20, + "id": 44, "name": "_threshold", "nodeType": "VariableDeclaration", - "scope": 38, - "src": "727:16:1", + "scope": 62, + "src": "727:16:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -629,10 +629,10 @@ "typeString": "uint8" }, "typeName": { - "id": 19, + "id": 43, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "727:5:1", + "src": "727:5:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -643,11 +643,11 @@ }, { "constant": false, - "id": 22, + "id": 46, "name": "to", "nodeType": "VariableDeclaration", - "scope": 38, - "src": "745:10:1", + "scope": 62, + "src": "745:10:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -655,10 +655,10 @@ "typeString": "address" }, "typeName": { - "id": 21, + "id": 45, "name": "address", "nodeType": "ElementaryTypeName", - "src": "745:7:1", + "src": "745:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -669,11 +669,11 @@ }, { "constant": false, - "id": 24, + "id": 48, "name": "data", "nodeType": "VariableDeclaration", - "scope": 38, - "src": "757:10:1", + "scope": 62, + "src": "757:10:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -681,10 +681,10 @@ "typeString": "bytes" }, "typeName": { - "id": 23, + "id": 47, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "757:5:1", + "src": "757:5:2", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -694,78 +694,78 @@ "visibility": "internal" } ], - "src": "707:61:1" + "src": "707:61:2" }, "payable": false, "returnParameters": { - "id": 26, + "id": 50, "nodeType": "ParameterList", "parameters": [], - "src": "788:0:1" + "src": "788:0:2" }, - "scope": 39, - "src": "693:301:1", + "scope": 63, + "src": "693:301:2", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 40, - "src": "322:674:1" + "scope": 64, + "src": "322:674:2" } ], - "src": "0:997:1" + "src": "0:997:2" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", "exportedSymbols": { "GnosisSafe": [ - 39 + 63 ] }, - "id": 40, + "id": 64, "nodeType": "SourceUnit", "nodes": [ { - "id": 8, + "id": 32, "literals": [ "solidity", "0.4", - ".23" + ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:1" + "src": "0:23:2" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "file": "./Module.sol", - "id": 9, + "id": 33, "nodeType": "ImportDirective", - "scope": 40, - "sourceUnit": 622, - "src": "24:22:1", + "scope": 64, + "sourceUnit": 751, + "src": "24:22:2", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ModuleManager.sol", "file": "./ModuleManager.sol", - "id": 10, + "id": 34, "nodeType": "ImportDirective", - "scope": 40, - "sourceUnit": 972, - "src": "47:29:1", + "scope": 64, + "sourceUnit": 1101, + "src": "47:29:2", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", "file": "./OwnerManager.sol", - "id": 11, + "id": 35, "nodeType": "ImportDirective", - "scope": 40, - "sourceUnit": 1344, - "src": "77:28:1", + "scope": 64, + "sourceUnit": 1473, + "src": "77:28:2", "symbolAliases": [], "unitAlias": "" }, @@ -775,62 +775,62 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 12, + "id": 36, "name": "ModuleManager", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 971, - "src": "345:13:1", + "referencedDeclaration": 1100, + "src": "345:13:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" } }, - "id": 13, + "id": 37, "nodeType": "InheritanceSpecifier", - "src": "345:13:1" + "src": "345:13:2" }, { "arguments": null, "baseName": { "contractScope": null, - "id": 14, + "id": 38, "name": "OwnerManager", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1343, - "src": "360:12:1", + "referencedDeclaration": 1472, + "src": "360:12:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_OwnerManager_$1343", + "typeIdentifier": "t_contract$_OwnerManager_$1472", "typeString": "contract OwnerManager" } }, - "id": 15, + "id": 39, "nodeType": "InheritanceSpecifier", - "src": "360:12:1" + "src": "360:12:2" } ], "contractDependencies": [ - 971, - 1343, - 1359 + 1100, + 1472, + 1619 ], "contractKind": "contract", "documentation": "@title Gnosis Safe - A multisignature wallet with support for modules and owners. This contract needs to be extented to add functionality to execute transactions.\n @author Stefan George - ", "fullyImplemented": true, - "id": 39, + "id": 63, "linearizedBaseContracts": [ - 39, - 1343, - 971, - 1359 + 63, + 1472, + 1100, + 1619 ], "name": "GnosisSafe", "nodeType": "ContractDefinition", "nodes": [ { "body": { - "id": 37, + "id": 61, "nodeType": "Block", - "src": "788:206:1", + "src": "788:206:2", "statements": [ { "expression": { @@ -838,12 +838,12 @@ "arguments": [ { "argumentTypes": null, - "id": 28, + "id": 52, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 18, - "src": "810:7:1", + "referencedDeclaration": 42, + "src": "810:7:2", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" @@ -851,12 +851,12 @@ }, { "argumentTypes": null, - "id": 29, + "id": 53, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 20, - "src": "819:10:1", + "referencedDeclaration": 44, + "src": "819:10:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -874,18 +874,18 @@ "typeString": "uint8" } ], - "id": 27, + "id": 51, "name": "setupOwners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1083, - "src": "798:11:1", + "referencedDeclaration": 1212, + "src": "798:11:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_uint8_$returns$__$", "typeString": "function (address[] memory,uint8)" } }, - "id": 30, + "id": 54, "isConstant": false, "isLValue": false, "isPure": false, @@ -893,15 +893,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "798:32:1", + "src": "798:32:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 31, + "id": 55, "nodeType": "ExpressionStatement", - "src": "798:32:1" + "src": "798:32:2" }, { "expression": { @@ -909,12 +909,12 @@ "arguments": [ { "argumentTypes": null, - "id": 33, + "id": 57, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 22, - "src": "978:2:1", + "referencedDeclaration": 46, + "src": "978:2:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -922,12 +922,12 @@ }, { "argumentTypes": null, - "id": 34, + "id": 58, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 24, - "src": "982:4:1", + "referencedDeclaration": 48, + "src": "982:4:2", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -945,18 +945,18 @@ "typeString": "bytes memory" } ], - "id": 32, + "id": 56, "name": "setupModules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 686, - "src": "965:12:1", + "referencedDeclaration": 815, + "src": "965:12:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$", "typeString": "function (address,bytes memory)" } }, - "id": 35, + "id": 59, "isConstant": false, "isLValue": false, "isPure": false, @@ -964,20 +964,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "965:22:1", + "src": "965:22:2", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 36, + "id": 60, "nodeType": "ExpressionStatement", - "src": "965:22:1" + "src": "965:22:2" } ] }, "documentation": "@dev Setup function sets initial storage of contract.\n @param _owners List of Safe owners.\n @param _threshold Number of required confirmations for a Safe transaction.\n @param to Contract address for optional delegate call.\n @param data Data payload for optional delegate call.", - "id": 38, + "id": 62, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -985,16 +985,16 @@ "name": "setup", "nodeType": "FunctionDefinition", "parameters": { - "id": 25, + "id": 49, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 18, + "id": 42, "name": "_owners", "nodeType": "VariableDeclaration", - "scope": 38, - "src": "708:17:1", + "scope": 62, + "src": "708:17:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1003,19 +1003,19 @@ }, "typeName": { "baseType": { - "id": 16, + "id": 40, "name": "address", "nodeType": "ElementaryTypeName", - "src": "708:7:1", + "src": "708:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 17, + "id": 41, "length": null, "nodeType": "ArrayTypeName", - "src": "708:9:1", + "src": "708:9:2", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -1026,11 +1026,11 @@ }, { "constant": false, - "id": 20, + "id": 44, "name": "_threshold", "nodeType": "VariableDeclaration", - "scope": 38, - "src": "727:16:1", + "scope": 62, + "src": "727:16:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1038,10 +1038,10 @@ "typeString": "uint8" }, "typeName": { - "id": 19, + "id": 43, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "727:5:1", + "src": "727:5:2", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -1052,11 +1052,11 @@ }, { "constant": false, - "id": 22, + "id": 46, "name": "to", "nodeType": "VariableDeclaration", - "scope": 38, - "src": "745:10:1", + "scope": 62, + "src": "745:10:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1064,10 +1064,10 @@ "typeString": "address" }, "typeName": { - "id": 21, + "id": 45, "name": "address", "nodeType": "ElementaryTypeName", - "src": "745:7:1", + "src": "745:7:2", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1078,11 +1078,11 @@ }, { "constant": false, - "id": 24, + "id": 48, "name": "data", "nodeType": "VariableDeclaration", - "scope": 38, - "src": "757:10:1", + "scope": 62, + "src": "757:10:2", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1090,10 +1090,10 @@ "typeString": "bytes" }, "typeName": { - "id": 23, + "id": 47, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "757:5:1", + "src": "757:5:2", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -1103,33 +1103,33 @@ "visibility": "internal" } ], - "src": "707:61:1" + "src": "707:61:2" }, "payable": false, "returnParameters": { - "id": 26, + "id": 50, "nodeType": "ParameterList", "parameters": [], - "src": "788:0:1" + "src": "788:0:2" }, - "scope": 39, - "src": "693:301:1", + "scope": 63, + "src": "693:301:2", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 40, - "src": "322:674:1" + "scope": 64, + "src": "322:674:2" } ], - "src": "0:997:1" + "src": "0:997:2" }, "compiler": { "name": "solc", - "version": "0.4.23+commit.124ca40d.Emscripten.clang" + "version": "0.4.24+commit.e67f0147.Emscripten.clang" }, "networks": {}, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-16T10:51:14.736Z" + "updatedAt": "2018-05-27T11:12:45.575Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/GnosisSafePersonalEdition.json b/safe-contracts/build/contracts/GnosisSafePersonalEdition.json index 6f71f64c9c..970909dc75 100644 --- a/safe-contracts/build/contracts/GnosisSafePersonalEdition.json +++ b/safe-contracts/build/contracts/GnosisSafePersonalEdition.json @@ -365,6 +365,10 @@ "name": "gasPrice", "type": "uint256" }, + { + "name": "gasToken", + "type": "address" + }, { "name": "v", "type": "uint8[]" @@ -378,7 +382,7 @@ "type": "bytes32[]" } ], - "name": "execPayTransaction", + "name": "execAndPayTransaction", "outputs": [], "payable": false, "stateMutability": "nonpayable", @@ -469,6 +473,10 @@ "name": "gasPrice", "type": "uint256" }, + { + "name": "gasToken", + "type": "address" + }, { "name": "_nonce", "type": "uint256" @@ -486,51 +494,62 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50612b38806100206000396000f300608060405260043610610128576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630a51b01c1461012a5780632f54bf6e146102b1578063468721a71461030c5780634db5d039146103c4578063610b5925146104a85780637de7edef146104eb57806385e332cd1461052e57806386040aa9146105855780638cff6355146105f5578063a04222e11461064c578063a0e67e2b14610725578063a3f4df7e14610791578063ad8a045014610821578063affed0e01461086c578063b2494df314610897578063b7f3358d14610903578063b91a667f14610933578063c4ca3a9c14610983578063e009cfde14610a37578063e318b52b14610a9a578063e75235b814610b1d578063ffa1ad7414610b4e575b005b34801561013657600080fd5b506102af600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190803590602001909291908035906020019092919080359060200190929190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050610bde565b005b3480156102bd57600080fd5b506102f2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ccb565b604051808215151515815260200191505060405180910390f35b34801561031857600080fd5b506103aa600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050610d4d565b604051808215151515815260200191505060405180910390f35b3480156103d057600080fd5b5061048a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190505050610dea565b60405180826000191660001916815260200191505060405180910390f35b3480156104b457600080fd5b506104e9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611021565b005b3480156104f757600080fd5b5061052c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061129e565b005b34801561053a57600080fd5b50610543611341565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561059157600080fd5b506105f3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050611346565b005b34801561060157600080fd5b5061060a6115cc565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561065857600080fd5b5061072360048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506115d1565b005b34801561073157600080fd5b5061073a6115eb565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561077d578082015181840152602081019050610762565b505050509050019250505060405180910390f35b34801561079d57600080fd5b506107a6611786565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107e65780820151818401526020810190506107cb565b50505050905090810190601f1680156108135780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561082d57600080fd5b5061085660048036038101908080359060200190929190803590602001909291905050506117bf565b6040518082815260200191505060405180910390f35b34801561087857600080fd5b506108816117d4565b6040518082815260200191505060405180910390f35b3480156108a357600080fd5b506108ac6117da565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156108ef5780820151818401526020810190506108d4565b505050509050019250505060405180910390f35b34801561090f57600080fd5b50610931600480360381019080803560ff169060200190929190505050611a81565b005b34801561093f57600080fd5b50610981600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050611b00565b005b34801561098f57600080fd5b50610a21600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050611db8565b6040518082815260200191505060405180910390f35b348015610a4357600080fd5b50610a98600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e1e565b005b348015610aa657600080fd5b50610b1b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612051565b005b348015610b2957600080fd5b50610b326123e6565b604051808260ff1660ff16815260200191505060405180910390f35b348015610b5a57600080fd5b50610b636123fd565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610ba3578082015181840152602081019050610b88565b50505050905090810190601f168015610bd05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000805a9150610c01610bf98d8d8d8d8d8d8d600554610dea565b868686612436565b60056000815480929190600101919050555087612af85a0310151515610c2657600080fd5b610c338c8c8c8c8c6125fd565b1515610c66577facfdb444727b3b8994850a379f4bfc8a5ca665a55604339199daafa16f687b1a60405160405180910390a15b610c725a8303886117bf565b90503273ffffffffffffffffffffffffffffffffffffffff166108fc8783029081150290604051600060405180830381858888f19350505050158015610cbc573d6000803e3d6000fd5b50505050505050505050505050565b600080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515610dd357600080fd5b610de0858585855a6125fd565b9050949350505050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f010000000000000000000000000000000000000000000000000000000000000002308b8b8b8b8b8b8b8b604051808c7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140188815260200187805190602001908083835b602083101515610f8e5780518252602082019150602081019050602083039250610f69565b6001836020036101000a038019825116818451168082178552505050505050905001866002811115610fbc57fe5b60ff167f01000000000000000000000000000000000000000000000000000000000000000281526001018581526020018481526020018381526020018281526020019b5050505050505050505050506040518091039020905098975050505050505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561105b57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156110af5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15156110ba57600080fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561113e57600080fd5b60016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156112d857600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156112fe57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561138057600080fd5b8060ff166001600354031015151561139757600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561143057600080fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360008154809291906001900391905055508060ff16600460009054906101000a900460ff1660ff161415156115c7576115c681611a81565b5b505050565b600181565b6115db84846126fa565b6115e5828261298b565b50505050565b6060806000806003546040519080825280602002602001820160405280156116225781602001602082028038833980820191505090505b5092506000915060026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151561177d578083838151811015156116d257fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050818060010192505061168d565b82935050505090565b6040805190810160405280601c81526020017f476e6f736973205361666520506572736f6e616c2045646974696f6e0000000081525081565b6000615208612af88385010101905092915050565b60055481565b606060008060606000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156118ee57600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050611849565b8260405190808252806020026020018201604052801561191d5781602001602082028038833980820191505090505b5090506000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515611a78578181848151811015156119cd57fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050611988565b80935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611abb57600080fd5b6003548160ff1611151515611acf57600080fd5b60018160ff1610151515611ae257600080fd5b80600460006101000a81548160ff021916908360ff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611b3a57600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614158015611b8e5750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1515611b9957600080fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611c1d57600080fd5b60026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003600081548092919060010191905055508060ff16600460009054906101000a900460ff1660ff16141515611db457611db381611a81565b5b5050565b6000803073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611df557600080fd5b5a9050611e05868686865a6125fd565b1515611e1057600080fd5b5a8103915050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611e5857600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611ef157600080fd5b600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561208b57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156120df5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15156120ea57600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561216e57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561220757600080fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000600460009054906101000a900460ff16905090565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000806000809250600090505b600460009054906101000a900460ff1660ff168110156125f457600187878381518110151561246e57fe5b90602001906020020151878481518110151561248657fe5b90602001906020020151878581518110151561249e57fe5b90602001906020020151604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af1158015612519573d6000803e3d6000fd5b5050506020604051035191506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515156125aa57600080fd5b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161115156125e457600080fd5b8192508080600101915050612443565b50505050505050565b6000806000600281111561260d57fe5b84600281111561261957fe5b14156126325761262b87878786612aca565b91506126f0565b6001600281111561263f57fe5b84600281111561264b57fe5b14156126635761265c878685612ae3565b91506126ef565b61266c85612afa565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b600080600080600460009054906101000a900460ff1660ff1614151561271f57600080fd5b84518460ff161115151561273257600080fd5b60018460ff161015151561274557600080fd5b60019250600091505b84518210156128e257848281518110151561276557fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff16141580156127c55750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15156127d057600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561285457600080fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550809250818060010192505061274e565b6001600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550845160038190555083600460006101000a81548160ff021916908360ff1602179055505050505050565b600060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612a1057600080fd5b6001806000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008273ffffffffffffffffffffffffffffffffffffffff16141515612ac657612aba82825a612ae3565b1515612ac557600080fd5b5b5050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f090509190505600a165627a7a72305820ae084368703023e0af23298ba3bdd986ab72eb9889663044cee13cf3e0ae154c0029", - "deployedBytecode": "0x608060405260043610610128576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630a51b01c1461012a5780632f54bf6e146102b1578063468721a71461030c5780634db5d039146103c4578063610b5925146104a85780637de7edef146104eb57806385e332cd1461052e57806386040aa9146105855780638cff6355146105f5578063a04222e11461064c578063a0e67e2b14610725578063a3f4df7e14610791578063ad8a045014610821578063affed0e01461086c578063b2494df314610897578063b7f3358d14610903578063b91a667f14610933578063c4ca3a9c14610983578063e009cfde14610a37578063e318b52b14610a9a578063e75235b814610b1d578063ffa1ad7414610b4e575b005b34801561013657600080fd5b506102af600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190803590602001909291908035906020019092919080359060200190929190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050610bde565b005b3480156102bd57600080fd5b506102f2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ccb565b604051808215151515815260200191505060405180910390f35b34801561031857600080fd5b506103aa600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050610d4d565b604051808215151515815260200191505060405180910390f35b3480156103d057600080fd5b5061048a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190505050610dea565b60405180826000191660001916815260200191505060405180910390f35b3480156104b457600080fd5b506104e9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611021565b005b3480156104f757600080fd5b5061052c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061129e565b005b34801561053a57600080fd5b50610543611341565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561059157600080fd5b506105f3600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050611346565b005b34801561060157600080fd5b5061060a6115cc565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561065857600080fd5b5061072360048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506115d1565b005b34801561073157600080fd5b5061073a6115eb565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561077d578082015181840152602081019050610762565b505050509050019250505060405180910390f35b34801561079d57600080fd5b506107a6611786565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107e65780820151818401526020810190506107cb565b50505050905090810190601f1680156108135780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561082d57600080fd5b5061085660048036038101908080359060200190929190803590602001909291905050506117bf565b6040518082815260200191505060405180910390f35b34801561087857600080fd5b506108816117d4565b6040518082815260200191505060405180910390f35b3480156108a357600080fd5b506108ac6117da565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156108ef5780820151818401526020810190506108d4565b505050509050019250505060405180910390f35b34801561090f57600080fd5b50610931600480360381019080803560ff169060200190929190505050611a81565b005b34801561093f57600080fd5b50610981600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050611b00565b005b34801561098f57600080fd5b50610a21600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050611db8565b6040518082815260200191505060405180910390f35b348015610a4357600080fd5b50610a98600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e1e565b005b348015610aa657600080fd5b50610b1b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612051565b005b348015610b2957600080fd5b50610b326123e6565b604051808260ff1660ff16815260200191505060405180910390f35b348015610b5a57600080fd5b50610b636123fd565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610ba3578082015181840152602081019050610b88565b50505050905090810190601f168015610bd05780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000805a9150610c01610bf98d8d8d8d8d8d8d600554610dea565b868686612436565b60056000815480929190600101919050555087612af85a0310151515610c2657600080fd5b610c338c8c8c8c8c6125fd565b1515610c66577facfdb444727b3b8994850a379f4bfc8a5ca665a55604339199daafa16f687b1a60405160405180910390a15b610c725a8303886117bf565b90503273ffffffffffffffffffffffffffffffffffffffff166108fc8783029081150290604051600060405180830381858888f19350505050158015610cbc573d6000803e3d6000fd5b50505050505050505050505050565b600080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515610dd357600080fd5b610de0858585855a6125fd565b9050949350505050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f010000000000000000000000000000000000000000000000000000000000000002308b8b8b8b8b8b8b8b604051808c7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140188815260200187805190602001908083835b602083101515610f8e5780518252602082019150602081019050602083039250610f69565b6001836020036101000a038019825116818451168082178552505050505050905001866002811115610fbc57fe5b60ff167f01000000000000000000000000000000000000000000000000000000000000000281526001018581526020018481526020018381526020018281526020019b5050505050505050505050506040518091039020905098975050505050505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561105b57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156110af5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15156110ba57600080fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561113e57600080fd5b60016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156112d857600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156112fe57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561138057600080fd5b8060ff166001600354031015151561139757600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561143057600080fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360008154809291906001900391905055508060ff16600460009054906101000a900460ff1660ff161415156115c7576115c681611a81565b5b505050565b600181565b6115db84846126fa565b6115e5828261298b565b50505050565b6060806000806003546040519080825280602002602001820160405280156116225781602001602082028038833980820191505090505b5092506000915060026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151561177d578083838151811015156116d257fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050818060010192505061168d565b82935050505090565b6040805190810160405280601c81526020017f476e6f736973205361666520506572736f6e616c2045646974696f6e0000000081525081565b6000615208612af88385010101905092915050565b60055481565b606060008060606000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156118ee57600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050611849565b8260405190808252806020026020018201604052801561191d5781602001602082028038833980820191505090505b5090506000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515611a78578181848151811015156119cd57fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050611988565b80935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611abb57600080fd5b6003548160ff1611151515611acf57600080fd5b60018160ff1610151515611ae257600080fd5b80600460006101000a81548160ff021916908360ff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611b3a57600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614158015611b8e5750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1515611b9957600080fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611c1d57600080fd5b60026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003600081548092919060010191905055508060ff16600460009054906101000a900460ff1660ff16141515611db457611db381611a81565b5b5050565b6000803073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611df557600080fd5b5a9050611e05868686865a6125fd565b1515611e1057600080fd5b5a8103915050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611e5857600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611ef157600080fd5b600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561208b57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156120df5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15156120ea57600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561216e57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561220757600080fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000600460009054906101000a900460ff16905090565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000806000809250600090505b600460009054906101000a900460ff1660ff168110156125f457600187878381518110151561246e57fe5b90602001906020020151878481518110151561248657fe5b90602001906020020151878581518110151561249e57fe5b90602001906020020151604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af1158015612519573d6000803e3d6000fd5b5050506020604051035191506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515156125aa57600080fd5b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161115156125e457600080fd5b8192508080600101915050612443565b50505050505050565b6000806000600281111561260d57fe5b84600281111561261957fe5b14156126325761262b87878786612aca565b91506126f0565b6001600281111561263f57fe5b84600281111561264b57fe5b14156126635761265c878685612ae3565b91506126ef565b61266c85612afa565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b600080600080600460009054906101000a900460ff1660ff1614151561271f57600080fd5b84518460ff161115151561273257600080fd5b60018460ff161015151561274557600080fd5b60019250600091505b84518210156128e257848281518110151561276557fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff16141580156127c55750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15156127d057600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561285457600080fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550809250818060010192505061274e565b6001600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550845160038190555083600460006101000a81548160ff021916908360ff1602179055505050505050565b600060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612a1057600080fd5b6001806000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008273ffffffffffffffffffffffffffffffffffffffff16141515612ac657612aba82825a612ae3565b1515612ac557600080fd5b5b5050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f090509190505600a165627a7a72305820ae084368703023e0af23298ba3bdd986ab72eb9889663044cee13cf3e0ae154c0029", - "sourceMap": "314:5262:2:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;314:5262:2;;;;;;;", - "deployedSourceMap": "314:5262:2:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1443:1003;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1443:1003:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4841:129:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4841:129:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2522:377:6;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2522:377:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5150:424:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5150:424:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1235:391:6;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1235:391:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;626:208:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:208:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;499:55:6;;8:9:-1;5:2;;;30:1;27;20:12;5:2;499:55:6;;;;;;;;;;;;;;;;;;;;;;;;;;;2776:573:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2776:573:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;287:54;;8:9:-1;5:2;;;30:1;27;20:12;5:2;287:54:7;;;;;;;;;;;;;;;;;;;;;;;;;;;693:301:1;;8:9:-1;5:2;;;30:1;27;20:12;5:2;693:301:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5052:458:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5052:458:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;5052:458:7;;;;;;;;;;;;;;;;;382:60:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;382:60:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;382:60:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2878:209;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2878:209:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;644:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;644:20:2;;;;;;;;;;;;;;;;;;;;;;;4423:738:6;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4423:738:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;4423:738:6;;;;;;;;;;;;;;;;;4398:318:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4398:318:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;1906:528;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1906:528:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3786:299:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3786:299:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1887::6;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1887:299:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3683:526:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3683:526:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4722:113;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4722:113:7;;;;;;;;;;;;;;;;;;;;;;;;;;;448:40:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;448:40:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;448:40:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1443:1003;1748:16;2137;1767:9;1748:28;;1786:103;1796:83;1815:2;1819:5;1826:4;1832:9;1843;1854:7;1863:8;1873:5;;1796:18;:83::i;:::-;1881:1;1884;1887;1786:9;:103::i;:::-;1950:5;;:7;;;;;;;;;;;;;2008:9;602:5;1975:9;:29;:42;;1967:51;;;;;;;;2033:46;2041:2;2045:5;2052:4;2058:9;2069;2033:7;:46::i;:::-;2032:47;2028:100;;;2100:17;;;;;;;;;;2028:100;2156:44;2181:9;2170:8;:20;2192:7;2156:13;:44::i;:::-;2137:63;;2400:9;:18;;:39;2430:8;2419;:19;2400:39;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2400:39:2;1443:1003;;;;;;;;;;;;:::o;4841:129:7:-;4918:4;4962:1;4945:6;:13;4952:5;4945:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;;4938:25;;4841:129;;;:::o;2522:377:6:-;2654:12;2762:1;2739:7;:19;2747:10;2739:19;;;;;;;;;;;;;;;;;;;;;;;;;:24;;;;2731:33;;;;;;;;2846:46;2854:2;2858:5;2865:4;2871:9;2882;2846:7;:46::i;:::-;2836:56;;2522:377;;;;;;:::o;5150:424:2:-;5435:7;5480:4;5475:10;;5492:1;5487:7;;5496:4;5502:2;5506:5;5513:4;5519:9;5530;5541:7;5550:8;5560:6;5465:102;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;5465:102:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5458:109;;5150:424;;;;;;;;;;:::o;1235:391:6:-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;1401:1:6;1390:6;1382:20;;;;:59;;;;;550:3;1406:35;;1414:6;1406:35;;;;1382:59;1374:68;;;;;;;;1520:1;1501:7;:15;1509:6;1501:15;;;;;;;;;;;;;;;;;;;;;;;;;:20;;;1493:29;;;;;;;;1550:7;:25;550:3;1550:25;;;;;;;;;;;;;;;;;;;;;;;;;1532:7;:15;1540:6;1532:15;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;1613:6;1585:7;:25;550:3;1585:25;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;1235:391;:::o;626:208:4:-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;791:1:4;776:11;:16;;;;768:25;;;;;;;;816:11;803:10;;:24;;;;;;;;;;;;;;;;;;626:208;:::o;499:55:6:-;550:3;499:55;:::o;2776:573:7:-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;3000:10:7;2982:28;;2995:1;2982:10;;:14;:28;;2974:37;;;;;;;;3112:5;3091:26;;:6;:17;3098:9;3091:17;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;3083:35;;;;;;;;3148:6;:13;3155:5;3148:13;;;;;;;;;;;;;;;;;;;;;;;;;3128:6;:17;3135:9;3128:17;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;3187:1;3171:6;:13;3178:5;3171:13;;;;;;;;;;;;;;;;:17;;;;;;;;;;;;;;;;;;3198:10;;:12;;;;;;;;;;;;;;3291:10;3278:23;;:9;;;;;;;;;;;:23;;;;3274:68;;;3315:27;3331:10;3315:15;:27::i;:::-;3274:68;2776:573;;;:::o;287:54::-;337:3;287:54;:::o;693:301:1:-;798:32;810:7;819:10;798:11;:32::i;:::-;965:22;978:2;982:4;965:12;:22::i;:::-;693:301;;;;:::o;5052:458:7:-;5118:9;5143:22;5237:13;5264:20;5182:10;;5168:25;;;;;;;;;;;;;;;;;;;;;;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;5168:25:7;;;;5143:50;;5253:1;5237:17;;5287:6;:23;337:3;5287:23;;;;;;;;;;;;;;;;;;;;;;;;;5264:46;;5320:162;337:3;5326:31;;:12;:31;;;;5320:162;;;5388:12;5373:5;5379;5373:12;;;;;;;;;;;;;;;;;:27;;;;;;;;;;;5429:6;:20;5436:12;5429:20;;;;;;;;;;;;;;;;;;;;;;;;;5414:35;;5463:8;;;;;;;5320:162;;;5498:5;5491:12;;5052:458;;;;:::o;382:60:2:-;;;;;;;;;;;;;;;;;;;;:::o;2878:209::-;2987:7;545:5;602;3033:7;3018:12;:22;:42;:62;3011:69;;2878:209;;;;:::o;644:20::-;;;;:::o;4423:738:6:-;4490:9;4549:19;4582:21;4782:22;4571:1;4549:23;;4606:7;:25;550:3;4606:25;;;;;;;;;;;;;;;;;;;;;;;;;4582:49;;4641:132;550:3;4647:33;;:13;:33;;;;4641:132;;;4712:7;:22;4720:13;4712:22;;;;;;;;;;;;;;;;;;;;;;;;;4696:38;;4748:14;;;;;;;4641:132;;;4821:11;4807:26;;;;;;;;;;;;;;;;;;;;;;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;4807:26:6;;;;4782:51;;4891:1;4877:15;;4918:7;:25;550:3;4918:25;;;;;;;;;;;;;;;;;;;;;;;;;4902:41;;4953:180;550:3;4959:33;;:13;:33;;;;4953:180;;;5029:13;5008:5;5014:11;5008:18;;;;;;;;;;;;;;;;;:34;;;;;;;;;;;5072:7;:22;5080:13;5072:22;;;;;;;;;;;;;;;;;;;;;;;;;5056:38;;5108:14;;;;;;;4953:180;;;5149:5;5142:12;;4423:738;;;;:::o;4398:318:7:-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;4580:10:7;;4566;:24;;;;4558:33;;;;;;;;4675:1;4661:10;:15;;;;4653:24;;;;;;;;4699:10;4687:9;;:22;;;;;;;;;;;;;;;;;;4398:318;:::o;1906:528::-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;2076:1:7;2067:5;:10;;;;:38;;;;;337:3;2081:24;;:5;:24;;;;2067:38;2059:47;;;;;;;;2181:1;2164:6;:13;2171:5;2164:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;2156:27;;;;;;;;2209:6;:23;337:3;2209:23;;;;;;;;;;;;;;;;;;;;;;;;;2193:6;:13;2200:5;2193:13;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;2268:5;2242:6;:23;337:3;2242:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;2283:10;;:12;;;;;;;;;;;;;2376:10;2363:23;;:9;;;;;;;;;;;:23;;;;2359:68;;;2400:27;2416:10;2400:15;:27::i;:::-;2359:68;1906:528;;:::o;3786:299:2:-;3925:7;3948:16;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;3967:9:2;3948:28;;3994:46;4002:2;4006:5;4013:4;4019:9;4030;3994:7;:46::i;:::-;3986:55;;;;;;;;4069:9;4058:8;:20;4051:27;;3786:299;;;;;;;:::o;1887::6:-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;2095:6:6;2064:38;;:7;:19;2072:10;2064:19;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;2056:47;;;;;;;;2135:7;:15;2143:6;2135:15;;;;;;;;;;;;;;;;;;;;;;;;;2113:7;:19;2121:10;2113:19;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;2178:1;2160:7;:15;2168:6;2160:15;;;;;;;;;;;;;;;;:19;;;;;;;;;;;;;;;;;;1887:299;;:::o;3683:526:7:-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;3866:1:7;3854:8;:13;;;;:44;;;;;337:3;3871:27;;:8;:27;;;;3854:44;3846:53;;;;;;;;3977:1;3957:6;:16;3964:8;3957:16;;;;;;;;;;;;;;;;;;;;;;;;;:21;;;3949:30;;;;;;;;4080:8;4059:29;;:6;:17;4066:9;4059:17;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;4051:38;;;;;;;;4118:6;:16;4125:8;4118:16;;;;;;;;;;;;;;;;;;;;;;;;;4099:6;:16;4106:8;4099:16;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;4164:8;4144:6;:17;4151:9;4144:17;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;4201:1;4182:6;:16;4189:8;4182:16;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;3683:526;;;:::o;4722:113::-;4791:5;4819:9;;;;;;;;;;;4812:16;;4722:113;:::o;448:40:2:-;;;;;;;;;;;;;;;;;;;;:::o;4091:541::-;4257:17;4297:20;4327:9;4285:1;4257:30;;4397:1;4393:5;;4388:238;4404:9;;;;;;;;;;;4400:13;;:1;:13;4388:238;;;4449:33;4459:4;4465:1;4467;4465:4;;;;;;;;;;;;;;;;;;4471:1;4473;4471:4;;;;;;;;;;;;;;;;;;4477:1;4479;4477:4;;;;;;;;;;;;;;;;;;4449:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4449:33:2;;;;;;;;4434:48;;4528:1;4504:6;:20;4511:12;4504:20;;;;;;;;;;;;;;;;;;;;;;;;;:25;;;;4496:34;;;;;;;;4567:9;4552:24;;:12;:24;;;4544:33;;;;;;;;4603:12;4591:24;;4415:3;;;;;;;4388:238;;;4091:541;;;;;;;:::o;2905:548:6:-;3036:12;3307:19;3081;3068:32;;;;;;;;:9;:32;;;;;;;;;3064:383;;;3124:35;3136:2;3140:5;3147:4;3153:5;3124:11;:35::i;:::-;3114:45;;3064:383;;;3191:27;3178:40;;;;;;;;:9;:40;;;;;;;;;3174:273;;;3242:36;3262:2;3266:4;3272:5;3242:19;:36::i;:::-;3232:46;;3174:273;;;3329:19;3343:4;3329:13;:19::i;:::-;3307:41;;3387:1;3372:11;:16;;;;3362:26;;3407:29;3424:11;3407:29;;;;;;;;;;;;;;;;;;;;;;3174:273;3064:383;2905:548;;;;;;;;:::o;641:1025:7:-;1132:20;1185:9;1284:13;875:1;862:9;;;;;;;;;;;:14;;;854:23;;;;;;;;984:7;:14;970:10;:28;;;;962:37;;;;;;;;1083:1;1069:10;:15;;;;1061:24;;;;;;;;337:3;1132:38;;1197:1;1185:13;;1180:363;1204:7;:14;1200:1;:18;1180:363;;;1300:7;1308:1;1300:10;;;;;;;;;;;;;;;;;;1284:26;;1341:1;1332:5;:10;;;;:38;;;;;337:3;1346:24;;:5;:24;;;;1332:38;1324:47;;;;;;;;1454:1;1437:6;:13;1444:5;1437:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;1429:27;;;;;;;;1493:5;1470:6;:20;1477:12;1470:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;1527:5;1512:20;;1220:3;;;;;;;1180:363;;;337:3;1552:6;:20;1559:12;1552:20;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;1613:7;:14;1600:10;:27;;;;1649:10;1637:9;;:22;;;;;;;;;;;;;;;;;;641:1025;;;;;:::o;735:333:6:-;849:1;820:7;:25;550:3;820:25;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;812:39;;;;;;;;550:3;861:7;:25;550:3;861:25;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;925:1;919:2;:7;;;;915:146;;;1020:40;1040:2;1044:4;1050:9;1020:19;:40::i;:::-;1012:49;;;;;;;;915:146;735:333;;:::o;3459:309::-;3568:12;3750:1;3747;3740:4;3734:11;3727:4;3721;3717:15;3710:5;3706:2;3699:5;3694:58;3683:69;;3669:93;;;;;;:::o;3774:303::-;3876:12;4059:1;4056;4049:4;4043:11;4036:4;4030;4026:15;4022:2;4015:5;4002:59;3991:70;;3977:94;;;;;:::o;4083:261::-;4152:19;4322:4;4316:11;4309:4;4303;4299:15;4296:1;4289:39;4274:54;;4260:78;;;:::o", - "source": "pragma solidity 0.4.23;\nimport \"./GnosisSafe.sol\";\nimport \"./MasterCopy.sol\";\n\n\n/// @title Gnosis Safe Personal Edition - A multisignature wallet with support for confirmations using signed messages based on ERC191.\n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract GnosisSafePersonalEdition is MasterCopy, GnosisSafe {\n\n string public constant NAME = \"Gnosis Safe Personal Edition\";\n string public constant VERSION = \"0.0.1\";\n \n uint256 internal constant BASE_TX_GAS_COSTS = 21000;\n uint256 internal constant PAYMENT_GAS_COSTS = 11000;\n\n event ExecutionFailed();\n\n uint256 public nonce;\n\n /// @dev Allows to execute a Safe transaction confirmed by required number of owners.\n /// @param to Destination address of Safe transaction.\n /// @param value Ether value of Safe transaction.\n /// @param data Data payload of Safe transaction.\n /// @param operation Operation type of Safe transaction.\n /// @param safeTxGas Gas that should be used for the Safe transaction.\n /// @param dataGas Gas costs for data used to trigger the safe transaction.\n /// @param gasPrice Gas price that should be used for the payment calculation.\n /// @param v Array of signature V values sorted by owner addresses.\n /// @param r Array of signature R values sorted by owner addresses.\n /// @param s Array of signature S values sorted by owner addresses.\n function execPayTransaction(\n address to, \n uint256 value, \n bytes data, \n Enum.Operation operation, \n uint256 safeTxGas,\n uint256 dataGas,\n uint256 gasPrice,\n uint8[] v, \n bytes32[] r, \n bytes32[] s\n )\n public\n {\n uint256 startGas = gasleft();\n checkHash(getTransactionHash(to, value, data, operation, safeTxGas, dataGas, gasPrice, nonce), v, r, s);\n // Increase nonce and execute transaction.\n nonce++;\n require(gasleft() - PAYMENT_GAS_COSTS >= safeTxGas);\n if (!execute(to, value, data, operation, safeTxGas)) {\n emit ExecutionFailed();\n }\n uint256 gasCosts = totalGasCosts(startGas - gasleft(), dataGas);\n\n // We transfer the calculated tx costs to the tx.origin to avoid sending it to intermediate contracts that have made calls\n // solium-disable-next-line security/no-tx-origin\n tx.origin.transfer(gasCosts * gasPrice);\n }\n\n /// @dev Calculates the total gas costs for a safe transaction with the gas costs for the execution of the transaction.\n /// @param executionGas Gas costs for the execution of the safe transaction.\n /// @param dataGas Gas costs for data used to trigger the safe transaction.\n /// @return Total gas costs for the execution (this includes gas costs for the payment to tx.origin, base transaction and payload data).\n function totalGasCosts(uint256 executionGas, uint256 dataGas) \n public \n pure\n returns (uint256) \n {\n return executionGas + dataGas + PAYMENT_GAS_COSTS + BASE_TX_GAS_COSTS;\n }\n\n /// @dev Allows to estimate a Safe transaction. \n /// This method can only be used by the safe itself in a transaction. When estimating set `from` to the address of the safe.\n /// Since the `estimateGas` function includes refunds, call this method to get an estimated of the costs that are deducted from the safe with `execPayTransaction`\n /// @param to Destination address of Safe transaction.\n /// @param value Ether value of Safe transaction.\n /// @param data Data payload of Safe transaction.\n /// @param operation Operation type of Safe transaction.\n /// @return Estimate without refunds and overhead fees (base transaction and payload data gas costs).\n function requiredTxGas(address to, uint256 value, bytes data, Enum.Operation operation)\n public\n authorized\n returns (uint256)\n {\n uint256 startGas = gasleft();\n require(execute(to, value, data, operation, gasleft()));\n return startGas - gasleft();\n }\n\n function checkHash(bytes32 hash, uint8[] v, bytes32[] r, bytes32[] s)\n internal\n view\n {\n // There cannot be an owner with address 0.\n address lastOwner = address(0);\n address currentOwner;\n uint256 i;\n // Validate threshold is reached.\n for (i = 0; i < threshold; i++) {\n currentOwner = ecrecover(hash, v[i], r[i], s[i]);\n require(owners[currentOwner] != 0);\n require(currentOwner > lastOwner);\n lastOwner = currentOwner;\n }\n }\n\n /// @dev Returns hash to be signed by owners.\n /// @param to Destination address.\n /// @param value Ether value.\n /// @param data Data payload.\n /// @param operation Operation type.\n /// @param safeTxGas Fas that should be used for the safe transaction.\n /// @param dataGas Gas costs for data used to trigger the safe transaction.\n /// @param gasPrice Maximum gas price that should be used for this transaction.\n /// @param _nonce Transaction nonce.\n /// @return Transaction hash.\n function getTransactionHash(\n address to, \n uint256 value, \n bytes data, \n Enum.Operation operation, \n uint256 safeTxGas, \n uint256 dataGas, \n uint256 gasPrice, \n uint256 _nonce\n )\n public\n view\n returns (bytes32)\n {\n return keccak256(byte(0x19), byte(0), this, to, value, data, operation, safeTxGas, dataGas, gasPrice, _nonce);\n }\n}\n", + "bytecode": "0x608060405234801561001057600080fd5b50612e18806100206000396000f300608060405260043610610128576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806314148af21461012a5780632f54bf6e146102d1578063468721a71461032c578063610b5925146103e45780637de7edef1461042757806385e332cd1461046a57806386040aa9146104c15780638cff635514610531578063a04222e114610588578063a0e67e2b14610661578063a3f4df7e146106cd578063ad8a04501461075d578063affed0e0146107a8578063b2494df3146107d3578063b7f3358d1461083f578063b91a667f1461086f578063ba08ea24146108bf578063c4ca3a9c146109c3578063e009cfde14610a77578063e318b52b14610ada578063e75235b814610b5d578063ffa1ad7414610b8e575b005b34801561013657600080fd5b506102cf600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190803590602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050610c1e565b005b3480156102dd57600080fd5b50610312600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e41565b604051808215151515815260200191505060405180910390f35b34801561033857600080fd5b506103ca600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050610ec3565b604051808215151515815260200191505060405180910390f35b3480156103f057600080fd5b50610425600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f60565b005b34801561043357600080fd5b50610468600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506111dd565b005b34801561047657600080fd5b5061047f611280565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156104cd57600080fd5b5061052f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050611285565b005b34801561053d57600080fd5b5061054661150b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561059457600080fd5b5061065f60048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611510565b005b34801561066d57600080fd5b5061067661152a565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156106b957808201518184015260208101905061069e565b505050509050019250505060405180910390f35b3480156106d957600080fd5b506106e26116c5565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610722578082015181840152602081019050610707565b50505050905090810190601f16801561074f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561076957600080fd5b5061079260048036038101908080359060200190929190803590602001909291905050506116fe565b6040518082815260200191505060405180910390f35b3480156107b457600080fd5b506107bd611713565b6040518082815260200191505060405180910390f35b3480156107df57600080fd5b506107e8611719565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561082b578082015181840152602081019050610810565b505050509050019250505060405180910390f35b34801561084b57600080fd5b5061086d600480360381019080803560ff1690602001909291905050506119c0565b005b34801561087b57600080fd5b506108bd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050611a3f565b005b3480156108cb57600080fd5b506109a5600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190803590602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611cf7565b60405180826000191660001916815260200191505060405180910390f35b3480156109cf57600080fd5b50610a61600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050611fde565b6040518082815260200191505060405180910390f35b348015610a8357600080fd5b50610ad8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506120fe565b005b348015610ae657600080fd5b50610b5b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612331565b005b348015610b6957600080fd5b50610b726126c6565b604051808260ff1660ff16815260200191505060405180910390f35b348015610b9a57600080fd5b50610ba36126dd565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610be3578082015181840152602081019050610bc8565b50505050905090810190601f168015610c105780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60008060005a9250610c44610c3c8f8f8f8f8f8f8f8f600554611cf7565b878787612716565b60056000815480929190600101919050555089612af85a0310151515610c6957600080fd5b610c768e8e8e8e8e6128dd565b1515610ca9577facfdb444727b3b8994850a379f4bfc8a5ca665a55604339199daafa16f687b1a60405160405180910390a15b6000881115610e3157610cbe5a84038a6116fe565b91508782029050600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161415610d46573273ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610d40573d6000803e3d6000fd5b50610e30565b8673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb32836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610de957600080fd5b505af1158015610dfd573d6000803e3d6000fd5b505050506040513d6020811015610e1357600080fd5b81019080805190602001909291905050501515610e2f57600080fd5b5b5b5050505050505050505050505050565b600080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515610f4957600080fd5b610f56858585855a6128dd565b9050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610f9a57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614158015610fee5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515610ff957600080fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561107d57600080fd5b60016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561121757600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561123d57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156112bf57600080fd5b8060ff16600160035403101515156112d657600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561136f57600080fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360008154809291906001900391905055508060ff16600460009054906101000a900460ff1660ff1614151561150657611505816119c0565b5b505050565b600181565b61151a84846129da565b6115248282612c6b565b50505050565b6060806000806003546040519080825280602002602001820160405280156115615781602001602082028038833980820191505090505b5092506000915060026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415156116bc5780838381518110151561161157fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081806001019250506115cc565b82935050505090565b6040805190810160405280601c81526020017f476e6f736973205361666520506572736f6e616c2045646974696f6e0000000081525081565b6000615208612af88385010101905092915050565b60055481565b606060008060606000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151561182d57600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050611788565b8260405190808252806020026020018201604052801561185c5781602001602082028038833980820191505090505b5090506000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156119b75781818481518110151561190c57fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915082806001019350506118c7565b80935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156119fa57600080fd5b6003548160ff1611151515611a0e57600080fd5b60018160ff1610151515611a2157600080fd5b80600460006101000a81548160ff021916908360ff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611a7957600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614158015611acd5750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1515611ad857600080fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611b5c57600080fd5b60026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003600081548092919060010191905055508060ff16600460009054906101000a900460ff1660ff16141515611cf357611cf2816119c0565b5b5050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f010000000000000000000000000000000000000000000000000000000000000002308c8c8c8c8c8c8c8c8c604051602001808d7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018c7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140189815260200188805190602001908083835b602083101515611e9f5780518252602082019150602081019050602083039250611e7a565b6001836020036101000a038019825116818451168082178552505050505050905001876002811115611ecd57fe5b60ff167f01000000000000000000000000000000000000000000000000000000000000000281526001018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018281526020019c505050505050505050505050506040516020818303038152906040526040518082805190602001908083835b602083101515611fa25780518252602082019150602081019050602083039250611f7d565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902090509998505050505050505050565b60008060003073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561201d57600080fd5b5a915061202d878787875a6128dd565b151561203857600080fd5b5a8203905080604051602001808281526020019150506040516020818303038152906040526040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156120c35780820151818401526020810190506120a8565b50505050905090810190601f1680156120f05780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561213857600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156121d157600080fd5b600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561236b57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156123bf5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15156123ca57600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561244e57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156124e757600080fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000600460009054906101000a900460ff16905090565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000806000809250600090505b600460009054906101000a900460ff1660ff168110156128d457600187878381518110151561274e57fe5b90602001906020020151878481518110151561276657fe5b90602001906020020151878581518110151561277e57fe5b90602001906020020151604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af11580156127f9573d6000803e3d6000fd5b5050506020604051035191506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561288a57600080fd5b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161115156128c457600080fd5b8192508080600101915050612723565b50505050505050565b600080600060028111156128ed57fe5b8460028111156128f957fe5b14156129125761290b87878786612daa565b91506129d0565b6001600281111561291f57fe5b84600281111561292b57fe5b14156129435761293c878685612dc3565b91506129cf565b61294c85612dda565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b600080600080600460009054906101000a900460ff1660ff161415156129ff57600080fd5b84518460ff1611151515612a1257600080fd5b60018460ff1610151515612a2557600080fd5b60019250600091505b8451821015612bc2578482815181101515612a4557fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff1614158015612aa55750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515612ab057600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612b3457600080fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508092508180600101925050612a2e565b6001600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550845160038190555083600460006101000a81548160ff021916908360ff1602179055505050505050565b600060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612cf057600080fd5b6001806000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008273ffffffffffffffffffffffffffffffffffffffff16141515612da657612d9a82825a612dc3565b1515612da557600080fd5b5b5050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f090509190505600a165627a7a72305820347ad2b5b6fe6e72a8ecd2f9f47f2abf73193416650afadcef171dd55cb8297c0029", + "deployedBytecode": "0x608060405260043610610128576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806314148af21461012a5780632f54bf6e146102d1578063468721a71461032c578063610b5925146103e45780637de7edef1461042757806385e332cd1461046a57806386040aa9146104c15780638cff635514610531578063a04222e114610588578063a0e67e2b14610661578063a3f4df7e146106cd578063ad8a04501461075d578063affed0e0146107a8578063b2494df3146107d3578063b7f3358d1461083f578063b91a667f1461086f578063ba08ea24146108bf578063c4ca3a9c146109c3578063e009cfde14610a77578063e318b52b14610ada578063e75235b814610b5d578063ffa1ad7414610b8e575b005b34801561013657600080fd5b506102cf600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190803590602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050610c1e565b005b3480156102dd57600080fd5b50610312600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e41565b604051808215151515815260200191505060405180910390f35b34801561033857600080fd5b506103ca600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050610ec3565b604051808215151515815260200191505060405180910390f35b3480156103f057600080fd5b50610425600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f60565b005b34801561043357600080fd5b50610468600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506111dd565b005b34801561047657600080fd5b5061047f611280565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156104cd57600080fd5b5061052f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050611285565b005b34801561053d57600080fd5b5061054661150b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561059457600080fd5b5061065f60048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611510565b005b34801561066d57600080fd5b5061067661152a565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156106b957808201518184015260208101905061069e565b505050509050019250505060405180910390f35b3480156106d957600080fd5b506106e26116c5565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610722578082015181840152602081019050610707565b50505050905090810190601f16801561074f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561076957600080fd5b5061079260048036038101908080359060200190929190803590602001909291905050506116fe565b6040518082815260200191505060405180910390f35b3480156107b457600080fd5b506107bd611713565b6040518082815260200191505060405180910390f35b3480156107df57600080fd5b506107e8611719565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561082b578082015181840152602081019050610810565b505050509050019250505060405180910390f35b34801561084b57600080fd5b5061086d600480360381019080803560ff1690602001909291905050506119c0565b005b34801561087b57600080fd5b506108bd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050611a3f565b005b3480156108cb57600080fd5b506109a5600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190803590602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611cf7565b60405180826000191660001916815260200191505060405180910390f35b3480156109cf57600080fd5b50610a61600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050611fde565b6040518082815260200191505060405180910390f35b348015610a8357600080fd5b50610ad8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506120fe565b005b348015610ae657600080fd5b50610b5b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612331565b005b348015610b6957600080fd5b50610b726126c6565b604051808260ff1660ff16815260200191505060405180910390f35b348015610b9a57600080fd5b50610ba36126dd565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610be3578082015181840152602081019050610bc8565b50505050905090810190601f168015610c105780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60008060005a9250610c44610c3c8f8f8f8f8f8f8f8f600554611cf7565b878787612716565b60056000815480929190600101919050555089612af85a0310151515610c6957600080fd5b610c768e8e8e8e8e6128dd565b1515610ca9577facfdb444727b3b8994850a379f4bfc8a5ca665a55604339199daafa16f687b1a60405160405180910390a15b6000881115610e3157610cbe5a84038a6116fe565b91508782029050600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161415610d46573273ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610d40573d6000803e3d6000fd5b50610e30565b8673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb32836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610de957600080fd5b505af1158015610dfd573d6000803e3d6000fd5b505050506040513d6020811015610e1357600080fd5b81019080805190602001909291905050501515610e2f57600080fd5b5b5b5050505050505050505050505050565b600080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515610f4957600080fd5b610f56858585855a6128dd565b9050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610f9a57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614158015610fee5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515610ff957600080fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561107d57600080fd5b60016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561121757600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561123d57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156112bf57600080fd5b8060ff16600160035403101515156112d657600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561136f57600080fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360008154809291906001900391905055508060ff16600460009054906101000a900460ff1660ff1614151561150657611505816119c0565b5b505050565b600181565b61151a84846129da565b6115248282612c6b565b50505050565b6060806000806003546040519080825280602002602001820160405280156115615781602001602082028038833980820191505090505b5092506000915060026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415156116bc5780838381518110151561161157fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081806001019250506115cc565b82935050505090565b6040805190810160405280601c81526020017f476e6f736973205361666520506572736f6e616c2045646974696f6e0000000081525081565b6000615208612af88385010101905092915050565b60055481565b606060008060606000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151561182d57600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050611788565b8260405190808252806020026020018201604052801561185c5781602001602082028038833980820191505090505b5090506000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156119b75781818481518110151561190c57fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915082806001019350506118c7565b80935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156119fa57600080fd5b6003548160ff1611151515611a0e57600080fd5b60018160ff1610151515611a2157600080fd5b80600460006101000a81548160ff021916908360ff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611a7957600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614158015611acd5750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1515611ad857600080fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611b5c57600080fd5b60026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003600081548092919060010191905055508060ff16600460009054906101000a900460ff1660ff16141515611cf357611cf2816119c0565b5b5050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f010000000000000000000000000000000000000000000000000000000000000002308c8c8c8c8c8c8c8c8c604051602001808d7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018c7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140189815260200188805190602001908083835b602083101515611e9f5780518252602082019150602081019050602083039250611e7a565b6001836020036101000a038019825116818451168082178552505050505050905001876002811115611ecd57fe5b60ff167f01000000000000000000000000000000000000000000000000000000000000000281526001018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018281526020019c505050505050505050505050506040516020818303038152906040526040518082805190602001908083835b602083101515611fa25780518252602082019150602081019050602083039250611f7d565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902090509998505050505050505050565b60008060003073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561201d57600080fd5b5a915061202d878787875a6128dd565b151561203857600080fd5b5a8203905080604051602001808281526020019150506040516020818303038152906040526040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156120c35780820151818401526020810190506120a8565b50505050905090810190601f1680156120f05780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561213857600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156121d157600080fd5b600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561236b57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156123bf5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15156123ca57600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561244e57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156124e757600080fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000600460009054906101000a900460ff16905090565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000806000809250600090505b600460009054906101000a900460ff1660ff168110156128d457600187878381518110151561274e57fe5b90602001906020020151878481518110151561276657fe5b90602001906020020151878581518110151561277e57fe5b90602001906020020151604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af11580156127f9573d6000803e3d6000fd5b5050506020604051035191506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561288a57600080fd5b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161115156128c457600080fd5b8192508080600101915050612723565b50505050505050565b600080600060028111156128ed57fe5b8460028111156128f957fe5b14156129125761290b87878786612daa565b91506129d0565b6001600281111561291f57fe5b84600281111561292b57fe5b14156129435761293c878685612dc3565b91506129cf565b61294c85612dda565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b600080600080600460009054906101000a900460ff1660ff161415156129ff57600080fd5b84518460ff1611151515612a1257600080fd5b60018460ff1610151515612a2557600080fd5b60019250600091505b8451821015612bc2578482815181101515612a4557fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff1614158015612aa55750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515612ab057600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612b3457600080fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508092508180600101925050612a2e565b6001600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550845160038190555083600460006101000a81548160ff021916908360ff1602179055505050505050565b600060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612cf057600080fd5b6001806000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008273ffffffffffffffffffffffffffffffffffffffff16141515612da657612d9a82825a612dc3565b1515612da557600080fd5b5b5050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f090509190505600a165627a7a72305820347ad2b5b6fe6e72a8ecd2f9f47f2abf73193416650afadcef171dd55cb8297c0029", + "sourceMap": "449:6193:3:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;449:6193:3;;;;;;;", + "deployedSourceMap": "449:6193:3:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1660:1367;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1660:1367:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4841:129:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4841:129:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2522:377:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2522:377:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1235:391;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1235:391:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;626:208:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:208:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;499:55:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;499:55:8;;;;;;;;;;;;;;;;;;;;;;;;;;;2776:573:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2776:573:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;287:54;;8:9:-1;5:2;;;30:1;27;20:12;5:2;287:54:9;;;;;;;;;;;;;;;;;;;;;;;;;;;693:301:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;693:301:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5052:458:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5052:458:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;5052:458:9;;;;;;;;;;;;;;;;;517:60:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;517:60:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;517:60:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3459:209;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3459:209:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;779:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;779:20:3;;;;;;;;;;;;;;;;;;;;;;;4423:738:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4423:738:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;4423:738:8;;;;;;;;;;;;;;;;;4398:318:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4398:318:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;1906:528;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1906:528:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6140:500:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6140:500:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4586:407;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4586:407:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1887:299:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1887:299:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3683:526:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3683:526:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4722:113;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4722:113:9;;;;;;;;;;;;;;;;;;;;;;;;;;;583:40:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;583:40:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;583:40:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1660:1367;1994:16;2565;2642:14;2013:9;1994:28;;2032:113;2042:93;2061:2;2065:5;2072:4;2078:9;2089;2100:7;2109:8;2119;2129:5;;2042:18;:93::i;:::-;2137:1;2140;2143;2032:9;:113::i;:::-;2206:5;;:7;;;;;;;;;;;;;2264:9;737:5;2231:9;:29;:42;;2223:51;;;;;;;;2289:46;2297:2;2301:5;2308:4;2314:9;2325;2289:7;:46::i;:::-;2288:47;2284:100;;;2356:17;;;;;;;;;;2284:100;2548:1;2537:8;:12;2533:486;;;2584:44;2609:9;2598:8;:20;2620:7;2584:13;:44::i;:::-;2565:63;;2670:8;2659;:19;2642:36;;2716:1;2696:22;;:8;:22;;;2692:317;;;2805:9;:18;;:26;2824:6;2805:26;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2805:26:3;2692:317;;;2956:8;2945:29;;;2975:9;2986:6;2945:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2945:48:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2945:48:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2945:48:3;;;;;;;;;;;;;;;;2937:57;;;;;;;;2692:317;2533:486;1660:1367;;;;;;;;;;;;;;:::o;4841:129:9:-;4918:4;4962:1;4945:6;:13;4952:5;4945:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;;4938:25;;4841:129;;;:::o;2522:377:8:-;2654:12;2762:1;2739:7;:19;2747:10;2739:19;;;;;;;;;;;;;;;;;;;;;;;;;:24;;;;2731:33;;;;;;;;2846:46;2854:2;2858:5;2865:4;2871:9;2882;2846:7;:46::i;:::-;2836:56;;2522:377;;;;;;:::o;1235:391::-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;1401:1:8;1390:6;1382:20;;;;:59;;;;;550:3;1406:35;;1414:6;1406:35;;;;1382:59;1374:68;;;;;;;;1520:1;1501:7;:15;1509:6;1501:15;;;;;;;;;;;;;;;;;;;;;;;;;:20;;;1493:29;;;;;;;;1550:7;:25;550:3;1550:25;;;;;;;;;;;;;;;;;;;;;;;;;1532:7;:15;1540:6;1532:15;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;1613:6;1585:7;:25;550:3;1585:25;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;1235:391;:::o;626:208:5:-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;791:1:5;776:11;:16;;;;768:25;;;;;;;;816:11;803:10;;:24;;;;;;;;;;;;;;;;;;626:208;:::o;499:55:8:-;550:3;499:55;:::o;2776:573:9:-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;3000:10:9;2982:28;;2995:1;2982:10;;:14;:28;;2974:37;;;;;;;;3112:5;3091:26;;:6;:17;3098:9;3091:17;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;3083:35;;;;;;;;3148:6;:13;3155:5;3148:13;;;;;;;;;;;;;;;;;;;;;;;;;3128:6;:17;3135:9;3128:17;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;3187:1;3171:6;:13;3178:5;3171:13;;;;;;;;;;;;;;;;:17;;;;;;;;;;;;;;;;;;3198:10;;:12;;;;;;;;;;;;;;3291:10;3278:23;;:9;;;;;;;;;;;:23;;;;3274:68;;;3315:27;3331:10;3315:15;:27::i;:::-;3274:68;2776:573;;;:::o;287:54::-;337:3;287:54;:::o;693:301:2:-;798:32;810:7;819:10;798:11;:32::i;:::-;965:22;978:2;982:4;965:12;:22::i;:::-;693:301;;;;:::o;5052:458:9:-;5118:9;5143:22;5237:13;5264:20;5182:10;;5168:25;;;;;;;;;;;;;;;;;;;;;;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;5168:25:9;;;;5143:50;;5253:1;5237:17;;5287:6;:23;337:3;5287:23;;;;;;;;;;;;;;;;;;;;;;;;;5264:46;;5320:162;337:3;5326:31;;:12;:31;;;;5320:162;;;5388:12;5373:5;5379;5373:12;;;;;;;;;;;;;;;;;:27;;;;;;;;;;;5429:6;:20;5436:12;5429:20;;;;;;;;;;;;;;;;;;;;;;;;;5414:35;;5463:8;;;;;;;5320:162;;;5498:5;5491:12;;5052:458;;;;:::o;517:60:3:-;;;;;;;;;;;;;;;;;;;;:::o;3459:209::-;3568:7;680:5;737;3614:7;3599:12;:22;:42;:62;3592:69;;3459:209;;;;:::o;779:20::-;;;;:::o;4423:738:8:-;4490:9;4549:19;4582:21;4782:22;4571:1;4549:23;;4606:7;:25;550:3;4606:25;;;;;;;;;;;;;;;;;;;;;;;;;4582:49;;4641:132;550:3;4647:33;;:13;:33;;;;4641:132;;;4712:7;:22;4720:13;4712:22;;;;;;;;;;;;;;;;;;;;;;;;;4696:38;;4748:14;;;;;;;4641:132;;;4821:11;4807:26;;;;;;;;;;;;;;;;;;;;;;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;4807:26:8;;;;4782:51;;4891:1;4877:15;;4918:7;:25;550:3;4918:25;;;;;;;;;;;;;;;;;;;;;;;;;4902:41;;4953:180;550:3;4959:33;;:13;:33;;;;4953:180;;;5029:13;5008:5;5014:11;5008:18;;;;;;;;;;;;;;;;;:34;;;;;;;;;;;5072:7;:22;5080:13;5072:22;;;;;;;;;;;;;;;;;;;;;;;;;5056:38;;5108:14;;;;;;;4953:180;;;5149:5;5142:12;;4423:738;;;;:::o;4398:318:9:-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;4580:10:9;;4566;:24;;;;4558:33;;;;;;;;4675:1;4661:10;:15;;;;4653:24;;;;;;;;4699:10;4687:9;;:22;;;;;;;;;;;;;;;;;;4398:318;:::o;1906:528::-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;2076:1:9;2067:5;:10;;;;:38;;;;;337:3;2081:24;;:5;:24;;;;2067:38;2059:47;;;;;;;;2181:1;2164:6;:13;2171:5;2164:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;2156:27;;;;;;;;2209:6;:23;337:3;2209:23;;;;;;;;;;;;;;;;;;;;;;;;;2193:6;:13;2200:5;2193:13;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;2268:5;2242:6;:23;337:3;2242:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;2283:10;;:12;;;;;;;;;;;;;2376:10;2363:23;;:9;;;;;;;;;;;:23;;;;2359:68;;;2400:27;2416:10;2400:15;:27::i;:::-;2359:68;1906:528;;:::o;6140:500:3:-;6451:7;6526:4;6521:10;;6538:1;6533:7;;6542:4;6548:2;6552:5;6559:4;6565:9;6576;6587:7;6596:8;6606;6616:6;6504:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;6504:119:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;6504:119:3;;;6481:152;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;6481:152:3;;;;;;;;;;;;;;;;6474:159;;6140:500;;;;;;;;;;;:::o;4586:407::-;4725:7;4748:16;4851:19;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;4767:9:3;4748:28;;4794:46;4802:2;4806:5;4813:4;4819:9;4830;4794:7;:46::i;:::-;4786:55;;;;;;;;4884:9;4873:8;:20;4851:42;;4972:11;4955:29;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;4955:29:3;;;4941:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;4941:45:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1887:299:8;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;2095:6:8;2064:38;;:7;:19;2072:10;2064:19;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;2056:47;;;;;;;;2135:7;:15;2143:6;2135:15;;;;;;;;;;;;;;;;;;;;;;;;;2113:7;:19;2121:10;2113:19;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;2178:1;2160:7;:15;2168:6;2160:15;;;;;;;;;;;;;;;;:19;;;;;;;;;;;;;;;;;;1887:299;;:::o;3683:526:9:-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;3866:1:9;3854:8;:13;;;;:44;;;;;337:3;3871:27;;:8;:27;;;;3854:44;3846:53;;;;;;;;3977:1;3957:6;:16;3964:8;3957:16;;;;;;;;;;;;;;;;;;;;;;;;;:21;;;3949:30;;;;;;;;4080:8;4059:29;;:6;:17;4066:9;4059:17;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;4051:38;;;;;;;;4118:6;:16;4125:8;4118:16;;;;;;;;;;;;;;;;;;;;;;;;;4099:6;:16;4106:8;4099:16;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;4164:8;4144:6;:17;4151:9;4144:17;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;4201:1;4182:6;:16;4189:8;4182:16;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;3683:526;;;:::o;4722:113::-;4791:5;4819:9;;;;;;;;;;;4812:16;;4722:113;:::o;583:40:3:-;;;;;;;;;;;;;;;;;;;;:::o;4999:541::-;5165:17;5205:20;5235:9;5193:1;5165:30;;5305:1;5301:5;;5296:238;5312:9;;;;;;;;;;;5308:13;;:1;:13;5296:238;;;5357:33;5367:4;5373:1;5375;5373:4;;;;;;;;;;;;;;;;;;5379:1;5381;5379:4;;;;;;;;;;;;;;;;;;5385:1;5387;5385:4;;;;;;;;;;;;;;;;;;5357:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5357:33:3;;;;;;;;5342:48;;5436:1;5412:6;:20;5419:12;5412:20;;;;;;;;;;;;;;;;;;;;;;;;;:25;;;;5404:34;;;;;;;;5475:9;5460:24;;:12;:24;;;5452:33;;;;;;;;5511:12;5499:24;;5323:3;;;;;;;5296:238;;;4999:541;;;;;;;:::o;2905:548:8:-;3036:12;3307:19;3081;3068:32;;;;;;;;:9;:32;;;;;;;;;3064:383;;;3124:35;3136:2;3140:5;3147:4;3153:5;3124:11;:35::i;:::-;3114:45;;3064:383;;;3191:27;3178:40;;;;;;;;:9;:40;;;;;;;;;3174:273;;;3242:36;3262:2;3266:4;3272:5;3242:19;:36::i;:::-;3232:46;;3174:273;;;3329:19;3343:4;3329:13;:19::i;:::-;3307:41;;3387:1;3372:11;:16;;;;3362:26;;3407:29;3424:11;3407:29;;;;;;;;;;;;;;;;;;;;;;3174:273;3064:383;2905:548;;;;;;;;:::o;641:1025:9:-;1132:20;1185:9;1284:13;875:1;862:9;;;;;;;;;;;:14;;;854:23;;;;;;;;984:7;:14;970:10;:28;;;;962:37;;;;;;;;1083:1;1069:10;:15;;;;1061:24;;;;;;;;337:3;1132:38;;1197:1;1185:13;;1180:363;1204:7;:14;1200:1;:18;1180:363;;;1300:7;1308:1;1300:10;;;;;;;;;;;;;;;;;;1284:26;;1341:1;1332:5;:10;;;;:38;;;;;337:3;1346:24;;:5;:24;;;;1332:38;1324:47;;;;;;;;1454:1;1437:6;:13;1444:5;1437:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;1429:27;;;;;;;;1493:5;1470:6;:20;1477:12;1470:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;1527:5;1512:20;;1220:3;;;;;;;1180:363;;;337:3;1552:6;:20;1559:12;1552:20;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;1613:7;:14;1600:10;:27;;;;1649:10;1637:9;;:22;;;;;;;;;;;;;;;;;;641:1025;;;;;:::o;735:333:8:-;849:1;820:7;:25;550:3;820:25;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;812:39;;;;;;;;550:3;861:7;:25;550:3;861:25;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;925:1;919:2;:7;;;;915:146;;;1020:40;1040:2;1044:4;1050:9;1020:19;:40::i;:::-;1012:49;;;;;;;;915:146;735:333;;:::o;3459:309::-;3568:12;3750:1;3747;3740:4;3734:11;3727:4;3721;3717:15;3710:5;3706:2;3699:5;3694:58;3683:69;;3669:93;;;;;;:::o;3774:303::-;3876:12;4059:1;4056;4049:4;4043:11;4036:4;4030;4026:15;4022:2;4015:5;4002:59;3991:70;;3977:94;;;;;:::o;4083:261::-;4152:19;4322:4;4316:11;4309:4;4303;4299:15;4296:1;4289:39;4274:54;;4260:78;;;:::o", + "source": "pragma solidity 0.4.24;\nimport \"./interfaces/ERC20Token.sol\";\nimport \"./GnosisSafe.sol\";\nimport \"./MasterCopy.sol\";\n\n\n/// @title Gnosis Safe Personal Edition - A multisignature wallet with support for confirmations using signed messages based on ERC191.\n/// @author Stefan George - \n/// @author Richard Meissner - \n/// @author Ricardo Guilherme Schmidt - (Status Research & Development GmbH) - Gas Token Payment\ncontract GnosisSafePersonalEdition is MasterCopy, GnosisSafe {\n\n string public constant NAME = \"Gnosis Safe Personal Edition\";\n string public constant VERSION = \"0.0.1\";\n \n uint256 internal constant BASE_TX_GAS_COSTS = 21000;\n uint256 internal constant PAYMENT_GAS_COSTS = 11000;\n\n event ExecutionFailed();\n\n uint256 public nonce;\n\n /// @dev Allows to execute a Safe transaction confirmed by required number of owners.\n /// @param to Destination address of Safe transaction.\n /// @param value Ether value of Safe transaction.\n /// @param data Data payload of Safe transaction.\n /// @param operation Operation type of Safe transaction.\n /// @param safeTxGas Gas that should be used for the Safe transaction.\n /// @param dataGas Gas costs for data used to trigger the safe transaction.\n /// @param gasPrice Gas price that should be used for the payment calculation.\n /// @param gasToken Token address (or 0 if ETH) that is used for the payment.\n /// @param v Array of signature V values sorted by owner addresses.\n /// @param r Array of signature R values sorted by owner addresses.\n /// @param s Array of signature S values sorted by owner addresses.\n function execAndPayTransaction(\n address to, \n uint256 value, \n bytes data, \n Enum.Operation operation, \n uint256 safeTxGas,\n uint256 dataGas,\n uint256 gasPrice,\n address gasToken,\n uint8[] v, \n bytes32[] r, \n bytes32[] s\n )\n public\n {\n uint256 startGas = gasleft();\n checkHash(getTransactionHash(to, value, data, operation, safeTxGas, dataGas, gasPrice, gasToken, nonce), v, r, s);\n // Increase nonce and execute transaction.\n nonce++;\n require(gasleft() - PAYMENT_GAS_COSTS >= safeTxGas);\n if (!execute(to, value, data, operation, safeTxGas)) {\n emit ExecutionFailed();\n }\n \n // We transfer the calculated tx costs to the tx.origin to avoid sending it to intermediate contracts that have made calls\n if (gasPrice > 0) {\n uint256 gasCosts = totalGasCosts(startGas - gasleft(), dataGas);\n uint256 amount = gasCosts * gasPrice;\n if (gasToken == address(0)) {\n // solium-disable-next-line security/no-tx-origin\n tx.origin.transfer(amount);\n } else {\n // solium-disable-next-line security/no-tx-origin\n require(ERC20Token(gasToken).transfer(tx.origin, amount));\n }\n } \n }\n\n /// @dev Calculates the total gas costs for a safe transaction with the gas costs for the execution of the transaction.\n /// @param executionGas Gas costs for the execution of the safe transaction.\n /// @param dataGas Gas costs for data used to trigger the safe transaction.\n /// @return Total gas costs for the execution (this includes gas costs for the payment to tx.origin, base transaction and payload data).\n function totalGasCosts(uint256 executionGas, uint256 dataGas) \n public \n pure\n returns (uint256) \n {\n return executionGas + dataGas + PAYMENT_GAS_COSTS + BASE_TX_GAS_COSTS;\n }\n\n /// @dev Allows to estimate a Safe transaction. \n /// This method is only meant for estimation purpose, therfore two different protection mechanism against execution in a transaction have been made:\n /// 1.) The method can only be called from the safe itself\n /// 2.) The response is returned with a revert\n /// When estimating set `from` to the address of the safe.\n /// Since the `estimateGas` function includes refunds, call this method to get an estimated of the costs that are deducted from the safe with `execAndPayTransaction`\n /// @param to Destination address of Safe transaction.\n /// @param value Ether value of Safe transaction.\n /// @param data Data payload of Safe transaction.\n /// @param operation Operation type of Safe transaction.\n /// @return Estimate without refunds and overhead fees (base transaction and payload data gas costs).\n function requiredTxGas(address to, uint256 value, bytes data, Enum.Operation operation)\n public\n authorized\n returns (uint256)\n {\n uint256 startGas = gasleft();\n require(execute(to, value, data, operation, gasleft()));\n uint256 requiredGas = startGas - gasleft();\n // Convert response to string\n revert(string(abi.encodePacked(requiredGas)));\n }\n\n function checkHash(bytes32 hash, uint8[] v, bytes32[] r, bytes32[] s)\n internal\n view\n {\n // There cannot be an owner with address 0.\n address lastOwner = address(0);\n address currentOwner;\n uint256 i;\n // Validate threshold is reached.\n for (i = 0; i < threshold; i++) {\n currentOwner = ecrecover(hash, v[i], r[i], s[i]);\n require(owners[currentOwner] != 0);\n require(currentOwner > lastOwner);\n lastOwner = currentOwner;\n }\n }\n\n /// @dev Returns hash to be signed by owners.\n /// @param to Destination address.\n /// @param value Ether value.\n /// @param data Data payload.\n /// @param operation Operation type.\n /// @param safeTxGas Fas that should be used for the safe transaction.\n /// @param dataGas Gas costs for data used to trigger the safe transaction.\n /// @param gasPrice Maximum gas price that should be used for this transaction.\n /// @param gasToken Token address (or 0 if ETH) that is used for the payment.\n /// @param _nonce Transaction nonce.\n /// @return Transaction hash.\n function getTransactionHash(\n address to, \n uint256 value, \n bytes data, \n Enum.Operation operation, \n uint256 safeTxGas, \n uint256 dataGas, \n uint256 gasPrice, \n address gasToken,\n uint256 _nonce\n )\n public\n view\n returns (bytes32)\n {\n return keccak256(\n abi.encodePacked(byte(0x19), byte(0), this, to, value, data, operation, safeTxGas, dataGas, gasPrice, gasToken, _nonce)\n );\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafePersonalEdition.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafePersonalEdition.sol", "exportedSymbols": { "GnosisSafePersonalEdition": [ - 324 + 397 ] }, - "id": 325, + "id": 398, "nodeType": "SourceUnit", "nodes": [ { - "id": 41, + "id": 65, "literals": [ "solidity", "0.4", - ".23" + ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:2" + "src": "0:23:3" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/interfaces/ERC20Token.sol", + "file": "./interfaces/ERC20Token.sol", + "id": 66, + "nodeType": "ImportDirective", + "scope": 398, + "sourceUnit": 1686, + "src": "24:37:3", + "symbolAliases": [], + "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", "file": "./GnosisSafe.sol", - "id": 42, + "id": 67, "nodeType": "ImportDirective", - "scope": 325, - "sourceUnit": 40, - "src": "24:26:2", + "scope": 398, + "sourceUnit": 64, + "src": "62:26:3", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/MasterCopy.sol", "file": "./MasterCopy.sol", - "id": 43, + "id": 68, "nodeType": "ImportDirective", - "scope": 325, - "sourceUnit": 581, - "src": "51:26:2", + "scope": 398, + "sourceUnit": 653, + "src": "89:26:3", "symbolAliases": [], "unitAlias": "" }, @@ -540,68 +559,68 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 44, + "id": 69, "name": "MasterCopy", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 580, - "src": "352:10:2", + "referencedDeclaration": 652, + "src": "487:10:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_MasterCopy_$580", + "typeIdentifier": "t_contract$_MasterCopy_$652", "typeString": "contract MasterCopy" } }, - "id": 45, + "id": 70, "nodeType": "InheritanceSpecifier", - "src": "352:10:2" + "src": "487:10:3" }, { "arguments": null, "baseName": { "contractScope": null, - "id": 46, + "id": 71, "name": "GnosisSafe", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 39, - "src": "364:10:2", + "referencedDeclaration": 63, + "src": "499:10:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$39", + "typeIdentifier": "t_contract$_GnosisSafe_$63", "typeString": "contract GnosisSafe" } }, - "id": 47, + "id": 72, "nodeType": "InheritanceSpecifier", - "src": "364:10:2" + "src": "499:10:3" } ], "contractDependencies": [ - 39, - 580, - 971, - 1343, - 1359 + 63, + 652, + 1100, + 1472, + 1619 ], "contractKind": "contract", - "documentation": "@title Gnosis Safe Personal Edition - A multisignature wallet with support for confirmations using signed messages based on ERC191.\n @author Stefan George - \n @author Richard Meissner - ", + "documentation": "@title Gnosis Safe Personal Edition - A multisignature wallet with support for confirmations using signed messages based on ERC191.\n @author Stefan George - \n @author Richard Meissner - \n @author Ricardo Guilherme Schmidt - (Status Research & Development GmbH) - Gas Token Payment", "fullyImplemented": true, - "id": 324, + "id": 397, "linearizedBaseContracts": [ - 324, - 39, - 1343, - 971, - 580, - 1359 + 397, + 63, + 1472, + 1100, + 652, + 1619 ], "name": "GnosisSafePersonalEdition", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, - "id": 50, + "id": 75, "name": "NAME", "nodeType": "VariableDeclaration", - "scope": 324, - "src": "382:60:2", + "scope": 397, + "src": "517:60:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -609,10 +628,10 @@ "typeString": "string" }, "typeName": { - "id": 48, + "id": 73, "name": "string", "nodeType": "ElementaryTypeName", - "src": "382:6:2", + "src": "517:6:3", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -621,14 +640,14 @@ "value": { "argumentTypes": null, "hexValue": "476e6f736973205361666520506572736f6e616c2045646974696f6e", - "id": 49, + "id": 74, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "412:30:2", + "src": "547:30:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_b657d2895d137bf089ce1df776b732639b1ebc2a3aec3bd837e225e9e0965154", @@ -640,11 +659,11 @@ }, { "constant": true, - "id": 53, + "id": 78, "name": "VERSION", "nodeType": "VariableDeclaration", - "scope": 324, - "src": "448:40:2", + "scope": 397, + "src": "583:40:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -652,10 +671,10 @@ "typeString": "string" }, "typeName": { - "id": 51, + "id": 76, "name": "string", "nodeType": "ElementaryTypeName", - "src": "448:6:2", + "src": "583:6:3", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -664,14 +683,14 @@ "value": { "argumentTypes": null, "hexValue": "302e302e31", - "id": 52, + "id": 77, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "481:7:2", + "src": "616:7:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", @@ -683,11 +702,11 @@ }, { "constant": true, - "id": 56, + "id": 81, "name": "BASE_TX_GAS_COSTS", "nodeType": "VariableDeclaration", - "scope": 324, - "src": "499:51:2", + "scope": 397, + "src": "634:51:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -695,10 +714,10 @@ "typeString": "uint256" }, "typeName": { - "id": 54, + "id": 79, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "499:7:2", + "src": "634:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -707,14 +726,14 @@ "value": { "argumentTypes": null, "hexValue": "3231303030", - "id": 55, + "id": 80, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "545:5:2", + "src": "680:5:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_21000_by_1", @@ -726,11 +745,11 @@ }, { "constant": true, - "id": 59, + "id": 84, "name": "PAYMENT_GAS_COSTS", "nodeType": "VariableDeclaration", - "scope": 324, - "src": "556:51:2", + "scope": 397, + "src": "691:51:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -738,10 +757,10 @@ "typeString": "uint256" }, "typeName": { - "id": 57, + "id": 82, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "556:7:2", + "src": "691:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -750,14 +769,14 @@ "value": { "argumentTypes": null, "hexValue": "3131303030", - "id": 58, + "id": 83, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "602:5:2", + "src": "737:5:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_11000_by_1", @@ -770,24 +789,24 @@ { "anonymous": false, "documentation": null, - "id": 61, + "id": 86, "name": "ExecutionFailed", "nodeType": "EventDefinition", "parameters": { - "id": 60, + "id": 85, "nodeType": "ParameterList", "parameters": [], - "src": "635:2:2" + "src": "770:2:3" }, - "src": "614:24:2" + "src": "749:24:3" }, { "constant": false, - "id": 63, + "id": 88, "name": "nonce", "nodeType": "VariableDeclaration", - "scope": 324, - "src": "644:20:2", + "scope": 397, + "src": "779:20:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -795,10 +814,10 @@ "typeString": "uint256" }, "typeName": { - "id": 62, + "id": 87, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "644:7:2", + "src": "779:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -809,22 +828,22 @@ }, { "body": { - "id": 155, + "id": 211, "nodeType": "Block", - "src": "1738:708:2", + "src": "1984:1043:3", "statements": [ { "assignments": [ - 90 + 117 ], "declarations": [ { "constant": false, - "id": 90, + "id": 117, "name": "startGas", "nodeType": "VariableDeclaration", - "scope": 156, - "src": "1748:16:2", + "scope": 212, + "src": "1994:16:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -832,10 +851,10 @@ "typeString": "uint256" }, "typeName": { - "id": 89, + "id": 116, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1748:7:2", + "src": "1994:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -845,24 +864,24 @@ "visibility": "internal" } ], - "id": 93, + "id": 120, "initialValue": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], - "id": 91, + "id": 118, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2389, - "src": "1767:7:2", + "referencedDeclaration": 2591, + "src": "2013:7:3", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 92, + "id": 119, "isConstant": false, "isLValue": false, "isPure": false, @@ -870,14 +889,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1767:9:2", + "src": "2013:9:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "1748:28:2" + "src": "1994:28:3" }, { "expression": { @@ -888,12 +907,12 @@ "arguments": [ { "argumentTypes": null, - "id": 96, + "id": 123, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 65, - "src": "1815:2:2", + "referencedDeclaration": 90, + "src": "2061:2:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -901,12 +920,12 @@ }, { "argumentTypes": null, - "id": 97, + "id": 124, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 67, - "src": "1819:5:2", + "referencedDeclaration": 92, + "src": "2065:5:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -914,12 +933,12 @@ }, { "argumentTypes": null, - "id": 98, + "id": 125, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69, - "src": "1826:4:2", + "referencedDeclaration": 94, + "src": "2072:4:3", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -927,25 +946,25 @@ }, { "argumentTypes": null, - "id": 99, + "id": 126, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71, - "src": "1832:9:2", + "referencedDeclaration": 96, + "src": "2078:9:3", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, { "argumentTypes": null, - "id": 100, + "id": 127, "name": "safeTxGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73, - "src": "1843:9:2", + "referencedDeclaration": 98, + "src": "2089:9:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -953,12 +972,12 @@ }, { "argumentTypes": null, - "id": 101, + "id": 128, "name": "dataGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 75, - "src": "1854:7:2", + "referencedDeclaration": 100, + "src": "2100:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -966,12 +985,12 @@ }, { "argumentTypes": null, - "id": 102, + "id": 129, "name": "gasPrice", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 77, - "src": "1863:8:2", + "referencedDeclaration": 102, + "src": "2109:8:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -979,12 +998,25 @@ }, { "argumentTypes": null, - "id": 103, + "id": 130, + "name": "gasToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 104, + "src": "2119:8:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 131, "name": "nonce", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 63, - "src": "1873:5:2", + "referencedDeclaration": 88, + "src": "2129:5:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1006,7 +1038,7 @@ "typeString": "bytes memory" }, { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, { @@ -1021,23 +1053,27 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], - "id": 95, + "id": 122, "name": "getTransactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 323, - "src": "1796:18:2", + "referencedDeclaration": 396, + "src": "2042:18:3", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$", - "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256,uint256,uint256,uint256) view returns (bytes32)" + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256,uint256,uint256,address,uint256) view returns (bytes32)" } }, - "id": 104, + "id": 132, "isConstant": false, "isLValue": false, "isPure": false, @@ -1045,7 +1081,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1796:83:2", + "src": "2042:93:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1053,12 +1089,12 @@ }, { "argumentTypes": null, - "id": 105, + "id": 133, "name": "v", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 80, - "src": "1881:1:2", + "referencedDeclaration": 107, + "src": "2137:1:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", "typeString": "uint8[] memory" @@ -1066,12 +1102,12 @@ }, { "argumentTypes": null, - "id": 106, + "id": 134, "name": "r", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 83, - "src": "1884:1:2", + "referencedDeclaration": 110, + "src": "2140:1:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", "typeString": "bytes32[] memory" @@ -1079,12 +1115,12 @@ }, { "argumentTypes": null, - "id": 107, + "id": 135, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 86, - "src": "1887:1:2", + "referencedDeclaration": 113, + "src": "2143:1:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", "typeString": "bytes32[] memory" @@ -1110,18 +1146,18 @@ "typeString": "bytes32[] memory" } ], - "id": 94, + "id": 121, "name": "checkHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 283, - "src": "1786:9:2", + "referencedDeclaration": 350, + "src": "2032:9:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_array$_t_uint8_$dyn_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$returns$__$", "typeString": "function (bytes32,uint8[] memory,bytes32[] memory,bytes32[] memory) view" } }, - "id": 108, + "id": 136, "isConstant": false, "isLValue": false, "isPure": false, @@ -1129,20 +1165,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1786:103:2", + "src": "2032:113:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 109, + "id": 137, "nodeType": "ExpressionStatement", - "src": "1786:103:2" + "src": "2032:113:3" }, { "expression": { "argumentTypes": null, - "id": 111, + "id": 139, "isConstant": false, "isLValue": false, "isPure": false, @@ -1150,15 +1186,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "1950:7:2", + "src": "2206:7:3", "subExpression": { "argumentTypes": null, - "id": 110, + "id": 138, "name": "nonce", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 63, - "src": "1950:5:2", + "referencedDeclaration": 88, + "src": "2206:5:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1169,9 +1205,9 @@ "typeString": "uint256" } }, - "id": 112, + "id": 140, "nodeType": "ExpressionStatement", - "src": "1950:7:2" + "src": "2206:7:3" }, { "expression": { @@ -1183,7 +1219,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 119, + "id": 147, "isConstant": false, "isLValue": false, "isPure": false, @@ -1194,7 +1230,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 117, + "id": 145, "isConstant": false, "isLValue": false, "isPure": false, @@ -1204,18 +1240,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 114, + "id": 142, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2389, - "src": "1975:7:2", + "referencedDeclaration": 2591, + "src": "2231:7:3", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 115, + "id": 143, "isConstant": false, "isLValue": false, "isPure": false, @@ -1223,7 +1259,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1975:9:2", + "src": "2231:9:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1233,18 +1269,18 @@ "operator": "-", "rightExpression": { "argumentTypes": null, - "id": 116, + "id": 144, "name": "PAYMENT_GAS_COSTS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 59, - "src": "1987:17:2", + "referencedDeclaration": 84, + "src": "2243:17:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1975:29:2", + "src": "2231:29:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1254,18 +1290,18 @@ "operator": ">=", "rightExpression": { "argumentTypes": null, - "id": 118, + "id": 146, "name": "safeTxGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73, - "src": "2008:9:2", + "referencedDeclaration": 98, + "src": "2264:9:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1975:42:2", + "src": "2231:42:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1279,21 +1315,21 @@ "typeString": "bool" } ], - "id": 113, + "id": 141, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "1967:7:2", + "referencedDeclaration": 2601, + "src": "2223:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 120, + "id": 148, "isConstant": false, "isLValue": false, "isPure": false, @@ -1301,20 +1337,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1967:51:2", + "src": "2223:51:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 121, + "id": 149, "nodeType": "ExpressionStatement", - "src": "1967:51:2" + "src": "2223:51:3" }, { "condition": { "argumentTypes": null, - "id": 129, + "id": 157, "isConstant": false, "isLValue": false, "isPure": false, @@ -1322,18 +1358,18 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "2032:47:2", + "src": "2288:47:3", "subExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 123, + "id": 151, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 65, - "src": "2041:2:2", + "referencedDeclaration": 90, + "src": "2297:2:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1341,12 +1377,12 @@ }, { "argumentTypes": null, - "id": 124, + "id": 152, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 67, - "src": "2045:5:2", + "referencedDeclaration": 92, + "src": "2301:5:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1354,12 +1390,12 @@ }, { "argumentTypes": null, - "id": 125, + "id": 153, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69, - "src": "2052:4:2", + "referencedDeclaration": 94, + "src": "2308:4:3", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -1367,25 +1403,25 @@ }, { "argumentTypes": null, - "id": 126, + "id": 154, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71, - "src": "2058:9:2", + "referencedDeclaration": 96, + "src": "2314:9:3", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, { "argumentTypes": null, - "id": 127, + "id": 155, "name": "safeTxGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73, - "src": "2069:9:2", + "referencedDeclaration": 98, + "src": "2325:9:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1407,7 +1443,7 @@ "typeString": "bytes memory" }, { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, { @@ -1415,18 +1451,18 @@ "typeString": "uint256" } ], - "id": 122, + "id": 150, "name": "execute", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 860, - "src": "2033:7:2", + "referencedDeclaration": 989, + "src": "2289:7:3", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$_t_uint256_$returns$_t_bool_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) returns (bool)" } }, - "id": 128, + "id": 156, "isConstant": false, "isLValue": false, "isPure": false, @@ -1434,7 +1470,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2033:46:2", + "src": "2289:46:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1446,13 +1482,13 @@ } }, "falseBody": null, - "id": 134, + "id": 162, "nodeType": "IfStatement", - "src": "2028:100:2", + "src": "2284:100:3", "trueBody": { - "id": 133, + "id": 161, "nodeType": "Block", - "src": "2081:47:2", + "src": "2337:47:3", "statements": [ { "eventCall": { @@ -1460,18 +1496,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 130, + "id": 158, "name": "ExecutionFailed", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 61, - "src": "2100:15:2", + "referencedDeclaration": 86, + "src": "2356:15:3", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 131, + "id": 159, "isConstant": false, "isLValue": false, "isPure": false, @@ -1479,98 +1515,214 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2100:17:2", + "src": "2356:17:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 132, + "id": 160, "nodeType": "EmitStatement", - "src": "2095:22:2" + "src": "2351:22:3" } ] } }, { - "assignments": [ - 136 - ], - "declarations": [ - { - "constant": false, - "id": 136, - "name": "gasCosts", - "nodeType": "VariableDeclaration", - "scope": 156, - "src": "2137:16:2", - "stateVariable": false, - "storageLocation": "default", + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 165, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 163, + "name": "gasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 102, + "src": "2537:8:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 164, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2548:1:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" }, - "typeName": { - "id": 135, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2137:7:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" + "value": "0" + }, + "src": "2537:12:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } - ], - "id": 144, - "initialValue": { - "argumentTypes": null, - "arguments": [ + }, + "falseBody": null, + "id": 210, + "nodeType": "IfStatement", + "src": "2533:486:3", + "trueBody": { + "id": 209, + "nodeType": "Block", + "src": "2551:468:3", + "statements": [ { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 141, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 138, - "name": "startGas", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 90, - "src": "2170:8:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "assignments": [ + 167 + ], + "declarations": [ + { + "constant": false, + "id": 167, + "name": "gasCosts", + "nodeType": "VariableDeclaration", + "scope": 212, + "src": "2565:16:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 166, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2565:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { + ], + "id": 175, + "initialValue": { "argumentTypes": null, - "arguments": [], + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 172, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 169, + "name": "startGas", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 117, + "src": "2598:8:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 170, + "name": "gasleft", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2591, + "src": "2609:7:3", + "typeDescriptions": { + "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 171, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2609:9:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2598:20:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 173, + "name": "dataGas", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 100, + "src": "2620:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], "expression": { - "argumentTypes": [], - "id": 139, - "name": "gasleft", + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 168, + "name": "totalGasCosts", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2389, - "src": "2181:7:2", + "referencedDeclaration": 230, + "src": "2584:13:3", "typeDescriptions": { - "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", - "typeString": "function () view returns (uint256)" + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 140, + "id": 174, "isConstant": false, "isLValue": false, "isPure": false, @@ -1578,210 +1730,491 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2181:9:2", + "src": "2584:44:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2170:20:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } + "nodeType": "VariableDeclarationStatement", + "src": "2565:63:3" }, { - "argumentTypes": null, - "id": 142, - "name": "dataGas", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 75, - "src": "2192:7:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 137, - "name": "totalGasCosts", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 174, - "src": "2156:13:2", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" - } - }, - "id": 143, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2156:44:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2137:63:2" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 152, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 150, - "name": "gasCosts", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 136, - "src": "2419:8:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "assignments": [ + 177 + ], + "declarations": [ + { + "constant": false, + "id": 177, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 212, + "src": "2642:14:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 176, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2642:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { + ], + "id": 181, + "initialValue": { "argumentTypes": null, - "id": 151, - "name": "gasPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 77, - "src": "2430:8:2", - "typeDescriptions": { + "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" - } - }, - "src": "2419:19:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "expression": { + }, + "id": 180, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 178, + "name": "gasCosts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 167, + "src": "2659:8:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "id": 179, + "name": "gasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 102, + "src": "2670:8:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2659:19:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2642:36:3" + }, + { + "condition": { "argumentTypes": null, - "id": 145, - "name": "tx", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2408, - "src": "2400:2:2", + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 186, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 182, + "name": "gasToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 104, + "src": "2696:8:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 184, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2716:1:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 183, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2708:7:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 185, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2708:10:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2696:22:3", "typeDescriptions": { - "typeIdentifier": "t_magic_transaction", - "typeString": "tx" + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - "id": 148, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "origin", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2400:9:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "falseBody": { + "id": 207, + "nodeType": "Block", + "src": "2852:157:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 201, + "name": "tx", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2610, + "src": "2975:2:3", + "typeDescriptions": { + "typeIdentifier": "t_magic_transaction", + "typeString": "tx" + } + }, + "id": 202, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "origin", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2975:9:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 203, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 177, + "src": "2986:6:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 198, + "name": "gasToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 104, + "src": "2956:8:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 197, + "name": "ERC20Token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1685, + "src": "2945:10:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20Token_$1685_$", + "typeString": "type(contract ERC20Token)" + } + }, + "id": 199, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2945:20:3", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Token_$1685", + "typeString": "contract ERC20Token" + } + }, + "id": 200, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 1639, + "src": "2945:29:3", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 204, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2945:48:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 196, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2601, + 2602 + ], + "referencedDeclaration": 2601, + "src": "2937:7:3", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 205, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2937:57:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 206, + "nodeType": "ExpressionStatement", + "src": "2937:57:3" + } + ] + }, + "id": 208, + "nodeType": "IfStatement", + "src": "2692:317:3", + "trueBody": { + "id": 195, + "nodeType": "Block", + "src": "2720:126:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 192, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 177, + "src": "2824:6:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 187, + "name": "tx", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2610, + "src": "2805:2:3", + "typeDescriptions": { + "typeIdentifier": "t_magic_transaction", + "typeString": "tx" + } + }, + "id": 190, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "origin", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2805:9:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 191, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2805:18:3", + "typeDescriptions": { + "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 193, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2805:26:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 194, + "nodeType": "ExpressionStatement", + "src": "2805:26:3" + } + ] } - }, - "id": 149, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "transfer", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2400:18:2", - "typeDescriptions": { - "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", - "typeString": "function (uint256)" } - }, - "id": 153, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2400:39:2", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 154, - "nodeType": "ExpressionStatement", - "src": "2400:39:2" + ] + } } ] }, - "documentation": "@dev Allows to execute a Safe transaction confirmed by required number of owners.\n @param to Destination address of Safe transaction.\n @param value Ether value of Safe transaction.\n @param data Data payload of Safe transaction.\n @param operation Operation type of Safe transaction.\n @param safeTxGas Gas that should be used for the Safe transaction.\n @param dataGas Gas costs for data used to trigger the safe transaction.\n @param gasPrice Gas price that should be used for the payment calculation.\n @param v Array of signature V values sorted by owner addresses.\n @param r Array of signature R values sorted by owner addresses.\n @param s Array of signature S values sorted by owner addresses.", - "id": 156, + "documentation": "@dev Allows to execute a Safe transaction confirmed by required number of owners.\n @param to Destination address of Safe transaction.\n @param value Ether value of Safe transaction.\n @param data Data payload of Safe transaction.\n @param operation Operation type of Safe transaction.\n @param safeTxGas Gas that should be used for the Safe transaction.\n @param dataGas Gas costs for data used to trigger the safe transaction.\n @param gasPrice Gas price that should be used for the payment calculation.\n @param gasToken Token address (or 0 if ETH) that is used for the payment.\n @param v Array of signature V values sorted by owner addresses.\n @param r Array of signature R values sorted by owner addresses.\n @param s Array of signature S values sorted by owner addresses.", + "id": 212, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [], - "name": "execPayTransaction", + "name": "execAndPayTransaction", "nodeType": "FunctionDefinition", "parameters": { - "id": 87, + "id": 114, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 65, + "id": 90, "name": "to", "nodeType": "VariableDeclaration", - "scope": 156, - "src": "1480:10:2", + "scope": 212, + "src": "1700:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1789,10 +2222,10 @@ "typeString": "address" }, "typeName": { - "id": 64, + "id": 89, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1480:7:2", + "src": "1700:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1803,11 +2236,11 @@ }, { "constant": false, - "id": 67, + "id": 92, "name": "value", "nodeType": "VariableDeclaration", - "scope": 156, - "src": "1501:13:2", + "scope": 212, + "src": "1721:13:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1815,10 +2248,10 @@ "typeString": "uint256" }, "typeName": { - "id": 66, + "id": 91, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1501:7:2", + "src": "1721:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1829,11 +2262,11 @@ }, { "constant": false, - "id": 69, + "id": 94, "name": "data", "nodeType": "VariableDeclaration", - "scope": 156, - "src": "1525:10:2", + "scope": 212, + "src": "1745:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1841,10 +2274,10 @@ "typeString": "bytes" }, "typeName": { - "id": 68, + "id": 93, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "1525:5:2", + "src": "1745:5:3", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -1855,26 +2288,26 @@ }, { "constant": false, - "id": 71, + "id": 96, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 156, - "src": "1546:24:2", + "scope": 212, + "src": "1766:24:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, "typeName": { "contractScope": null, - "id": 70, + "id": 95, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 5, - "src": "1546:14:2", + "referencedDeclaration": 29, + "src": "1766:14:3", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, @@ -1883,11 +2316,11 @@ }, { "constant": false, - "id": 73, + "id": 98, "name": "safeTxGas", "nodeType": "VariableDeclaration", - "scope": 156, - "src": "1581:17:2", + "scope": 212, + "src": "1801:17:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1895,10 +2328,10 @@ "typeString": "uint256" }, "typeName": { - "id": 72, + "id": 97, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1581:7:2", + "src": "1801:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1909,11 +2342,11 @@ }, { "constant": false, - "id": 75, + "id": 100, "name": "dataGas", "nodeType": "VariableDeclaration", - "scope": 156, - "src": "1608:15:2", + "scope": 212, + "src": "1828:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1921,10 +2354,10 @@ "typeString": "uint256" }, "typeName": { - "id": 74, + "id": 99, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1608:7:2", + "src": "1828:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1935,11 +2368,11 @@ }, { "constant": false, - "id": 77, + "id": 102, "name": "gasPrice", "nodeType": "VariableDeclaration", - "scope": 156, - "src": "1633:16:2", + "scope": 212, + "src": "1853:16:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1947,10 +2380,10 @@ "typeString": "uint256" }, "typeName": { - "id": 76, + "id": 101, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1633:7:2", + "src": "1853:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1961,11 +2394,37 @@ }, { "constant": false, - "id": 80, + "id": 104, + "name": "gasToken", + "nodeType": "VariableDeclaration", + "scope": 212, + "src": "1879:16:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 103, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1879:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 107, "name": "v", "nodeType": "VariableDeclaration", - "scope": 156, - "src": "1659:9:2", + "scope": 212, + "src": "1905:9:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1974,19 +2433,19 @@ }, "typeName": { "baseType": { - "id": 78, + "id": 105, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "1659:5:2", + "src": "1905:5:3", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "id": 79, + "id": 106, "length": null, "nodeType": "ArrayTypeName", - "src": "1659:7:2", + "src": "1905:7:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr", "typeString": "uint8[]" @@ -1997,11 +2456,11 @@ }, { "constant": false, - "id": 83, + "id": 110, "name": "r", "nodeType": "VariableDeclaration", - "scope": 156, - "src": "1679:11:2", + "scope": 212, + "src": "1925:11:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2010,19 +2469,19 @@ }, "typeName": { "baseType": { - "id": 81, + "id": 108, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1679:7:2", + "src": "1925:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "id": 82, + "id": 109, "length": null, "nodeType": "ArrayTypeName", - "src": "1679:9:2", + "src": "1925:9:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", "typeString": "bytes32[]" @@ -2033,11 +2492,11 @@ }, { "constant": false, - "id": 86, + "id": 113, "name": "s", "nodeType": "VariableDeclaration", - "scope": 156, - "src": "1701:11:2", + "scope": 212, + "src": "1947:11:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2046,19 +2505,19 @@ }, "typeName": { "baseType": { - "id": 84, + "id": 111, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1701:7:2", + "src": "1947:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "id": 85, + "id": 112, "length": null, "nodeType": "ArrayTypeName", - "src": "1701:9:2", + "src": "1947:9:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", "typeString": "bytes32[]" @@ -2068,26 +2527,26 @@ "visibility": "internal" } ], - "src": "1470:248:2" + "src": "1690:274:3" }, "payable": false, "returnParameters": { - "id": 88, + "id": 115, "nodeType": "ParameterList", "parameters": [], - "src": "1738:0:2" + "src": "1984:0:3" }, - "scope": 324, - "src": "1443:1003:2", + "scope": 397, + "src": "1660:1367:3", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 173, + "id": 229, "nodeType": "Block", - "src": "3001:86:2", + "src": "3582:86:3", "statements": [ { "expression": { @@ -2096,7 +2555,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 171, + "id": 227, "isConstant": false, "isLValue": false, "isPure": false, @@ -2107,7 +2566,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 169, + "id": 225, "isConstant": false, "isLValue": false, "isPure": false, @@ -2118,19 +2577,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 167, + "id": 223, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 165, + "id": 221, "name": "executionGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 158, - "src": "3018:12:2", + "referencedDeclaration": 214, + "src": "3599:12:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2140,18 +2599,18 @@ "operator": "+", "rightExpression": { "argumentTypes": null, - "id": 166, + "id": 222, "name": "dataGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 160, - "src": "3033:7:2", + "referencedDeclaration": 216, + "src": "3614:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3018:22:2", + "src": "3599:22:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2161,18 +2620,18 @@ "operator": "+", "rightExpression": { "argumentTypes": null, - "id": 168, + "id": 224, "name": "PAYMENT_GAS_COSTS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 59, - "src": "3043:17:2", + "referencedDeclaration": 84, + "src": "3624:17:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3018:42:2", + "src": "3599:42:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2182,32 +2641,32 @@ "operator": "+", "rightExpression": { "argumentTypes": null, - "id": 170, + "id": 226, "name": "BASE_TX_GAS_COSTS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 56, - "src": "3063:17:2", + "referencedDeclaration": 81, + "src": "3644:17:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3018:62:2", + "src": "3599:62:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 164, - "id": 172, + "functionReturnParameters": 220, + "id": 228, "nodeType": "Return", - "src": "3011:69:2" + "src": "3592:69:3" } ] }, "documentation": "@dev Calculates the total gas costs for a safe transaction with the gas costs for the execution of the transaction.\n @param executionGas Gas costs for the execution of the safe transaction.\n @param dataGas Gas costs for data used to trigger the safe transaction.\n @return Total gas costs for the execution (this includes gas costs for the payment to tx.origin, base transaction and payload data).", - "id": 174, + "id": 230, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -2215,16 +2674,16 @@ "name": "totalGasCosts", "nodeType": "FunctionDefinition", "parameters": { - "id": 161, + "id": 217, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 158, + "id": 214, "name": "executionGas", "nodeType": "VariableDeclaration", - "scope": 174, - "src": "2901:20:2", + "scope": 230, + "src": "3482:20:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2232,10 +2691,10 @@ "typeString": "uint256" }, "typeName": { - "id": 157, + "id": 213, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2901:7:2", + "src": "3482:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2246,11 +2705,11 @@ }, { "constant": false, - "id": 160, + "id": 216, "name": "dataGas", "nodeType": "VariableDeclaration", - "scope": 174, - "src": "2923:15:2", + "scope": 230, + "src": "3504:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2258,10 +2717,10 @@ "typeString": "uint256" }, "typeName": { - "id": 159, + "id": 215, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2923:7:2", + "src": "3504:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2271,20 +2730,20 @@ "visibility": "internal" } ], - "src": "2900:39:2" + "src": "3481:39:3" }, "payable": false, "returnParameters": { - "id": 164, + "id": 220, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 163, + "id": 219, "name": "", "nodeType": "VariableDeclaration", - "scope": 174, - "src": "2987:7:2", + "scope": 230, + "src": "3568:7:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2292,10 +2751,10 @@ "typeString": "uint256" }, "typeName": { - "id": 162, + "id": 218, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2987:7:2", + "src": "3568:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2305,32 +2764,32 @@ "visibility": "internal" } ], - "src": "2986:9:2" + "src": "3567:9:3" }, - "scope": 324, - "src": "2878:209:2", + "scope": 397, + "src": "3459:209:3", "stateMutability": "pure", "superFunction": null, "visibility": "public" }, { "body": { - "id": 210, + "id": 277, "nodeType": "Block", - "src": "3938:147:2", + "src": "4738:255:3", "statements": [ { "assignments": [ - 190 + 246 ], "declarations": [ { "constant": false, - "id": 190, + "id": 246, "name": "startGas", "nodeType": "VariableDeclaration", - "scope": 211, - "src": "3948:16:2", + "scope": 278, + "src": "4748:16:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2338,10 +2797,10 @@ "typeString": "uint256" }, "typeName": { - "id": 189, + "id": 245, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3948:7:2", + "src": "4748:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2351,24 +2810,24 @@ "visibility": "internal" } ], - "id": 193, + "id": 249, "initialValue": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], - "id": 191, + "id": 247, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2389, - "src": "3967:7:2", + "referencedDeclaration": 2591, + "src": "4767:7:3", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 192, + "id": 248, "isConstant": false, "isLValue": false, "isPure": false, @@ -2376,14 +2835,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3967:9:2", + "src": "4767:9:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "3948:28:2" + "src": "4748:28:3" }, { "expression": { @@ -2394,12 +2853,12 @@ "arguments": [ { "argumentTypes": null, - "id": 196, + "id": 252, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 176, - "src": "4002:2:2", + "referencedDeclaration": 232, + "src": "4802:2:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2407,12 +2866,12 @@ }, { "argumentTypes": null, - "id": 197, + "id": 253, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 178, - "src": "4006:5:2", + "referencedDeclaration": 234, + "src": "4806:5:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2420,12 +2879,12 @@ }, { "argumentTypes": null, - "id": 198, + "id": 254, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 180, - "src": "4013:4:2", + "referencedDeclaration": 236, + "src": "4813:4:3", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -2433,14 +2892,14 @@ }, { "argumentTypes": null, - "id": 199, + "id": 255, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 182, - "src": "4019:9:2", + "referencedDeclaration": 238, + "src": "4819:9:3", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, @@ -2449,18 +2908,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 200, + "id": 256, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2389, - "src": "4030:7:2", + "referencedDeclaration": 2591, + "src": "4830:7:3", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 201, + "id": 257, "isConstant": false, "isLValue": false, "isPure": false, @@ -2468,7 +2927,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4030:9:2", + "src": "4830:9:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2490,7 +2949,7 @@ "typeString": "bytes memory" }, { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, { @@ -2498,18 +2957,18 @@ "typeString": "uint256" } ], - "id": 195, + "id": 251, "name": "execute", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 860, - "src": "3994:7:2", + "referencedDeclaration": 989, + "src": "4794:7:3", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$_t_uint256_$returns$_t_bool_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) returns (bool)" } }, - "id": 202, + "id": 258, "isConstant": false, "isLValue": false, "isPure": false, @@ -2517,7 +2976,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3994:46:2", + "src": "4794:46:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2531,21 +2990,21 @@ "typeString": "bool" } ], - "id": 194, + "id": 250, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "3986:7:2", + "referencedDeclaration": 2601, + "src": "4786:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 203, + "id": 259, "isConstant": false, "isLValue": false, "isPure": false, @@ -2553,36 +3012,68 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3986:55:2", + "src": "4786:55:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 204, + "id": 260, "nodeType": "ExpressionStatement", - "src": "3986:55:2" + "src": "4786:55:3" }, { - "expression": { + "assignments": [ + 262 + ], + "declarations": [ + { + "constant": false, + "id": 262, + "name": "requiredGas", + "nodeType": "VariableDeclaration", + "scope": 278, + "src": "4851:19:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 261, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4851:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 267, + "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 208, + "id": 266, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 205, + "id": 263, "name": "startGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 190, - "src": "4058:8:2", + "referencedDeclaration": 246, + "src": "4873:8:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2595,18 +3086,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 206, + "id": 264, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2389, - "src": "4069:7:2", + "referencedDeclaration": 2591, + "src": "4884:7:3", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 207, + "id": 265, "isConstant": false, "isLValue": false, "isPure": false, @@ -2614,64 +3105,209 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4069:9:2", + "src": "4884:9:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4058:20:2", + "src": "4873:20:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 188, - "id": 209, - "nodeType": "Return", - "src": "4051:27:2" - } - ] - }, - "documentation": "@dev Allows to estimate a Safe transaction. \n This method can only be used by the safe itself in a transaction. When estimating set `from` to the address of the safe.\n Since the `estimateGas` function includes refunds, call this method to get an estimated of the costs that are deducted from the safe with `execPayTransaction`\n @param to Destination address of Safe transaction.\n @param value Ether value of Safe transaction.\n @param data Data payload of Safe transaction.\n @param operation Operation type of Safe transaction.\n @return Estimate without refunds and overhead fees (base transaction and payload data gas costs).", - "id": 211, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [ - { - "arguments": null, - "id": 185, - "modifierName": { - "argumentTypes": null, - "id": 184, - "name": "authorized", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1358, - "src": "3897:10:2", - "typeDescriptions": { - "typeIdentifier": "t_modifier$__$", - "typeString": "modifier ()" - } + "nodeType": "VariableDeclarationStatement", + "src": "4851:42:3" }, - "nodeType": "ModifierInvocation", - "src": "3897:10:2" - } - ], - "name": "requiredTxGas", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 183, - "nodeType": "ParameterList", - "parameters": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 272, + "name": "requiredGas", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 262, + "src": "4972:11:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 270, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2585, + "src": "4955:3:3", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 271, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4955:16:3", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 273, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4955:29:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + ], + "id": 269, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4948:6:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_string_storage_ptr_$", + "typeString": "type(string storage pointer)" + }, + "typeName": "string" + }, + "id": 274, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4948:37:3", + "typeDescriptions": { + "typeIdentifier": "t_string_memory", + "typeString": "string memory" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_string_memory", + "typeString": "string memory" + } + ], + "id": 268, + "name": "revert", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2603, + 2604 + ], + "referencedDeclaration": 2604, + "src": "4941:6:3", + "typeDescriptions": { + "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", + "typeString": "function (string memory) pure" + } + }, + "id": 275, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4941:45:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 276, + "nodeType": "ExpressionStatement", + "src": "4941:45:3" + } + ] + }, + "documentation": "@dev Allows to estimate a Safe transaction. \n This method is only meant for estimation purpose, therfore two different protection mechanism against execution in a transaction have been made:\n 1.) The method can only be called from the safe itself\n 2.) The response is returned with a revert\n When estimating set `from` to the address of the safe.\n Since the `estimateGas` function includes refunds, call this method to get an estimated of the costs that are deducted from the safe with `execAndPayTransaction`\n @param to Destination address of Safe transaction.\n @param value Ether value of Safe transaction.\n @param data Data payload of Safe transaction.\n @param operation Operation type of Safe transaction.\n @return Estimate without refunds and overhead fees (base transaction and payload data gas costs).", + "id": 278, + "implemented": true, + "isConstructor": false, + "isDeclaredConst": false, + "modifiers": [ + { + "arguments": null, + "id": 241, + "modifierName": { + "argumentTypes": null, + "id": 240, + "name": "authorized", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1618, + "src": "4697:10:3", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "4697:10:3" + } + ], + "name": "requiredTxGas", + "nodeType": "FunctionDefinition", + "parameters": { + "id": 239, + "nodeType": "ParameterList", + "parameters": [ { "constant": false, - "id": 176, + "id": 232, "name": "to", "nodeType": "VariableDeclaration", - "scope": 211, - "src": "3809:10:2", + "scope": 278, + "src": "4609:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2679,10 +3315,10 @@ "typeString": "address" }, "typeName": { - "id": 175, + "id": 231, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3809:7:2", + "src": "4609:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2693,11 +3329,11 @@ }, { "constant": false, - "id": 178, + "id": 234, "name": "value", "nodeType": "VariableDeclaration", - "scope": 211, - "src": "3821:13:2", + "scope": 278, + "src": "4621:13:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2705,10 +3341,10 @@ "typeString": "uint256" }, "typeName": { - "id": 177, + "id": 233, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3821:7:2", + "src": "4621:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2719,11 +3355,11 @@ }, { "constant": false, - "id": 180, + "id": 236, "name": "data", "nodeType": "VariableDeclaration", - "scope": 211, - "src": "3836:10:2", + "scope": 278, + "src": "4636:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2731,10 +3367,10 @@ "typeString": "bytes" }, "typeName": { - "id": 179, + "id": 235, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "3836:5:2", + "src": "4636:5:3", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -2745,26 +3381,26 @@ }, { "constant": false, - "id": 182, + "id": 238, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 211, - "src": "3848:24:2", + "scope": 278, + "src": "4648:24:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, "typeName": { "contractScope": null, - "id": 181, + "id": 237, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 5, - "src": "3848:14:2", + "referencedDeclaration": 29, + "src": "4648:14:3", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, @@ -2772,20 +3408,20 @@ "visibility": "internal" } ], - "src": "3808:65:2" + "src": "4608:65:3" }, "payable": false, "returnParameters": { - "id": 188, + "id": 244, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 187, + "id": 243, "name": "", "nodeType": "VariableDeclaration", - "scope": 211, - "src": "3925:7:2", + "scope": 278, + "src": "4725:7:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2793,10 +3429,10 @@ "typeString": "uint256" }, "typeName": { - "id": 186, + "id": 242, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3925:7:2", + "src": "4725:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2806,32 +3442,32 @@ "visibility": "internal" } ], - "src": "3924:9:2" + "src": "4724:9:3" }, - "scope": 324, - "src": "3786:299:2", + "scope": 397, + "src": "4586:407:3", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 282, + "id": 349, "nodeType": "Block", - "src": "4195:437:2", + "src": "5103:437:3", "statements": [ { "assignments": [ - 226 + 293 ], "declarations": [ { "constant": false, - "id": 226, + "id": 293, "name": "lastOwner", "nodeType": "VariableDeclaration", - "scope": 283, - "src": "4257:17:2", + "scope": 350, + "src": "5165:17:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2839,10 +3475,10 @@ "typeString": "address" }, "typeName": { - "id": 225, + "id": 292, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4257:7:2", + "src": "5165:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2852,21 +3488,21 @@ "visibility": "internal" } ], - "id": 230, + "id": 297, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", - "id": 228, + "id": 295, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4285:1:2", + "src": "5193:1:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -2882,20 +3518,20 @@ "typeString": "int_const 0" } ], - "id": 227, + "id": 294, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "4277:7:2", + "src": "5185:7:3", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 229, + "id": 296, "isConstant": false, "isLValue": false, "isPure": true, @@ -2903,25 +3539,25 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4277:10:2", + "src": "5185:10:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "4257:30:2" + "src": "5165:30:3" }, { "assignments": [], "declarations": [ { "constant": false, - "id": 232, + "id": 299, "name": "currentOwner", "nodeType": "VariableDeclaration", - "scope": 283, - "src": "4297:20:2", + "scope": 350, + "src": "5205:20:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2929,10 +3565,10 @@ "typeString": "address" }, "typeName": { - "id": 231, + "id": 298, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4297:7:2", + "src": "5205:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2942,21 +3578,21 @@ "visibility": "internal" } ], - "id": 233, + "id": 300, "initialValue": null, "nodeType": "VariableDeclarationStatement", - "src": "4297:20:2" + "src": "5205:20:3" }, { "assignments": [], "declarations": [ { "constant": false, - "id": 235, + "id": 302, "name": "i", "nodeType": "VariableDeclaration", - "scope": 283, - "src": "4327:9:2", + "scope": 350, + "src": "5235:9:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2964,10 +3600,10 @@ "typeString": "uint256" }, "typeName": { - "id": 234, + "id": 301, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4327:7:2", + "src": "5235:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2977,33 +3613,33 @@ "visibility": "internal" } ], - "id": 236, + "id": 303, "initialValue": null, "nodeType": "VariableDeclarationStatement", - "src": "4327:9:2" + "src": "5235:9:3" }, { "body": { - "id": 280, + "id": 347, "nodeType": "Block", - "src": "4420:206:2", + "src": "5328:206:3", "statements": [ { "expression": { "argumentTypes": null, - "id": 260, + "id": 327, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 247, + "id": 314, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 232, - "src": "4434:12:2", + "referencedDeclaration": 299, + "src": "5342:12:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3016,12 +3652,12 @@ "arguments": [ { "argumentTypes": null, - "id": 249, + "id": 316, "name": "hash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 213, - "src": "4459:4:2", + "referencedDeclaration": 280, + "src": "5367:4:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3031,26 +3667,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 250, + "id": 317, "name": "v", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 216, - "src": "4465:1:2", + "referencedDeclaration": 283, + "src": "5373:1:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", "typeString": "uint8[] memory" } }, - "id": 252, + "id": 319, "indexExpression": { "argumentTypes": null, - "id": 251, + "id": 318, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 235, - "src": "4467:1:2", + "referencedDeclaration": 302, + "src": "5375:1:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3061,7 +3697,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4465:4:2", + "src": "5373:4:3", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -3071,26 +3707,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 253, + "id": 320, "name": "r", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 219, - "src": "4471:1:2", + "referencedDeclaration": 286, + "src": "5379:1:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", "typeString": "bytes32[] memory" } }, - "id": 255, + "id": 322, "indexExpression": { "argumentTypes": null, - "id": 254, + "id": 321, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 235, - "src": "4473:1:2", + "referencedDeclaration": 302, + "src": "5381:1:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3101,7 +3737,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4471:4:2", + "src": "5379:4:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3111,26 +3747,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 256, + "id": 323, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 222, - "src": "4477:1:2", + "referencedDeclaration": 289, + "src": "5385:1:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", "typeString": "bytes32[] memory" } }, - "id": 258, + "id": 325, "indexExpression": { "argumentTypes": null, - "id": 257, + "id": 324, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 235, - "src": "4479:1:2", + "referencedDeclaration": 302, + "src": "5387:1:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3141,7 +3777,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4477:4:2", + "src": "5385:4:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3167,18 +3803,18 @@ "typeString": "bytes32" } ], - "id": 248, + "id": 315, "name": "ecrecover", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2388, - "src": "4449:9:2", + "referencedDeclaration": 2590, + "src": "5357:9:3", "typeDescriptions": { "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)" } }, - "id": 259, + "id": 326, "isConstant": false, "isLValue": false, "isPure": false, @@ -3186,21 +3822,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4449:33:2", + "src": "5357:33:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4434:48:2", + "src": "5342:48:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 261, + "id": 328, "nodeType": "ExpressionStatement", - "src": "4434:48:2" + "src": "5342:48:3" }, { "expression": { @@ -3212,7 +3848,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 267, + "id": 334, "isConstant": false, "isLValue": false, "isPure": false, @@ -3221,26 +3857,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 263, + "id": 330, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "4504:6:2", + "referencedDeclaration": 1114, + "src": "5412:6:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 265, + "id": 332, "indexExpression": { "argumentTypes": null, - "id": 264, + "id": 331, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 232, - "src": "4511:12:2", + "referencedDeclaration": 299, + "src": "5419:12:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3251,7 +3887,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4504:20:2", + "src": "5412:20:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3262,14 +3898,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 266, + "id": 333, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4528:1:2", + "src": "5436:1:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3277,7 +3913,7 @@ }, "value": "0" }, - "src": "4504:25:2", + "src": "5412:25:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3291,21 +3927,21 @@ "typeString": "bool" } ], - "id": 262, + "id": 329, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "4496:7:2", + "referencedDeclaration": 2601, + "src": "5404:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 268, + "id": 335, "isConstant": false, "isLValue": false, "isPure": false, @@ -3313,15 +3949,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4496:34:2", + "src": "5404:34:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 269, + "id": 336, "nodeType": "ExpressionStatement", - "src": "4496:34:2" + "src": "5404:34:3" }, { "expression": { @@ -3333,19 +3969,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 273, + "id": 340, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 271, + "id": 338, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 232, - "src": "4552:12:2", + "referencedDeclaration": 299, + "src": "5460:12:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3355,18 +3991,18 @@ "operator": ">", "rightExpression": { "argumentTypes": null, - "id": 272, + "id": 339, "name": "lastOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 226, - "src": "4567:9:2", + "referencedDeclaration": 293, + "src": "5475:9:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4552:24:2", + "src": "5460:24:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3380,21 +4016,21 @@ "typeString": "bool" } ], - "id": 270, + "id": 337, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "4544:7:2", + "referencedDeclaration": 2601, + "src": "5452:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 274, + "id": 341, "isConstant": false, "isLValue": false, "isPure": false, @@ -3402,32 +4038,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4544:33:2", + "src": "5452:33:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 275, + "id": 342, "nodeType": "ExpressionStatement", - "src": "4544:33:2" + "src": "5452:33:3" }, { "expression": { "argumentTypes": null, - "id": 278, + "id": 345, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 276, + "id": 343, "name": "lastOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 226, - "src": "4591:9:2", + "referencedDeclaration": 293, + "src": "5499:9:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3437,26 +4073,26 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 277, + "id": 344, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 232, - "src": "4603:12:2", + "referencedDeclaration": 299, + "src": "5511:12:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4591:24:2", + "src": "5499:24:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 279, + "id": 346, "nodeType": "ExpressionStatement", - "src": "4591:24:2" + "src": "5499:24:3" } ] }, @@ -3466,19 +4102,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 243, + "id": 310, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 241, + "id": 308, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 235, - "src": "4400:1:2", + "referencedDeclaration": 302, + "src": "5308:1:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3488,40 +4124,40 @@ "operator": "<", "rightExpression": { "argumentTypes": null, - "id": 242, + "id": 309, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 989, - "src": "4404:9:2", + "referencedDeclaration": 1118, + "src": "5312:9:3", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "4400:13:2", + "src": "5308:13:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 281, + "id": 348, "initializationExpression": { "expression": { "argumentTypes": null, - "id": 239, + "id": 306, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 237, + "id": 304, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 235, - "src": "4393:1:2", + "referencedDeclaration": 302, + "src": "5301:1:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3532,14 +4168,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "30", - "id": 238, + "id": 305, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4397:1:2", + "src": "5305:1:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3547,20 +4183,20 @@ }, "value": "0" }, - "src": "4393:5:2", + "src": "5301:5:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 240, + "id": 307, "nodeType": "ExpressionStatement", - "src": "4393:5:2" + "src": "5301:5:3" }, "loopExpression": { "expression": { "argumentTypes": null, - "id": 245, + "id": 312, "isConstant": false, "isLValue": false, "isPure": false, @@ -3568,15 +4204,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "4415:3:2", + "src": "5323:3:3", "subExpression": { "argumentTypes": null, - "id": 244, + "id": 311, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 235, - "src": "4415:1:2", + "referencedDeclaration": 302, + "src": "5323:1:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3587,17 +4223,17 @@ "typeString": "uint256" } }, - "id": 246, + "id": 313, "nodeType": "ExpressionStatement", - "src": "4415:3:2" + "src": "5323:3:3" }, "nodeType": "ForStatement", - "src": "4388:238:2" + "src": "5296:238:3" } ] }, "documentation": null, - "id": 283, + "id": 350, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -3605,16 +4241,16 @@ "name": "checkHash", "nodeType": "FunctionDefinition", "parameters": { - "id": 223, + "id": 290, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 213, + "id": 280, "name": "hash", "nodeType": "VariableDeclaration", - "scope": 283, - "src": "4110:12:2", + "scope": 350, + "src": "5018:12:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3622,10 +4258,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 212, + "id": 279, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "4110:7:2", + "src": "5018:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3636,11 +4272,11 @@ }, { "constant": false, - "id": 216, + "id": 283, "name": "v", "nodeType": "VariableDeclaration", - "scope": 283, - "src": "4124:9:2", + "scope": 350, + "src": "5032:9:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3649,19 +4285,19 @@ }, "typeName": { "baseType": { - "id": 214, + "id": 281, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "4124:5:2", + "src": "5032:5:3", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "id": 215, + "id": 282, "length": null, "nodeType": "ArrayTypeName", - "src": "4124:7:2", + "src": "5032:7:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr", "typeString": "uint8[]" @@ -3672,11 +4308,11 @@ }, { "constant": false, - "id": 219, + "id": 286, "name": "r", "nodeType": "VariableDeclaration", - "scope": 283, - "src": "4135:11:2", + "scope": 350, + "src": "5043:11:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3685,19 +4321,19 @@ }, "typeName": { "baseType": { - "id": 217, + "id": 284, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "4135:7:2", + "src": "5043:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "id": 218, + "id": 285, "length": null, "nodeType": "ArrayTypeName", - "src": "4135:9:2", + "src": "5043:9:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", "typeString": "bytes32[]" @@ -3708,11 +4344,11 @@ }, { "constant": false, - "id": 222, + "id": 289, "name": "s", "nodeType": "VariableDeclaration", - "scope": 283, - "src": "4148:11:2", + "scope": 350, + "src": "5056:11:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3721,19 +4357,19 @@ }, "typeName": { "baseType": { - "id": 220, + "id": 287, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "4148:7:2", + "src": "5056:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "id": 221, + "id": 288, "length": null, "nodeType": "ArrayTypeName", - "src": "4148:9:2", + "src": "5056:9:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", "typeString": "bytes32[]" @@ -3743,26 +4379,26 @@ "visibility": "internal" } ], - "src": "4109:51:2" + "src": "5017:51:3" }, "payable": false, "returnParameters": { - "id": 224, + "id": 291, "nodeType": "ParameterList", "parameters": [], - "src": "4195:0:2" + "src": "5103:0:3" }, - "scope": 324, - "src": "4091:541:2", + "scope": 397, + "src": "4999:541:3", "stateMutability": "view", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 322, + "id": 395, "nodeType": "Block", - "src": "5448:126:2", + "src": "6464:176:3", "statements": [ { "expression": { @@ -3773,290 +4409,359 @@ "arguments": [ { "argumentTypes": null, - "hexValue": "30783139", - "id": 306, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30783139", + "id": 377, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6526:4:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_25_by_1", + "typeString": "int_const 25" + }, + "value": "0x19" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_25_by_1", + "typeString": "int_const 25" + } + ], + "id": 376, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6521:4:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes1_$", + "typeString": "type(bytes1)" + }, + "typeName": "byte" + }, + "id": 378, "isConstant": false, "isLValue": false, "isPure": true, - "kind": "number", + "kind": "typeConversion", "lValueRequested": false, - "nodeType": "Literal", - "src": "5480:4:2", - "subdenomination": null, + "names": [], + "nodeType": "FunctionCall", + "src": "6521:10:3", "typeDescriptions": { - "typeIdentifier": "t_rational_25_by_1", - "typeString": "int_const 25" - }, - "value": "0x19" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_25_by_1", - "typeString": "int_const 25" + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" } - ], - "id": 305, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "5475:4:2", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes1_$", - "typeString": "type(bytes1)" }, - "typeName": "byte" - }, - "id": 307, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5475:10:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - } - }, - { - "argumentTypes": null, - "arguments": [ { "argumentTypes": null, - "hexValue": "30", - "id": 309, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 380, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6538:1:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 379, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6533:4:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes1_$", + "typeString": "type(bytes1)" + }, + "typeName": "byte" + }, + "id": 381, "isConstant": false, "isLValue": false, "isPure": true, - "kind": "number", + "kind": "typeConversion", "lValueRequested": false, - "nodeType": "Literal", - "src": "5492:1:2", - "subdenomination": null, + "names": [], + "nodeType": "FunctionCall", + "src": "6533:7:3", "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" } - ], - "id": 308, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "5487:4:2", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes1_$", - "typeString": "type(bytes1)" }, - "typeName": "byte" - }, - "id": 310, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5487:7:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - } - }, - { - "argumentTypes": null, - "id": 311, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2423, - "src": "5496:4:2", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafePersonalEdition_$324", - "typeString": "contract GnosisSafePersonalEdition" - } - }, - { - "argumentTypes": null, - "id": 312, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 285, - "src": "5502:2:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 313, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 287, - "src": "5506:5:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 314, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 289, - "src": "5513:4:2", + { + "argumentTypes": null, + "id": 382, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2631, + "src": "6542:4:3", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafePersonalEdition_$397", + "typeString": "contract GnosisSafePersonalEdition" + } + }, + { + "argumentTypes": null, + "id": 383, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 352, + "src": "6548:2:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 384, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 354, + "src": "6552:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 385, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 356, + "src": "6559:4:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 386, + "name": "operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 358, + "src": "6565:9:3", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + }, + { + "argumentTypes": null, + "id": 387, + "name": "safeTxGas", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 360, + "src": "6576:9:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 388, + "name": "dataGas", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 362, + "src": "6587:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 389, + "name": "gasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 364, + "src": "6596:8:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 390, + "name": "gasToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 366, + "src": "6606:8:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 391, + "name": "_nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 368, + "src": "6616:6:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + { + "typeIdentifier": "t_contract$_GnosisSafePersonalEdition_$397", + "typeString": "contract GnosisSafePersonalEdition" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 374, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2585, + "src": "6504:3:3", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 375, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "6504:16:3", + "typeDescriptions": { + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } + }, + "id": 392, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6504:119:3", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } - }, - { - "argumentTypes": null, - "id": 315, - "name": "operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 291, - "src": "5519:9:2", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", - "typeString": "enum Enum.Operation" - } - }, - { - "argumentTypes": null, - "id": 316, - "name": "safeTxGas", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 293, - "src": "5530:9:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 317, - "name": "dataGas", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 295, - "src": "5541:7:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 318, - "name": "gasPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 297, - "src": "5550:8:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 319, - "name": "_nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 299, - "src": "5560:6:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } } ], "expression": { "argumentTypes": [ - { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - }, - { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - }, - { - "typeIdentifier": "t_contract$_GnosisSafePersonalEdition_$324", - "typeString": "contract GnosisSafePersonalEdition" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_enum$_Operation_$5", - "typeString": "enum Enum.Operation" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" } ], - "id": 304, + "id": 373, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2390, - "src": "5465:9:2", + "referencedDeclaration": 2592, + "src": "6481:9:3", "typeDescriptions": { "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", "typeString": "function () pure returns (bytes32)" } }, - "id": 320, + "id": 393, "isConstant": false, "isLValue": false, "isPure": false, @@ -4064,21 +4769,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5465:102:2", + "src": "6481:152:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "functionReturnParameters": 303, - "id": 321, + "functionReturnParameters": 372, + "id": 394, "nodeType": "Return", - "src": "5458:109:2" + "src": "6474:159:3" } ] }, - "documentation": "@dev Returns hash to be signed by owners.\n @param to Destination address.\n @param value Ether value.\n @param data Data payload.\n @param operation Operation type.\n @param safeTxGas Fas that should be used for the safe transaction.\n @param dataGas Gas costs for data used to trigger the safe transaction.\n @param gasPrice Maximum gas price that should be used for this transaction.\n @param _nonce Transaction nonce.\n @return Transaction hash.", - "id": 323, + "documentation": "@dev Returns hash to be signed by owners.\n @param to Destination address.\n @param value Ether value.\n @param data Data payload.\n @param operation Operation type.\n @param safeTxGas Fas that should be used for the safe transaction.\n @param dataGas Gas costs for data used to trigger the safe transaction.\n @param gasPrice Maximum gas price that should be used for this transaction.\n @param gasToken Token address (or 0 if ETH) that is used for the payment.\n @param _nonce Transaction nonce.\n @return Transaction hash.", + "id": 396, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -4086,16 +4791,16 @@ "name": "getTransactionHash", "nodeType": "FunctionDefinition", "parameters": { - "id": 300, + "id": 369, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 285, + "id": 352, "name": "to", "nodeType": "VariableDeclaration", - "scope": 323, - "src": "5187:10:2", + "scope": 396, + "src": "6177:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4103,10 +4808,10 @@ "typeString": "address" }, "typeName": { - "id": 284, + "id": 351, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5187:7:2", + "src": "6177:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4117,11 +4822,11 @@ }, { "constant": false, - "id": 287, + "id": 354, "name": "value", "nodeType": "VariableDeclaration", - "scope": 323, - "src": "5208:13:2", + "scope": 396, + "src": "6198:13:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4129,10 +4834,10 @@ "typeString": "uint256" }, "typeName": { - "id": 286, + "id": 353, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5208:7:2", + "src": "6198:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4143,11 +4848,11 @@ }, { "constant": false, - "id": 289, + "id": 356, "name": "data", "nodeType": "VariableDeclaration", - "scope": 323, - "src": "5232:10:2", + "scope": 396, + "src": "6222:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4155,10 +4860,10 @@ "typeString": "bytes" }, "typeName": { - "id": 288, + "id": 355, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "5232:5:2", + "src": "6222:5:3", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -4169,26 +4874,26 @@ }, { "constant": false, - "id": 291, + "id": 358, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 323, - "src": "5253:24:2", + "scope": 396, + "src": "6243:24:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, "typeName": { "contractScope": null, - "id": 290, + "id": 357, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 5, - "src": "5253:14:2", + "referencedDeclaration": 29, + "src": "6243:14:3", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, @@ -4197,11 +4902,11 @@ }, { "constant": false, - "id": 293, + "id": 360, "name": "safeTxGas", "nodeType": "VariableDeclaration", - "scope": 323, - "src": "5288:17:2", + "scope": 396, + "src": "6278:17:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4209,10 +4914,10 @@ "typeString": "uint256" }, "typeName": { - "id": 292, + "id": 359, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5288:7:2", + "src": "6278:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4223,11 +4928,11 @@ }, { "constant": false, - "id": 295, + "id": 362, "name": "dataGas", "nodeType": "VariableDeclaration", - "scope": 323, - "src": "5316:15:2", + "scope": 396, + "src": "6306:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4235,10 +4940,10 @@ "typeString": "uint256" }, "typeName": { - "id": 294, + "id": 361, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5316:7:2", + "src": "6306:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4249,11 +4954,11 @@ }, { "constant": false, - "id": 297, + "id": 364, "name": "gasPrice", "nodeType": "VariableDeclaration", - "scope": 323, - "src": "5342:16:2", + "scope": 396, + "src": "6332:16:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4261,10 +4966,10 @@ "typeString": "uint256" }, "typeName": { - "id": 296, + "id": 363, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5342:7:2", + "src": "6332:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4275,11 +4980,37 @@ }, { "constant": false, - "id": 299, + "id": 366, + "name": "gasToken", + "nodeType": "VariableDeclaration", + "scope": 396, + "src": "6359:16:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 365, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6359:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 368, "name": "_nonce", "nodeType": "VariableDeclaration", - "scope": 323, - "src": "5369:14:2", + "scope": 396, + "src": "6385:14:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4287,10 +5018,10 @@ "typeString": "uint256" }, "typeName": { - "id": 298, + "id": 367, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5369:7:2", + "src": "6385:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4300,20 +5031,20 @@ "visibility": "internal" } ], - "src": "5177:212:2" + "src": "6167:238:3" }, "payable": false, "returnParameters": { - "id": 303, + "id": 372, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 302, + "id": 371, "name": "", "nodeType": "VariableDeclaration", - "scope": 323, - "src": "5435:7:2", + "scope": 396, + "src": "6451:7:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4321,10 +5052,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 301, + "id": 370, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "5435:7:2", + "src": "6451:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -4334,60 +5065,71 @@ "visibility": "internal" } ], - "src": "5434:9:2" + "src": "6450:9:3" }, - "scope": 324, - "src": "5150:424:2", + "scope": 397, + "src": "6140:500:3", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 325, - "src": "314:5262:2" + "scope": 398, + "src": "449:6193:3" } ], - "src": "0:5577:2" + "src": "0:6643:3" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafePersonalEdition.sol", "exportedSymbols": { "GnosisSafePersonalEdition": [ - 324 + 397 ] }, - "id": 325, + "id": 398, "nodeType": "SourceUnit", "nodes": [ { - "id": 41, + "id": 65, "literals": [ "solidity", "0.4", - ".23" + ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:2" + "src": "0:23:3" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/interfaces/ERC20Token.sol", + "file": "./interfaces/ERC20Token.sol", + "id": 66, + "nodeType": "ImportDirective", + "scope": 398, + "sourceUnit": 1686, + "src": "24:37:3", + "symbolAliases": [], + "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", "file": "./GnosisSafe.sol", - "id": 42, + "id": 67, "nodeType": "ImportDirective", - "scope": 325, - "sourceUnit": 40, - "src": "24:26:2", + "scope": 398, + "sourceUnit": 64, + "src": "62:26:3", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/MasterCopy.sol", "file": "./MasterCopy.sol", - "id": 43, + "id": 68, "nodeType": "ImportDirective", - "scope": 325, - "sourceUnit": 581, - "src": "51:26:2", + "scope": 398, + "sourceUnit": 653, + "src": "89:26:3", "symbolAliases": [], "unitAlias": "" }, @@ -4397,68 +5139,68 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 44, + "id": 69, "name": "MasterCopy", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 580, - "src": "352:10:2", + "referencedDeclaration": 652, + "src": "487:10:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_MasterCopy_$580", + "typeIdentifier": "t_contract$_MasterCopy_$652", "typeString": "contract MasterCopy" } }, - "id": 45, + "id": 70, "nodeType": "InheritanceSpecifier", - "src": "352:10:2" + "src": "487:10:3" }, { "arguments": null, "baseName": { "contractScope": null, - "id": 46, + "id": 71, "name": "GnosisSafe", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 39, - "src": "364:10:2", + "referencedDeclaration": 63, + "src": "499:10:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$39", + "typeIdentifier": "t_contract$_GnosisSafe_$63", "typeString": "contract GnosisSafe" } }, - "id": 47, + "id": 72, "nodeType": "InheritanceSpecifier", - "src": "364:10:2" + "src": "499:10:3" } ], "contractDependencies": [ - 39, - 580, - 971, - 1343, - 1359 + 63, + 652, + 1100, + 1472, + 1619 ], "contractKind": "contract", - "documentation": "@title Gnosis Safe Personal Edition - A multisignature wallet with support for confirmations using signed messages based on ERC191.\n @author Stefan George - \n @author Richard Meissner - ", + "documentation": "@title Gnosis Safe Personal Edition - A multisignature wallet with support for confirmations using signed messages based on ERC191.\n @author Stefan George - \n @author Richard Meissner - \n @author Ricardo Guilherme Schmidt - (Status Research & Development GmbH) - Gas Token Payment", "fullyImplemented": true, - "id": 324, + "id": 397, "linearizedBaseContracts": [ - 324, - 39, - 1343, - 971, - 580, - 1359 + 397, + 63, + 1472, + 1100, + 652, + 1619 ], "name": "GnosisSafePersonalEdition", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, - "id": 50, + "id": 75, "name": "NAME", "nodeType": "VariableDeclaration", - "scope": 324, - "src": "382:60:2", + "scope": 397, + "src": "517:60:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -4466,10 +5208,10 @@ "typeString": "string" }, "typeName": { - "id": 48, + "id": 73, "name": "string", "nodeType": "ElementaryTypeName", - "src": "382:6:2", + "src": "517:6:3", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -4478,14 +5220,14 @@ "value": { "argumentTypes": null, "hexValue": "476e6f736973205361666520506572736f6e616c2045646974696f6e", - "id": 49, + "id": 74, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "412:30:2", + "src": "547:30:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_b657d2895d137bf089ce1df776b732639b1ebc2a3aec3bd837e225e9e0965154", @@ -4497,11 +5239,11 @@ }, { "constant": true, - "id": 53, + "id": 78, "name": "VERSION", "nodeType": "VariableDeclaration", - "scope": 324, - "src": "448:40:2", + "scope": 397, + "src": "583:40:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -4509,10 +5251,10 @@ "typeString": "string" }, "typeName": { - "id": 51, + "id": 76, "name": "string", "nodeType": "ElementaryTypeName", - "src": "448:6:2", + "src": "583:6:3", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -4521,14 +5263,14 @@ "value": { "argumentTypes": null, "hexValue": "302e302e31", - "id": 52, + "id": 77, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "481:7:2", + "src": "616:7:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", @@ -4540,11 +5282,11 @@ }, { "constant": true, - "id": 56, + "id": 81, "name": "BASE_TX_GAS_COSTS", "nodeType": "VariableDeclaration", - "scope": 324, - "src": "499:51:2", + "scope": 397, + "src": "634:51:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -4552,10 +5294,10 @@ "typeString": "uint256" }, "typeName": { - "id": 54, + "id": 79, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "499:7:2", + "src": "634:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4564,14 +5306,14 @@ "value": { "argumentTypes": null, "hexValue": "3231303030", - "id": 55, + "id": 80, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "545:5:2", + "src": "680:5:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_21000_by_1", @@ -4583,11 +5325,11 @@ }, { "constant": true, - "id": 59, + "id": 84, "name": "PAYMENT_GAS_COSTS", "nodeType": "VariableDeclaration", - "scope": 324, - "src": "556:51:2", + "scope": 397, + "src": "691:51:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -4595,10 +5337,10 @@ "typeString": "uint256" }, "typeName": { - "id": 57, + "id": 82, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "556:7:2", + "src": "691:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4607,14 +5349,14 @@ "value": { "argumentTypes": null, "hexValue": "3131303030", - "id": 58, + "id": 83, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "602:5:2", + "src": "737:5:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_11000_by_1", @@ -4627,24 +5369,24 @@ { "anonymous": false, "documentation": null, - "id": 61, + "id": 86, "name": "ExecutionFailed", "nodeType": "EventDefinition", "parameters": { - "id": 60, + "id": 85, "nodeType": "ParameterList", "parameters": [], - "src": "635:2:2" + "src": "770:2:3" }, - "src": "614:24:2" + "src": "749:24:3" }, { "constant": false, - "id": 63, + "id": 88, "name": "nonce", "nodeType": "VariableDeclaration", - "scope": 324, - "src": "644:20:2", + "scope": 397, + "src": "779:20:3", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -4652,10 +5394,10 @@ "typeString": "uint256" }, "typeName": { - "id": 62, + "id": 87, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "644:7:2", + "src": "779:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4666,22 +5408,22 @@ }, { "body": { - "id": 155, + "id": 211, "nodeType": "Block", - "src": "1738:708:2", + "src": "1984:1043:3", "statements": [ { "assignments": [ - 90 + 117 ], "declarations": [ { "constant": false, - "id": 90, + "id": 117, "name": "startGas", "nodeType": "VariableDeclaration", - "scope": 156, - "src": "1748:16:2", + "scope": 212, + "src": "1994:16:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4689,10 +5431,10 @@ "typeString": "uint256" }, "typeName": { - "id": 89, + "id": 116, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1748:7:2", + "src": "1994:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4702,24 +5444,24 @@ "visibility": "internal" } ], - "id": 93, + "id": 120, "initialValue": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], - "id": 91, + "id": 118, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2389, - "src": "1767:7:2", + "referencedDeclaration": 2591, + "src": "2013:7:3", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 92, + "id": 119, "isConstant": false, "isLValue": false, "isPure": false, @@ -4727,14 +5469,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1767:9:2", + "src": "2013:9:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "1748:28:2" + "src": "1994:28:3" }, { "expression": { @@ -4745,12 +5487,12 @@ "arguments": [ { "argumentTypes": null, - "id": 96, + "id": 123, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 65, - "src": "1815:2:2", + "referencedDeclaration": 90, + "src": "2061:2:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4758,12 +5500,12 @@ }, { "argumentTypes": null, - "id": 97, + "id": 124, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 67, - "src": "1819:5:2", + "referencedDeclaration": 92, + "src": "2065:5:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4771,12 +5513,12 @@ }, { "argumentTypes": null, - "id": 98, + "id": 125, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69, - "src": "1826:4:2", + "referencedDeclaration": 94, + "src": "2072:4:3", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -4784,25 +5526,25 @@ }, { "argumentTypes": null, - "id": 99, + "id": 126, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71, - "src": "1832:9:2", + "referencedDeclaration": 96, + "src": "2078:9:3", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, { "argumentTypes": null, - "id": 100, + "id": 127, "name": "safeTxGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73, - "src": "1843:9:2", + "referencedDeclaration": 98, + "src": "2089:9:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4810,12 +5552,12 @@ }, { "argumentTypes": null, - "id": 101, + "id": 128, "name": "dataGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 75, - "src": "1854:7:2", + "referencedDeclaration": 100, + "src": "2100:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4823,12 +5565,12 @@ }, { "argumentTypes": null, - "id": 102, + "id": 129, "name": "gasPrice", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 77, - "src": "1863:8:2", + "referencedDeclaration": 102, + "src": "2109:8:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4836,12 +5578,25 @@ }, { "argumentTypes": null, - "id": 103, + "id": 130, + "name": "gasToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 104, + "src": "2119:8:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 131, "name": "nonce", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 63, - "src": "1873:5:2", + "referencedDeclaration": 88, + "src": "2129:5:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4863,7 +5618,7 @@ "typeString": "bytes memory" }, { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, { @@ -4878,23 +5633,27 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, { "typeIdentifier": "t_uint256", "typeString": "uint256" } ], - "id": 95, + "id": 122, "name": "getTransactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 323, - "src": "1796:18:2", + "referencedDeclaration": 396, + "src": "2042:18:3", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$", - "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256,uint256,uint256,uint256) view returns (bytes32)" + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$returns$_t_bytes32_$", + "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256,uint256,uint256,address,uint256) view returns (bytes32)" } }, - "id": 104, + "id": 132, "isConstant": false, "isLValue": false, "isPure": false, @@ -4902,7 +5661,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1796:83:2", + "src": "2042:93:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -4910,12 +5669,12 @@ }, { "argumentTypes": null, - "id": 105, + "id": 133, "name": "v", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 80, - "src": "1881:1:2", + "referencedDeclaration": 107, + "src": "2137:1:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", "typeString": "uint8[] memory" @@ -4923,12 +5682,12 @@ }, { "argumentTypes": null, - "id": 106, + "id": 134, "name": "r", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 83, - "src": "1884:1:2", + "referencedDeclaration": 110, + "src": "2140:1:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", "typeString": "bytes32[] memory" @@ -4936,12 +5695,12 @@ }, { "argumentTypes": null, - "id": 107, + "id": 135, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 86, - "src": "1887:1:2", + "referencedDeclaration": 113, + "src": "2143:1:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", "typeString": "bytes32[] memory" @@ -4967,18 +5726,18 @@ "typeString": "bytes32[] memory" } ], - "id": 94, + "id": 121, "name": "checkHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 283, - "src": "1786:9:2", + "referencedDeclaration": 350, + "src": "2032:9:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_array$_t_uint8_$dyn_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$returns$__$", "typeString": "function (bytes32,uint8[] memory,bytes32[] memory,bytes32[] memory) view" } }, - "id": 108, + "id": 136, "isConstant": false, "isLValue": false, "isPure": false, @@ -4986,20 +5745,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1786:103:2", + "src": "2032:113:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 109, + "id": 137, "nodeType": "ExpressionStatement", - "src": "1786:103:2" + "src": "2032:113:3" }, { "expression": { "argumentTypes": null, - "id": 111, + "id": 139, "isConstant": false, "isLValue": false, "isPure": false, @@ -5007,15 +5766,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "1950:7:2", + "src": "2206:7:3", "subExpression": { "argumentTypes": null, - "id": 110, + "id": 138, "name": "nonce", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 63, - "src": "1950:5:2", + "referencedDeclaration": 88, + "src": "2206:5:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5026,9 +5785,9 @@ "typeString": "uint256" } }, - "id": 112, + "id": 140, "nodeType": "ExpressionStatement", - "src": "1950:7:2" + "src": "2206:7:3" }, { "expression": { @@ -5040,7 +5799,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 119, + "id": 147, "isConstant": false, "isLValue": false, "isPure": false, @@ -5051,7 +5810,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 117, + "id": 145, "isConstant": false, "isLValue": false, "isPure": false, @@ -5061,18 +5820,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 114, + "id": 142, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2389, - "src": "1975:7:2", + "referencedDeclaration": 2591, + "src": "2231:7:3", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 115, + "id": 143, "isConstant": false, "isLValue": false, "isPure": false, @@ -5080,7 +5839,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1975:9:2", + "src": "2231:9:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5090,18 +5849,18 @@ "operator": "-", "rightExpression": { "argumentTypes": null, - "id": 116, + "id": 144, "name": "PAYMENT_GAS_COSTS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 59, - "src": "1987:17:2", + "referencedDeclaration": 84, + "src": "2243:17:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1975:29:2", + "src": "2231:29:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5111,18 +5870,18 @@ "operator": ">=", "rightExpression": { "argumentTypes": null, - "id": 118, + "id": 146, "name": "safeTxGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73, - "src": "2008:9:2", + "referencedDeclaration": 98, + "src": "2264:9:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1975:42:2", + "src": "2231:42:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5136,21 +5895,21 @@ "typeString": "bool" } ], - "id": 113, + "id": 141, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "1967:7:2", + "referencedDeclaration": 2601, + "src": "2223:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 120, + "id": 148, "isConstant": false, "isLValue": false, "isPure": false, @@ -5158,20 +5917,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1967:51:2", + "src": "2223:51:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 121, + "id": 149, "nodeType": "ExpressionStatement", - "src": "1967:51:2" + "src": "2223:51:3" }, { "condition": { "argumentTypes": null, - "id": 129, + "id": 157, "isConstant": false, "isLValue": false, "isPure": false, @@ -5179,18 +5938,18 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "2032:47:2", + "src": "2288:47:3", "subExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 123, + "id": 151, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 65, - "src": "2041:2:2", + "referencedDeclaration": 90, + "src": "2297:2:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5198,12 +5957,12 @@ }, { "argumentTypes": null, - "id": 124, + "id": 152, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 67, - "src": "2045:5:2", + "referencedDeclaration": 92, + "src": "2301:5:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5211,12 +5970,12 @@ }, { "argumentTypes": null, - "id": 125, + "id": 153, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 69, - "src": "2052:4:2", + "referencedDeclaration": 94, + "src": "2308:4:3", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -5224,25 +5983,25 @@ }, { "argumentTypes": null, - "id": 126, + "id": 154, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 71, - "src": "2058:9:2", + "referencedDeclaration": 96, + "src": "2314:9:3", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, { "argumentTypes": null, - "id": 127, + "id": 155, "name": "safeTxGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 73, - "src": "2069:9:2", + "referencedDeclaration": 98, + "src": "2325:9:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5264,7 +6023,7 @@ "typeString": "bytes memory" }, { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, { @@ -5272,18 +6031,18 @@ "typeString": "uint256" } ], - "id": 122, + "id": 150, "name": "execute", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 860, - "src": "2033:7:2", + "referencedDeclaration": 989, + "src": "2289:7:3", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$_t_uint256_$returns$_t_bool_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) returns (bool)" } }, - "id": 128, + "id": 156, "isConstant": false, "isLValue": false, "isPure": false, @@ -5291,7 +6050,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2033:46:2", + "src": "2289:46:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5303,13 +6062,13 @@ } }, "falseBody": null, - "id": 134, + "id": 162, "nodeType": "IfStatement", - "src": "2028:100:2", + "src": "2284:100:3", "trueBody": { - "id": 133, + "id": 161, "nodeType": "Block", - "src": "2081:47:2", + "src": "2337:47:3", "statements": [ { "eventCall": { @@ -5317,18 +6076,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 130, + "id": 158, "name": "ExecutionFailed", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 61, - "src": "2100:15:2", + "referencedDeclaration": 86, + "src": "2356:15:3", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 131, + "id": 159, "isConstant": false, "isLValue": false, "isPure": false, @@ -5336,98 +6095,214 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2100:17:2", + "src": "2356:17:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 132, + "id": 160, "nodeType": "EmitStatement", - "src": "2095:22:2" + "src": "2351:22:3" } ] } }, { - "assignments": [ - 136 - ], - "declarations": [ - { - "constant": false, - "id": 136, - "name": "gasCosts", - "nodeType": "VariableDeclaration", - "scope": 156, - "src": "2137:16:2", - "stateVariable": false, - "storageLocation": "default", + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 165, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 163, + "name": "gasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 102, + "src": "2537:8:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 164, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2548:1:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" }, - "typeName": { - "id": 135, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2137:7:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" + "value": "0" + }, + "src": "2537:12:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" } - ], - "id": 144, - "initialValue": { - "argumentTypes": null, - "arguments": [ + }, + "falseBody": null, + "id": 210, + "nodeType": "IfStatement", + "src": "2533:486:3", + "trueBody": { + "id": 209, + "nodeType": "Block", + "src": "2551:468:3", + "statements": [ { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 141, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 138, - "name": "startGas", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 90, - "src": "2170:8:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "assignments": [ + 167 + ], + "declarations": [ + { + "constant": false, + "id": 167, + "name": "gasCosts", + "nodeType": "VariableDeclaration", + "scope": 212, + "src": "2565:16:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 166, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2565:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { + ], + "id": 175, + "initialValue": { "argumentTypes": null, - "arguments": [], + "arguments": [ + { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 172, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 169, + "name": "startGas", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 117, + "src": "2598:8:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 170, + "name": "gasleft", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2591, + "src": "2609:7:3", + "typeDescriptions": { + "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 171, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2609:9:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2598:20:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 173, + "name": "dataGas", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 100, + "src": "2620:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], "expression": { - "argumentTypes": [], - "id": 139, - "name": "gasleft", + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 168, + "name": "totalGasCosts", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2389, - "src": "2181:7:2", + "referencedDeclaration": 230, + "src": "2584:13:3", "typeDescriptions": { - "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", - "typeString": "function () view returns (uint256)" + "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", + "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 140, + "id": 174, "isConstant": false, "isLValue": false, "isPure": false, @@ -5435,210 +6310,491 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2181:9:2", + "src": "2584:44:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2170:20:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } + "nodeType": "VariableDeclarationStatement", + "src": "2565:63:3" }, { - "argumentTypes": null, - "id": 142, - "name": "dataGas", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 75, - "src": "2192:7:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 137, - "name": "totalGasCosts", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 174, - "src": "2156:13:2", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", - "typeString": "function (uint256,uint256) pure returns (uint256)" - } - }, - "id": 143, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2156:44:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "2137:63:2" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 152, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { + "assignments": [ + 177 + ], + "declarations": [ + { + "constant": false, + "id": 177, + "name": "amount", + "nodeType": "VariableDeclaration", + "scope": 212, + "src": "2642:14:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 176, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2642:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 181, + "initialValue": { "argumentTypes": null, - "id": 150, - "name": "gasCosts", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 136, - "src": "2419:8:2", - "typeDescriptions": { + "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "*", - "rightExpression": { - "argumentTypes": null, - "id": 151, - "name": "gasPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 77, - "src": "2430:8:2", + }, + "id": 180, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 178, + "name": "gasCosts", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 167, + "src": "2659:8:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "*", + "rightExpression": { + "argumentTypes": null, + "id": 179, + "name": "gasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 102, + "src": "2670:8:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "2659:19:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2419:19:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "expression": { + "nodeType": "VariableDeclarationStatement", + "src": "2642:36:3" + }, + { + "condition": { "argumentTypes": null, - "id": 145, - "name": "tx", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2408, - "src": "2400:2:2", + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 186, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 182, + "name": "gasToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 104, + "src": "2696:8:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 184, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2716:1:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 183, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "2708:7:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 185, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2708:10:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "2696:22:3", "typeDescriptions": { - "typeIdentifier": "t_magic_transaction", - "typeString": "tx" + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - "id": 148, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "origin", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2400:9:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" + "falseBody": { + "id": 207, + "nodeType": "Block", + "src": "2852:157:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 201, + "name": "tx", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2610, + "src": "2975:2:3", + "typeDescriptions": { + "typeIdentifier": "t_magic_transaction", + "typeString": "tx" + } + }, + "id": 202, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "origin", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2975:9:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 203, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 177, + "src": "2986:6:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 198, + "name": "gasToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 104, + "src": "2956:8:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 197, + "name": "ERC20Token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1685, + "src": "2945:10:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20Token_$1685_$", + "typeString": "type(contract ERC20Token)" + } + }, + "id": 199, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2945:20:3", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Token_$1685", + "typeString": "contract ERC20Token" + } + }, + "id": 200, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 1639, + "src": "2945:29:3", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 204, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2945:48:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 196, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2601, + 2602 + ], + "referencedDeclaration": 2601, + "src": "2937:7:3", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 205, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2937:57:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 206, + "nodeType": "ExpressionStatement", + "src": "2937:57:3" + } + ] + }, + "id": 208, + "nodeType": "IfStatement", + "src": "2692:317:3", + "trueBody": { + "id": 195, + "nodeType": "Block", + "src": "2720:126:3", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 192, + "name": "amount", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 177, + "src": "2824:6:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "expression": { + "argumentTypes": null, + "id": 187, + "name": "tx", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2610, + "src": "2805:2:3", + "typeDescriptions": { + "typeIdentifier": "t_magic_transaction", + "typeString": "tx" + } + }, + "id": 190, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "origin", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2805:9:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 191, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2805:18:3", + "typeDescriptions": { + "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 193, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "2805:26:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 194, + "nodeType": "ExpressionStatement", + "src": "2805:26:3" + } + ] } - }, - "id": 149, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "transfer", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2400:18:2", - "typeDescriptions": { - "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", - "typeString": "function (uint256)" } - }, - "id": 153, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2400:39:2", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 154, - "nodeType": "ExpressionStatement", - "src": "2400:39:2" + ] + } } ] }, - "documentation": "@dev Allows to execute a Safe transaction confirmed by required number of owners.\n @param to Destination address of Safe transaction.\n @param value Ether value of Safe transaction.\n @param data Data payload of Safe transaction.\n @param operation Operation type of Safe transaction.\n @param safeTxGas Gas that should be used for the Safe transaction.\n @param dataGas Gas costs for data used to trigger the safe transaction.\n @param gasPrice Gas price that should be used for the payment calculation.\n @param v Array of signature V values sorted by owner addresses.\n @param r Array of signature R values sorted by owner addresses.\n @param s Array of signature S values sorted by owner addresses.", - "id": 156, + "documentation": "@dev Allows to execute a Safe transaction confirmed by required number of owners.\n @param to Destination address of Safe transaction.\n @param value Ether value of Safe transaction.\n @param data Data payload of Safe transaction.\n @param operation Operation type of Safe transaction.\n @param safeTxGas Gas that should be used for the Safe transaction.\n @param dataGas Gas costs for data used to trigger the safe transaction.\n @param gasPrice Gas price that should be used for the payment calculation.\n @param gasToken Token address (or 0 if ETH) that is used for the payment.\n @param v Array of signature V values sorted by owner addresses.\n @param r Array of signature R values sorted by owner addresses.\n @param s Array of signature S values sorted by owner addresses.", + "id": 212, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [], - "name": "execPayTransaction", + "name": "execAndPayTransaction", "nodeType": "FunctionDefinition", "parameters": { - "id": 87, + "id": 114, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 65, + "id": 90, "name": "to", "nodeType": "VariableDeclaration", - "scope": 156, - "src": "1480:10:2", + "scope": 212, + "src": "1700:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5646,10 +6802,10 @@ "typeString": "address" }, "typeName": { - "id": 64, + "id": 89, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1480:7:2", + "src": "1700:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5660,11 +6816,11 @@ }, { "constant": false, - "id": 67, + "id": 92, "name": "value", "nodeType": "VariableDeclaration", - "scope": 156, - "src": "1501:13:2", + "scope": 212, + "src": "1721:13:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5672,10 +6828,10 @@ "typeString": "uint256" }, "typeName": { - "id": 66, + "id": 91, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1501:7:2", + "src": "1721:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5686,11 +6842,11 @@ }, { "constant": false, - "id": 69, + "id": 94, "name": "data", "nodeType": "VariableDeclaration", - "scope": 156, - "src": "1525:10:2", + "scope": 212, + "src": "1745:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5698,10 +6854,10 @@ "typeString": "bytes" }, "typeName": { - "id": 68, + "id": 93, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "1525:5:2", + "src": "1745:5:3", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -5712,26 +6868,26 @@ }, { "constant": false, - "id": 71, + "id": 96, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 156, - "src": "1546:24:2", + "scope": 212, + "src": "1766:24:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, "typeName": { "contractScope": null, - "id": 70, + "id": 95, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 5, - "src": "1546:14:2", + "referencedDeclaration": 29, + "src": "1766:14:3", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, @@ -5740,11 +6896,11 @@ }, { "constant": false, - "id": 73, + "id": 98, "name": "safeTxGas", "nodeType": "VariableDeclaration", - "scope": 156, - "src": "1581:17:2", + "scope": 212, + "src": "1801:17:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5752,10 +6908,10 @@ "typeString": "uint256" }, "typeName": { - "id": 72, + "id": 97, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1581:7:2", + "src": "1801:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5766,11 +6922,11 @@ }, { "constant": false, - "id": 75, + "id": 100, "name": "dataGas", "nodeType": "VariableDeclaration", - "scope": 156, - "src": "1608:15:2", + "scope": 212, + "src": "1828:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5778,10 +6934,10 @@ "typeString": "uint256" }, "typeName": { - "id": 74, + "id": 99, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1608:7:2", + "src": "1828:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5792,11 +6948,11 @@ }, { "constant": false, - "id": 77, + "id": 102, "name": "gasPrice", "nodeType": "VariableDeclaration", - "scope": 156, - "src": "1633:16:2", + "scope": 212, + "src": "1853:16:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5804,10 +6960,10 @@ "typeString": "uint256" }, "typeName": { - "id": 76, + "id": 101, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1633:7:2", + "src": "1853:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5818,11 +6974,37 @@ }, { "constant": false, - "id": 80, + "id": 104, + "name": "gasToken", + "nodeType": "VariableDeclaration", + "scope": 212, + "src": "1879:16:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 103, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "1879:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 107, "name": "v", "nodeType": "VariableDeclaration", - "scope": 156, - "src": "1659:9:2", + "scope": 212, + "src": "1905:9:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5831,19 +7013,19 @@ }, "typeName": { "baseType": { - "id": 78, + "id": 105, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "1659:5:2", + "src": "1905:5:3", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "id": 79, + "id": 106, "length": null, "nodeType": "ArrayTypeName", - "src": "1659:7:2", + "src": "1905:7:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr", "typeString": "uint8[]" @@ -5854,11 +7036,11 @@ }, { "constant": false, - "id": 83, + "id": 110, "name": "r", "nodeType": "VariableDeclaration", - "scope": 156, - "src": "1679:11:2", + "scope": 212, + "src": "1925:11:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5867,19 +7049,19 @@ }, "typeName": { "baseType": { - "id": 81, + "id": 108, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1679:7:2", + "src": "1925:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "id": 82, + "id": 109, "length": null, "nodeType": "ArrayTypeName", - "src": "1679:9:2", + "src": "1925:9:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", "typeString": "bytes32[]" @@ -5890,11 +7072,11 @@ }, { "constant": false, - "id": 86, + "id": 113, "name": "s", "nodeType": "VariableDeclaration", - "scope": 156, - "src": "1701:11:2", + "scope": 212, + "src": "1947:11:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5903,19 +7085,19 @@ }, "typeName": { "baseType": { - "id": 84, + "id": 111, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1701:7:2", + "src": "1947:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "id": 85, + "id": 112, "length": null, "nodeType": "ArrayTypeName", - "src": "1701:9:2", + "src": "1947:9:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", "typeString": "bytes32[]" @@ -5925,26 +7107,26 @@ "visibility": "internal" } ], - "src": "1470:248:2" + "src": "1690:274:3" }, "payable": false, "returnParameters": { - "id": 88, + "id": 115, "nodeType": "ParameterList", "parameters": [], - "src": "1738:0:2" + "src": "1984:0:3" }, - "scope": 324, - "src": "1443:1003:2", + "scope": 397, + "src": "1660:1367:3", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 173, + "id": 229, "nodeType": "Block", - "src": "3001:86:2", + "src": "3582:86:3", "statements": [ { "expression": { @@ -5953,7 +7135,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 171, + "id": 227, "isConstant": false, "isLValue": false, "isPure": false, @@ -5964,7 +7146,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 169, + "id": 225, "isConstant": false, "isLValue": false, "isPure": false, @@ -5975,19 +7157,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 167, + "id": 223, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 165, + "id": 221, "name": "executionGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 158, - "src": "3018:12:2", + "referencedDeclaration": 214, + "src": "3599:12:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5997,18 +7179,18 @@ "operator": "+", "rightExpression": { "argumentTypes": null, - "id": 166, + "id": 222, "name": "dataGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 160, - "src": "3033:7:2", + "referencedDeclaration": 216, + "src": "3614:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3018:22:2", + "src": "3599:22:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6018,18 +7200,18 @@ "operator": "+", "rightExpression": { "argumentTypes": null, - "id": 168, + "id": 224, "name": "PAYMENT_GAS_COSTS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 59, - "src": "3043:17:2", + "referencedDeclaration": 84, + "src": "3624:17:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3018:42:2", + "src": "3599:42:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6039,32 +7221,32 @@ "operator": "+", "rightExpression": { "argumentTypes": null, - "id": 170, + "id": 226, "name": "BASE_TX_GAS_COSTS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 56, - "src": "3063:17:2", + "referencedDeclaration": 81, + "src": "3644:17:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3018:62:2", + "src": "3599:62:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 164, - "id": 172, + "functionReturnParameters": 220, + "id": 228, "nodeType": "Return", - "src": "3011:69:2" + "src": "3592:69:3" } ] }, "documentation": "@dev Calculates the total gas costs for a safe transaction with the gas costs for the execution of the transaction.\n @param executionGas Gas costs for the execution of the safe transaction.\n @param dataGas Gas costs for data used to trigger the safe transaction.\n @return Total gas costs for the execution (this includes gas costs for the payment to tx.origin, base transaction and payload data).", - "id": 174, + "id": 230, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -6072,16 +7254,16 @@ "name": "totalGasCosts", "nodeType": "FunctionDefinition", "parameters": { - "id": 161, + "id": 217, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 158, + "id": 214, "name": "executionGas", "nodeType": "VariableDeclaration", - "scope": 174, - "src": "2901:20:2", + "scope": 230, + "src": "3482:20:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6089,10 +7271,10 @@ "typeString": "uint256" }, "typeName": { - "id": 157, + "id": 213, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2901:7:2", + "src": "3482:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6103,11 +7285,11 @@ }, { "constant": false, - "id": 160, + "id": 216, "name": "dataGas", "nodeType": "VariableDeclaration", - "scope": 174, - "src": "2923:15:2", + "scope": 230, + "src": "3504:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6115,10 +7297,10 @@ "typeString": "uint256" }, "typeName": { - "id": 159, + "id": 215, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2923:7:2", + "src": "3504:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6128,20 +7310,20 @@ "visibility": "internal" } ], - "src": "2900:39:2" + "src": "3481:39:3" }, "payable": false, "returnParameters": { - "id": 164, + "id": 220, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 163, + "id": 219, "name": "", "nodeType": "VariableDeclaration", - "scope": 174, - "src": "2987:7:2", + "scope": 230, + "src": "3568:7:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6149,10 +7331,10 @@ "typeString": "uint256" }, "typeName": { - "id": 162, + "id": 218, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2987:7:2", + "src": "3568:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6162,32 +7344,32 @@ "visibility": "internal" } ], - "src": "2986:9:2" + "src": "3567:9:3" }, - "scope": 324, - "src": "2878:209:2", + "scope": 397, + "src": "3459:209:3", "stateMutability": "pure", "superFunction": null, "visibility": "public" }, { "body": { - "id": 210, + "id": 277, "nodeType": "Block", - "src": "3938:147:2", + "src": "4738:255:3", "statements": [ { "assignments": [ - 190 + 246 ], "declarations": [ { "constant": false, - "id": 190, + "id": 246, "name": "startGas", "nodeType": "VariableDeclaration", - "scope": 211, - "src": "3948:16:2", + "scope": 278, + "src": "4748:16:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6195,10 +7377,10 @@ "typeString": "uint256" }, "typeName": { - "id": 189, + "id": 245, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3948:7:2", + "src": "4748:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6208,24 +7390,24 @@ "visibility": "internal" } ], - "id": 193, + "id": 249, "initialValue": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], - "id": 191, + "id": 247, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2389, - "src": "3967:7:2", + "referencedDeclaration": 2591, + "src": "4767:7:3", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 192, + "id": 248, "isConstant": false, "isLValue": false, "isPure": false, @@ -6233,14 +7415,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3967:9:2", + "src": "4767:9:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "3948:28:2" + "src": "4748:28:3" }, { "expression": { @@ -6251,12 +7433,12 @@ "arguments": [ { "argumentTypes": null, - "id": 196, + "id": 252, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 176, - "src": "4002:2:2", + "referencedDeclaration": 232, + "src": "4802:2:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6264,12 +7446,12 @@ }, { "argumentTypes": null, - "id": 197, + "id": 253, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 178, - "src": "4006:5:2", + "referencedDeclaration": 234, + "src": "4806:5:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6277,12 +7459,12 @@ }, { "argumentTypes": null, - "id": 198, + "id": 254, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 180, - "src": "4013:4:2", + "referencedDeclaration": 236, + "src": "4813:4:3", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -6290,14 +7472,14 @@ }, { "argumentTypes": null, - "id": 199, + "id": 255, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 182, - "src": "4019:9:2", + "referencedDeclaration": 238, + "src": "4819:9:3", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, @@ -6306,18 +7488,277 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 200, + "id": 256, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2389, - "src": "4030:7:2", + "referencedDeclaration": 2591, + "src": "4830:7:3", + "typeDescriptions": { + "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 257, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4830:9:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "id": 251, + "name": "execute", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 989, + "src": "4794:7:3", + "typeDescriptions": { + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) returns (bool)" + } + }, + "id": 258, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4794:46:3", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 250, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2601, + 2602 + ], + "referencedDeclaration": 2601, + "src": "4786:7:3", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 259, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4786:55:3", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 260, + "nodeType": "ExpressionStatement", + "src": "4786:55:3" + }, + { + "assignments": [ + 262 + ], + "declarations": [ + { + "constant": false, + "id": 262, + "name": "requiredGas", + "nodeType": "VariableDeclaration", + "scope": 278, + "src": "4851:19:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "typeName": { + "id": 261, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "4851:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 267, + "initialValue": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 266, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 263, + "name": "startGas", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 246, + "src": "4873:8:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "BinaryOperation", + "operator": "-", + "rightExpression": { + "argumentTypes": null, + "arguments": [], + "expression": { + "argumentTypes": [], + "id": 264, + "name": "gasleft", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2591, + "src": "4884:7:3", + "typeDescriptions": { + "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", + "typeString": "function () view returns (uint256)" + } + }, + "id": 265, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "4884:9:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "src": "4873:20:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "4851:42:3" + }, + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 272, + "name": "requiredGas", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 262, + "src": "4972:11:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 270, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2585, + "src": "4955:3:3", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 271, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4955:16:3", "typeDescriptions": { - "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", - "typeString": "function () view returns (uint256)" + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" } }, - "id": 201, + "id": 273, "isConstant": false, "isLValue": false, "isPure": false, @@ -6325,84 +7766,70 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4030:9:2", + "src": "4955:29:3", "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" } } ], "expression": { "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_enum$_Operation_$5", - "typeString": "enum Enum.Operation" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" } ], - "id": 195, - "name": "execute", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 860, - "src": "3994:7:2", + "id": 269, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4948:6:3", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$_t_uint256_$returns$_t_bool_$", - "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) returns (bool)" - } + "typeIdentifier": "t_type$_t_string_storage_ptr_$", + "typeString": "type(string storage pointer)" + }, + "typeName": "string" }, - "id": 202, + "id": 274, "isConstant": false, "isLValue": false, "isPure": false, - "kind": "functionCall", + "kind": "typeConversion", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3994:46:2", + "src": "4948:37:3", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_string_memory", + "typeString": "string memory" } } ], "expression": { "argumentTypes": [ { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_string_memory", + "typeString": "string memory" } ], - "id": 194, - "name": "require", + "id": 268, + "name": "revert", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2603, + 2604 ], - "referencedDeclaration": 2399, - "src": "3986:7:2", + "referencedDeclaration": 2604, + "src": "4941:6:3", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", + "typeString": "function (string memory) pure" } }, - "id": 203, + "id": 275, "isConstant": false, "isLValue": false, "isPure": false, @@ -6410,125 +7837,57 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3986:55:2", + "src": "4941:45:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 204, + "id": 276, "nodeType": "ExpressionStatement", - "src": "3986:55:2" - }, - { - "expression": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 208, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 205, - "name": "startGas", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 190, - "src": "4058:8:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "-", - "rightExpression": { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 206, - "name": "gasleft", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2389, - "src": "4069:7:2", - "typeDescriptions": { - "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", - "typeString": "function () view returns (uint256)" - } - }, - "id": 207, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4069:9:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "4058:20:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "functionReturnParameters": 188, - "id": 209, - "nodeType": "Return", - "src": "4051:27:2" + "src": "4941:45:3" } ] }, - "documentation": "@dev Allows to estimate a Safe transaction. \n This method can only be used by the safe itself in a transaction. When estimating set `from` to the address of the safe.\n Since the `estimateGas` function includes refunds, call this method to get an estimated of the costs that are deducted from the safe with `execPayTransaction`\n @param to Destination address of Safe transaction.\n @param value Ether value of Safe transaction.\n @param data Data payload of Safe transaction.\n @param operation Operation type of Safe transaction.\n @return Estimate without refunds and overhead fees (base transaction and payload data gas costs).", - "id": 211, + "documentation": "@dev Allows to estimate a Safe transaction. \n This method is only meant for estimation purpose, therfore two different protection mechanism against execution in a transaction have been made:\n 1.) The method can only be called from the safe itself\n 2.) The response is returned with a revert\n When estimating set `from` to the address of the safe.\n Since the `estimateGas` function includes refunds, call this method to get an estimated of the costs that are deducted from the safe with `execAndPayTransaction`\n @param to Destination address of Safe transaction.\n @param value Ether value of Safe transaction.\n @param data Data payload of Safe transaction.\n @param operation Operation type of Safe transaction.\n @return Estimate without refunds and overhead fees (base transaction and payload data gas costs).", + "id": 278, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 185, + "id": 241, "modifierName": { "argumentTypes": null, - "id": 184, + "id": 240, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1358, - "src": "3897:10:2", + "referencedDeclaration": 1618, + "src": "4697:10:3", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "3897:10:2" + "src": "4697:10:3" } ], "name": "requiredTxGas", "nodeType": "FunctionDefinition", "parameters": { - "id": 183, + "id": 239, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 176, + "id": 232, "name": "to", "nodeType": "VariableDeclaration", - "scope": 211, - "src": "3809:10:2", + "scope": 278, + "src": "4609:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6536,10 +7895,10 @@ "typeString": "address" }, "typeName": { - "id": 175, + "id": 231, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3809:7:2", + "src": "4609:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6550,11 +7909,11 @@ }, { "constant": false, - "id": 178, + "id": 234, "name": "value", "nodeType": "VariableDeclaration", - "scope": 211, - "src": "3821:13:2", + "scope": 278, + "src": "4621:13:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6562,10 +7921,10 @@ "typeString": "uint256" }, "typeName": { - "id": 177, + "id": 233, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3821:7:2", + "src": "4621:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6576,11 +7935,11 @@ }, { "constant": false, - "id": 180, + "id": 236, "name": "data", "nodeType": "VariableDeclaration", - "scope": 211, - "src": "3836:10:2", + "scope": 278, + "src": "4636:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6588,10 +7947,10 @@ "typeString": "bytes" }, "typeName": { - "id": 179, + "id": 235, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "3836:5:2", + "src": "4636:5:3", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -6602,26 +7961,26 @@ }, { "constant": false, - "id": 182, + "id": 238, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 211, - "src": "3848:24:2", + "scope": 278, + "src": "4648:24:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, "typeName": { "contractScope": null, - "id": 181, + "id": 237, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 5, - "src": "3848:14:2", + "referencedDeclaration": 29, + "src": "4648:14:3", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, @@ -6629,20 +7988,20 @@ "visibility": "internal" } ], - "src": "3808:65:2" + "src": "4608:65:3" }, "payable": false, "returnParameters": { - "id": 188, + "id": 244, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 187, + "id": 243, "name": "", "nodeType": "VariableDeclaration", - "scope": 211, - "src": "3925:7:2", + "scope": 278, + "src": "4725:7:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6650,10 +8009,10 @@ "typeString": "uint256" }, "typeName": { - "id": 186, + "id": 242, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3925:7:2", + "src": "4725:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6663,32 +8022,32 @@ "visibility": "internal" } ], - "src": "3924:9:2" + "src": "4724:9:3" }, - "scope": 324, - "src": "3786:299:2", + "scope": 397, + "src": "4586:407:3", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 282, + "id": 349, "nodeType": "Block", - "src": "4195:437:2", + "src": "5103:437:3", "statements": [ { "assignments": [ - 226 + 293 ], "declarations": [ { "constant": false, - "id": 226, + "id": 293, "name": "lastOwner", "nodeType": "VariableDeclaration", - "scope": 283, - "src": "4257:17:2", + "scope": 350, + "src": "5165:17:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6696,10 +8055,10 @@ "typeString": "address" }, "typeName": { - "id": 225, + "id": 292, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4257:7:2", + "src": "5165:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6709,21 +8068,21 @@ "visibility": "internal" } ], - "id": 230, + "id": 297, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", - "id": 228, + "id": 295, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4285:1:2", + "src": "5193:1:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -6739,20 +8098,20 @@ "typeString": "int_const 0" } ], - "id": 227, + "id": 294, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "4277:7:2", + "src": "5185:7:3", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 229, + "id": 296, "isConstant": false, "isLValue": false, "isPure": true, @@ -6760,25 +8119,25 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4277:10:2", + "src": "5185:10:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "4257:30:2" + "src": "5165:30:3" }, { "assignments": [], "declarations": [ { "constant": false, - "id": 232, + "id": 299, "name": "currentOwner", "nodeType": "VariableDeclaration", - "scope": 283, - "src": "4297:20:2", + "scope": 350, + "src": "5205:20:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6786,10 +8145,10 @@ "typeString": "address" }, "typeName": { - "id": 231, + "id": 298, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4297:7:2", + "src": "5205:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6799,21 +8158,21 @@ "visibility": "internal" } ], - "id": 233, + "id": 300, "initialValue": null, "nodeType": "VariableDeclarationStatement", - "src": "4297:20:2" + "src": "5205:20:3" }, { "assignments": [], "declarations": [ { "constant": false, - "id": 235, + "id": 302, "name": "i", "nodeType": "VariableDeclaration", - "scope": 283, - "src": "4327:9:2", + "scope": 350, + "src": "5235:9:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6821,10 +8180,10 @@ "typeString": "uint256" }, "typeName": { - "id": 234, + "id": 301, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4327:7:2", + "src": "5235:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6834,33 +8193,33 @@ "visibility": "internal" } ], - "id": 236, + "id": 303, "initialValue": null, "nodeType": "VariableDeclarationStatement", - "src": "4327:9:2" + "src": "5235:9:3" }, { "body": { - "id": 280, + "id": 347, "nodeType": "Block", - "src": "4420:206:2", + "src": "5328:206:3", "statements": [ { "expression": { "argumentTypes": null, - "id": 260, + "id": 327, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 247, + "id": 314, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 232, - "src": "4434:12:2", + "referencedDeclaration": 299, + "src": "5342:12:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6873,12 +8232,12 @@ "arguments": [ { "argumentTypes": null, - "id": 249, + "id": 316, "name": "hash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 213, - "src": "4459:4:2", + "referencedDeclaration": 280, + "src": "5367:4:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -6888,26 +8247,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 250, + "id": 317, "name": "v", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 216, - "src": "4465:1:2", + "referencedDeclaration": 283, + "src": "5373:1:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", "typeString": "uint8[] memory" } }, - "id": 252, + "id": 319, "indexExpression": { "argumentTypes": null, - "id": 251, + "id": 318, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 235, - "src": "4467:1:2", + "referencedDeclaration": 302, + "src": "5375:1:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6918,7 +8277,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4465:4:2", + "src": "5373:4:3", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -6928,26 +8287,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 253, + "id": 320, "name": "r", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 219, - "src": "4471:1:2", + "referencedDeclaration": 286, + "src": "5379:1:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", "typeString": "bytes32[] memory" } }, - "id": 255, + "id": 322, "indexExpression": { "argumentTypes": null, - "id": 254, + "id": 321, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 235, - "src": "4473:1:2", + "referencedDeclaration": 302, + "src": "5381:1:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6958,7 +8317,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4471:4:2", + "src": "5379:4:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -6968,26 +8327,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 256, + "id": 323, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 222, - "src": "4477:1:2", + "referencedDeclaration": 289, + "src": "5385:1:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", "typeString": "bytes32[] memory" } }, - "id": 258, + "id": 325, "indexExpression": { "argumentTypes": null, - "id": 257, + "id": 324, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 235, - "src": "4479:1:2", + "referencedDeclaration": 302, + "src": "5387:1:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6998,7 +8357,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4477:4:2", + "src": "5385:4:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -7024,18 +8383,18 @@ "typeString": "bytes32" } ], - "id": 248, + "id": 315, "name": "ecrecover", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2388, - "src": "4449:9:2", + "referencedDeclaration": 2590, + "src": "5357:9:3", "typeDescriptions": { "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)" } }, - "id": 259, + "id": 326, "isConstant": false, "isLValue": false, "isPure": false, @@ -7043,21 +8402,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4449:33:2", + "src": "5357:33:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4434:48:2", + "src": "5342:48:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 261, + "id": 328, "nodeType": "ExpressionStatement", - "src": "4434:48:2" + "src": "5342:48:3" }, { "expression": { @@ -7069,7 +8428,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 267, + "id": 334, "isConstant": false, "isLValue": false, "isPure": false, @@ -7078,26 +8437,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 263, + "id": 330, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "4504:6:2", + "referencedDeclaration": 1114, + "src": "5412:6:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 265, + "id": 332, "indexExpression": { "argumentTypes": null, - "id": 264, + "id": 331, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 232, - "src": "4511:12:2", + "referencedDeclaration": 299, + "src": "5419:12:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7108,7 +8467,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4504:20:2", + "src": "5412:20:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7119,14 +8478,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 266, + "id": 333, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4528:1:2", + "src": "5436:1:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -7134,7 +8493,7 @@ }, "value": "0" }, - "src": "4504:25:2", + "src": "5412:25:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7148,21 +8507,21 @@ "typeString": "bool" } ], - "id": 262, + "id": 329, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "4496:7:2", + "referencedDeclaration": 2601, + "src": "5404:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 268, + "id": 335, "isConstant": false, "isLValue": false, "isPure": false, @@ -7170,15 +8529,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4496:34:2", + "src": "5404:34:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 269, + "id": 336, "nodeType": "ExpressionStatement", - "src": "4496:34:2" + "src": "5404:34:3" }, { "expression": { @@ -7190,19 +8549,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 273, + "id": 340, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 271, + "id": 338, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 232, - "src": "4552:12:2", + "referencedDeclaration": 299, + "src": "5460:12:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7212,18 +8571,18 @@ "operator": ">", "rightExpression": { "argumentTypes": null, - "id": 272, + "id": 339, "name": "lastOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 226, - "src": "4567:9:2", + "referencedDeclaration": 293, + "src": "5475:9:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4552:24:2", + "src": "5460:24:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7237,21 +8596,21 @@ "typeString": "bool" } ], - "id": 270, + "id": 337, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "4544:7:2", + "referencedDeclaration": 2601, + "src": "5452:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 274, + "id": 341, "isConstant": false, "isLValue": false, "isPure": false, @@ -7259,32 +8618,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4544:33:2", + "src": "5452:33:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 275, + "id": 342, "nodeType": "ExpressionStatement", - "src": "4544:33:2" + "src": "5452:33:3" }, { "expression": { "argumentTypes": null, - "id": 278, + "id": 345, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 276, + "id": 343, "name": "lastOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 226, - "src": "4591:9:2", + "referencedDeclaration": 293, + "src": "5499:9:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7294,26 +8653,26 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 277, + "id": 344, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 232, - "src": "4603:12:2", + "referencedDeclaration": 299, + "src": "5511:12:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4591:24:2", + "src": "5499:24:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 279, + "id": 346, "nodeType": "ExpressionStatement", - "src": "4591:24:2" + "src": "5499:24:3" } ] }, @@ -7323,19 +8682,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 243, + "id": 310, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 241, + "id": 308, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 235, - "src": "4400:1:2", + "referencedDeclaration": 302, + "src": "5308:1:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7345,40 +8704,40 @@ "operator": "<", "rightExpression": { "argumentTypes": null, - "id": 242, + "id": 309, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 989, - "src": "4404:9:2", + "referencedDeclaration": 1118, + "src": "5312:9:3", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "4400:13:2", + "src": "5308:13:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 281, + "id": 348, "initializationExpression": { "expression": { "argumentTypes": null, - "id": 239, + "id": 306, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 237, + "id": 304, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 235, - "src": "4393:1:2", + "referencedDeclaration": 302, + "src": "5301:1:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7389,14 +8748,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "30", - "id": 238, + "id": 305, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4397:1:2", + "src": "5305:1:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -7404,20 +8763,20 @@ }, "value": "0" }, - "src": "4393:5:2", + "src": "5301:5:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 240, + "id": 307, "nodeType": "ExpressionStatement", - "src": "4393:5:2" + "src": "5301:5:3" }, "loopExpression": { "expression": { "argumentTypes": null, - "id": 245, + "id": 312, "isConstant": false, "isLValue": false, "isPure": false, @@ -7425,15 +8784,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "4415:3:2", + "src": "5323:3:3", "subExpression": { "argumentTypes": null, - "id": 244, + "id": 311, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 235, - "src": "4415:1:2", + "referencedDeclaration": 302, + "src": "5323:1:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7444,17 +8803,17 @@ "typeString": "uint256" } }, - "id": 246, + "id": 313, "nodeType": "ExpressionStatement", - "src": "4415:3:2" + "src": "5323:3:3" }, "nodeType": "ForStatement", - "src": "4388:238:2" + "src": "5296:238:3" } ] }, "documentation": null, - "id": 283, + "id": 350, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -7462,16 +8821,16 @@ "name": "checkHash", "nodeType": "FunctionDefinition", "parameters": { - "id": 223, + "id": 290, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 213, + "id": 280, "name": "hash", "nodeType": "VariableDeclaration", - "scope": 283, - "src": "4110:12:2", + "scope": 350, + "src": "5018:12:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7479,10 +8838,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 212, + "id": 279, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "4110:7:2", + "src": "5018:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -7493,11 +8852,11 @@ }, { "constant": false, - "id": 216, + "id": 283, "name": "v", "nodeType": "VariableDeclaration", - "scope": 283, - "src": "4124:9:2", + "scope": 350, + "src": "5032:9:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7506,19 +8865,19 @@ }, "typeName": { "baseType": { - "id": 214, + "id": 281, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "4124:5:2", + "src": "5032:5:3", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "id": 215, + "id": 282, "length": null, "nodeType": "ArrayTypeName", - "src": "4124:7:2", + "src": "5032:7:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr", "typeString": "uint8[]" @@ -7529,11 +8888,11 @@ }, { "constant": false, - "id": 219, + "id": 286, "name": "r", "nodeType": "VariableDeclaration", - "scope": 283, - "src": "4135:11:2", + "scope": 350, + "src": "5043:11:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7542,19 +8901,19 @@ }, "typeName": { "baseType": { - "id": 217, + "id": 284, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "4135:7:2", + "src": "5043:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "id": 218, + "id": 285, "length": null, "nodeType": "ArrayTypeName", - "src": "4135:9:2", + "src": "5043:9:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", "typeString": "bytes32[]" @@ -7565,11 +8924,11 @@ }, { "constant": false, - "id": 222, + "id": 289, "name": "s", "nodeType": "VariableDeclaration", - "scope": 283, - "src": "4148:11:2", + "scope": 350, + "src": "5056:11:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7578,19 +8937,19 @@ }, "typeName": { "baseType": { - "id": 220, + "id": 287, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "4148:7:2", + "src": "5056:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "id": 221, + "id": 288, "length": null, "nodeType": "ArrayTypeName", - "src": "4148:9:2", + "src": "5056:9:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", "typeString": "bytes32[]" @@ -7600,26 +8959,26 @@ "visibility": "internal" } ], - "src": "4109:51:2" + "src": "5017:51:3" }, "payable": false, "returnParameters": { - "id": 224, + "id": 291, "nodeType": "ParameterList", "parameters": [], - "src": "4195:0:2" + "src": "5103:0:3" }, - "scope": 324, - "src": "4091:541:2", + "scope": 397, + "src": "4999:541:3", "stateMutability": "view", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 322, + "id": 395, "nodeType": "Block", - "src": "5448:126:2", + "src": "6464:176:3", "statements": [ { "expression": { @@ -7630,290 +8989,359 @@ "arguments": [ { "argumentTypes": null, - "hexValue": "30783139", - "id": 306, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5480:4:2", - "subdenomination": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30783139", + "id": 377, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6526:4:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_25_by_1", + "typeString": "int_const 25" + }, + "value": "0x19" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_25_by_1", + "typeString": "int_const 25" + } + ], + "id": 376, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6521:4:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes1_$", + "typeString": "type(bytes1)" + }, + "typeName": "byte" + }, + "id": 378, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6521:10:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 380, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "6538:1:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 379, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "6533:4:3", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes1_$", + "typeString": "type(bytes1)" + }, + "typeName": "byte" + }, + "id": 381, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "6533:7:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + { + "argumentTypes": null, + "id": 382, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2631, + "src": "6542:4:3", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafePersonalEdition_$397", + "typeString": "contract GnosisSafePersonalEdition" + } + }, + { + "argumentTypes": null, + "id": 383, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 352, + "src": "6548:2:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 384, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 354, + "src": "6552:5:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 385, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 356, + "src": "6559:4:3", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 386, + "name": "operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 358, + "src": "6565:9:3", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + }, + { + "argumentTypes": null, + "id": 387, + "name": "safeTxGas", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 360, + "src": "6576:9:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 388, + "name": "dataGas", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 362, + "src": "6587:7:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 389, + "name": "gasPrice", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 364, + "src": "6596:8:3", "typeDescriptions": { - "typeIdentifier": "t_rational_25_by_1", - "typeString": "int_const 25" - }, - "value": "0x19" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_25_by_1", - "typeString": "int_const 25" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } - ], - "id": 305, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "5475:4:2", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes1_$", - "typeString": "type(bytes1)" }, - "typeName": "byte" - }, - "id": 307, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "5475:10:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - } - }, - { - "argumentTypes": null, - "arguments": [ { "argumentTypes": null, - "hexValue": "30", - "id": 309, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "5492:1:2", - "subdenomination": null, + "id": 390, + "name": "gasToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 366, + "src": "6606:8:3", "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 391, + "name": "_nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 368, + "src": "6616:6:3", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } } ], "expression": { "argumentTypes": [ { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + { + "typeIdentifier": "t_contract$_GnosisSafePersonalEdition_$397", + "typeString": "contract GnosisSafePersonalEdition" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } ], - "id": 308, + "expression": { + "argumentTypes": null, + "id": 374, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2585, + "src": "6504:3:3", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 375, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "5487:4:2", + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "6504:16:3", "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes1_$", - "typeString": "type(bytes1)" - }, - "typeName": "byte" + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } }, - "id": 310, + "id": 392, "isConstant": false, "isLValue": false, - "isPure": true, - "kind": "typeConversion", + "isPure": false, + "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5487:7:2", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - } - }, - { - "argumentTypes": null, - "id": 311, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2423, - "src": "5496:4:2", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafePersonalEdition_$324", - "typeString": "contract GnosisSafePersonalEdition" - } - }, - { - "argumentTypes": null, - "id": 312, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 285, - "src": "5502:2:2", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 313, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 287, - "src": "5506:5:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 314, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 289, - "src": "5513:4:2", + "src": "6504:119:3", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } - }, - { - "argumentTypes": null, - "id": 315, - "name": "operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 291, - "src": "5519:9:2", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", - "typeString": "enum Enum.Operation" - } - }, - { - "argumentTypes": null, - "id": 316, - "name": "safeTxGas", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 293, - "src": "5530:9:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 317, - "name": "dataGas", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 295, - "src": "5541:7:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 318, - "name": "gasPrice", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 297, - "src": "5550:8:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 319, - "name": "_nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 299, - "src": "5560:6:2", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } } ], "expression": { "argumentTypes": [ - { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - }, - { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - }, - { - "typeIdentifier": "t_contract$_GnosisSafePersonalEdition_$324", - "typeString": "contract GnosisSafePersonalEdition" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_enum$_Operation_$5", - "typeString": "enum Enum.Operation" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" } ], - "id": 304, + "id": 373, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2390, - "src": "5465:9:2", + "referencedDeclaration": 2592, + "src": "6481:9:3", "typeDescriptions": { "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", "typeString": "function () pure returns (bytes32)" } }, - "id": 320, + "id": 393, "isConstant": false, "isLValue": false, "isPure": false, @@ -7921,21 +9349,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5465:102:2", + "src": "6481:152:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "functionReturnParameters": 303, - "id": 321, + "functionReturnParameters": 372, + "id": 394, "nodeType": "Return", - "src": "5458:109:2" + "src": "6474:159:3" } ] }, - "documentation": "@dev Returns hash to be signed by owners.\n @param to Destination address.\n @param value Ether value.\n @param data Data payload.\n @param operation Operation type.\n @param safeTxGas Fas that should be used for the safe transaction.\n @param dataGas Gas costs for data used to trigger the safe transaction.\n @param gasPrice Maximum gas price that should be used for this transaction.\n @param _nonce Transaction nonce.\n @return Transaction hash.", - "id": 323, + "documentation": "@dev Returns hash to be signed by owners.\n @param to Destination address.\n @param value Ether value.\n @param data Data payload.\n @param operation Operation type.\n @param safeTxGas Fas that should be used for the safe transaction.\n @param dataGas Gas costs for data used to trigger the safe transaction.\n @param gasPrice Maximum gas price that should be used for this transaction.\n @param gasToken Token address (or 0 if ETH) that is used for the payment.\n @param _nonce Transaction nonce.\n @return Transaction hash.", + "id": 396, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -7943,16 +9371,16 @@ "name": "getTransactionHash", "nodeType": "FunctionDefinition", "parameters": { - "id": 300, + "id": 369, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 285, + "id": 352, "name": "to", "nodeType": "VariableDeclaration", - "scope": 323, - "src": "5187:10:2", + "scope": 396, + "src": "6177:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7960,10 +9388,10 @@ "typeString": "address" }, "typeName": { - "id": 284, + "id": 351, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5187:7:2", + "src": "6177:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7974,11 +9402,11 @@ }, { "constant": false, - "id": 287, + "id": 354, "name": "value", "nodeType": "VariableDeclaration", - "scope": 323, - "src": "5208:13:2", + "scope": 396, + "src": "6198:13:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7986,10 +9414,10 @@ "typeString": "uint256" }, "typeName": { - "id": 286, + "id": 353, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5208:7:2", + "src": "6198:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8000,11 +9428,11 @@ }, { "constant": false, - "id": 289, + "id": 356, "name": "data", "nodeType": "VariableDeclaration", - "scope": 323, - "src": "5232:10:2", + "scope": 396, + "src": "6222:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8012,10 +9440,10 @@ "typeString": "bytes" }, "typeName": { - "id": 288, + "id": 355, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "5232:5:2", + "src": "6222:5:3", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -8026,26 +9454,26 @@ }, { "constant": false, - "id": 291, + "id": 358, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 323, - "src": "5253:24:2", + "scope": 396, + "src": "6243:24:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, "typeName": { "contractScope": null, - "id": 290, + "id": 357, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 5, - "src": "5253:14:2", + "referencedDeclaration": 29, + "src": "6243:14:3", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, @@ -8054,11 +9482,11 @@ }, { "constant": false, - "id": 293, + "id": 360, "name": "safeTxGas", "nodeType": "VariableDeclaration", - "scope": 323, - "src": "5288:17:2", + "scope": 396, + "src": "6278:17:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8066,10 +9494,10 @@ "typeString": "uint256" }, "typeName": { - "id": 292, + "id": 359, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5288:7:2", + "src": "6278:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8080,11 +9508,11 @@ }, { "constant": false, - "id": 295, + "id": 362, "name": "dataGas", "nodeType": "VariableDeclaration", - "scope": 323, - "src": "5316:15:2", + "scope": 396, + "src": "6306:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8092,10 +9520,10 @@ "typeString": "uint256" }, "typeName": { - "id": 294, + "id": 361, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5316:7:2", + "src": "6306:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8106,11 +9534,11 @@ }, { "constant": false, - "id": 297, + "id": 364, "name": "gasPrice", "nodeType": "VariableDeclaration", - "scope": 323, - "src": "5342:16:2", + "scope": 396, + "src": "6332:16:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8118,10 +9546,10 @@ "typeString": "uint256" }, "typeName": { - "id": 296, + "id": 363, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5342:7:2", + "src": "6332:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8132,11 +9560,37 @@ }, { "constant": false, - "id": 299, + "id": 366, + "name": "gasToken", + "nodeType": "VariableDeclaration", + "scope": 396, + "src": "6359:16:3", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 365, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "6359:7:3", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 368, "name": "_nonce", "nodeType": "VariableDeclaration", - "scope": 323, - "src": "5369:14:2", + "scope": 396, + "src": "6385:14:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8144,10 +9598,10 @@ "typeString": "uint256" }, "typeName": { - "id": 298, + "id": 367, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5369:7:2", + "src": "6385:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8157,20 +9611,20 @@ "visibility": "internal" } ], - "src": "5177:212:2" + "src": "6167:238:3" }, "payable": false, "returnParameters": { - "id": 303, + "id": 372, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 302, + "id": 371, "name": "", "nodeType": "VariableDeclaration", - "scope": 323, - "src": "5435:7:2", + "scope": 396, + "src": "6451:7:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8178,10 +9632,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 301, + "id": 370, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "5435:7:2", + "src": "6451:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -8191,63 +9645,45 @@ "visibility": "internal" } ], - "src": "5434:9:2" + "src": "6450:9:3" }, - "scope": 324, - "src": "5150:424:2", + "scope": 397, + "src": "6140:500:3", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 325, - "src": "314:5262:2" + "scope": 398, + "src": "449:6193:3" } ], - "src": "0:5577:2" + "src": "0:6643:3" }, "compiler": { "name": "solc", - "version": "0.4.23+commit.124ca40d.Emscripten.clang" + "version": "0.4.24+commit.e67f0147.Emscripten.clang" }, "networks": { "4": { "events": {}, "links": {}, - "address": "0xfa2be236995d09b0ee494b9e40637d661ff40494", - "transactionHash": "0x1db063ae298dedb887690b77fc973264fd51dfbee9fdb699c430821998894113" - }, - "1525950336085": { - "events": {}, - "links": {}, - "address": "0x1f8829f66b8ac7a6893109dd298007f5dd3bcadf", - "transactionHash": "0x9a582bc25c7705ede926f13bef0ba8fa76176d0ec80dc0871e1b28d87382f545" + "address": "0x7516b591cfd6ba7c22caa25c011d7b815c95fc5d", + "transactionHash": "0x33ad07a6c877666e75a6297bf0c86ba5c1e4ef02e72027337a88a649bc38309b" }, - "1526283540628": { - "events": {}, - "links": {}, - "address": "0xad5d0371132b0959508b44c6221e6bc4de8df987", - "transactionHash": "0x9a582bc25c7705ede926f13bef0ba8fa76176d0ec80dc0871e1b28d87382f545" - }, - "1526478212260": { - "events": {}, - "links": {}, - "address": "0x6cd3878c8fce094d881e37ed48a6eb90bcea5ef7", - "transactionHash": "0xd404a4c4c3ff550c031b238e6df539cbbd9d5727574d8446d0c40f2abf4638b1" - }, - "1526973574996": { + "1527316019334": { "events": {}, "links": {}, - "address": "0x38a0e040615367af9cd0626ef96441785f82f5c8", - "transactionHash": "0xd404a4c4c3ff550c031b238e6df539cbbd9d5727574d8446d0c40f2abf4638b1" + "address": "0x39aa0fab18dc485e96591b3317ea593feb990da0", + "transactionHash": "0x66ae6f871105a2bab973870a91d508ce3c26f29662aa7a139faf53975c3ba7b7" }, - "1527316019334": { + "1527420696956": { "events": {}, "links": {}, - "address": "0x38c3ac4274e76c52a9b9f7f00ecf062750b1b4dc", - "transactionHash": "0xd404a4c4c3ff550c031b238e6df539cbbd9d5727574d8446d0c40f2abf4638b1" + "address": "0x2f6ebb40061dab74d569509841ab8397f77f9168", + "transactionHash": "0x0cb0ab0185325fd4e5ef5dfbf473d6cbb278fa82fcd1a0c0ecc0d1a2b8c0b5af" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-26T06:28:28.339Z" + "updatedAt": "2018-05-27T11:31:46.238Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/GnosisSafeStateChannelEdition.json b/safe-contracts/build/contracts/GnosisSafeStateChannelEdition.json deleted file mode 100644 index 52a0b46263..0000000000 --- a/safe-contracts/build/contracts/GnosisSafeStateChannelEdition.json +++ /dev/null @@ -1,5469 +0,0 @@ -{ - "contractName": "GnosisSafeStateChannelEdition", - "abi": [ - { - "constant": true, - "inputs": [ - { - "name": "", - "type": "uint256" - } - ], - "name": "owners", - "outputs": [ - { - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "owner", - "type": "address" - }, - { - "name": "_threshold", - "type": "uint8" - } - ], - "name": "addOwner", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "module", - "type": "address" - } - ], - "name": "addModule", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "owner", - "type": "address" - } - ], - "name": "isOwner", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "threshold", - "outputs": [ - { - "name": "", - "type": "uint8" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "", - "type": "address" - } - ], - "name": "isModule", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "oldOwnerIndex", - "type": "uint256" - }, - { - "name": "oldOwner", - "type": "address" - }, - { - "name": "newOwner", - "type": "address" - } - ], - "name": "replaceOwner", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "moduleIndex", - "type": "uint256" - }, - { - "name": "module", - "type": "address" - } - ], - "name": "removeModule", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_masterCopy", - "type": "address" - } - ], - "name": "changeMasterCopy", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "", - "type": "uint256" - } - ], - "name": "modules", - "outputs": [ - { - "name": "", - "type": "address" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "ownerIndex", - "type": "uint256" - }, - { - "name": "owner", - "type": "address" - }, - { - "name": "_threshold", - "type": "uint8" - } - ], - "name": "removeOwner", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_owners", - "type": "address[]" - }, - { - "name": "_threshold", - "type": "uint8" - }, - { - "name": "to", - "type": "address" - }, - { - "name": "data", - "type": "bytes" - } - ], - "name": "setup", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "getOwners", - "outputs": [ - { - "name": "", - "type": "address[]" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "NAME", - "outputs": [ - { - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "to", - "type": "address" - }, - { - "name": "value", - "type": "uint256" - }, - { - "name": "data", - "type": "bytes" - }, - { - "name": "operation", - "type": "uint8" - } - ], - "name": "executeModule", - "outputs": [ - { - "name": "success", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "getModules", - "outputs": [ - { - "name": "", - "type": "address[]" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": false, - "inputs": [ - { - "name": "_threshold", - "type": "uint8" - } - ], - "name": "changeThreshold", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "", - "type": "bytes32" - } - ], - "name": "isExecuted", - "outputs": [ - { - "name": "", - "type": "bool" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "constant": true, - "inputs": [], - "name": "VERSION", - "outputs": [ - { - "name": "", - "type": "string" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, - { - "payable": true, - "stateMutability": "payable", - "type": "fallback" - }, - { - "anonymous": false, - "inputs": [ - { - "indexed": false, - "name": "newContract", - "type": "address" - } - ], - "name": "ContractCreation", - "type": "event" - }, - { - "constant": false, - "inputs": [ - { - "name": "to", - "type": "address" - }, - { - "name": "value", - "type": "uint256" - }, - { - "name": "data", - "type": "bytes" - }, - { - "name": "operation", - "type": "uint8" - }, - { - "name": "nonce", - "type": "uint256" - }, - { - "name": "v", - "type": "uint8[]" - }, - { - "name": "r", - "type": "bytes32[]" - }, - { - "name": "s", - "type": "bytes32[]" - } - ], - "name": "executeTransaction", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - }, - { - "constant": true, - "inputs": [ - { - "name": "to", - "type": "address" - }, - { - "name": "value", - "type": "uint256" - }, - { - "name": "data", - "type": "bytes" - }, - { - "name": "operation", - "type": "uint8" - }, - { - "name": "nonce", - "type": "uint256" - } - ], - "name": "getTransactionHash", - "outputs": [ - { - "name": "", - "type": "bytes32" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - } - ], - "bytecode": "0x608060405234801561001057600080fd5b50612177806100206000396000f30060806040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063025e7c271461011f5780630e5229b01461018c5780631ed86f19146101dc5780632b5000411461021f5780632f54bf6e146102e557806342cde4e81461034057806342f6e3891461037157806354e99c6e146103cc578063782e46be146104395780637c6401d3146105ac5780637de7edef146105f957806381b2248a1461063c578063842b954e146106a9578063a04222e114610703578063a0e67e2b146107dc578063a3f4df7e14610848578063b021640a146108d8578063b2494df314610990578063b7f3358d146109fc578063e52cb36a14610a2c578063ffa1ad7414610a75575b005b34801561012b57600080fd5b5061014a60048036038101908080359060200190929190505050610b05565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561019857600080fd5b506101da600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050610b43565b005b3480156101e857600080fd5b5061021d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ce6565b005b34801561022b57600080fd5b506102c7600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050610e60565b60405180826000191660001916815260200191505060405180910390f35b3480156102f157600080fd5b50610326600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061107c565b604051808215151515815260200191505060405180910390f35b34801561034c57600080fd5b506103556110d2565b604051808260ff1660ff16815260200191505060405180910390f35b34801561037d57600080fd5b506103b2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110e9565b604051808215151515815260200191505060405180910390f35b3480156103d857600080fd5b5061043760048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611109565b005b34801561044557600080fd5b506105aa600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050611342565b005b3480156105b857600080fd5b506105f760048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506113eb565b005b34801561060557600080fd5b5061063a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115a1565b005b34801561064857600080fd5b5061066760048036038101908080359060200190929190505050611644565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156106b557600080fd5b5061070160048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050611682565b005b34801561070f57600080fd5b506107da60048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061187d565b005b3480156107e857600080fd5b506107f1611897565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610834578082015181840152602081019050610819565b505050509050019250505060405180910390f35b34801561085457600080fd5b5061085d611925565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561089d578082015181840152602081019050610882565b50505050905090810190601f1680156108ca5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156108e457600080fd5b50610976600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050611985565b604051808215151515815260200191505060405180910390f35b34801561099c57600080fd5b506109a56119f6565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156109e85780820151818401526020810190506109cd565b505050509050019250505060405180910390f35b348015610a0857600080fd5b50610a2a600480360381019080803560ff169060200190929190505050611a84565b005b348015610a3857600080fd5b50610a5b6004803603810190808035600019169060200190929190505050611b06565b604051808215151515815260200191505060405180910390f35b348015610a8157600080fd5b50610a8a611b26565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610aca578082015181840152602081019050610aaf565b50505050905090810190601f168015610af75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600381815481101515610b1457fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b7d57600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614151515610ba357600080fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610bfc57600080fd5b60038290806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506001600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508060ff16600460009054906101000a900460ff1660ff16141515610ce257610ce181611a84565b5b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610d2057600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610d4657600080fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610d9f57600080fd5b60018190806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f01000000000000000000000000000000000000000000000000000000000000000230888888888860405180897effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083835b6020831015156110015780518252602082019150602081019050602083039250610fdc565b6001836020036101000a03801982511681845116808217855250505050505090500183600281111561102f57fe5b60ff167f0100000000000000000000000000000000000000000000000000000000000000028152600101828152602001985050505050505050506040518091039020905095945050505050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600460009054906101000a900460ff16905090565b60026020528060005260406000206000915054906101000a900460ff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561114357600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561116957600080fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156111c257600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166003848154811015156111e857fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561123557600080fd5b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550806003848154811015156112f557fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b60006113518989898989610e60565b905060066000826000191660001916815260200190815260200160002060009054906101000a900460ff1615151561138857600080fd5b61139481858585611b5f565b600160066000836000191660001916815260200190815260200160002060006101000a81548160ff0219169083151502179055506113d5898989895a611cf9565b15156113e057600080fd5b505050505050505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561142557600080fd5b8073ffffffffffffffffffffffffffffffffffffffff1660018381548110151561144b57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561149857600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060018080805490500381548110151561150557fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660018381548110151561153f57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600180548091906001900361159c9190612001565b505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156115db57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561160157600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60018181548110151561165357fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156116bc57600080fd5b8060ff16600160038054905003101515156116d657600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166003848154811015156116fc57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561174957600080fd5b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060036001600380549050038154811015156117b857fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166003848154811015156117f257fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600380548091906001900361184f919061202d565b508060ff16600460009054906101000a900460ff1660ff161415156118785761187781611a84565b5b505050565b6118878484611df6565b6118918282611f84565b50505050565b6060600380548060200260200160405190810160405280929190818152602001828054801561191b57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116118d1575b5050505050905090565b606060405190810160405280602181526020017f476e6f7369732053616665205374617465204368616e6e656c2045646974696f81526020017f6e0000000000000000000000000000000000000000000000000000000000000081525081565b6000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156119df57600080fd5b6119ec858585855a611cf9565b9050949350505050565b60606001805480602002602001604051908101604052809291908181526020018280548015611a7a57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611a30575b5050505050905090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611abe57600080fd5b6003805490508160ff1611151515611ad557600080fd5b60018160ff1610151515611ae857600080fd5b80600460006101000a81548160ff021916908360ff16021790555050565b60066020528060005260406000206000915054906101000a900460ff1681565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000806000809250600090505b600460009054906101000a900460ff1660ff16811015611cf0576001878783815181101515611b9757fe5b906020019060200201518784815181101515611baf57fe5b906020019060200201518785815181101515611bc757fe5b90602001906020020151604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af1158015611c42573d6000803e3d6000fd5b505050602060405103519150600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611ca657600080fd5b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16111515611ce057600080fd5b8192508080600101915050611b6c565b50505050505050565b60008060006002811115611d0957fe5b846002811115611d1557fe5b1415611d2e57611d2787878786611fbf565b9150611dec565b60016002811115611d3b57fe5b846002811115611d4757fe5b1415611d5f57611d58878685611fd8565b9150611deb565b611d6885611fef565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b6000806000600460009054906101000a900460ff1660ff16141515611e1a57600080fd5b83518360ff1611151515611e2d57600080fd5b60018360ff1610151515611e4057600080fd5b600091505b8351821015611f4c578382815181101515611e5c57fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff1614151515611e8e57600080fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515611ee757600080fd5b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508180600101925050611e45565b8360039080519060200190611f62929190612059565b5082600460006101000a81548160ff021916908360ff16021790555050505050565b60008273ffffffffffffffffffffffffffffffffffffffff16141515611fbb57611faf82825a611fd8565b1515611fba57600080fd5b5b5050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f09050919050565b8154818355818111156120285781836000526020600020918201910161202791906120e3565b5b505050565b8154818355818111156120545781836000526020600020918201910161205391906120e3565b5b505050565b8280548282559060005260206000209081019282156120d2579160200282015b828111156120d15782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190612079565b5b5090506120df9190612108565b5090565b61210591905b808211156121015760008160009055506001016120e9565b5090565b90565b61214891905b8082111561214457600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555060010161210e565b5090565b905600a165627a7a723058206b355f2ebea16bb70cf5109e223d45edf3885f89d9bac77bbdb410e1e0884c8e0029", - "deployedBytecode": "0x60806040526004361061011d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063025e7c271461011f5780630e5229b01461018c5780631ed86f19146101dc5780632b5000411461021f5780632f54bf6e146102e557806342cde4e81461034057806342f6e3891461037157806354e99c6e146103cc578063782e46be146104395780637c6401d3146105ac5780637de7edef146105f957806381b2248a1461063c578063842b954e146106a9578063a04222e114610703578063a0e67e2b146107dc578063a3f4df7e14610848578063b021640a146108d8578063b2494df314610990578063b7f3358d146109fc578063e52cb36a14610a2c578063ffa1ad7414610a75575b005b34801561012b57600080fd5b5061014a60048036038101908080359060200190929190505050610b05565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561019857600080fd5b506101da600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050610b43565b005b3480156101e857600080fd5b5061021d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ce6565b005b34801561022b57600080fd5b506102c7600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050610e60565b60405180826000191660001916815260200191505060405180910390f35b3480156102f157600080fd5b50610326600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061107c565b604051808215151515815260200191505060405180910390f35b34801561034c57600080fd5b506103556110d2565b604051808260ff1660ff16815260200191505060405180910390f35b34801561037d57600080fd5b506103b2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110e9565b604051808215151515815260200191505060405180910390f35b3480156103d857600080fd5b5061043760048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611109565b005b34801561044557600080fd5b506105aa600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050611342565b005b3480156105b857600080fd5b506105f760048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506113eb565b005b34801561060557600080fd5b5061063a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115a1565b005b34801561064857600080fd5b5061066760048036038101908080359060200190929190505050611644565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156106b557600080fd5b5061070160048036038101908080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050611682565b005b34801561070f57600080fd5b506107da60048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061187d565b005b3480156107e857600080fd5b506107f1611897565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610834578082015181840152602081019050610819565b505050509050019250505060405180910390f35b34801561085457600080fd5b5061085d611925565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561089d578082015181840152602081019050610882565b50505050905090810190601f1680156108ca5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156108e457600080fd5b50610976600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050611985565b604051808215151515815260200191505060405180910390f35b34801561099c57600080fd5b506109a56119f6565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156109e85780820151818401526020810190506109cd565b505050509050019250505060405180910390f35b348015610a0857600080fd5b50610a2a600480360381019080803560ff169060200190929190505050611a84565b005b348015610a3857600080fd5b50610a5b6004803603810190808035600019169060200190929190505050611b06565b604051808215151515815260200191505060405180910390f35b348015610a8157600080fd5b50610a8a611b26565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610aca578082015181840152602081019050610aaf565b50505050905090810190601f168015610af75780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600381815481101515610b1457fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b7d57600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614151515610ba357600080fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610bfc57600080fd5b60038290806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506001600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508060ff16600460009054906101000a900460ff1660ff16141515610ce257610ce181611a84565b5b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610d2057600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610d4657600080fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610d9f57600080fd5b60018190806001815401808255809150509060018203906000526020600020016000909192909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f01000000000000000000000000000000000000000000000000000000000000000230888888888860405180897effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083835b6020831015156110015780518252602082019150602081019050602083039250610fdc565b6001836020036101000a03801982511681845116808217855250505050505090500183600281111561102f57fe5b60ff167f0100000000000000000000000000000000000000000000000000000000000000028152600101828152602001985050505050505050506040518091039020905095945050505050565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600460009054906101000a900460ff16905090565b60026020528060005260406000206000915054906101000a900460ff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561114357600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561116957600080fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156111c257600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166003848154811015156111e857fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561123557600080fd5b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550806003848154811015156112f557fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b60006113518989898989610e60565b905060066000826000191660001916815260200190815260200160002060009054906101000a900460ff1615151561138857600080fd5b61139481858585611b5f565b600160066000836000191660001916815260200190815260200160002060006101000a81548160ff0219169083151502179055506113d5898989895a611cf9565b15156113e057600080fd5b505050505050505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561142557600080fd5b8073ffffffffffffffffffffffffffffffffffffffff1660018381548110151561144b57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561149857600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060018080805490500381548110151561150557fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660018381548110151561153f57fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600180548091906001900361159c9190612001565b505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156115db57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561160157600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60018181548110151561165357fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156116bc57600080fd5b8060ff16600160038054905003101515156116d657600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166003848154811015156116fc57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561174957600080fd5b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060036001600380549050038154811015156117b857fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166003848154811015156117f257fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600380548091906001900361184f919061202d565b508060ff16600460009054906101000a900460ff1660ff161415156118785761187781611a84565b5b505050565b6118878484611df6565b6118918282611f84565b50505050565b6060600380548060200260200160405190810160405280929190818152602001828054801561191b57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116118d1575b5050505050905090565b606060405190810160405280602181526020017f476e6f7369732053616665205374617465204368616e6e656c2045646974696f81526020017f6e0000000000000000000000000000000000000000000000000000000000000081525081565b6000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156119df57600080fd5b6119ec858585855a611cf9565b9050949350505050565b60606001805480602002602001604051908101604052809291908181526020018280548015611a7a57602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311611a30575b5050505050905090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611abe57600080fd5b6003805490508160ff1611151515611ad557600080fd5b60018160ff1610151515611ae857600080fd5b80600460006101000a81548160ff021916908360ff16021790555050565b60066020528060005260406000206000915054906101000a900460ff1681565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000806000809250600090505b600460009054906101000a900460ff1660ff16811015611cf0576001878783815181101515611b9757fe5b906020019060200201518784815181101515611baf57fe5b906020019060200201518785815181101515611bc757fe5b90602001906020020151604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af1158015611c42573d6000803e3d6000fd5b505050602060405103519150600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611ca657600080fd5b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16111515611ce057600080fd5b8192508080600101915050611b6c565b50505050505050565b60008060006002811115611d0957fe5b846002811115611d1557fe5b1415611d2e57611d2787878786611fbf565b9150611dec565b60016002811115611d3b57fe5b846002811115611d4757fe5b1415611d5f57611d58878685611fd8565b9150611deb565b611d6885611fef565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b6000806000600460009054906101000a900460ff1660ff16141515611e1a57600080fd5b83518360ff1611151515611e2d57600080fd5b60018360ff1610151515611e4057600080fd5b600091505b8351821015611f4c578382815181101515611e5c57fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff1614151515611e8e57600080fd5b600560008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515611ee757600080fd5b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508180600101925050611e45565b8360039080519060200190611f62929190612059565b5082600460006101000a81548160ff021916908360ff16021790555050505050565b60008273ffffffffffffffffffffffffffffffffffffffff16141515611fbb57611faf82825a611fd8565b1515611fba57600080fd5b5b5050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f09050919050565b8154818355818111156120285781836000526020600020918201910161202791906120e3565b5b505050565b8154818355818111156120545781836000526020600020918201910161205391906120e3565b5b505050565b8280548282559060005260206000209081019282156120d2579160200282015b828111156120d15782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190612079565b5b5090506120df9190612108565b5090565b61210591905b808211156121015760008160009055506001016120e9565b5090565b90565b61214891905b8082111561214457600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690555060010161210e565b5090565b905600a165627a7a723058206b355f2ebea16bb70cf5109e223d45edf3885f89d9bac77bbdb410e1e0884c8e0029", - "sourceMap": "281:2670:4:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;281:2670:4;;;;;;;", - "deployedSourceMap": "281:2670:4:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;287:23:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;287:23:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1737:431;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1737:431:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1166:300:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1166:300:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;2638:311:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2638:311:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4552:125:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4552:125:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4436:110;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4436:110:10;;;;;;;;;;;;;;;;;;;;;;;;;;;599:41:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;599:41:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3419:501:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3419:501:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1205:590:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1205:590:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1722:336:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1722:336:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;626:208:6;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:208:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;500:23:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;500:23:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2499:599:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2499:599:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;693:301:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;693:301:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4759:111:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4759:111:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;4759:111:10;;;;;;;;;;;;;;;;;353:65:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;353:65:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;353:65:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2394:361:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2394:361:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4279:112;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4279:112:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;4279:112:9;;;;;;;;;;;;;;;;;4109:321:10;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4109:321:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;562:43:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;562:43:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;424:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;424:40:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;424:40:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;287:23:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1737:431::-;244:4:14;222:27;;:10;:27;;;214:36;;;;;;;;1894:1:10;1885:5;:10;;;;1877:19;;;;;;;;1955:7;:14;1963:5;1955:14;;;;;;;;;;;;;;;;;;;;;;;;;1954:15;1946:24;;;;;;;;1980:6;1992:5;1980:18;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;1980:18:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2025:4;2008:7;:14;2016:5;2008:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;2110:10;2097:23;;:9;;;;;;;;;;;:23;;;;2093:68;;;2134:27;2150:10;2134:15;:27::i;:::-;2093:68;1737:431;;:::o;1166:300:9:-;244:4:14;222:27;;:10;:27;;;214:36;;;;;;;;1317:1:9;1306:6;1298:20;;;;1290:29;;;;;;;;1379:8;:16;1388:6;1379:16;;;;;;;;;;;;;;;;;;;;;;;;;1378:17;1370:26;;;;;;;;1406:7;1419:6;1406:20;;39:1:-1;33:3;27:10;23:18;57:10;52:3;45:23;79:10;72:17;;0:93;1406:20:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1455:4;1436:8;:16;1445:6;1436:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;1166:300;:::o;2638:311:4:-;2841:7;2886:4;2881:10;;2898:1;2893:7;;2902:4;2908:2;2912:5;2919:4;2925:9;2936:5;2871:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;2871:71:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2864:78;;2638:311;;;;;;;:::o;4552:125:10:-;4629:4;4656:7;:14;4664:5;4656:14;;;;;;;;;;;;;;;;;;;;;;;;;4649:21;;4552:125;;;:::o;4436:110::-;4502:5;4530:9;;;;;;;;;;;4523:16;;4436:110;:::o;599:41:9:-;;;;;;;;;;;;;;;;;;;;;;:::o;3419:501:10:-;244:4:14;222:27;;:10;:27;;;214:36;;;;;;;;3609:1:10;3597:8;:13;;;;3589:22;;;;;;;;3670:7;:17;3678:8;3670:17;;;;;;;;;;;;;;;;;;;;;;;;;3669:18;3661:27;;;;;;;;3793:8;3768:33;;:6;3775:13;3768:21;;;;;;;;;;;;;;;;;;;;;;;;;;;:33;;;3760:42;;;;;;;;3832:5;3812:7;:17;3820:8;3812:17;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;3867:4;3847:7;:17;3855:8;3847:17;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;3905:8;3881:6;3888:13;3881:21;;;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;3419:501;;;:::o;1205:590:4:-;1455:23;1481:53;1500:2;1504:5;1511:4;1517:9;1528:5;1481:18;:53::i;:::-;1455:79;;1553:10;:27;1564:15;1553:27;;;;;;;;;;;;;;;;;;;;;;;;;;;1552:28;1544:37;;;;;;;;1591:35;1601:15;1618:1;1621;1624;1591:9;:35::i;:::-;1719:4;1689:10;:27;1700:15;1689:27;;;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;1741:46;1749:2;1753:5;1760:4;1766:9;1777;1741:7;:46::i;:::-;1733:55;;;;;;;;1205:590;;;;;;;;;:::o;1722:336:9:-;244:4:14;222:27;;:10;:27;;;214:36;;;;;;;;1924:6:9;1900:30;;:7;1908:11;1900:20;;;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;1892:39;;;;;;;;1960:5;1941:8;:16;1950:6;1941:16;;;;;;;;;;;;;;;;:24;;;;;;;;;;;;;;;;;;1998:7;2023:1;2006:7;:14;;;;:18;1998:27;;;;;;;;;;;;;;;;;;;;;;;;;;;1975:7;1983:11;1975:20;;;;;;;;;;;;;;;;;;:50;;;;;;;;;;;;;;;;;;2035:7;:16;;;;;;;;;;;;:::i;:::-;;1722:336;;:::o;626:208:6:-;244:4:14;222:27;;:10;:27;;;214:36;;;;;;;;791:1:6;776:11;:16;;;;768:25;;;;;;;;816:11;803:10;;:24;;;;;;;;;;;;;;;;;;626:208;:::o;500:23:9:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2499:599:10:-;244:4:14;222:27;;:10;:27;;;214:36;;;;;;;;2727:10:10;2706:31;;2722:1;2706:6;:13;;;;:17;:31;;2698:40;;;;;;;;2840:5;2818:27;;:6;2825:10;2818:18;;;;;;;;;;;;;;;;;;;;;;;;;;;:27;;;2810:36;;;;;;;;2873:5;2856:7;:14;2864:5;2856:14;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;2909:6;2932:1;2916:6;:13;;;;:17;2909:25;;;;;;;;;;;;;;;;;;;;;;;;;;;2888:6;2895:10;2888:18;;;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;2944:6;:15;;;;;;;;;;;;:::i;:::-;;3040:10;3027:23;;:9;;;;;;;;;;;:23;;;;3023:68;;;3064:27;3080:10;3064:15;:27::i;:::-;3023:68;2499:599;;;:::o;693:301:2:-;798:32;810:7;819:10;798:11;:32::i;:::-;965:22;978:2;982:4;965:12;:22::i;:::-;693:301;;;;:::o;4759:111:10:-;4825:9;4857:6;4850:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4759:111;:::o;353:65:4:-;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2394:361:9:-;2514:12;2599:8;:20;2608:10;2599:20;;;;;;;;;;;;;;;;;;;;;;;;;2591:29;;;;;;;;2702:46;2710:2;2714:5;2721:4;2727:9;2738;2702:7;:46::i;:::-;2692:56;;2394:361;;;;;;:::o;4279:112::-;4346:8;4377:7;4370:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4279:112;:::o;4109:321:10:-;244:4:14;222:27;;:10;:27;;;214:36;;;;;;;;4291:6:10;:13;;;;4277:10;:27;;;;4269:36;;;;;;;;4389:1;4375:10;:15;;;;4367:24;;;;;;;;4413:10;4401:9;;:22;;;;;;;;;;;;;;;;;;4109:321;:::o;562:43:4:-;;;;;;;;;;;;;;;;;;;;;;:::o;424:40::-;;;;;;;;;;;;;;;;;;;;:::o;1801:559::-;1978:17;2018:20;2048:9;2006:1;1978:30;;2118:1;2114:5;;2109:245;2125:9;;;;;;;;;;;2121:13;;:1;:13;2109:245;;;2170:44;2180:15;2197:1;2199;2197:4;;;;;;;;;;;;;;;;;;2203:1;2205;2203:4;;;;;;;;;;;;;;;;;;2209:1;2211;2209:4;;;;;;;;;;;;;;;;;;2170:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2170:44:4;;;;;;;;2155:59;;2236:7;:21;2244:12;2236:21;;;;;;;;;;;;;;;;;;;;;;;;;2228:30;;;;;;;;2295:9;2280:24;;:12;:24;;;2272:33;;;;;;;;2331:12;2319:24;;2136:3;;;;;;;2109:245;;;1801:559;;;;;;;:::o;2761:548:9:-;2892:12;3163:19;2937;2924:32;;;;;;;;:9;:32;;;;;;;;;2920:383;;;2980:35;2992:2;2996:5;3003:4;3009:5;2980:11;:35::i;:::-;2970:45;;2920:383;;;3047:27;3034:40;;;;;;;;:9;:40;;;;;;;;;3030:273;;;3098:36;3118:2;3122:4;3128:5;3098:19;:36::i;:::-;3088:46;;3030:273;;;3185:19;3199:4;3185:13;:19::i;:::-;3163:41;;3243:1;3228:11;:16;;;;3218:26;;3263:29;3280:11;3263:29;;;;;;;;;;;;;;;;;;;;;;3030:273;2920:383;2761:548;;;;;;;;:::o;651:846:10:-;1147:9;1246:13;885:1;872:9;;;;;;;;;;;:14;;;864:23;;;;;;;;994:7;:14;980:10;:28;;;;972:37;;;;;;;;1093:1;1079:10;:15;;;;1071:24;;;;;;;;1159:1;1147:13;;1142:291;1166:7;:14;1162:1;:18;1142:291;;;1262:7;1270:1;1262:10;;;;;;;;;;;;;;;;;;1246:26;;1303:1;1294:5;:10;;;;1286:19;;;;;;;;1372:7;:14;1380:5;1372:14;;;;;;;;;;;;;;;;;;;;;;;;;1371:15;1363:24;;;;;;;;1418:4;1401:7;:14;1409:5;1401:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;1182:3;;;;;;;1142:291;;;1451:7;1442:6;:16;;;;;;;;;;;;:::i;:::-;;1480:10;1468:9;;:22;;;;;;;;;;;;;;;;;;651:846;;;;:::o;769:230:9:-;856:1;850:2;:7;;;;846:146;;;951:40;971:2;975:4;981:9;951:19;:40::i;:::-;943:49;;;;;;;;846:146;769:230;;:::o;3315:309::-;3424:12;3606:1;3603;3596:4;3590:11;3583:4;3577;3573:15;3566:5;3562:2;3555:5;3550:58;3539:69;;3525:93;;;;;;:::o;3630:303::-;3732:12;3915:1;3912;3905:4;3899:11;3892:4;3886;3882:15;3878:2;3871:5;3858:59;3847:70;;3833:94;;;;;:::o;3939:261::-;4008:19;4178:4;4172:11;4165:4;4159;4155:15;4152:1;4145:39;4130:54;;4116:78;;;:::o;281:2670:4:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", - "source": "pragma solidity 0.4.23;\nimport \"./GnosisSafe.sol\";\nimport \"./MasterCopy.sol\";\n\n\n/// @title Gnosis Safe State Channel Edition - A multisignature wallet with support for confirmations.\n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract GnosisSafeStateChannelEdition is MasterCopy, GnosisSafe {\n\n string public constant NAME = \"Gnosis Safe State Channel Edition\";\n string public constant VERSION = \"0.0.1\";\n\n // isExecuted mapping allows to check if a transaction (by hash) was already executed.\n mapping (bytes32 => bool) public isExecuted;\n\n /// @dev Allows to execute a Safe transaction confirmed by required number of owners.\n /// @param to Destination address of Safe transaction.\n /// @param value Ether value of Safe transaction.\n /// @param data Data payload of Safe transaction.\n /// @param operation Operation type of Safe transaction.\n /// @param nonce Nonce used for this Safe transaction.\n /// @param v Array of signature V values sorted by owner addresses.\n /// @param r Array of signature R values sorted by owner addresses.\n /// @param s Array of signature S values sorted by owner addresses.\n function executeTransaction(\n address to, \n uint256 value, \n bytes data, \n Enum.Operation operation, \n uint256 nonce,\n uint8[] v, \n bytes32[] r, \n bytes32[] s\n )\n public\n {\n bytes32 transactionHash = getTransactionHash(to, value, data, operation, nonce);\n require(!isExecuted[transactionHash]);\n checkHash(transactionHash, v, r, s);\n // Mark as executed and execute transaction.\n isExecuted[transactionHash] = true;\n require(execute(to, value, data, operation, gasleft()));\n }\n\n function checkHash(bytes32 transactionHash, uint8[] v, bytes32[] r, bytes32[] s)\n internal\n view\n {\n // There cannot be an owner with address 0.\n address lastOwner = address(0);\n address currentOwner;\n uint256 i;\n // Validate threshold is reached.\n for (i = 0; i < threshold; i++) {\n currentOwner = ecrecover(transactionHash, v[i], r[i], s[i]);\n require(isOwner[currentOwner]);\n require(currentOwner > lastOwner);\n lastOwner = currentOwner;\n }\n }\n\n /// @dev Returns hash to be signed by owners.\n /// @param to Destination address.\n /// @param value Ether value.\n /// @param data Data payload.\n /// @param operation Operation type.\n /// @param nonce Transaction nonce.\n /// @return Transaction hash.\n function getTransactionHash(\n address to, \n uint256 value, \n bytes data, \n Enum.Operation operation, \n uint256 nonce\n )\n public\n view\n returns (bytes32)\n {\n return keccak256(byte(0x19), byte(0), this, to, value, data, operation, nonce);\n }\n}\n", - "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafeStateChannelEdition.sol", - "ast": { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafeStateChannelEdition.sol", - "exportedSymbols": { - "GnosisSafeStateChannelEdition": [ - 530 - ] - }, - "id": 531, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 348, - "literals": [ - "solidity", - "0.4", - ".23" - ], - "nodeType": "PragmaDirective", - "src": "0:23:4" - }, - { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", - "file": "./GnosisSafe.sol", - "id": 349, - "nodeType": "ImportDirective", - "scope": 531, - "sourceUnit": 64, - "src": "24:26:4", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/MasterCopy.sol", - "file": "./MasterCopy.sol", - "id": 350, - "nodeType": "ImportDirective", - "scope": 531, - "sourceUnit": 780, - "src": "51:26:4", - "symbolAliases": [], - "unitAlias": "" - }, - { - "baseContracts": [ - { - "arguments": null, - "baseName": { - "contractScope": null, - "id": 351, - "name": "MasterCopy", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 779, - "src": "323:10:4", - "typeDescriptions": { - "typeIdentifier": "t_contract$_MasterCopy_$779", - "typeString": "contract MasterCopy" - } - }, - "id": 352, - "nodeType": "InheritanceSpecifier", - "src": "323:10:4" - }, - { - "arguments": null, - "baseName": { - "contractScope": null, - "id": 353, - "name": "GnosisSafe", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 63, - "src": "335:10:4", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$63", - "typeString": "contract GnosisSafe" - } - }, - "id": 354, - "nodeType": "InheritanceSpecifier", - "src": "335:10:4" - } - ], - "contractDependencies": [ - 63, - 779, - 1142, - 1438, - 1559 - ], - "contractKind": "contract", - "documentation": "@title Gnosis Safe State Channel Edition - A multisignature wallet with support for confirmations.\n @author Stefan George - \n @author Richard Meissner - ", - "fullyImplemented": true, - "id": 530, - "linearizedBaseContracts": [ - 530, - 63, - 1438, - 1142, - 779, - 1559 - ], - "name": "GnosisSafeStateChannelEdition", - "nodeType": "ContractDefinition", - "nodes": [ - { - "constant": true, - "id": 357, - "name": "NAME", - "nodeType": "VariableDeclaration", - "scope": 530, - "src": "353:65:4", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_string_memory", - "typeString": "string" - }, - "typeName": { - "id": 355, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "353:6:4", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "value": { - "argumentTypes": null, - "hexValue": "476e6f7369732053616665205374617465204368616e6e656c2045646974696f6e", - "id": 356, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "383:35:4", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_8ed77695330a1e702d7599137bd776e333a5b5bdc777b481e480866a9eb5edc4", - "typeString": "literal_string \"Gnosis Safe State Channel Edition\"" - }, - "value": "Gnosis Safe State Channel Edition" - }, - "visibility": "public" - }, - { - "constant": true, - "id": 360, - "name": "VERSION", - "nodeType": "VariableDeclaration", - "scope": 530, - "src": "424:40:4", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_string_memory", - "typeString": "string" - }, - "typeName": { - "id": 358, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "424:6:4", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "value": { - "argumentTypes": null, - "hexValue": "302e302e31", - "id": 359, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "457:7:4", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", - "typeString": "literal_string \"0.0.1\"" - }, - "value": "0.0.1" - }, - "visibility": "public" - }, - { - "constant": false, - "id": 364, - "name": "isExecuted", - "nodeType": "VariableDeclaration", - "scope": 530, - "src": "562:43:4", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - }, - "typeName": { - "id": 363, - "keyType": { - "id": 361, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "571:7:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Mapping", - "src": "562:25:4", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - }, - "valueType": { - "id": 362, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "582:4:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - "value": null, - "visibility": "public" - }, - { - "body": { - "id": 427, - "nodeType": "Block", - "src": "1445:350:4", - "statements": [ - { - "assignments": [ - 387 - ], - "declarations": [ - { - "constant": false, - "id": 387, - "name": "transactionHash", - "nodeType": "VariableDeclaration", - "scope": 428, - "src": "1455:23:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 386, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1455:7:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 395, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 389, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 366, - "src": "1500:2:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 390, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 368, - "src": "1504:5:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 391, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 370, - "src": "1511:4:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "id": 392, - "name": "operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 372, - "src": "1517:9:4", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", - "typeString": "enum Enum.Operation" - } - }, - { - "argumentTypes": null, - "id": 393, - "name": "nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 374, - "src": "1528:5:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_enum$_Operation_$29", - "typeString": "enum Enum.Operation" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 388, - "name": "getTransactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 529, - "src": "1481:18:4", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bytes32_$", - "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) view returns (bytes32)" - } - }, - "id": 394, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1481:53:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1455:79:4" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 400, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "1552:28:4", - "subExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 397, - "name": "isExecuted", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 364, - "src": "1553:10:4", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 399, - "indexExpression": { - "argumentTypes": null, - "id": 398, - "name": "transactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 387, - "src": "1564:15:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1553:27:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 396, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 2468, - 2469 - ], - "referencedDeclaration": 2468, - "src": "1544:7:4", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 401, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1544:37:4", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 402, - "nodeType": "ExpressionStatement", - "src": "1544:37:4" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 404, - "name": "transactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 387, - "src": "1601:15:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 405, - "name": "v", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 377, - "src": "1618:1:4", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", - "typeString": "uint8[] memory" - } - }, - { - "argumentTypes": null, - "id": 406, - "name": "r", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 380, - "src": "1621:1:4", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[] memory" - } - }, - { - "argumentTypes": null, - "id": 407, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 383, - "src": "1624:1:4", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[] memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", - "typeString": "uint8[] memory" - }, - { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[] memory" - }, - { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[] memory" - } - ], - "id": 403, - "name": "checkHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 498, - "src": "1591:9:4", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_array$_t_uint8_$dyn_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$returns$__$", - "typeString": "function (bytes32,uint8[] memory,bytes32[] memory,bytes32[] memory) view" - } - }, - "id": 408, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1591:35:4", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 409, - "nodeType": "ExpressionStatement", - "src": "1591:35:4" - }, - { - "expression": { - "argumentTypes": null, - "id": 414, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 410, - "name": "isExecuted", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 364, - "src": "1689:10:4", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 412, - "indexExpression": { - "argumentTypes": null, - "id": 411, - "name": "transactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 387, - "src": "1700:15:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "1689:27:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 413, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1719:4:4", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "1689:34:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 415, - "nodeType": "ExpressionStatement", - "src": "1689:34:4" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 418, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 366, - "src": "1749:2:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 419, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 368, - "src": "1753:5:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 420, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 370, - "src": "1760:4:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "id": 421, - "name": "operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 372, - "src": "1766:9:4", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", - "typeString": "enum Enum.Operation" - } - }, - { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 422, - "name": "gasleft", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2458, - "src": "1777:7:4", - "typeDescriptions": { - "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", - "typeString": "function () view returns (uint256)" - } - }, - "id": 423, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1777:9:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_enum$_Operation_$29", - "typeString": "enum Enum.Operation" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 417, - "name": "execute", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1095, - "src": "1741:7:4", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bool_$", - "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) returns (bool)" - } - }, - "id": 424, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1741:46:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 416, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 2468, - 2469 - ], - "referencedDeclaration": 2468, - "src": "1733:7:4", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 425, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1733:55:4", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 426, - "nodeType": "ExpressionStatement", - "src": "1733:55:4" - } - ] - }, - "documentation": "@dev Allows to execute a Safe transaction confirmed by required number of owners.\n @param to Destination address of Safe transaction.\n @param value Ether value of Safe transaction.\n @param data Data payload of Safe transaction.\n @param operation Operation type of Safe transaction.\n @param nonce Nonce used for this Safe transaction.\n @param v Array of signature V values sorted by owner addresses.\n @param r Array of signature R values sorted by owner addresses.\n @param s Array of signature S values sorted by owner addresses.", - "id": 428, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "executeTransaction", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 384, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 366, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 428, - "src": "1242:10:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 365, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1242:7:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 368, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 428, - "src": "1263:13:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 367, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1263:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 370, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 428, - "src": "1287:10:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 369, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "1287:5:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 372, - "name": "operation", - "nodeType": "VariableDeclaration", - "scope": 428, - "src": "1308:24:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", - "typeString": "enum Enum.Operation" - }, - "typeName": { - "contractScope": null, - "id": 371, - "name": "Enum.Operation", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 29, - "src": "1308:14:4", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", - "typeString": "enum Enum.Operation" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 374, - "name": "nonce", - "nodeType": "VariableDeclaration", - "scope": 428, - "src": "1343:13:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 373, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1343:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 377, - "name": "v", - "nodeType": "VariableDeclaration", - "scope": 428, - "src": "1366:9:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", - "typeString": "uint8[]" - }, - "typeName": { - "baseType": { - "id": 375, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "1366:5:4", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "id": 376, - "length": null, - "nodeType": "ArrayTypeName", - "src": "1366:7:4", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr", - "typeString": "uint8[]" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 380, - "name": "r", - "nodeType": "VariableDeclaration", - "scope": 428, - "src": "1386:11:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[]" - }, - "typeName": { - "baseType": { - "id": 378, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1386:7:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 379, - "length": null, - "nodeType": "ArrayTypeName", - "src": "1386:9:4", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", - "typeString": "bytes32[]" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 383, - "name": "s", - "nodeType": "VariableDeclaration", - "scope": 428, - "src": "1408:11:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[]" - }, - "typeName": { - "baseType": { - "id": 381, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1408:7:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 382, - "length": null, - "nodeType": "ArrayTypeName", - "src": "1408:9:4", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", - "typeString": "bytes32[]" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1232:193:4" - }, - "payable": false, - "returnParameters": { - "id": 385, - "nodeType": "ParameterList", - "parameters": [], - "src": "1445:0:4" - }, - "scope": 530, - "src": "1205:590:4", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 497, - "nodeType": "Block", - "src": "1916:444:4", - "statements": [ - { - "assignments": [ - 443 - ], - "declarations": [ - { - "constant": false, - "id": 443, - "name": "lastOwner", - "nodeType": "VariableDeclaration", - "scope": 498, - "src": "1978:17:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 442, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1978:7:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 447, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30", - "id": 445, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2006:1:4", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 444, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "1998:7:4", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 446, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1998:10:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1978:30:4" - }, - { - "assignments": [], - "declarations": [ - { - "constant": false, - "id": 449, - "name": "currentOwner", - "nodeType": "VariableDeclaration", - "scope": 498, - "src": "2018:20:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 448, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2018:7:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 450, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "2018:20:4" - }, - { - "assignments": [], - "declarations": [ - { - "constant": false, - "id": 452, - "name": "i", - "nodeType": "VariableDeclaration", - "scope": 498, - "src": "2048:9:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 451, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2048:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 453, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "2048:9:4" - }, - { - "body": { - "id": 495, - "nodeType": "Block", - "src": "2141:213:4", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 477, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 464, - "name": "currentOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 449, - "src": "2155:12:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 466, - "name": "transactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 430, - "src": "2180:15:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 467, - "name": "v", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 433, - "src": "2197:1:4", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", - "typeString": "uint8[] memory" - } - }, - "id": 469, - "indexExpression": { - "argumentTypes": null, - "id": 468, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 452, - "src": "2199:1:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2197:4:4", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 470, - "name": "r", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 436, - "src": "2203:1:4", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[] memory" - } - }, - "id": 472, - "indexExpression": { - "argumentTypes": null, - "id": 471, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 452, - "src": "2205:1:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2203:4:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 473, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 439, - "src": "2209:1:4", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[] memory" - } - }, - "id": 475, - "indexExpression": { - "argumentTypes": null, - "id": 474, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 452, - "src": "2211:1:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2209:4:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 465, - "name": "ecrecover", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2457, - "src": "2170:9:4", - "typeDescriptions": { - "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", - "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)" - } - }, - "id": 476, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2170:44:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "2155:59:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 478, - "nodeType": "ExpressionStatement", - "src": "2155:59:4" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 480, - "name": "isOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 1156 - ], - "referencedDeclaration": 1156, - "src": "2236:7:4", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 482, - "indexExpression": { - "argumentTypes": null, - "id": 481, - "name": "currentOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 449, - "src": "2244:12:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2236:21:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 479, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 2468, - 2469 - ], - "referencedDeclaration": 2468, - "src": "2228:7:4", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 483, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2228:30:4", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 484, - "nodeType": "ExpressionStatement", - "src": "2228:30:4" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 488, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 486, - "name": "currentOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 449, - "src": "2280:12:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "id": 487, - "name": "lastOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 443, - "src": "2295:9:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "2280:24:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 485, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 2468, - 2469 - ], - "referencedDeclaration": 2468, - "src": "2272:7:4", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 489, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2272:33:4", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 490, - "nodeType": "ExpressionStatement", - "src": "2272:33:4" - }, - { - "expression": { - "argumentTypes": null, - "id": 493, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 491, - "name": "lastOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 443, - "src": "2319:9:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 492, - "name": "currentOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 449, - "src": "2331:12:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "2319:24:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 494, - "nodeType": "ExpressionStatement", - "src": "2319:24:4" - } - ] - }, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 460, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 458, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 452, - "src": "2121:1:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, - "id": 459, - "name": "threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 1152 - ], - "referencedDeclaration": 1152, - "src": "2125:9:4", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "2121:13:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 496, - "initializationExpression": { - "expression": { - "argumentTypes": null, - "id": 456, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 454, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 452, - "src": "2114:1:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "30", - "id": 455, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2118:1:4", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2114:5:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 457, - "nodeType": "ExpressionStatement", - "src": "2114:5:4" - }, - "loopExpression": { - "expression": { - "argumentTypes": null, - "id": 462, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "2136:3:4", - "subExpression": { - "argumentTypes": null, - "id": 461, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 452, - "src": "2136:1:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 463, - "nodeType": "ExpressionStatement", - "src": "2136:3:4" - }, - "nodeType": "ForStatement", - "src": "2109:245:4" - } - ] - }, - "documentation": null, - "id": 498, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "checkHash", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 440, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 430, - "name": "transactionHash", - "nodeType": "VariableDeclaration", - "scope": 498, - "src": "1820:23:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 429, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1820:7:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 433, - "name": "v", - "nodeType": "VariableDeclaration", - "scope": 498, - "src": "1845:9:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", - "typeString": "uint8[]" - }, - "typeName": { - "baseType": { - "id": 431, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "1845:5:4", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "id": 432, - "length": null, - "nodeType": "ArrayTypeName", - "src": "1845:7:4", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr", - "typeString": "uint8[]" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 436, - "name": "r", - "nodeType": "VariableDeclaration", - "scope": 498, - "src": "1856:11:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[]" - }, - "typeName": { - "baseType": { - "id": 434, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1856:7:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 435, - "length": null, - "nodeType": "ArrayTypeName", - "src": "1856:9:4", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", - "typeString": "bytes32[]" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 439, - "name": "s", - "nodeType": "VariableDeclaration", - "scope": 498, - "src": "1869:11:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[]" - }, - "typeName": { - "baseType": { - "id": 437, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1869:7:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 438, - "length": null, - "nodeType": "ArrayTypeName", - "src": "1869:9:4", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", - "typeString": "bytes32[]" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1819:62:4" - }, - "payable": false, - "returnParameters": { - "id": 441, - "nodeType": "ParameterList", - "parameters": [], - "src": "1916:0:4" - }, - "scope": 530, - "src": "1801:559:4", - "stateMutability": "view", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 528, - "nodeType": "Block", - "src": "2854:95:4", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30783139", - "id": 515, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2886:4:4", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_25_by_1", - "typeString": "int_const 25" - }, - "value": "0x19" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_25_by_1", - "typeString": "int_const 25" - } - ], - "id": 514, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "2881:4:4", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes1_$", - "typeString": "type(bytes1)" - }, - "typeName": "byte" - }, - "id": 516, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2881:10:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30", - "id": 518, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2898:1:4", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 517, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "2893:4:4", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes1_$", - "typeString": "type(bytes1)" - }, - "typeName": "byte" - }, - "id": 519, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2893:7:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - } - }, - { - "argumentTypes": null, - "id": 520, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2498, - "src": "2902:4:4", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafeStateChannelEdition_$530", - "typeString": "contract GnosisSafeStateChannelEdition" - } - }, - { - "argumentTypes": null, - "id": 521, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 500, - "src": "2908:2:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 522, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 502, - "src": "2912:5:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 523, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 504, - "src": "2919:4:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "id": 524, - "name": "operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 506, - "src": "2925:9:4", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", - "typeString": "enum Enum.Operation" - } - }, - { - "argumentTypes": null, - "id": 525, - "name": "nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 508, - "src": "2936:5:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - }, - { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - }, - { - "typeIdentifier": "t_contract$_GnosisSafeStateChannelEdition_$530", - "typeString": "contract GnosisSafeStateChannelEdition" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_enum$_Operation_$29", - "typeString": "enum Enum.Operation" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 513, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2459, - "src": "2871:9:4", - "typeDescriptions": { - "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", - "typeString": "function () pure returns (bytes32)" - } - }, - "id": 526, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2871:71:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "functionReturnParameters": 512, - "id": 527, - "nodeType": "Return", - "src": "2864:78:4" - } - ] - }, - "documentation": "@dev Returns hash to be signed by owners.\n @param to Destination address.\n @param value Ether value.\n @param data Data payload.\n @param operation Operation type.\n @param nonce Transaction nonce.\n @return Transaction hash.", - "id": 529, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "getTransactionHash", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 509, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 500, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 529, - "src": "2675:10:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 499, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2675:7:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 502, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 529, - "src": "2696:13:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 501, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2696:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 504, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 529, - "src": "2720:10:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 503, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "2720:5:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 506, - "name": "operation", - "nodeType": "VariableDeclaration", - "scope": 529, - "src": "2741:24:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", - "typeString": "enum Enum.Operation" - }, - "typeName": { - "contractScope": null, - "id": 505, - "name": "Enum.Operation", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 29, - "src": "2741:14:4", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", - "typeString": "enum Enum.Operation" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 508, - "name": "nonce", - "nodeType": "VariableDeclaration", - "scope": 529, - "src": "2776:13:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 507, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2776:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "2665:130:4" - }, - "payable": false, - "returnParameters": { - "id": 512, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 511, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 529, - "src": "2841:7:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 510, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2841:7:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "2840:9:4" - }, - "scope": 530, - "src": "2638:311:4", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - } - ], - "scope": 531, - "src": "281:2670:4" - } - ], - "src": "0:2952:4" - }, - "legacyAST": { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafeStateChannelEdition.sol", - "exportedSymbols": { - "GnosisSafeStateChannelEdition": [ - 530 - ] - }, - "id": 531, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 348, - "literals": [ - "solidity", - "0.4", - ".23" - ], - "nodeType": "PragmaDirective", - "src": "0:23:4" - }, - { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", - "file": "./GnosisSafe.sol", - "id": 349, - "nodeType": "ImportDirective", - "scope": 531, - "sourceUnit": 64, - "src": "24:26:4", - "symbolAliases": [], - "unitAlias": "" - }, - { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/MasterCopy.sol", - "file": "./MasterCopy.sol", - "id": 350, - "nodeType": "ImportDirective", - "scope": 531, - "sourceUnit": 780, - "src": "51:26:4", - "symbolAliases": [], - "unitAlias": "" - }, - { - "baseContracts": [ - { - "arguments": null, - "baseName": { - "contractScope": null, - "id": 351, - "name": "MasterCopy", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 779, - "src": "323:10:4", - "typeDescriptions": { - "typeIdentifier": "t_contract$_MasterCopy_$779", - "typeString": "contract MasterCopy" - } - }, - "id": 352, - "nodeType": "InheritanceSpecifier", - "src": "323:10:4" - }, - { - "arguments": null, - "baseName": { - "contractScope": null, - "id": 353, - "name": "GnosisSafe", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 63, - "src": "335:10:4", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$63", - "typeString": "contract GnosisSafe" - } - }, - "id": 354, - "nodeType": "InheritanceSpecifier", - "src": "335:10:4" - } - ], - "contractDependencies": [ - 63, - 779, - 1142, - 1438, - 1559 - ], - "contractKind": "contract", - "documentation": "@title Gnosis Safe State Channel Edition - A multisignature wallet with support for confirmations.\n @author Stefan George - \n @author Richard Meissner - ", - "fullyImplemented": true, - "id": 530, - "linearizedBaseContracts": [ - 530, - 63, - 1438, - 1142, - 779, - 1559 - ], - "name": "GnosisSafeStateChannelEdition", - "nodeType": "ContractDefinition", - "nodes": [ - { - "constant": true, - "id": 357, - "name": "NAME", - "nodeType": "VariableDeclaration", - "scope": 530, - "src": "353:65:4", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_string_memory", - "typeString": "string" - }, - "typeName": { - "id": 355, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "353:6:4", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "value": { - "argumentTypes": null, - "hexValue": "476e6f7369732053616665205374617465204368616e6e656c2045646974696f6e", - "id": 356, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "383:35:4", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_8ed77695330a1e702d7599137bd776e333a5b5bdc777b481e480866a9eb5edc4", - "typeString": "literal_string \"Gnosis Safe State Channel Edition\"" - }, - "value": "Gnosis Safe State Channel Edition" - }, - "visibility": "public" - }, - { - "constant": true, - "id": 360, - "name": "VERSION", - "nodeType": "VariableDeclaration", - "scope": 530, - "src": "424:40:4", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_string_memory", - "typeString": "string" - }, - "typeName": { - "id": 358, - "name": "string", - "nodeType": "ElementaryTypeName", - "src": "424:6:4", - "typeDescriptions": { - "typeIdentifier": "t_string_storage_ptr", - "typeString": "string" - } - }, - "value": { - "argumentTypes": null, - "hexValue": "302e302e31", - "id": 359, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "457:7:4", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", - "typeString": "literal_string \"0.0.1\"" - }, - "value": "0.0.1" - }, - "visibility": "public" - }, - { - "constant": false, - "id": 364, - "name": "isExecuted", - "nodeType": "VariableDeclaration", - "scope": 530, - "src": "562:43:4", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - }, - "typeName": { - "id": 363, - "keyType": { - "id": 361, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "571:7:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "Mapping", - "src": "562:25:4", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - }, - "valueType": { - "id": 362, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "582:4:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - }, - "value": null, - "visibility": "public" - }, - { - "body": { - "id": 427, - "nodeType": "Block", - "src": "1445:350:4", - "statements": [ - { - "assignments": [ - 387 - ], - "declarations": [ - { - "constant": false, - "id": 387, - "name": "transactionHash", - "nodeType": "VariableDeclaration", - "scope": 428, - "src": "1455:23:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 386, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1455:7:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 395, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 389, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 366, - "src": "1500:2:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 390, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 368, - "src": "1504:5:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 391, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 370, - "src": "1511:4:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "id": 392, - "name": "operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 372, - "src": "1517:9:4", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", - "typeString": "enum Enum.Operation" - } - }, - { - "argumentTypes": null, - "id": 393, - "name": "nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 374, - "src": "1528:5:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_enum$_Operation_$29", - "typeString": "enum Enum.Operation" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 388, - "name": "getTransactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 529, - "src": "1481:18:4", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bytes32_$", - "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) view returns (bytes32)" - } - }, - "id": 394, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1481:53:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1455:79:4" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 400, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "1552:28:4", - "subExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 397, - "name": "isExecuted", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 364, - "src": "1553:10:4", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 399, - "indexExpression": { - "argumentTypes": null, - "id": 398, - "name": "transactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 387, - "src": "1564:15:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1553:27:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 396, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 2468, - 2469 - ], - "referencedDeclaration": 2468, - "src": "1544:7:4", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 401, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1544:37:4", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 402, - "nodeType": "ExpressionStatement", - "src": "1544:37:4" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 404, - "name": "transactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 387, - "src": "1601:15:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "id": 405, - "name": "v", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 377, - "src": "1618:1:4", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", - "typeString": "uint8[] memory" - } - }, - { - "argumentTypes": null, - "id": 406, - "name": "r", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 380, - "src": "1621:1:4", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[] memory" - } - }, - { - "argumentTypes": null, - "id": 407, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 383, - "src": "1624:1:4", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[] memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", - "typeString": "uint8[] memory" - }, - { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[] memory" - }, - { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[] memory" - } - ], - "id": 403, - "name": "checkHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 498, - "src": "1591:9:4", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_array$_t_uint8_$dyn_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$returns$__$", - "typeString": "function (bytes32,uint8[] memory,bytes32[] memory,bytes32[] memory) view" - } - }, - "id": 408, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1591:35:4", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 409, - "nodeType": "ExpressionStatement", - "src": "1591:35:4" - }, - { - "expression": { - "argumentTypes": null, - "id": 414, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 410, - "name": "isExecuted", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 364, - "src": "1689:10:4", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", - "typeString": "mapping(bytes32 => bool)" - } - }, - "id": 412, - "indexExpression": { - "argumentTypes": null, - "id": 411, - "name": "transactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 387, - "src": "1700:15:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": true, - "nodeType": "IndexAccess", - "src": "1689:27:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "74727565", - "id": 413, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "bool", - "lValueRequested": false, - "nodeType": "Literal", - "src": "1719:4:4", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "value": "true" - }, - "src": "1689:34:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 415, - "nodeType": "ExpressionStatement", - "src": "1689:34:4" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 418, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 366, - "src": "1749:2:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 419, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 368, - "src": "1753:5:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 420, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 370, - "src": "1760:4:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "id": 421, - "name": "operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 372, - "src": "1766:9:4", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", - "typeString": "enum Enum.Operation" - } - }, - { - "argumentTypes": null, - "arguments": [], - "expression": { - "argumentTypes": [], - "id": 422, - "name": "gasleft", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2458, - "src": "1777:7:4", - "typeDescriptions": { - "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", - "typeString": "function () view returns (uint256)" - } - }, - "id": 423, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1777:9:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_enum$_Operation_$29", - "typeString": "enum Enum.Operation" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 417, - "name": "execute", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1095, - "src": "1741:7:4", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bool_$", - "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) returns (bool)" - } - }, - "id": 424, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1741:46:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 416, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 2468, - 2469 - ], - "referencedDeclaration": 2468, - "src": "1733:7:4", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 425, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1733:55:4", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 426, - "nodeType": "ExpressionStatement", - "src": "1733:55:4" - } - ] - }, - "documentation": "@dev Allows to execute a Safe transaction confirmed by required number of owners.\n @param to Destination address of Safe transaction.\n @param value Ether value of Safe transaction.\n @param data Data payload of Safe transaction.\n @param operation Operation type of Safe transaction.\n @param nonce Nonce used for this Safe transaction.\n @param v Array of signature V values sorted by owner addresses.\n @param r Array of signature R values sorted by owner addresses.\n @param s Array of signature S values sorted by owner addresses.", - "id": 428, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "executeTransaction", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 384, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 366, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 428, - "src": "1242:10:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 365, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1242:7:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 368, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 428, - "src": "1263:13:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 367, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1263:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 370, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 428, - "src": "1287:10:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 369, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "1287:5:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 372, - "name": "operation", - "nodeType": "VariableDeclaration", - "scope": 428, - "src": "1308:24:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", - "typeString": "enum Enum.Operation" - }, - "typeName": { - "contractScope": null, - "id": 371, - "name": "Enum.Operation", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 29, - "src": "1308:14:4", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", - "typeString": "enum Enum.Operation" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 374, - "name": "nonce", - "nodeType": "VariableDeclaration", - "scope": 428, - "src": "1343:13:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 373, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "1343:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 377, - "name": "v", - "nodeType": "VariableDeclaration", - "scope": 428, - "src": "1366:9:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", - "typeString": "uint8[]" - }, - "typeName": { - "baseType": { - "id": 375, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "1366:5:4", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "id": 376, - "length": null, - "nodeType": "ArrayTypeName", - "src": "1366:7:4", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr", - "typeString": "uint8[]" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 380, - "name": "r", - "nodeType": "VariableDeclaration", - "scope": 428, - "src": "1386:11:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[]" - }, - "typeName": { - "baseType": { - "id": 378, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1386:7:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 379, - "length": null, - "nodeType": "ArrayTypeName", - "src": "1386:9:4", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", - "typeString": "bytes32[]" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 383, - "name": "s", - "nodeType": "VariableDeclaration", - "scope": 428, - "src": "1408:11:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[]" - }, - "typeName": { - "baseType": { - "id": 381, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1408:7:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 382, - "length": null, - "nodeType": "ArrayTypeName", - "src": "1408:9:4", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", - "typeString": "bytes32[]" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1232:193:4" - }, - "payable": false, - "returnParameters": { - "id": 385, - "nodeType": "ParameterList", - "parameters": [], - "src": "1445:0:4" - }, - "scope": 530, - "src": "1205:590:4", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 497, - "nodeType": "Block", - "src": "1916:444:4", - "statements": [ - { - "assignments": [ - 443 - ], - "declarations": [ - { - "constant": false, - "id": 443, - "name": "lastOwner", - "nodeType": "VariableDeclaration", - "scope": 498, - "src": "1978:17:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 442, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "1978:7:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 447, - "initialValue": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30", - "id": 445, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2006:1:4", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 444, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "1998:7:4", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_address_$", - "typeString": "type(address)" - }, - "typeName": "address" - }, - "id": 446, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1998:10:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "1978:30:4" - }, - { - "assignments": [], - "declarations": [ - { - "constant": false, - "id": 449, - "name": "currentOwner", - "nodeType": "VariableDeclaration", - "scope": 498, - "src": "2018:20:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 448, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2018:7:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 450, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "2018:20:4" - }, - { - "assignments": [], - "declarations": [ - { - "constant": false, - "id": 452, - "name": "i", - "nodeType": "VariableDeclaration", - "scope": 498, - "src": "2048:9:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 451, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2048:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 453, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "2048:9:4" - }, - { - "body": { - "id": 495, - "nodeType": "Block", - "src": "2141:213:4", - "statements": [ - { - "expression": { - "argumentTypes": null, - "id": 477, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 464, - "name": "currentOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 449, - "src": "2155:12:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 466, - "name": "transactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 430, - "src": "2180:15:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 467, - "name": "v", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 433, - "src": "2197:1:4", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", - "typeString": "uint8[] memory" - } - }, - "id": 469, - "indexExpression": { - "argumentTypes": null, - "id": 468, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 452, - "src": "2199:1:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2197:4:4", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 470, - "name": "r", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 436, - "src": "2203:1:4", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[] memory" - } - }, - "id": 472, - "indexExpression": { - "argumentTypes": null, - "id": 471, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 452, - "src": "2205:1:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2203:4:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 473, - "name": "s", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 439, - "src": "2209:1:4", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[] memory" - } - }, - "id": 475, - "indexExpression": { - "argumentTypes": null, - "id": 474, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 452, - "src": "2211:1:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2209:4:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - ], - "id": 465, - "name": "ecrecover", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2457, - "src": "2170:9:4", - "typeDescriptions": { - "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", - "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)" - } - }, - "id": 476, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2170:44:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "2155:59:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 478, - "nodeType": "ExpressionStatement", - "src": "2155:59:4" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 480, - "name": "isOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 1156 - ], - "referencedDeclaration": 1156, - "src": "2236:7:4", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 482, - "indexExpression": { - "argumentTypes": null, - "id": 481, - "name": "currentOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 449, - "src": "2244:12:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2236:21:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 479, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 2468, - 2469 - ], - "referencedDeclaration": 2468, - "src": "2228:7:4", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 483, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2228:30:4", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 484, - "nodeType": "ExpressionStatement", - "src": "2228:30:4" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "id": 488, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 486, - "name": "currentOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 449, - "src": "2280:12:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "BinaryOperation", - "operator": ">", - "rightExpression": { - "argumentTypes": null, - "id": 487, - "name": "lastOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 443, - "src": "2295:9:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "2280:24:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 485, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 2468, - 2469 - ], - "referencedDeclaration": 2468, - "src": "2272:7:4", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 489, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2272:33:4", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 490, - "nodeType": "ExpressionStatement", - "src": "2272:33:4" - }, - { - "expression": { - "argumentTypes": null, - "id": 493, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 491, - "name": "lastOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 443, - "src": "2319:9:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "id": 492, - "name": "currentOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 449, - "src": "2331:12:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "src": "2319:24:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 494, - "nodeType": "ExpressionStatement", - "src": "2319:24:4" - } - ] - }, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 460, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 458, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 452, - "src": "2121:1:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, - "id": 459, - "name": "threshold", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 1152 - ], - "referencedDeclaration": 1152, - "src": "2125:9:4", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "src": "2121:13:4", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 496, - "initializationExpression": { - "expression": { - "argumentTypes": null, - "id": 456, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftHandSide": { - "argumentTypes": null, - "id": 454, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 452, - "src": "2114:1:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "Assignment", - "operator": "=", - "rightHandSide": { - "argumentTypes": null, - "hexValue": "30", - "id": 455, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2118:1:4", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "src": "2114:5:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 457, - "nodeType": "ExpressionStatement", - "src": "2114:5:4" - }, - "loopExpression": { - "expression": { - "argumentTypes": null, - "id": 462, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "2136:3:4", - "subExpression": { - "argumentTypes": null, - "id": 461, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 452, - "src": "2136:1:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 463, - "nodeType": "ExpressionStatement", - "src": "2136:3:4" - }, - "nodeType": "ForStatement", - "src": "2109:245:4" - } - ] - }, - "documentation": null, - "id": 498, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "checkHash", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 440, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 430, - "name": "transactionHash", - "nodeType": "VariableDeclaration", - "scope": 498, - "src": "1820:23:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 429, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1820:7:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 433, - "name": "v", - "nodeType": "VariableDeclaration", - "scope": 498, - "src": "1845:9:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", - "typeString": "uint8[]" - }, - "typeName": { - "baseType": { - "id": 431, - "name": "uint8", - "nodeType": "ElementaryTypeName", - "src": "1845:5:4", - "typeDescriptions": { - "typeIdentifier": "t_uint8", - "typeString": "uint8" - } - }, - "id": 432, - "length": null, - "nodeType": "ArrayTypeName", - "src": "1845:7:4", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr", - "typeString": "uint8[]" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 436, - "name": "r", - "nodeType": "VariableDeclaration", - "scope": 498, - "src": "1856:11:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[]" - }, - "typeName": { - "baseType": { - "id": 434, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1856:7:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 435, - "length": null, - "nodeType": "ArrayTypeName", - "src": "1856:9:4", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", - "typeString": "bytes32[]" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 439, - "name": "s", - "nodeType": "VariableDeclaration", - "scope": 498, - "src": "1869:11:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", - "typeString": "bytes32[]" - }, - "typeName": { - "baseType": { - "id": 437, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "1869:7:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "id": 438, - "length": null, - "nodeType": "ArrayTypeName", - "src": "1869:9:4", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", - "typeString": "bytes32[]" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "1819:62:4" - }, - "payable": false, - "returnParameters": { - "id": 441, - "nodeType": "ParameterList", - "parameters": [], - "src": "1916:0:4" - }, - "scope": 530, - "src": "1801:559:4", - "stateMutability": "view", - "superFunction": null, - "visibility": "internal" - }, - { - "body": { - "id": 528, - "nodeType": "Block", - "src": "2854:95:4", - "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30783139", - "id": 515, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2886:4:4", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_25_by_1", - "typeString": "int_const 25" - }, - "value": "0x19" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_25_by_1", - "typeString": "int_const 25" - } - ], - "id": 514, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "2881:4:4", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes1_$", - "typeString": "type(bytes1)" - }, - "typeName": "byte" - }, - "id": 516, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2881:10:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - } - }, - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "hexValue": "30", - "id": 518, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "2898:1:4", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - } - ], - "id": 517, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "2893:4:4", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes1_$", - "typeString": "type(bytes1)" - }, - "typeName": "byte" - }, - "id": 519, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2893:7:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - } - }, - { - "argumentTypes": null, - "id": 520, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2498, - "src": "2902:4:4", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafeStateChannelEdition_$530", - "typeString": "contract GnosisSafeStateChannelEdition" - } - }, - { - "argumentTypes": null, - "id": 521, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 500, - "src": "2908:2:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 522, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 502, - "src": "2912:5:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 523, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 504, - "src": "2919:4:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - } - }, - { - "argumentTypes": null, - "id": 524, - "name": "operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 506, - "src": "2925:9:4", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", - "typeString": "enum Enum.Operation" - } - }, - { - "argumentTypes": null, - "id": 525, - "name": "nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 508, - "src": "2936:5:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - }, - { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - }, - { - "typeIdentifier": "t_contract$_GnosisSafeStateChannelEdition_$530", - "typeString": "contract GnosisSafeStateChannelEdition" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_enum$_Operation_$29", - "typeString": "enum Enum.Operation" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "id": 513, - "name": "keccak256", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2459, - "src": "2871:9:4", - "typeDescriptions": { - "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", - "typeString": "function () pure returns (bytes32)" - } - }, - "id": 526, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2871:71:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "functionReturnParameters": 512, - "id": 527, - "nodeType": "Return", - "src": "2864:78:4" - } - ] - }, - "documentation": "@dev Returns hash to be signed by owners.\n @param to Destination address.\n @param value Ether value.\n @param data Data payload.\n @param operation Operation type.\n @param nonce Transaction nonce.\n @return Transaction hash.", - "id": 529, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": true, - "modifiers": [], - "name": "getTransactionHash", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 509, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 500, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 529, - "src": "2675:10:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 499, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "2675:7:4", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 502, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 529, - "src": "2696:13:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 501, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2696:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 504, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 529, - "src": "2720:10:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 503, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "2720:5:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 506, - "name": "operation", - "nodeType": "VariableDeclaration", - "scope": 529, - "src": "2741:24:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", - "typeString": "enum Enum.Operation" - }, - "typeName": { - "contractScope": null, - "id": 505, - "name": "Enum.Operation", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 29, - "src": "2741:14:4", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$29", - "typeString": "enum Enum.Operation" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 508, - "name": "nonce", - "nodeType": "VariableDeclaration", - "scope": 529, - "src": "2776:13:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 507, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "2776:7:4", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "2665:130:4" - }, - "payable": false, - "returnParameters": { - "id": 512, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 511, - "name": "", - "nodeType": "VariableDeclaration", - "scope": 529, - "src": "2841:7:4", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - }, - "typeName": { - "id": 510, - "name": "bytes32", - "nodeType": "ElementaryTypeName", - "src": "2841:7:4", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "2840:9:4" - }, - "scope": 530, - "src": "2638:311:4", - "stateMutability": "view", - "superFunction": null, - "visibility": "public" - } - ], - "scope": 531, - "src": "281:2670:4" - } - ], - "src": "0:2952:4" - }, - "compiler": { - "name": "solc", - "version": "0.4.23+commit.124ca40d.Emscripten.clang" - }, - "networks": { - "4": { - "events": {}, - "links": {}, - "address": "0xa6f1efbaf462946058ef6086fd562f7ddaf84dda", - "transactionHash": "0xc96d3c71f8b88c6649e4b95ad2f30eadf63f8c4bd58da57a856a3b7931bbbf4f" - }, - "1525950336085": { - "events": {}, - "links": {}, - "address": "0x9327970e8e29e8dba16b28acb177906a92447a0c", - "transactionHash": "0x8b91e38b0bbafe43309aca9832bcd234b82d7ac9f81abe94891cd406a735549c" - }, - "1526283540628": { - "events": {}, - "links": {}, - "address": "0xf2eb76d41d54cc58f9a8e86e2b42d41ccd22a8fa", - "transactionHash": "0x8b91e38b0bbafe43309aca9832bcd234b82d7ac9f81abe94891cd406a735549c" - } - }, - "schemaVersion": "2.0.0", - "updatedAt": "2018-05-14T07:39:37.959Z" -} \ No newline at end of file diff --git a/safe-contracts/build/contracts/GnosisSafeTeamEdition.json b/safe-contracts/build/contracts/GnosisSafeTeamEdition.json index 738fc446aa..b58c25e279 100644 --- a/safe-contracts/build/contracts/GnosisSafeTeamEdition.json +++ b/safe-contracts/build/contracts/GnosisSafeTeamEdition.json @@ -171,7 +171,7 @@ "outputs": [ { "name": "", - "type": "bool" + "type": "uint256" } ], "payable": false, @@ -452,51 +452,51 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50612c1b806100206000396000f300608060405260043610610128576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063153414fa1461012a57806324cd131f146101d45780632b5000411461027e5780632f54bf6e14610344578063468721a71461039f578063610b5925146104575780637de7edef1461049a57806385e332cd146104dd57806386040aa9146105345780638cff6355146105a4578063a04222e1146105fb578063a09e89f5146106d4578063a0e67e2b1461073d578063a3f4df7e146107a9578063b2494df314610839578063b7f3358d146108a5578063b91a667f146108d5578063e009cfde14610925578063e318b52b14610988578063e52cb36a14610a0b578063e75235b814610a54578063ffa1ad7414610a85575b005b34801561013657600080fd5b506101d2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050610b15565b005b3480156101e057600080fd5b5061027c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050610cca565b005b34801561028a57600080fd5b50610326600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050610d6d565b60405180826000191660001916815260200191505060405180910390f35b34801561035057600080fd5b50610385600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f89565b604051808215151515815260200191505060405180910390f35b3480156103ab57600080fd5b5061043d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919050505061100b565b604051808215151515815260200191505060405180910390f35b34801561046357600080fd5b50610498600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110a8565b005b3480156104a657600080fd5b506104db600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611325565b005b3480156104e957600080fd5b506104f26113c8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561054057600080fd5b506105a2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506113cd565b005b3480156105b057600080fd5b506105b9611653565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561060757600080fd5b506106d260048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611658565b005b3480156106e057600080fd5b506107236004803603810190808035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611672565b604051808215151515815260200191505060405180910390f35b34801561074957600080fd5b506107526116a1565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561079557808201518184015260208101905061077a565b505050509050019250505060405180910390f35b3480156107b557600080fd5b506107be61183c565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107fe5780820151818401526020810190506107e3565b50505050905090810190601f16801561082b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561084557600080fd5b5061084e611875565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610891578082015181840152602081019050610876565b505050509050019250505060405180910390f35b3480156108b157600080fd5b506108d3600480360381019080803560ff169060200190929190505050611b1c565b005b3480156108e157600080fd5b50610923600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050611b9b565b005b34801561093157600080fd5b50610986600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e53565b005b34801561099457600080fd5b50610a09600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612086565b005b348015610a1757600080fd5b50610a3a600480360381019080803560001916906020019092919050505061241b565b604051808215151515815260200191505060405180910390f35b348015610a6057600080fd5b50610a6961243b565b604051808260ff1660ff16815260200191505060405180910390f35b348015610a9157600080fd5b50610a9a612452565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610ada578082015181840152602081019050610abf565b50505050905090810190601f168015610b075780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515610b9b57600080fd5b610ba88686868686610d6d565b905060056000826000191660001916815260200190815260200160002060009054906101000a900460ff16151515610bdf57600080fd5b60066000826000191660001916815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610c5157600080fd5b600160066000836000191660001916815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050505050565b6000610cd98686868686610d6d565b905060056000826000191660001916815260200190815260200160002060009054906101000a900460ff16151515610d1057600080fd5b610d198161248b565b600160056000836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550610d5a868686865a6126e0565b1515610d6557600080fd5b505050505050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f01000000000000000000000000000000000000000000000000000000000000000230888888888860405180897effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083835b602083101515610f0e5780518252602082019150602081019050602083039250610ee9565b6001836020036101000a038019825116818451168082178552505050505050905001836002811115610f3c57fe5b60ff167f0100000000000000000000000000000000000000000000000000000000000000028152600101828152602001985050505050505050506040518091039020905095945050505050565b600080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561109157600080fd5b61109e858585855a6126e0565b9050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156110e257600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156111365750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b151561114157600080fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156111c557600080fd5b60016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561135f57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561138557600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561140757600080fd5b8060ff166001600354031015151561141e57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156114b757600080fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360008154809291906001900391905055508060ff16600460009054906101000a900460ff1660ff1614151561164e5761164d81611b1c565b5b505050565b600181565b61166284846127dd565b61166c8282612a6e565b50505050565b60066020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b6060806000806003546040519080825280602002602001820160405280156116d85781602001602082028038833980820191505090505b5092506000915060026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415156118335780838381518110151561178857fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508180600101925050611743565b82935050505090565b6040805190810160405280601881526020017f476e6f7369732053616665205465616d2045646974696f6e000000000000000081525081565b606060008060606000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151561198957600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915082806001019350506118e4565b826040519080825280602002602001820160405280156119b85781602001602082028038833980820191505090505b5090506000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515611b1357818184815181101515611a6857fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050611a23565b80935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611b5657600080fd5b6003548160ff1611151515611b6a57600080fd5b60018160ff1610151515611b7d57600080fd5b80600460006101000a81548160ff021916908360ff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611bd557600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614158015611c295750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1515611c3457600080fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611cb857600080fd5b60026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003600081548092919060010191905055508060ff16600460009054906101000a900460ff1660ff16141515611e4f57611e4e81611b1c565b5b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611e8d57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611f2657600080fd5b600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156120c057600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156121145750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b151561211f57600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156121a357600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561223c57600080fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b60056020528060005260406000206000915054906101000a900460ff1681565b6000600460009054906101000a900460ff16905090565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b600080600080925060026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156126b95760066000856000191660001916815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1690503373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806125cc5750805b1561265257801561264957600060066000866000191660001916815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b82806001019350505b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691506124f7565b600460009054906101000a900460ff1660ff1683101515156126da57600080fd5b50505050565b600080600060028111156126f057fe5b8460028111156126fc57fe5b14156127155761270e87878786612bad565b91506127d3565b6001600281111561272257fe5b84600281111561272e57fe5b14156127465761273f878685612bc6565b91506127d2565b61274f85612bdd565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b600080600080600460009054906101000a900460ff1660ff1614151561280257600080fd5b84518460ff161115151561281557600080fd5b60018460ff161015151561282857600080fd5b60019250600091505b84518210156129c557848281518110151561284857fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff16141580156128a85750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15156128b357600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561293757600080fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508092508180600101925050612831565b6001600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550845160038190555083600460006101000a81548160ff021916908360ff1602179055505050505050565b600060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612af357600080fd5b6001806000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008273ffffffffffffffffffffffffffffffffffffffff16141515612ba957612b9d82825a612bc6565b1515612ba857600080fd5b5b5050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f090509190505600a165627a7a72305820aa4f2f1bee5ca42e38a155540ac82e19af0bc412962c5bff72447a23481d2d090029", - "deployedBytecode": "0x608060405260043610610128576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063153414fa1461012a57806324cd131f146101d45780632b5000411461027e5780632f54bf6e14610344578063468721a71461039f578063610b5925146104575780637de7edef1461049a57806385e332cd146104dd57806386040aa9146105345780638cff6355146105a4578063a04222e1146105fb578063a09e89f5146106d4578063a0e67e2b1461073d578063a3f4df7e146107a9578063b2494df314610839578063b7f3358d146108a5578063b91a667f146108d5578063e009cfde14610925578063e318b52b14610988578063e52cb36a14610a0b578063e75235b814610a54578063ffa1ad7414610a85575b005b34801561013657600080fd5b506101d2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050610b15565b005b3480156101e057600080fd5b5061027c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050610cca565b005b34801561028a57600080fd5b50610326600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050610d6d565b60405180826000191660001916815260200191505060405180910390f35b34801561035057600080fd5b50610385600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f89565b604051808215151515815260200191505060405180910390f35b3480156103ab57600080fd5b5061043d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919050505061100b565b604051808215151515815260200191505060405180910390f35b34801561046357600080fd5b50610498600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506110a8565b005b3480156104a657600080fd5b506104db600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611325565b005b3480156104e957600080fd5b506104f26113c8565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561054057600080fd5b506105a2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506113cd565b005b3480156105b057600080fd5b506105b9611653565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561060757600080fd5b506106d260048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611658565b005b3480156106e057600080fd5b506107236004803603810190808035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611672565b604051808215151515815260200191505060405180910390f35b34801561074957600080fd5b506107526116a1565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561079557808201518184015260208101905061077a565b505050509050019250505060405180910390f35b3480156107b557600080fd5b506107be61183c565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107fe5780820151818401526020810190506107e3565b50505050905090810190601f16801561082b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561084557600080fd5b5061084e611875565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610891578082015181840152602081019050610876565b505050509050019250505060405180910390f35b3480156108b157600080fd5b506108d3600480360381019080803560ff169060200190929190505050611b1c565b005b3480156108e157600080fd5b50610923600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050611b9b565b005b34801561093157600080fd5b50610986600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e53565b005b34801561099457600080fd5b50610a09600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612086565b005b348015610a1757600080fd5b50610a3a600480360381019080803560001916906020019092919050505061241b565b604051808215151515815260200191505060405180910390f35b348015610a6057600080fd5b50610a6961243b565b604051808260ff1660ff16815260200191505060405180910390f35b348015610a9157600080fd5b50610a9a612452565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610ada578082015181840152602081019050610abf565b50505050905090810190601f168015610b075780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515610b9b57600080fd5b610ba88686868686610d6d565b905060056000826000191660001916815260200190815260200160002060009054906101000a900460ff16151515610bdf57600080fd5b60066000826000191660001916815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610c5157600080fd5b600160066000836000191660001916815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550505050505050565b6000610cd98686868686610d6d565b905060056000826000191660001916815260200190815260200160002060009054906101000a900460ff16151515610d1057600080fd5b610d198161248b565b600160056000836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550610d5a868686865a6126e0565b1515610d6557600080fd5b505050505050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f01000000000000000000000000000000000000000000000000000000000000000230888888888860405180897effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083835b602083101515610f0e5780518252602082019150602081019050602083039250610ee9565b6001836020036101000a038019825116818451168082178552505050505050905001836002811115610f3c57fe5b60ff167f0100000000000000000000000000000000000000000000000000000000000000028152600101828152602001985050505050505050506040518091039020905095945050505050565b600080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561109157600080fd5b61109e858585855a6126e0565b9050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156110e257600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156111365750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b151561114157600080fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156111c557600080fd5b60016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561135f57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561138557600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561140757600080fd5b8060ff166001600354031015151561141e57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156114b757600080fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360008154809291906001900391905055508060ff16600460009054906101000a900460ff1660ff1614151561164e5761164d81611b1c565b5b505050565b600181565b61166284846127dd565b61166c8282612a6e565b50505050565b60066020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b6060806000806003546040519080825280602002602001820160405280156116d85781602001602082028038833980820191505090505b5092506000915060026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415156118335780838381518110151561178857fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508180600101925050611743565b82935050505090565b6040805190810160405280601881526020017f476e6f7369732053616665205465616d2045646974696f6e000000000000000081525081565b606060008060606000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151561198957600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915082806001019350506118e4565b826040519080825280602002602001820160405280156119b85781602001602082028038833980820191505090505b5090506000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515611b1357818184815181101515611a6857fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050611a23565b80935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611b5657600080fd5b6003548160ff1611151515611b6a57600080fd5b60018160ff1610151515611b7d57600080fd5b80600460006101000a81548160ff021916908360ff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611bd557600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614158015611c295750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1515611c3457600080fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611cb857600080fd5b60026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003600081548092919060010191905055508060ff16600460009054906101000a900460ff1660ff16141515611e4f57611e4e81611b1c565b5b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611e8d57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611f2657600080fd5b600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156120c057600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156121145750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b151561211f57600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156121a357600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561223c57600080fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b60056020528060005260406000206000915054906101000a900460ff1681565b6000600460009054906101000a900460ff16905090565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b600080600080925060026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156126b95760066000856000191660001916815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1690503373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806125cc5750805b1561265257801561264957600060066000866000191660001916815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b82806001019350505b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691506124f7565b600460009054906101000a900460ff1660ff1683101515156126da57600080fd5b50505050565b600080600060028111156126f057fe5b8460028111156126fc57fe5b14156127155761270e87878786612bad565b91506127d3565b6001600281111561272257fe5b84600281111561272e57fe5b14156127465761273f878685612bc6565b91506127d2565b61274f85612bdd565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b600080600080600460009054906101000a900460ff1660ff1614151561280257600080fd5b84518460ff161115151561281557600080fd5b60018460ff161015151561282857600080fd5b60019250600091505b84518210156129c557848281518110151561284857fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff16141580156128a85750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15156128b357600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561293757600080fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508092508180600101925050612831565b6001600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550845160038190555083600460006101000a81548160ff021916908360ff1602179055505050505050565b600060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612af357600080fd5b6001806000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008273ffffffffffffffffffffffffffffffffffffffff16141515612ba957612b9d82825a612bc6565b1515612ba857600080fd5b5b5050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f090509190505600a165627a7a72305820aa4f2f1bee5ca42e38a155540ac82e19af0bc412962c5bff72447a23481d2d090029", - "sourceMap": "272:3870:3:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;272:3870:3;;;;;;;", - "deployedSourceMap": "272:3870:3:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1175:695;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1175:695:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2312:542;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2312:542:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3829:311;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3829:311:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4841:129:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4841:129:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2522:377:6;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2522:377:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1235:391;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1235:391:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;626:208:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:208:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;499:55:6;;8:9:-1;5:2;;;30:1;27;20:12;5:2;499:55:6;;;;;;;;;;;;;;;;;;;;;;;;;;;2776:573:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2776:573:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;287:54;;8:9:-1;5:2;;;30:1;27;20:12;5:2;287:54:7;;;;;;;;;;;;;;;;;;;;;;;;;;;693:301:1;;8:9:-1;5:2;;;30:1;27;20:12;5:2;693:301:1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;682:63:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;682:63:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5052:458:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5052:458:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;5052:458:7;;;;;;;;;;;;;;;;;336:56:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;336:56:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;336:56:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4423:738:6;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4423:738:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;4423:738:6;;;;;;;;;;;;;;;;;4398:318:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4398:318:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;1906:528;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1906:528:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1887:299:6;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1887:299:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3683:526:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3683:526:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;536:43:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;536:43:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4722:113:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4722:113:7;;;;;;;;;;;;;;;;;;;;;;;;;;;398:40:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;398:40:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;398:40:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1175:695;1560:23;1476:1;1454:6;:18;1461:10;1454:18;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;;1446:32;;;;;;;;1586:53;1605:2;1609:5;1616:4;1622:9;1633:5;1586:18;:53::i;:::-;1560:79;;1658:10;:27;1669:15;1658:27;;;;;;;;;;;;;;;;;;;;;;;;;;;1657:28;1649:37;;;;;;;;1767:10;:27;1778:15;1767:27;;;;;;;;;;;;;;;;;:39;1795:10;1767:39;;;;;;;;;;;;;;;;;;;;;;;;;1766:40;1758:49;;;;;;;;1859:4;1817:10;:27;1828:15;1817:27;;;;;;;;;;;;;;;;;:39;1845:10;1817:39;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;1175:695;;;;;;:::o;2312:542::-;2506:23;2532:53;2551:2;2555:5;2562:4;2568:9;2579:5;2532:18;:53::i;:::-;2506:79;;2604:10;:27;2615:15;2604:27;;;;;;;;;;;;;;;;;;;;;;;;;;;2603:28;2595:37;;;;;;;;2642:43;2669:15;2642:26;:43::i;:::-;2778:4;2748:10;:27;2759:15;2748:27;;;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;2800:46;2808:2;2812:5;2819:4;2825:9;2836;2800:7;:46::i;:::-;2792:55;;;;;;;;2312:542;;;;;;:::o;3829:311::-;4032:7;4077:4;4072:10;;4089:1;4084:7;;4093:4;4099:2;4103:5;4110:4;4116:9;4127:5;4062:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4062:71:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4055:78;;3829:311;;;;;;;:::o;4841:129:7:-;4918:4;4962:1;4945:6;:13;4952:5;4945:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;;4938:25;;4841:129;;;:::o;2522:377:6:-;2654:12;2762:1;2739:7;:19;2747:10;2739:19;;;;;;;;;;;;;;;;;;;;;;;;;:24;;;;2731:33;;;;;;;;2846:46;2854:2;2858:5;2865:4;2871:9;2882;2846:7;:46::i;:::-;2836:56;;2522:377;;;;;;:::o;1235:391::-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;1401:1:6;1390:6;1382:20;;;;:59;;;;;550:3;1406:35;;1414:6;1406:35;;;;1382:59;1374:68;;;;;;;;1520:1;1501:7;:15;1509:6;1501:15;;;;;;;;;;;;;;;;;;;;;;;;;:20;;;1493:29;;;;;;;;1550:7;:25;550:3;1550:25;;;;;;;;;;;;;;;;;;;;;;;;;1532:7;:15;1540:6;1532:15;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;1613:6;1585:7;:25;550:3;1585:25;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;1235:391;:::o;626:208:4:-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;791:1:4;776:11;:16;;;;768:25;;;;;;;;816:11;803:10;;:24;;;;;;;;;;;;;;;;;;626:208;:::o;499:55:6:-;550:3;499:55;:::o;2776:573:7:-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;3000:10:7;2982:28;;2995:1;2982:10;;:14;:28;;2974:37;;;;;;;;3112:5;3091:26;;:6;:17;3098:9;3091:17;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;3083:35;;;;;;;;3148:6;:13;3155:5;3148:13;;;;;;;;;;;;;;;;;;;;;;;;;3128:6;:17;3135:9;3128:17;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;3187:1;3171:6;:13;3178:5;3171:13;;;;;;;;;;;;;;;;:17;;;;;;;;;;;;;;;;;;3198:10;;:12;;;;;;;;;;;;;;3291:10;3278:23;;:9;;;;;;;;;;;:23;;;;3274:68;;;3315:27;3331:10;3315:15;:27::i;:::-;3274:68;2776:573;;;:::o;287:54::-;337:3;287:54;:::o;693:301:1:-;798:32;810:7;819:10;798:11;:32::i;:::-;965:22;978:2;982:4;965:12;:22::i;:::-;693:301;;;;:::o;682:63:3:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5052:458:7:-;5118:9;5143:22;5237:13;5264:20;5182:10;;5168:25;;;;;;;;;;;;;;;;;;;;;;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;5168:25:7;;;;5143:50;;5253:1;5237:17;;5287:6;:23;337:3;5287:23;;;;;;;;;;;;;;;;;;;;;;;;;5264:46;;5320:162;337:3;5326:31;;:12;:31;;;;5320:162;;;5388:12;5373:5;5379;5373:12;;;;;;;;;;;;;;;;;:27;;;;;;;;;;;5429:6;:20;5436:12;5429:20;;;;;;;;;;;;;;;;;;;;;;;;;5414:35;;5463:8;;;;;;;5320:162;;;5498:5;5491:12;;5052:458;;;;:::o;336:56:3:-;;;;;;;;;;;;;;;;;;;;:::o;4423:738:6:-;4490:9;4549:19;4582:21;4782:22;4571:1;4549:23;;4606:7;:25;550:3;4606:25;;;;;;;;;;;;;;;;;;;;;;;;;4582:49;;4641:132;550:3;4647:33;;:13;:33;;;;4641:132;;;4712:7;:22;4720:13;4712:22;;;;;;;;;;;;;;;;;;;;;;;;;4696:38;;4748:14;;;;;;;4641:132;;;4821:11;4807:26;;;;;;;;;;;;;;;;;;;;;;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;4807:26:6;;;;4782:51;;4891:1;4877:15;;4918:7;:25;550:3;4918:25;;;;;;;;;;;;;;;;;;;;;;;;;4902:41;;4953:180;550:3;4959:33;;:13;:33;;;;4953:180;;;5029:13;5008:5;5014:11;5008:18;;;;;;;;;;;;;;;;;:34;;;;;;;;;;;5072:7;:22;5080:13;5072:22;;;;;;;;;;;;;;;;;;;;;;;;;5056:38;;5108:14;;;;;;;4953:180;;;5149:5;5142:12;;4423:738;;;;:::o;4398:318:7:-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;4580:10:7;;4566;:24;;;;4558:33;;;;;;;;4675:1;4661:10;:15;;;;4653:24;;;;;;;;4699:10;4687:9;;:22;;;;;;;;;;;;;;;;;;4398:318;:::o;1906:528::-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;2076:1:7;2067:5;:10;;;;:38;;;;;337:3;2081:24;;:5;:24;;;;2067:38;2059:47;;;;;;;;2181:1;2164:6;:13;2171:5;2164:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;2156:27;;;;;;;;2209:6;:23;337:3;2209:23;;;;;;;;;;;;;;;;;;;;;;;;;2193:6;:13;2200:5;2193:13;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;2268:5;2242:6;:23;337:3;2242:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;2283:10;;:12;;;;;;;;;;;;;2376:10;2363:23;;:9;;;;;;;;;;;:23;;;;2359:68;;;2400:27;2416:10;2400:15;:27::i;:::-;2359:68;1906:528;;:::o;1887:299:6:-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;2095:6:6;2064:38;;:7;:19;2072:10;2064:19;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;2056:47;;;;;;;;2135:7;:15;2143:6;2135:15;;;;;;;;;;;;;;;;;;;;;;;;;2113:7;:19;2121:10;2113:19;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;2178:1;2160:7;:15;2168:6;2160:15;;;;;;;;;;;;;;;;:19;;;;;;;;;;;;;;;;;;1887:299;;:::o;3683:526:7:-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;3866:1:7;3854:8;:13;;;;:44;;;;;337:3;3871:27;;:8;:27;;;;3854:44;3846:53;;;;;;;;3977:1;3957:6;:16;3964:8;3957:16;;;;;;;;;;;;;;;;;;;;;;;;;:21;;;3949:30;;;;;;;;4080:8;4059:29;;:6;:17;4066:9;4059:17;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;4051:38;;;;;;;;4118:6;:16;4125:8;4118:16;;;;;;;;;;;;;;;;;;;;;;;;;4099:6;:16;4106:8;4099:16;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;4164:8;4144:6;:17;4151:9;4144:17;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;4201:1;4182:6;:16;4189:8;4182:16;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;3683:526;;;:::o;536:43:3:-;;;;;;;;;;;;;;;;;;;;;;:::o;4722:113:7:-;4791:5;4819:9;;;;;;;;;;;4812:16;;4722:113;:::o;398:40:3:-;;;;;;;;;;;;;;;;;;;;:::o;2860:691::-;2952:21;3029:20;3139:19;2976:1;2952:25;;3052:6;:23;337:3:7;3052:23:3;;;;;;;;;;;;;;;;;;;;;;;;;3029:46;;3085:415;337:3:7;3092:31:3;;:12;:31;;;;3085:415;;;3161:10;:27;3172:15;3161:27;;;;;;;;;;;;;;;;;:41;3189:12;3161:41;;;;;;;;;;;;;;;;;;;;;;;;;3139:63;;3235:10;3219:26;;:12;:26;;;:44;;;;3249:14;3219:44;3216:225;;;3287:14;3283:110;;;3369:5;3325:10;:27;3336:15;3325:27;;;;;;;;;;;;;;;;;:41;3353:12;3325:41;;;;;;;;;;;;;;;;:49;;;;;;;;;;;;;;;;;;3283:110;3410:16;;;;;;;3216:225;3469:6;:20;3476:12;3469:20;;;;;;;;;;;;;;;;;;;;;;;;;3454:35;;3085:415;;;3534:9;;;;;;;;;;;3517:26;;:13;:26;;3509:35;;;;;;;;2860:691;;;;:::o;2905:548:6:-;3036:12;3307:19;3081;3068:32;;;;;;;;:9;:32;;;;;;;;;3064:383;;;3124:35;3136:2;3140:5;3147:4;3153:5;3124:11;:35::i;:::-;3114:45;;3064:383;;;3191:27;3178:40;;;;;;;;:9;:40;;;;;;;;;3174:273;;;3242:36;3262:2;3266:4;3272:5;3242:19;:36::i;:::-;3232:46;;3174:273;;;3329:19;3343:4;3329:13;:19::i;:::-;3307:41;;3387:1;3372:11;:16;;;;3362:26;;3407:29;3424:11;3407:29;;;;;;;;;;;;;;;;;;;;;;3174:273;3064:383;2905:548;;;;;;;;:::o;641:1025:7:-;1132:20;1185:9;1284:13;875:1;862:9;;;;;;;;;;;:14;;;854:23;;;;;;;;984:7;:14;970:10;:28;;;;962:37;;;;;;;;1083:1;1069:10;:15;;;;1061:24;;;;;;;;337:3;1132:38;;1197:1;1185:13;;1180:363;1204:7;:14;1200:1;:18;1180:363;;;1300:7;1308:1;1300:10;;;;;;;;;;;;;;;;;;1284:26;;1341:1;1332:5;:10;;;;:38;;;;;337:3;1346:24;;:5;:24;;;;1332:38;1324:47;;;;;;;;1454:1;1437:6;:13;1444:5;1437:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;1429:27;;;;;;;;1493:5;1470:6;:20;1477:12;1470:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;1527:5;1512:20;;1220:3;;;;;;;1180:363;;;337:3;1552:6;:20;1559:12;1552:20;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;1613:7;:14;1600:10;:27;;;;1649:10;1637:9;;:22;;;;;;;;;;;;;;;;;;641:1025;;;;;:::o;735:333:6:-;849:1;820:7;:25;550:3;820:25;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;812:39;;;;;;;;550:3;861:7;:25;550:3;861:25;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;925:1;919:2;:7;;;;915:146;;;1020:40;1040:2;1044:4;1050:9;1020:19;:40::i;:::-;1012:49;;;;;;;;915:146;735:333;;:::o;3459:309::-;3568:12;3750:1;3747;3740:4;3734:11;3727:4;3721;3717:15;3710:5;3706:2;3699:5;3694:58;3683:69;;3669:93;;;;;;:::o;3774:303::-;3876:12;4059:1;4056;4049:4;4043:11;4036:4;4030;4026:15;4022:2;4015:5;4002:59;3991:70;;3977:94;;;;;:::o;4083:261::-;4152:19;4322:4;4316:11;4309:4;4303;4299:15;4296:1;4289:39;4274:54;;4260:78;;;:::o", - "source": "pragma solidity 0.4.23;\nimport \"./GnosisSafe.sol\";\nimport \"./MasterCopy.sol\";\n\n\n/// @title Gnosis Safe Team Edition - A multisignature wallet with support for confirmations.\n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract GnosisSafeTeamEdition is MasterCopy, GnosisSafe {\n\n string public constant NAME = \"Gnosis Safe Team Edition\";\n string public constant VERSION = \"0.0.1\";\n\n // isExecuted mapping allows to check if a transaction (by hash) was already executed.\n mapping (bytes32 => bool) public isExecuted;\n\n // isApproved mapping allows to check if a transaction (by hash) was confirmed by an owner.\n mapping (bytes32 => mapping(address => bool)) public isApproved;\n\n /// @dev Allows to confirm a Safe transaction with a regular transaction.\n /// This can only be done from an owner address.\n /// @param to Destination address of Safe transaction.\n /// @param value Ether value of Safe transaction.\n /// @param data Data payload of Safe transaction.\n /// @param operation Operation type of Safe transaction.\n /// @param nonce Nonce used for this Safe transaction.\n function approveTransactionWithParameters(\n address to, \n uint256 value, \n bytes data, \n Enum.Operation operation, \n uint256 nonce\n )\n public\n {\n // Only Safe owners are allowed to confirm Safe transactions.\n require(owners[msg.sender] != 0);\n // It should not be possible to confirm an executed transaction\n bytes32 transactionHash = getTransactionHash(to, value, data, operation, nonce);\n require(!isExecuted[transactionHash]);\n // It is only possible to confirm a transaction once.\n require(!isApproved[transactionHash][msg.sender]);\n isApproved[transactionHash][msg.sender] = true;\n }\n\n /// @dev Allows to execute a Safe transaction confirmed by required number of owners. If the sender is an owner this is automatically confirmed.\n /// @param to Destination address of Safe transaction.\n /// @param value Ether value of Safe transaction.\n /// @param data Data payload of Safe transaction.\n /// @param operation Operation type of Safe transaction.\n /// @param nonce Nonce used for this Safe transaction.\n function execTransactionIfApproved(\n address to, \n uint256 value, \n bytes data, \n Enum.Operation operation, \n uint256 nonce\n )\n public\n {\n bytes32 transactionHash = getTransactionHash(to, value, data, operation, nonce);\n require(!isExecuted[transactionHash]);\n checkAndClearConfirmations(transactionHash);\n // Mark as executed and execute transaction.\n isExecuted[transactionHash] = true;\n require(execute(to, value, data, operation, gasleft()));\n }\n\n function checkAndClearConfirmations(bytes32 transactionHash)\n internal\n {\n uint256 confirmations = 0;\n // Validate threshold is reached.\n address currentOwner = owners[SENTINEL_OWNERS];\n while (currentOwner != SENTINEL_OWNERS) {\n bool ownerConfirmed = isApproved[transactionHash][currentOwner];\n if(currentOwner == msg.sender || ownerConfirmed) {\n if (ownerConfirmed) {\n isApproved[transactionHash][currentOwner] = false;\n }\n confirmations ++;\n }\n currentOwner = owners[currentOwner];\n }\n require(confirmations >= threshold);\n }\n\n /// @dev Returns hash to be signed by owners.\n /// @param to Destination address.\n /// @param value Ether value.\n /// @param data Data payload.\n /// @param operation Operation type.\n /// @param nonce Transaction nonce.\n /// @return Transaction hash.\n function getTransactionHash(\n address to, \n uint256 value, \n bytes data, \n Enum.Operation operation, \n uint256 nonce\n )\n public\n view\n returns (bytes32)\n {\n return keccak256(byte(0x19), byte(0), this, to, value, data, operation, nonce);\n }\n}\n", + "bytecode": "0x608060405234801561001057600080fd5b50612bc4806100206000396000f300608060405260043610610128576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063153414fa1461012a57806324cd131f146101d45780632b5000411461027e5780632f54bf6e14610344578063468721a71461039f578063610b5925146104575780637de7edef1461049a57806385e332cd146104dd57806386040aa9146105345780638cff6355146105a4578063a04222e1146105fb578063a09e89f5146106d4578063a0e67e2b14610739578063a3f4df7e146107a5578063b2494df314610835578063b7f3358d146108a1578063b91a667f146108d1578063e009cfde14610921578063e318b52b14610984578063e52cb36a14610a07578063e75235b814610a50578063ffa1ad7414610a81575b005b34801561013657600080fd5b506101d2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050610b11565b005b3480156101e057600080fd5b5061027c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050610c41565b005b34801561028a57600080fd5b50610326600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050610ce4565b60405180826000191660001916815260200191505060405180910390f35b34801561035057600080fd5b50610385600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f6c565b604051808215151515815260200191505060405180910390f35b3480156103ab57600080fd5b5061043d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050610fee565b604051808215151515815260200191505060405180910390f35b34801561046357600080fd5b50610498600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061108b565b005b3480156104a657600080fd5b506104db600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611308565b005b3480156104e957600080fd5b506104f26113ab565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561054057600080fd5b506105a2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506113b0565b005b3480156105b057600080fd5b506105b9611636565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561060757600080fd5b506106d260048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061163b565b005b3480156106e057600080fd5b506107236004803603810190808035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611655565b6040518082815260200191505060405180910390f35b34801561074557600080fd5b5061074e61167a565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610791578082015181840152602081019050610776565b505050509050019250505060405180910390f35b3480156107b157600080fd5b506107ba611815565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107fa5780820151818401526020810190506107df565b50505050905090810190601f1680156108275780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561084157600080fd5b5061084a61184e565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561088d578082015181840152602081019050610872565b505050509050019250505060405180910390f35b3480156108ad57600080fd5b506108cf600480360381019080803560ff169060200190929190505050611af5565b005b3480156108dd57600080fd5b5061091f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050611b74565b005b34801561092d57600080fd5b50610982600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e2c565b005b34801561099057600080fd5b50610a05600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061205f565b005b348015610a1357600080fd5b50610a3660048036038101908080356000191690602001909291905050506123f4565b604051808215151515815260200191505060405180910390f35b348015610a5c57600080fd5b50610a65612414565b604051808260ff1660ff16815260200191505060405180910390f35b348015610a8d57600080fd5b50610a9661242b565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610ad6578082015181840152602081019050610abb565b50505050905090810190601f168015610b035780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515610b9757600080fd5b610ba48686868686610ce4565b905060056000826000191660001916815260200190815260200160002060009054906101000a900460ff16151515610bdb57600080fd5b600160066000836000191660001916815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050505050565b6000610c508686868686610ce4565b905060056000826000191660001916815260200190815260200160002060009054906101000a900460ff16151515610c8757600080fd5b610c9081612464565b600160056000836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550610cd1868686865a612689565b1515610cdc57600080fd5b505050505050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f01000000000000000000000000000000000000000000000000000000000000000230888888888860405160200180897effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083835b602083101515610e885780518252602082019150602081019050602083039250610e63565b6001836020036101000a038019825116818451168082178552505050505050905001836002811115610eb657fe5b60ff167f0100000000000000000000000000000000000000000000000000000000000000028152600101828152602001985050505050505050506040516020818303038152906040526040518082805190602001908083835b602083101515610f345780518252602082019150602081019050602083039250610f0f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020905095945050505050565b600080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561107457600080fd5b611081858585855a612689565b9050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156110c557600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156111195750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b151561112457600080fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156111a857600080fd5b60016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561134257600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561136857600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156113ea57600080fd5b8060ff166001600354031015151561140157600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561149a57600080fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360008154809291906001900391905055508060ff16600460009054906101000a900460ff1660ff161415156116315761163081611af5565b5b505050565b600181565b6116458484612786565b61164f8282612a17565b50505050565b6006602052816000526040600020602052806000526040600020600091509150505481565b6060806000806003546040519080825280602002602001820160405280156116b15781602001602082028038833980820191505090505b5092506000915060026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151561180c5780838381518110151561176157fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050818060010192505061171c565b82935050505090565b6040805190810160405280601881526020017f476e6f7369732053616665205465616d2045646974696f6e000000000000000081525081565b606060008060606000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151561196257600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915082806001019350506118bd565b826040519080825280602002602001820160405280156119915781602001602082028038833980820191505090505b5090506000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515611aec57818184815181101515611a4157fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915082806001019350506119fc565b80935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611b2f57600080fd5b6003548160ff1611151515611b4357600080fd5b60018160ff1610151515611b5657600080fd5b80600460006101000a81548160ff021916908360ff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611bae57600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614158015611c025750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1515611c0d57600080fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611c9157600080fd5b60026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003600081548092919060010191905055508060ff16600460009054906101000a900460ff1660ff16141515611e2857611e2781611af5565b5b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611e6657600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611eff57600080fd5b600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561209957600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156120ed5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15156120f857600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561217c57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561221557600080fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b60056020528060005260406000206000915054906101000a900460ff1681565b6000600460009054906101000a900460ff16905090565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b60008060008060066000866000191660001916815260200190815260200160002093506000925060026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156126615760008460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141590503373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806125a15750805b156125fa5780156125f15760008460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b82806001019350505b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691506124ef565b600460009054906101000a900460ff1660ff16831015151561268257600080fd5b5050505050565b6000806000600281111561269957fe5b8460028111156126a557fe5b14156126be576126b787878786612b56565b915061277c565b600160028111156126cb57fe5b8460028111156126d757fe5b14156126ef576126e8878685612b6f565b915061277b565b6126f885612b86565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b600080600080600460009054906101000a900460ff1660ff161415156127ab57600080fd5b84518460ff16111515156127be57600080fd5b60018460ff16101515156127d157600080fd5b60019250600091505b845182101561296e5784828151811015156127f157fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff16141580156128515750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b151561285c57600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156128e057600080fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080925081806001019250506127da565b6001600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550845160038190555083600460006101000a81548160ff021916908360ff1602179055505050505050565b600060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612a9c57600080fd5b6001806000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008273ffffffffffffffffffffffffffffffffffffffff16141515612b5257612b4682825a612b6f565b1515612b5157600080fd5b5b5050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f090509190505600a165627a7a72305820126f5071abe6229c4f90c0e3e3e154b02acfdfd4934694c5270a471081c34f5f0029", + "deployedBytecode": "0x608060405260043610610128576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063153414fa1461012a57806324cd131f146101d45780632b5000411461027e5780632f54bf6e14610344578063468721a71461039f578063610b5925146104575780637de7edef1461049a57806385e332cd146104dd57806386040aa9146105345780638cff6355146105a4578063a04222e1146105fb578063a09e89f5146106d4578063a0e67e2b14610739578063a3f4df7e146107a5578063b2494df314610835578063b7f3358d146108a1578063b91a667f146108d1578063e009cfde14610921578063e318b52b14610984578063e52cb36a14610a07578063e75235b814610a50578063ffa1ad7414610a81575b005b34801561013657600080fd5b506101d2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050610b11565b005b3480156101e057600080fd5b5061027c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050610c41565b005b34801561028a57600080fd5b50610326600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050610ce4565b60405180826000191660001916815260200191505060405180910390f35b34801561035057600080fd5b50610385600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f6c565b604051808215151515815260200191505060405180910390f35b3480156103ab57600080fd5b5061043d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050610fee565b604051808215151515815260200191505060405180910390f35b34801561046357600080fd5b50610498600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061108b565b005b3480156104a657600080fd5b506104db600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611308565b005b3480156104e957600080fd5b506104f26113ab565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561054057600080fd5b506105a2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506113b0565b005b3480156105b057600080fd5b506105b9611636565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561060757600080fd5b506106d260048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061163b565b005b3480156106e057600080fd5b506107236004803603810190808035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611655565b6040518082815260200191505060405180910390f35b34801561074557600080fd5b5061074e61167a565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610791578082015181840152602081019050610776565b505050509050019250505060405180910390f35b3480156107b157600080fd5b506107ba611815565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107fa5780820151818401526020810190506107df565b50505050905090810190601f1680156108275780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561084157600080fd5b5061084a61184e565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561088d578082015181840152602081019050610872565b505050509050019250505060405180910390f35b3480156108ad57600080fd5b506108cf600480360381019080803560ff169060200190929190505050611af5565b005b3480156108dd57600080fd5b5061091f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050611b74565b005b34801561092d57600080fd5b50610982600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e2c565b005b34801561099057600080fd5b50610a05600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061205f565b005b348015610a1357600080fd5b50610a3660048036038101908080356000191690602001909291905050506123f4565b604051808215151515815260200191505060405180910390f35b348015610a5c57600080fd5b50610a65612414565b604051808260ff1660ff16815260200191505060405180910390f35b348015610a8d57600080fd5b50610a9661242b565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610ad6578082015181840152602081019050610abb565b50505050905090810190601f168015610b035780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515610b9757600080fd5b610ba48686868686610ce4565b905060056000826000191660001916815260200190815260200160002060009054906101000a900460ff16151515610bdb57600080fd5b600160066000836000191660001916815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050505050565b6000610c508686868686610ce4565b905060056000826000191660001916815260200190815260200160002060009054906101000a900460ff16151515610c8757600080fd5b610c9081612464565b600160056000836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550610cd1868686865a612689565b1515610cdc57600080fd5b505050505050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f01000000000000000000000000000000000000000000000000000000000000000230888888888860405160200180897effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083835b602083101515610e885780518252602082019150602081019050602083039250610e63565b6001836020036101000a038019825116818451168082178552505050505050905001836002811115610eb657fe5b60ff167f0100000000000000000000000000000000000000000000000000000000000000028152600101828152602001985050505050505050506040516020818303038152906040526040518082805190602001908083835b602083101515610f345780518252602082019150602081019050602083039250610f0f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020905095945050505050565b600080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561107457600080fd5b611081858585855a612689565b9050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156110c557600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156111195750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b151561112457600080fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156111a857600080fd5b60016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561134257600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561136857600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156113ea57600080fd5b8060ff166001600354031015151561140157600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561149a57600080fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360008154809291906001900391905055508060ff16600460009054906101000a900460ff1660ff161415156116315761163081611af5565b5b505050565b600181565b6116458484612786565b61164f8282612a17565b50505050565b6006602052816000526040600020602052806000526040600020600091509150505481565b6060806000806003546040519080825280602002602001820160405280156116b15781602001602082028038833980820191505090505b5092506000915060026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151561180c5780838381518110151561176157fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050818060010192505061171c565b82935050505090565b6040805190810160405280601881526020017f476e6f7369732053616665205465616d2045646974696f6e000000000000000081525081565b606060008060606000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151561196257600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915082806001019350506118bd565b826040519080825280602002602001820160405280156119915781602001602082028038833980820191505090505b5090506000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515611aec57818184815181101515611a4157fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915082806001019350506119fc565b80935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611b2f57600080fd5b6003548160ff1611151515611b4357600080fd5b60018160ff1610151515611b5657600080fd5b80600460006101000a81548160ff021916908360ff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611bae57600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614158015611c025750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1515611c0d57600080fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611c9157600080fd5b60026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003600081548092919060010191905055508060ff16600460009054906101000a900460ff1660ff16141515611e2857611e2781611af5565b5b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611e6657600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611eff57600080fd5b600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561209957600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156120ed5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15156120f857600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561217c57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561221557600080fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b60056020528060005260406000206000915054906101000a900460ff1681565b6000600460009054906101000a900460ff16905090565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b60008060008060066000866000191660001916815260200190815260200160002093506000925060026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156126615760008460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141590503373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806125a15750805b156125fa5780156125f15760008460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b82806001019350505b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691506124ef565b600460009054906101000a900460ff1660ff16831015151561268257600080fd5b5050505050565b6000806000600281111561269957fe5b8460028111156126a557fe5b14156126be576126b787878786612b56565b915061277c565b600160028111156126cb57fe5b8460028111156126d757fe5b14156126ef576126e8878685612b6f565b915061277b565b6126f885612b86565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b600080600080600460009054906101000a900460ff1660ff161415156127ab57600080fd5b84518460ff16111515156127be57600080fd5b60018460ff16101515156127d157600080fd5b60019250600091505b845182101561296e5784828151811015156127f157fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff16141580156128515750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b151561285c57600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156128e057600080fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080925081806001019250506127da565b6001600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550845160038190555083600460006101000a81548160ff021916908360ff1602179055505050505050565b600060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612a9c57600080fd5b6001806000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008273ffffffffffffffffffffffffffffffffffffffff16141515612b5257612b4682825a612b6f565b1515612b5157600080fd5b5b5050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f090509190505600a165627a7a72305820126f5071abe6229c4f90c0e3e3e154b02acfdfd4934694c5270a471081c34f5f0029", + "sourceMap": "272:3894:4:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;272:3894:4;;;;;;;", + "deployedSourceMap": "272:3894:4:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1263:571;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1263:571:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2276:542;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2276:542:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3835:329;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3835:329:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4841:129:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4841:129:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2522:377:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2522:377:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1235:391;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1235:391:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;626:208:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:208:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;499:55:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;499:55:8;;;;;;;;;;;;;;;;;;;;;;;;;;;2776:573:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2776:573:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;287:54;;8:9:-1;5:2;;;30:1;27;20:12;5:2;287:54:9;;;;;;;;;;;;;;;;;;;;;;;;;;;693:301:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;693:301:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;767:66:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;767:66:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5052:458:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5052:458:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;5052:458:9;;;;;;;;;;;;;;;;;336:56:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;336:56:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;336:56:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4423:738:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4423:738:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;4423:738:8;;;;;;;;;;;;;;;;;4398:318:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4398:318:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;1906:528;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1906:528:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1887:299:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1887:299:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3683:526:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3683:526:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;536:43:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;536:43:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4722:113:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4722:113:9;;;;;;;;;;;;;;;;;;;;;;;;;;;398:40:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;398:40:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;398:40:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1263:571;1576:23;1564:1;1542:6;:18;1549:10;1542:18;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;;1534:32;;;;;;;;1602:53;1621:2;1625:5;1632:4;1638:9;1649:5;1602:18;:53::i;:::-;1576:79;;1746:10;:27;1757:15;1746:27;;;;;;;;;;;;;;;;;;;;;;;;;;;1745:28;1737:37;;;;;;;;1826:1;1784:10;:27;1795:15;1784:27;;;;;;;;;;;;;;;;;:39;1812:10;1784:39;;;;;;;;;;;;;;;:43;;;;1263:571;;;;;;:::o;2276:542::-;2470:23;2496:53;2515:2;2519:5;2526:4;2532:9;2543:5;2496:18;:53::i;:::-;2470:79;;2568:10;:27;2579:15;2568:27;;;;;;;;;;;;;;;;;;;;;;;;;;;2567:28;2559:37;;;;;;;;2606:43;2633:15;2606:26;:43::i;:::-;2742:4;2712:10;:27;2723:15;2712:27;;;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;2764:46;2772:2;2776:5;2783:4;2789:9;2800;2764:7;:46::i;:::-;2756:55;;;;;;;;2276:542;;;;;;:::o;3835:329::-;4038:7;4100:4;4095:10;;4112:1;4107:7;;4116:4;4122:2;4126:5;4133:4;4139:9;4150:5;4078:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4078:78:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;4078:78:4;;;4068:89;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4068:89:4;;;;;;;;;;;;;;;;4061:96;;3835:329;;;;;;;:::o;4841:129:9:-;4918:4;4962:1;4945:6;:13;4952:5;4945:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;;4938:25;;4841:129;;;:::o;2522:377:8:-;2654:12;2762:1;2739:7;:19;2747:10;2739:19;;;;;;;;;;;;;;;;;;;;;;;;;:24;;;;2731:33;;;;;;;;2846:46;2854:2;2858:5;2865:4;2871:9;2882;2846:7;:46::i;:::-;2836:56;;2522:377;;;;;;:::o;1235:391::-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;1401:1:8;1390:6;1382:20;;;;:59;;;;;550:3;1406:35;;1414:6;1406:35;;;;1382:59;1374:68;;;;;;;;1520:1;1501:7;:15;1509:6;1501:15;;;;;;;;;;;;;;;;;;;;;;;;;:20;;;1493:29;;;;;;;;1550:7;:25;550:3;1550:25;;;;;;;;;;;;;;;;;;;;;;;;;1532:7;:15;1540:6;1532:15;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;1613:6;1585:7;:25;550:3;1585:25;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;1235:391;:::o;626:208:5:-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;791:1:5;776:11;:16;;;;768:25;;;;;;;;816:11;803:10;;:24;;;;;;;;;;;;;;;;;;626:208;:::o;499:55:8:-;550:3;499:55;:::o;2776:573:9:-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;3000:10:9;2982:28;;2995:1;2982:10;;:14;:28;;2974:37;;;;;;;;3112:5;3091:26;;:6;:17;3098:9;3091:17;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;3083:35;;;;;;;;3148:6;:13;3155:5;3148:13;;;;;;;;;;;;;;;;;;;;;;;;;3128:6;:17;3135:9;3128:17;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;3187:1;3171:6;:13;3178:5;3171:13;;;;;;;;;;;;;;;;:17;;;;;;;;;;;;;;;;;;3198:10;;:12;;;;;;;;;;;;;;3291:10;3278:23;;:9;;;;;;;;;;;:23;;;;3274:68;;;3315:27;3331:10;3315:15;:27::i;:::-;3274:68;2776:573;;;:::o;287:54::-;337:3;287:54;:::o;693:301:2:-;798:32;810:7;819:10;798:11;:32::i;:::-;965:22;978:2;982:4;965:12;:22::i;:::-;693:301;;;;:::o;767:66:4:-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5052:458:9:-;5118:9;5143:22;5237:13;5264:20;5182:10;;5168:25;;;;;;;;;;;;;;;;;;;;;;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;5168:25:9;;;;5143:50;;5253:1;5237:17;;5287:6;:23;337:3;5287:23;;;;;;;;;;;;;;;;;;;;;;;;;5264:46;;5320:162;337:3;5326:31;;:12;:31;;;;5320:162;;;5388:12;5373:5;5379;5373:12;;;;;;;;;;;;;;;;;:27;;;;;;;;;;;5429:6;:20;5436:12;5429:20;;;;;;;;;;;;;;;;;;;;;;;;;5414:35;;5463:8;;;;;;;5320:162;;;5498:5;5491:12;;5052:458;;;;:::o;336:56:4:-;;;;;;;;;;;;;;;;;;;;:::o;4423:738:8:-;4490:9;4549:19;4582:21;4782:22;4571:1;4549:23;;4606:7;:25;550:3;4606:25;;;;;;;;;;;;;;;;;;;;;;;;;4582:49;;4641:132;550:3;4647:33;;:13;:33;;;;4641:132;;;4712:7;:22;4720:13;4712:22;;;;;;;;;;;;;;;;;;;;;;;;;4696:38;;4748:14;;;;;;;4641:132;;;4821:11;4807:26;;;;;;;;;;;;;;;;;;;;;;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;4807:26:8;;;;4782:51;;4891:1;4877:15;;4918:7;:25;550:3;4918:25;;;;;;;;;;;;;;;;;;;;;;;;;4902:41;;4953:180;550:3;4959:33;;:13;:33;;;;4953:180;;;5029:13;5008:5;5014:11;5008:18;;;;;;;;;;;;;;;;;:34;;;;;;;;;;;5072:7;:22;5080:13;5072:22;;;;;;;;;;;;;;;;;;;;;;;;;5056:38;;5108:14;;;;;;;4953:180;;;5149:5;5142:12;;4423:738;;;;:::o;4398:318:9:-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;4580:10:9;;4566;:24;;;;4558:33;;;;;;;;4675:1;4661:10;:15;;;;4653:24;;;;;;;;4699:10;4687:9;;:22;;;;;;;;;;;;;;;;;;4398:318;:::o;1906:528::-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;2076:1:9;2067:5;:10;;;;:38;;;;;337:3;2081:24;;:5;:24;;;;2067:38;2059:47;;;;;;;;2181:1;2164:6;:13;2171:5;2164:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;2156:27;;;;;;;;2209:6;:23;337:3;2209:23;;;;;;;;;;;;;;;;;;;;;;;;;2193:6;:13;2200:5;2193:13;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;2268:5;2242:6;:23;337:3;2242:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;2283:10;;:12;;;;;;;;;;;;;2376:10;2363:23;;:9;;;;;;;;;;;:23;;;;2359:68;;;2400:27;2416:10;2400:15;:27::i;:::-;2359:68;1906:528;;:::o;1887:299:8:-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;2095:6:8;2064:38;;:7;:19;2072:10;2064:19;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;2056:47;;;;;;;;2135:7;:15;2143:6;2135:15;;;;;;;;;;;;;;;;;;;;;;;;;2113:7;:19;2121:10;2113:19;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;2178:1;2160:7;:15;2168:6;2160:15;;;;;;;;;;;;;;;;:19;;;;;;;;;;;;;;;;;;1887:299;;:::o;3683:526:9:-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;3866:1:9;3854:8;:13;;;;:44;;;;;337:3;3871:27;;:8;:27;;;;3854:44;3846:53;;;;;;;;3977:1;3957:6;:16;3964:8;3957:16;;;;;;;;;;;;;;;;;;;;;;;;;:21;;;3949:30;;;;;;;;4080:8;4059:29;;:6;:17;4066:9;4059:17;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;4051:38;;;;;;;;4118:6;:16;4125:8;4118:16;;;;;;;;;;;;;;;;;;;;;;;;;4099:6;:16;4106:8;4099:16;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;4164:8;4144:6;:17;4151:9;4144:17;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;4201:1;4182:6;:16;4189:8;4182:16;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;3683:526;;;:::o;536:43:4:-;;;;;;;;;;;;;;;;;;;;;;:::o;4722:113:9:-;4791:5;4819:9;;;;;;;;;;;4812:16;;4722:113;:::o;398:40:4:-;;;;;;;;;;;;;;;;;;;;:::o;2824:733::-;2916:37;2993:21;3070:20;3180:19;2956:10;:27;2967:15;2956:27;;;;;;;;;;;;;;;;;2916:67;;3017:1;2993:25;;3093:6;:23;337:3:9;3093:23:4;;;;;;;;;;;;;;;;;;;;;;;;;3070:46;;3126:380;337:3:9;3133:31:4;;:12;:31;;;;3126:380;;;3229:1;3202:9;:23;3212:12;3202:23;;;;;;;;;;;;;;;;:28;;3180:50;;3263:10;3247:26;;:12;:26;;;:44;;;;3277:14;3247:44;3244:203;;;3315:14;3311:88;;;3379:1;3353:9;:23;3363:12;3353:23;;;;;;;;;;;;;;;:27;;;;3311:88;3416:16;;;;;;;3244:203;3475:6;:20;3482:12;3475:20;;;;;;;;;;;;;;;;;;;;;;;;;3460:35;;3126:380;;;3540:9;;;;;;;;;;;3523:26;;:13;:26;;3515:35;;;;;;;;2824:733;;;;;:::o;2905:548:8:-;3036:12;3307:19;3081;3068:32;;;;;;;;:9;:32;;;;;;;;;3064:383;;;3124:35;3136:2;3140:5;3147:4;3153:5;3124:11;:35::i;:::-;3114:45;;3064:383;;;3191:27;3178:40;;;;;;;;:9;:40;;;;;;;;;3174:273;;;3242:36;3262:2;3266:4;3272:5;3242:19;:36::i;:::-;3232:46;;3174:273;;;3329:19;3343:4;3329:13;:19::i;:::-;3307:41;;3387:1;3372:11;:16;;;;3362:26;;3407:29;3424:11;3407:29;;;;;;;;;;;;;;;;;;;;;;3174:273;3064:383;2905:548;;;;;;;;:::o;641:1025:9:-;1132:20;1185:9;1284:13;875:1;862:9;;;;;;;;;;;:14;;;854:23;;;;;;;;984:7;:14;970:10;:28;;;;962:37;;;;;;;;1083:1;1069:10;:15;;;;1061:24;;;;;;;;337:3;1132:38;;1197:1;1185:13;;1180:363;1204:7;:14;1200:1;:18;1180:363;;;1300:7;1308:1;1300:10;;;;;;;;;;;;;;;;;;1284:26;;1341:1;1332:5;:10;;;;:38;;;;;337:3;1346:24;;:5;:24;;;;1332:38;1324:47;;;;;;;;1454:1;1437:6;:13;1444:5;1437:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;1429:27;;;;;;;;1493:5;1470:6;:20;1477:12;1470:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;1527:5;1512:20;;1220:3;;;;;;;1180:363;;;337:3;1552:6;:20;1559:12;1552:20;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;1613:7;:14;1600:10;:27;;;;1649:10;1637:9;;:22;;;;;;;;;;;;;;;;;;641:1025;;;;;:::o;735:333:8:-;849:1;820:7;:25;550:3;820:25;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;812:39;;;;;;;;550:3;861:7;:25;550:3;861:25;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;925:1;919:2;:7;;;;915:146;;;1020:40;1040:2;1044:4;1050:9;1020:19;:40::i;:::-;1012:49;;;;;;;;915:146;735:333;;:::o;3459:309::-;3568:12;3750:1;3747;3740:4;3734:11;3727:4;3721;3717:15;3710:5;3706:2;3699:5;3694:58;3683:69;;3669:93;;;;;;:::o;3774:303::-;3876:12;4059:1;4056;4049:4;4043:11;4036:4;4030;4026:15;4022:2;4015:5;4002:59;3991:70;;3977:94;;;;;:::o;4083:261::-;4152:19;4322:4;4316:11;4309:4;4303;4299:15;4296:1;4289:39;4274:54;;4260:78;;;:::o", + "source": "pragma solidity 0.4.24;\nimport \"./GnosisSafe.sol\";\nimport \"./MasterCopy.sol\";\n\n\n/// @title Gnosis Safe Team Edition - A multisignature wallet with support for confirmations.\n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract GnosisSafeTeamEdition is MasterCopy, GnosisSafe {\n\n string public constant NAME = \"Gnosis Safe Team Edition\";\n string public constant VERSION = \"0.0.1\";\n\n // isExecuted mapping allows to check if a transaction (by hash) was already executed.\n mapping (bytes32 => bool) public isExecuted;\n\n // isApproved mapping allows to check if a transaction (by hash) was confirmed by an owner.\n // uint256 is used to optimize the generated assembly. if 0 then false else true\n mapping (bytes32 => mapping(address => uint256)) public isApproved;\n\n /// @dev Allows to confirm a Safe transaction with a regular transaction.\n /// This can only be done from an owner address.\n /// @param to Destination address of Safe transaction.\n /// @param value Ether value of Safe transaction.\n /// @param data Data payload of Safe transaction.\n /// @param operation Operation type of Safe transaction.\n /// @param nonce Nonce used for this Safe transaction.\n function approveTransactionWithParameters(\n address to, \n uint256 value, \n bytes data, \n Enum.Operation operation, \n uint256 nonce\n )\n public\n {\n // Only Safe owners are allowed to confirm Safe transactions.\n require(owners[msg.sender] != 0);\n bytes32 transactionHash = getTransactionHash(to, value, data, operation, nonce);\n // It should not be possible to confirm an executed transaction\n require(!isExecuted[transactionHash]);\n isApproved[transactionHash][msg.sender] = 1;\n }\n\n /// @dev Allows to execute a Safe transaction confirmed by required number of owners. If the sender is an owner this is automatically confirmed.\n /// @param to Destination address of Safe transaction.\n /// @param value Ether value of Safe transaction.\n /// @param data Data payload of Safe transaction.\n /// @param operation Operation type of Safe transaction.\n /// @param nonce Nonce used for this Safe transaction.\n function execTransactionIfApproved(\n address to, \n uint256 value, \n bytes data, \n Enum.Operation operation, \n uint256 nonce\n )\n public\n {\n bytes32 transactionHash = getTransactionHash(to, value, data, operation, nonce);\n require(!isExecuted[transactionHash]);\n checkAndClearConfirmations(transactionHash);\n // Mark as executed and execute transaction.\n isExecuted[transactionHash] = true;\n require(execute(to, value, data, operation, gasleft()));\n }\n\n function checkAndClearConfirmations(bytes32 transactionHash)\n internal\n {\n mapping(address => uint256) approvals = isApproved[transactionHash];\n uint256 confirmations = 0;\n // Validate threshold is reached.\n address currentOwner = owners[SENTINEL_OWNERS];\n while (currentOwner != SENTINEL_OWNERS) {\n bool ownerConfirmed = approvals[currentOwner] != 0;\n if(currentOwner == msg.sender || ownerConfirmed) {\n if (ownerConfirmed) {\n approvals[currentOwner] = 0;\n }\n confirmations ++;\n }\n currentOwner = owners[currentOwner];\n }\n require(confirmations >= threshold);\n }\n\n /// @dev Returns hash to be signed by owners.\n /// @param to Destination address.\n /// @param value Ether value.\n /// @param data Data payload.\n /// @param operation Operation type.\n /// @param nonce Transaction nonce.\n /// @return Transaction hash.\n function getTransactionHash(\n address to, \n uint256 value, \n bytes data, \n Enum.Operation operation, \n uint256 nonce\n )\n public\n view\n returns (bytes32)\n {\n return keccak256(abi.encodePacked(byte(0x19), byte(0), this, to, value, data, operation, nonce));\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafeTeamEdition.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafeTeamEdition.sol", "exportedSymbols": { "GnosisSafeTeamEdition": [ - 554 + 626 ] }, - "id": 555, + "id": 627, "nodeType": "SourceUnit", "nodes": [ { - "id": 326, + "id": 399, "literals": [ "solidity", "0.4", - ".23" + ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:3" + "src": "0:23:4" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", "file": "./GnosisSafe.sol", - "id": 327, + "id": 400, "nodeType": "ImportDirective", - "scope": 555, - "sourceUnit": 40, - "src": "24:26:3", + "scope": 627, + "sourceUnit": 64, + "src": "24:26:4", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/MasterCopy.sol", "file": "./MasterCopy.sol", - "id": 328, + "id": 401, "nodeType": "ImportDirective", - "scope": 555, - "sourceUnit": 581, - "src": "51:26:3", + "scope": 627, + "sourceUnit": 653, + "src": "51:26:4", "symbolAliases": [], "unitAlias": "" }, @@ -506,68 +506,68 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 329, + "id": 402, "name": "MasterCopy", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 580, - "src": "306:10:3", + "referencedDeclaration": 652, + "src": "306:10:4", "typeDescriptions": { - "typeIdentifier": "t_contract$_MasterCopy_$580", + "typeIdentifier": "t_contract$_MasterCopy_$652", "typeString": "contract MasterCopy" } }, - "id": 330, + "id": 403, "nodeType": "InheritanceSpecifier", - "src": "306:10:3" + "src": "306:10:4" }, { "arguments": null, "baseName": { "contractScope": null, - "id": 331, + "id": 404, "name": "GnosisSafe", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 39, - "src": "318:10:3", + "referencedDeclaration": 63, + "src": "318:10:4", "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$39", + "typeIdentifier": "t_contract$_GnosisSafe_$63", "typeString": "contract GnosisSafe" } }, - "id": 332, + "id": 405, "nodeType": "InheritanceSpecifier", - "src": "318:10:3" + "src": "318:10:4" } ], "contractDependencies": [ - 39, - 580, - 971, - 1343, - 1359 + 63, + 652, + 1100, + 1472, + 1619 ], "contractKind": "contract", "documentation": "@title Gnosis Safe Team Edition - A multisignature wallet with support for confirmations.\n @author Stefan George - \n @author Richard Meissner - ", "fullyImplemented": true, - "id": 554, + "id": 626, "linearizedBaseContracts": [ - 554, - 39, - 1343, - 971, - 580, - 1359 + 626, + 63, + 1472, + 1100, + 652, + 1619 ], "name": "GnosisSafeTeamEdition", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, - "id": 335, + "id": 408, "name": "NAME", "nodeType": "VariableDeclaration", - "scope": 554, - "src": "336:56:3", + "scope": 626, + "src": "336:56:4", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -575,10 +575,10 @@ "typeString": "string" }, "typeName": { - "id": 333, + "id": 406, "name": "string", "nodeType": "ElementaryTypeName", - "src": "336:6:3", + "src": "336:6:4", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -587,14 +587,14 @@ "value": { "argumentTypes": null, "hexValue": "476e6f7369732053616665205465616d2045646974696f6e", - "id": 334, + "id": 407, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "366:26:3", + "src": "366:26:4", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_69b1cb372bb47730ba653a0e87363aa6de8337d13ed5852e6fe3ba4e2004a81e", @@ -606,11 +606,11 @@ }, { "constant": true, - "id": 338, + "id": 411, "name": "VERSION", "nodeType": "VariableDeclaration", - "scope": 554, - "src": "398:40:3", + "scope": 626, + "src": "398:40:4", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -618,10 +618,10 @@ "typeString": "string" }, "typeName": { - "id": 336, + "id": 409, "name": "string", "nodeType": "ElementaryTypeName", - "src": "398:6:3", + "src": "398:6:4", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -630,14 +630,14 @@ "value": { "argumentTypes": null, "hexValue": "302e302e31", - "id": 337, + "id": 410, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "431:7:3", + "src": "431:7:4", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", @@ -649,11 +649,11 @@ }, { "constant": false, - "id": 342, + "id": 415, "name": "isExecuted", "nodeType": "VariableDeclaration", - "scope": 554, - "src": "536:43:3", + "scope": 626, + "src": "536:43:4", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -661,28 +661,28 @@ "typeString": "mapping(bytes32 => bool)" }, "typeName": { - "id": 341, + "id": 414, "keyType": { - "id": 339, + "id": 412, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "545:7:3", + "src": "545:7:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "Mapping", - "src": "536:25:3", + "src": "536:25:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" }, "valueType": { - "id": 340, + "id": 413, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "556:4:3", + "src": "556:4:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -694,61 +694,61 @@ }, { "constant": false, - "id": 348, + "id": 421, "name": "isApproved", "nodeType": "VariableDeclaration", - "scope": 554, - "src": "682:63:3", + "scope": 626, + "src": "767:66:4", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", - "typeString": "mapping(bytes32 => mapping(address => bool))" + "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(bytes32 => mapping(address => uint256))" }, "typeName": { - "id": 347, + "id": 420, "keyType": { - "id": 343, + "id": 416, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "691:7:3", + "src": "776:7:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "Mapping", - "src": "682:45:3", + "src": "767:48:4", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", - "typeString": "mapping(bytes32 => mapping(address => bool))" + "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(bytes32 => mapping(address => uint256))" }, "valueType": { - "id": 346, + "id": 419, "keyType": { - "id": 344, + "id": 417, "name": "address", "nodeType": "ElementaryTypeName", - "src": "710:7:3", + "src": "795:7:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "702:24:3", + "src": "787:27:4", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" }, "valueType": { - "id": 345, - "name": "bool", + "id": 418, + "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "721:4:3", + "src": "806:7:4", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } } } @@ -758,9 +758,9 @@ }, { "body": { - "id": 406, + "id": 469, "nodeType": "Block", - "src": "1366:504:3", + "src": "1454:380:4", "statements": [ { "expression": { @@ -772,7 +772,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 367, + "id": 440, "isConstant": false, "isLValue": false, "isPure": false, @@ -781,34 +781,34 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 362, + "id": 435, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "1454:6:3", + "referencedDeclaration": 1114, + "src": "1542:6:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 365, + "id": 438, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 363, + "id": 436, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2396, - "src": "1461:3:3", + "referencedDeclaration": 2598, + "src": "1549:3:4", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 364, + "id": 437, "isConstant": false, "isLValue": false, "isPure": false, @@ -816,7 +816,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1461:10:3", + "src": "1549:10:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -827,7 +827,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1454:18:3", + "src": "1542:18:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -838,14 +838,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 366, + "id": 439, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1476:1:3", + "src": "1564:1:4", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -853,7 +853,7 @@ }, "value": "0" }, - "src": "1454:23:3", + "src": "1542:23:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -867,21 +867,21 @@ "typeString": "bool" } ], - "id": 361, + "id": 434, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "1446:7:3", + "referencedDeclaration": 2601, + "src": "1534:7:4", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 368, + "id": 441, "isConstant": false, "isLValue": false, "isPure": false, @@ -889,28 +889,28 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1446:32:3", + "src": "1534:32:4", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 369, + "id": 442, "nodeType": "ExpressionStatement", - "src": "1446:32:3" + "src": "1534:32:4" }, { "assignments": [ - 371 + 444 ], "declarations": [ { "constant": false, - "id": 371, + "id": 444, "name": "transactionHash", "nodeType": "VariableDeclaration", - "scope": 407, - "src": "1560:23:3", + "scope": 470, + "src": "1576:23:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -918,10 +918,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 370, + "id": 443, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1560:7:3", + "src": "1576:7:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -931,18 +931,18 @@ "visibility": "internal" } ], - "id": 379, + "id": 452, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 373, + "id": 446, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 350, - "src": "1605:2:3", + "referencedDeclaration": 423, + "src": "1621:2:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -950,12 +950,12 @@ }, { "argumentTypes": null, - "id": 374, + "id": 447, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 352, - "src": "1609:5:3", + "referencedDeclaration": 425, + "src": "1625:5:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -963,12 +963,12 @@ }, { "argumentTypes": null, - "id": 375, + "id": 448, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 354, - "src": "1616:4:3", + "referencedDeclaration": 427, + "src": "1632:4:4", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -976,25 +976,25 @@ }, { "argumentTypes": null, - "id": 376, + "id": 449, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 356, - "src": "1622:9:3", + "referencedDeclaration": 429, + "src": "1638:9:4", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, { "argumentTypes": null, - "id": 377, + "id": 450, "name": "nonce", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 358, - "src": "1633:5:3", + "referencedDeclaration": 431, + "src": "1649:5:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1016,7 +1016,7 @@ "typeString": "bytes memory" }, { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, { @@ -1024,18 +1024,18 @@ "typeString": "uint256" } ], - "id": 372, + "id": 445, "name": "getTransactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 553, - "src": "1586:18:3", + "referencedDeclaration": 625, + "src": "1602:18:4", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$_t_uint256_$returns$_t_bytes32_$", + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bytes32_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) view returns (bytes32)" } }, - "id": 378, + "id": 451, "isConstant": false, "isLValue": false, "isPure": false, @@ -1043,14 +1043,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1586:53:3", + "src": "1602:53:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "VariableDeclarationStatement", - "src": "1560:79:3" + "src": "1576:79:4" }, { "expression": { @@ -1058,7 +1058,7 @@ "arguments": [ { "argumentTypes": null, - "id": 384, + "id": 457, "isConstant": false, "isLValue": false, "isPure": false, @@ -1066,31 +1066,31 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "1657:28:3", + "src": "1745:28:4", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 381, + "id": 454, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 342, - "src": "1658:10:3", + "referencedDeclaration": 415, + "src": "1746:10:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 383, + "id": 456, "indexExpression": { "argumentTypes": null, - "id": 382, + "id": 455, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 371, - "src": "1669:15:3", + "referencedDeclaration": 444, + "src": "1757:15:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1101,150 +1101,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1658:27:3", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 380, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 2399, - 2400 - ], - "referencedDeclaration": 2399, - "src": "1649:7:3", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 385, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1649:37:3", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 386, - "nodeType": "ExpressionStatement", - "src": "1649:37:3" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 394, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "1766:40:3", - "subExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 388, - "name": "isApproved", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 348, - "src": "1767:10:3", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", - "typeString": "mapping(bytes32 => mapping(address => bool))" - } - }, - "id": 390, - "indexExpression": { - "argumentTypes": null, - "id": 389, - "name": "transactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 371, - "src": "1778:15:3", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1767:27:3", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 393, - "indexExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 391, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2396, - "src": "1795:3:3", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 392, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "1795:10:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1767:39:3", + "src": "1746:27:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1263,21 +1120,21 @@ "typeString": "bool" } ], - "id": 387, + "id": 453, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "1758:7:3", + "referencedDeclaration": 2601, + "src": "1737:7:4", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 395, + "id": 458, "isConstant": false, "isLValue": false, "isPure": false, @@ -1285,20 +1142,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1758:49:3", + "src": "1737:37:4", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 396, + "id": 459, "nodeType": "ExpressionStatement", - "src": "1758:49:3" + "src": "1737:37:4" }, { "expression": { "argumentTypes": null, - "id": 404, + "id": 467, "isConstant": false, "isLValue": false, "isPure": false, @@ -1309,26 +1166,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 397, + "id": 460, "name": "isApproved", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 348, - "src": "1817:10:3", + "referencedDeclaration": 421, + "src": "1784:10:4", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", - "typeString": "mapping(bytes32 => mapping(address => bool))" + "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(bytes32 => mapping(address => uint256))" } }, - "id": 401, + "id": 464, "indexExpression": { "argumentTypes": null, - "id": 398, + "id": 461, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 371, - "src": "1828:15:3", + "referencedDeclaration": 444, + "src": "1795:15:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1339,29 +1196,29 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1817:27:3", + "src": "1784:27:4", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" } }, - "id": 402, + "id": 465, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 399, + "id": 462, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2396, - "src": "1845:3:3", + "referencedDeclaration": 2598, + "src": "1812:3:4", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 400, + "id": 463, "isConstant": false, "isLValue": false, "isPure": false, @@ -1369,7 +1226,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1845:10:3", + "src": "1812:10:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1380,46 +1237,46 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1817:39:3", + "src": "1784:39:4", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, - "hexValue": "74727565", - "id": 403, + "hexValue": "31", + "id": 466, "isConstant": false, "isLValue": false, "isPure": true, - "kind": "bool", + "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1859:4:3", + "src": "1826:1:4", "subdenomination": null, "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" }, - "value": "true" + "value": "1" }, - "src": "1817:46:3", + "src": "1784:43:4", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "id": 405, + "id": 468, "nodeType": "ExpressionStatement", - "src": "1817:46:3" + "src": "1784:43:4" } ] }, "documentation": "@dev Allows to confirm a Safe transaction with a regular transaction.\n This can only be done from an owner address.\n @param to Destination address of Safe transaction.\n @param value Ether value of Safe transaction.\n @param data Data payload of Safe transaction.\n @param operation Operation type of Safe transaction.\n @param nonce Nonce used for this Safe transaction.", - "id": 407, + "id": 470, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -1427,16 +1284,16 @@ "name": "approveTransactionWithParameters", "nodeType": "FunctionDefinition", "parameters": { - "id": 359, + "id": 432, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 350, + "id": 423, "name": "to", "nodeType": "VariableDeclaration", - "scope": 407, - "src": "1226:10:3", + "scope": 470, + "src": "1314:10:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1444,10 +1301,10 @@ "typeString": "address" }, "typeName": { - "id": 349, + "id": 422, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1226:7:3", + "src": "1314:7:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1458,11 +1315,11 @@ }, { "constant": false, - "id": 352, + "id": 425, "name": "value", "nodeType": "VariableDeclaration", - "scope": 407, - "src": "1247:13:3", + "scope": 470, + "src": "1335:13:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1470,10 +1327,10 @@ "typeString": "uint256" }, "typeName": { - "id": 351, + "id": 424, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1247:7:3", + "src": "1335:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1484,11 +1341,11 @@ }, { "constant": false, - "id": 354, + "id": 427, "name": "data", "nodeType": "VariableDeclaration", - "scope": 407, - "src": "1271:10:3", + "scope": 470, + "src": "1359:10:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1496,10 +1353,10 @@ "typeString": "bytes" }, "typeName": { - "id": 353, + "id": 426, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "1271:5:3", + "src": "1359:5:4", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -1510,26 +1367,26 @@ }, { "constant": false, - "id": 356, + "id": 429, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 407, - "src": "1292:24:3", + "scope": 470, + "src": "1380:24:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, "typeName": { "contractScope": null, - "id": 355, + "id": 428, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 5, - "src": "1292:14:3", + "referencedDeclaration": 29, + "src": "1380:14:4", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, @@ -1538,11 +1395,11 @@ }, { "constant": false, - "id": 358, + "id": 431, "name": "nonce", "nodeType": "VariableDeclaration", - "scope": 407, - "src": "1327:13:3", + "scope": 470, + "src": "1415:13:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1550,10 +1407,10 @@ "typeString": "uint256" }, "typeName": { - "id": 357, + "id": 430, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1327:7:3", + "src": "1415:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1563,39 +1420,39 @@ "visibility": "internal" } ], - "src": "1216:130:3" + "src": "1304:130:4" }, "payable": false, "returnParameters": { - "id": 360, + "id": 433, "nodeType": "ParameterList", "parameters": [], - "src": "1366:0:3" + "src": "1454:0:4" }, - "scope": 554, - "src": "1175:695:3", + "scope": 626, + "src": "1263:571:4", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 458, + "id": 521, "nodeType": "Block", - "src": "2496:358:3", + "src": "2460:358:4", "statements": [ { "assignments": [ - 421 + 484 ], "declarations": [ { "constant": false, - "id": 421, + "id": 484, "name": "transactionHash", "nodeType": "VariableDeclaration", - "scope": 459, - "src": "2506:23:3", + "scope": 522, + "src": "2470:23:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1603,10 +1460,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 420, + "id": 483, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "2506:7:3", + "src": "2470:7:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1616,18 +1473,18 @@ "visibility": "internal" } ], - "id": 429, + "id": 492, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 423, + "id": 486, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 409, - "src": "2551:2:3", + "referencedDeclaration": 472, + "src": "2515:2:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1635,12 +1492,12 @@ }, { "argumentTypes": null, - "id": 424, + "id": 487, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 411, - "src": "2555:5:3", + "referencedDeclaration": 474, + "src": "2519:5:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1648,12 +1505,12 @@ }, { "argumentTypes": null, - "id": 425, + "id": 488, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 413, - "src": "2562:4:3", + "referencedDeclaration": 476, + "src": "2526:4:4", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -1661,25 +1518,25 @@ }, { "argumentTypes": null, - "id": 426, + "id": 489, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 415, - "src": "2568:9:3", + "referencedDeclaration": 478, + "src": "2532:9:4", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, { "argumentTypes": null, - "id": 427, + "id": 490, "name": "nonce", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 417, - "src": "2579:5:3", + "referencedDeclaration": 480, + "src": "2543:5:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1701,7 +1558,7 @@ "typeString": "bytes memory" }, { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, { @@ -1709,18 +1566,18 @@ "typeString": "uint256" } ], - "id": 422, + "id": 485, "name": "getTransactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 553, - "src": "2532:18:3", + "referencedDeclaration": 625, + "src": "2496:18:4", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$_t_uint256_$returns$_t_bytes32_$", + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bytes32_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) view returns (bytes32)" } }, - "id": 428, + "id": 491, "isConstant": false, "isLValue": false, "isPure": false, @@ -1728,14 +1585,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2532:53:3", + "src": "2496:53:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "VariableDeclarationStatement", - "src": "2506:79:3" + "src": "2470:79:4" }, { "expression": { @@ -1743,7 +1600,7 @@ "arguments": [ { "argumentTypes": null, - "id": 434, + "id": 497, "isConstant": false, "isLValue": false, "isPure": false, @@ -1751,31 +1608,31 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "2603:28:3", + "src": "2567:28:4", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 431, + "id": 494, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 342, - "src": "2604:10:3", + "referencedDeclaration": 415, + "src": "2568:10:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 433, + "id": 496, "indexExpression": { "argumentTypes": null, - "id": 432, + "id": 495, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 421, - "src": "2615:15:3", + "referencedDeclaration": 484, + "src": "2579:15:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1786,7 +1643,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2604:27:3", + "src": "2568:27:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1805,21 +1662,21 @@ "typeString": "bool" } ], - "id": 430, + "id": 493, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "2595:7:3", + "referencedDeclaration": 2601, + "src": "2559:7:4", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 435, + "id": 498, "isConstant": false, "isLValue": false, "isPure": false, @@ -1827,15 +1684,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2595:37:3", + "src": "2559:37:4", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 436, + "id": 499, "nodeType": "ExpressionStatement", - "src": "2595:37:3" + "src": "2559:37:4" }, { "expression": { @@ -1843,12 +1700,12 @@ "arguments": [ { "argumentTypes": null, - "id": 438, + "id": 501, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 421, - "src": "2669:15:3", + "referencedDeclaration": 484, + "src": "2633:15:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1862,18 +1719,18 @@ "typeString": "bytes32" } ], - "id": 437, + "id": 500, "name": "checkAndClearConfirmations", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 522, - "src": "2642:26:3", + "referencedDeclaration": 591, + "src": "2606:26:4", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$__$", "typeString": "function (bytes32)" } }, - "id": 439, + "id": 502, "isConstant": false, "isLValue": false, "isPure": false, @@ -1881,20 +1738,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2642:43:3", + "src": "2606:43:4", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 440, + "id": 503, "nodeType": "ExpressionStatement", - "src": "2642:43:3" + "src": "2606:43:4" }, { "expression": { "argumentTypes": null, - "id": 445, + "id": 508, "isConstant": false, "isLValue": false, "isPure": false, @@ -1903,26 +1760,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 441, + "id": 504, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 342, - "src": "2748:10:3", + "referencedDeclaration": 415, + "src": "2712:10:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 443, + "id": 506, "indexExpression": { "argumentTypes": null, - "id": 442, + "id": 505, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 421, - "src": "2759:15:3", + "referencedDeclaration": 484, + "src": "2723:15:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1933,7 +1790,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2748:27:3", + "src": "2712:27:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1944,14 +1801,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 444, + "id": 507, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "2778:4:3", + "src": "2742:4:4", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -1959,15 +1816,15 @@ }, "value": "true" }, - "src": "2748:34:3", + "src": "2712:34:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 446, + "id": 509, "nodeType": "ExpressionStatement", - "src": "2748:34:3" + "src": "2712:34:4" }, { "expression": { @@ -1978,12 +1835,12 @@ "arguments": [ { "argumentTypes": null, - "id": 449, + "id": 512, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 409, - "src": "2808:2:3", + "referencedDeclaration": 472, + "src": "2772:2:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1991,12 +1848,12 @@ }, { "argumentTypes": null, - "id": 450, + "id": 513, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 411, - "src": "2812:5:3", + "referencedDeclaration": 474, + "src": "2776:5:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2004,12 +1861,12 @@ }, { "argumentTypes": null, - "id": 451, + "id": 514, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 413, - "src": "2819:4:3", + "referencedDeclaration": 476, + "src": "2783:4:4", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -2017,14 +1874,14 @@ }, { "argumentTypes": null, - "id": 452, + "id": 515, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 415, - "src": "2825:9:3", + "referencedDeclaration": 478, + "src": "2789:9:4", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, @@ -2033,18 +1890,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 453, + "id": 516, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2389, - "src": "2836:7:3", + "referencedDeclaration": 2591, + "src": "2800:7:4", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 454, + "id": 517, "isConstant": false, "isLValue": false, "isPure": false, @@ -2052,7 +1909,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2836:9:3", + "src": "2800:9:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2074,7 +1931,7 @@ "typeString": "bytes memory" }, { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, { @@ -2082,18 +1939,18 @@ "typeString": "uint256" } ], - "id": 448, + "id": 511, "name": "execute", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 860, - "src": "2800:7:3", + "referencedDeclaration": 989, + "src": "2764:7:4", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$_t_uint256_$returns$_t_bool_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) returns (bool)" } }, - "id": 455, + "id": 518, "isConstant": false, "isLValue": false, "isPure": false, @@ -2101,7 +1958,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2800:46:3", + "src": "2764:46:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2115,21 +1972,21 @@ "typeString": "bool" } ], - "id": 447, + "id": 510, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "2792:7:3", + "referencedDeclaration": 2601, + "src": "2756:7:4", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 456, + "id": 519, "isConstant": false, "isLValue": false, "isPure": false, @@ -2137,20 +1994,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2792:55:3", + "src": "2756:55:4", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 457, + "id": 520, "nodeType": "ExpressionStatement", - "src": "2792:55:3" + "src": "2756:55:4" } ] }, "documentation": "@dev Allows to execute a Safe transaction confirmed by required number of owners. If the sender is an owner this is automatically confirmed.\n @param to Destination address of Safe transaction.\n @param value Ether value of Safe transaction.\n @param data Data payload of Safe transaction.\n @param operation Operation type of Safe transaction.\n @param nonce Nonce used for this Safe transaction.", - "id": 459, + "id": 522, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -2158,16 +2015,16 @@ "name": "execTransactionIfApproved", "nodeType": "FunctionDefinition", "parameters": { - "id": 418, + "id": 481, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 409, + "id": 472, "name": "to", "nodeType": "VariableDeclaration", - "scope": 459, - "src": "2356:10:3", + "scope": 522, + "src": "2320:10:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2175,10 +2032,10 @@ "typeString": "address" }, "typeName": { - "id": 408, + "id": 471, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2356:7:3", + "src": "2320:7:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2189,11 +2046,11 @@ }, { "constant": false, - "id": 411, + "id": 474, "name": "value", "nodeType": "VariableDeclaration", - "scope": 459, - "src": "2377:13:3", + "scope": 522, + "src": "2341:13:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2201,10 +2058,10 @@ "typeString": "uint256" }, "typeName": { - "id": 410, + "id": 473, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2377:7:3", + "src": "2341:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2215,11 +2072,11 @@ }, { "constant": false, - "id": 413, + "id": 476, "name": "data", "nodeType": "VariableDeclaration", - "scope": 459, - "src": "2401:10:3", + "scope": 522, + "src": "2365:10:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2227,10 +2084,10 @@ "typeString": "bytes" }, "typeName": { - "id": 412, + "id": 475, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "2401:5:3", + "src": "2365:5:4", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -2241,26 +2098,26 @@ }, { "constant": false, - "id": 415, + "id": 478, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 459, - "src": "2422:24:3", + "scope": 522, + "src": "2386:24:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, "typeName": { "contractScope": null, - "id": 414, + "id": 477, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 5, - "src": "2422:14:3", + "referencedDeclaration": 29, + "src": "2386:14:4", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, @@ -2269,11 +2126,11 @@ }, { "constant": false, - "id": 417, + "id": 480, "name": "nonce", "nodeType": "VariableDeclaration", - "scope": 459, - "src": "2457:13:3", + "scope": 522, + "src": "2421:13:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2281,10 +2138,10 @@ "typeString": "uint256" }, "typeName": { - "id": 416, + "id": 479, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2457:7:3", + "src": "2421:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2294,39 +2151,134 @@ "visibility": "internal" } ], - "src": "2346:130:3" + "src": "2310:130:4" }, "payable": false, "returnParameters": { - "id": 419, + "id": 482, "nodeType": "ParameterList", "parameters": [], - "src": "2496:0:3" + "src": "2460:0:4" }, - "scope": 554, - "src": "2312:542:3", + "scope": 626, + "src": "2276:542:4", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 521, + "id": 590, "nodeType": "Block", - "src": "2942:609:3", + "src": "2906:651:4", "statements": [ { "assignments": [ - 465 + 530 ], "declarations": [ { "constant": false, - "id": 465, + "id": 530, + "name": "approvals", + "nodeType": "VariableDeclaration", + "scope": 591, + "src": "2916:37:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 529, + "keyType": { + "id": 527, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2924:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "2916:27:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 528, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2935:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 534, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 531, + "name": "isApproved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 421, + "src": "2956:10:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(bytes32 => mapping(address => uint256))" + } + }, + "id": 533, + "indexExpression": { + "argumentTypes": null, + "id": 532, + "name": "transactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 524, + "src": "2967:15:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2956:27:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2916:67:4" + }, + { + "assignments": [ + 536 + ], + "declarations": [ + { + "constant": false, + "id": 536, "name": "confirmations", "nodeType": "VariableDeclaration", - "scope": 522, - "src": "2952:21:3", + "scope": 591, + "src": "2993:21:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2334,10 +2286,10 @@ "typeString": "uint256" }, "typeName": { - "id": 464, + "id": 535, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2952:7:3", + "src": "2993:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2347,18 +2299,18 @@ "visibility": "internal" } ], - "id": 467, + "id": 538, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 466, + "id": 537, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2976:1:3", + "src": "3017:1:4", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -2367,20 +2319,20 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "2952:25:3" + "src": "2993:25:4" }, { "assignments": [ - 469 + 540 ], "declarations": [ { "constant": false, - "id": 469, + "id": 540, "name": "currentOwner", "nodeType": "VariableDeclaration", - "scope": 522, - "src": "3029:20:3", + "scope": 591, + "src": "3070:20:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2388,10 +2340,10 @@ "typeString": "address" }, "typeName": { - "id": 468, + "id": 539, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3029:7:3", + "src": "3070:7:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2401,31 +2353,31 @@ "visibility": "internal" } ], - "id": 473, + "id": 544, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 470, + "id": 541, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "3052:6:3", + "referencedDeclaration": 1114, + "src": "3093:6:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 472, + "id": 543, "indexExpression": { "argumentTypes": null, - "id": 471, + "id": 542, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 981, - "src": "3059:15:3", + "referencedDeclaration": 1110, + "src": "3100:15:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2436,33 +2388,33 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3052:23:3", + "src": "3093:23:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "3029:46:3" + "src": "3070:46:4" }, { "body": { - "id": 513, + "id": 582, "nodeType": "Block", - "src": "3125:375:3", + "src": "3166:340:4", "statements": [ { "assignments": [ - 478 + 549 ], "declarations": [ { "constant": false, - "id": 478, + "id": 549, "name": "ownerConfirmed", "nodeType": "VariableDeclaration", - "scope": 522, - "src": "3139:19:3", + "scope": 591, + "src": "3180:19:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2470,10 +2422,10 @@ "typeString": "bool" }, "typeName": { - "id": 477, + "id": 548, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "3139:4:3", + "src": "3180:4:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2483,36 +2435,45 @@ "visibility": "internal" } ], - "id": 484, + "id": 555, "initialValue": { "argumentTypes": null, - "baseExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 554, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 479, - "name": "isApproved", + "id": 550, + "name": "approvals", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 348, - "src": "3161:10:3", + "referencedDeclaration": 530, + "src": "3202:9:4", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", - "typeString": "mapping(bytes32 => mapping(address => bool))" + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" } }, - "id": 481, + "id": 552, "indexExpression": { "argumentTypes": null, - "id": 480, - "name": "transactionHash", + "id": 551, + "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 461, - "src": "3172:15:3", + "referencedDeclaration": 540, + "src": "3212:12:4", "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + "typeIdentifier": "t_address", + "typeString": "address" } }, "isConstant": false, @@ -2520,39 +2481,40 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3161:27:3", + "src": "3202:23:4", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "id": 483, - "indexExpression": { + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { "argumentTypes": null, - "id": 482, - "name": "currentOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 469, - "src": "3189:12:3", + "hexValue": "30", + "id": 553, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3229:1:4", + "subdenomination": null, "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3161:41:3", + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3202:28:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "VariableDeclarationStatement", - "src": "3139:63:3" + "src": "3180:50:4" }, { "condition": { @@ -2561,7 +2523,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 490, + "id": 561, "isConstant": false, "isLValue": false, "isPure": false, @@ -2572,19 +2534,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 488, + "id": 559, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 485, + "id": 556, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 469, - "src": "3219:12:3", + "referencedDeclaration": 540, + "src": "3247:12:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2596,18 +2558,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 486, + "id": 557, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2396, - "src": "3235:3:3", + "referencedDeclaration": 2598, + "src": "3263:3:4", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 487, + "id": 558, "isConstant": false, "isLValue": false, "isPure": false, @@ -2615,13 +2577,13 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3235:10:3", + "src": "3263:10:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "3219:26:3", + "src": "3247:26:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2631,59 +2593,59 @@ "operator": "||", "rightExpression": { "argumentTypes": null, - "id": 489, + "id": 560, "name": "ownerConfirmed", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 478, - "src": "3249:14:3", + "referencedDeclaration": 549, + "src": "3277:14:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "3219:44:3", + "src": "3247:44:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 506, + "id": 575, "nodeType": "IfStatement", - "src": "3216:225:3", + "src": "3244:203:4", "trueBody": { - "id": 505, + "id": 574, "nodeType": "Block", - "src": "3265:176:3", + "src": "3293:154:4", "statements": [ { "condition": { "argumentTypes": null, - "id": 491, + "id": 562, "name": "ownerConfirmed", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 478, - "src": "3287:14:3", + "referencedDeclaration": 549, + "src": "3315:14:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 501, + "id": 570, "nodeType": "IfStatement", - "src": "3283:110:3", + "src": "3311:88:4", "trueBody": { - "id": 500, + "id": 569, "nodeType": "Block", - "src": "3303:90:3", + "src": "3331:68:4", "statements": [ { "expression": { "argumentTypes": null, - "id": 498, + "id": 567, "isConstant": false, "isLValue": false, "isPure": false, @@ -2692,53 +2654,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 492, - "name": "isApproved", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 348, - "src": "3325:10:3", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", - "typeString": "mapping(bytes32 => mapping(address => bool))" - } - }, - "id": 495, - "indexExpression": { - "argumentTypes": null, - "id": 493, - "name": "transactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 461, - "src": "3336:15:3", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3325:27:3", + "id": 563, + "name": "approvals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 530, + "src": "3353:9:4", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" } }, - "id": 496, + "id": 565, "indexExpression": { "argumentTypes": null, - "id": 494, + "id": 564, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 469, - "src": "3353:12:3", + "referencedDeclaration": 540, + "src": "3363:12:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2749,41 +2684,41 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "3325:41:3", + "src": "3353:23:4", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, - "hexValue": "66616c7365", - "id": 497, + "hexValue": "30", + "id": 566, "isConstant": false, "isLValue": false, "isPure": true, - "kind": "bool", + "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3369:5:3", + "src": "3379:1:4", "subdenomination": null, "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" }, - "value": "false" + "value": "0" }, - "src": "3325:49:3", + "src": "3353:27:4", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "id": 499, + "id": 568, "nodeType": "ExpressionStatement", - "src": "3325:49:3" + "src": "3353:27:4" } ] } @@ -2791,7 +2726,7 @@ { "expression": { "argumentTypes": null, - "id": 503, + "id": 572, "isConstant": false, "isLValue": false, "isPure": false, @@ -2799,15 +2734,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "3410:16:3", + "src": "3416:16:4", "subExpression": { "argumentTypes": null, - "id": 502, + "id": 571, "name": "confirmations", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 465, - "src": "3410:13:3", + "referencedDeclaration": 536, + "src": "3416:13:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2818,9 +2753,9 @@ "typeString": "uint256" } }, - "id": 504, + "id": 573, "nodeType": "ExpressionStatement", - "src": "3410:16:3" + "src": "3416:16:4" } ] } @@ -2828,19 +2763,19 @@ { "expression": { "argumentTypes": null, - "id": 511, + "id": 580, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 507, + "id": 576, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 469, - "src": "3454:12:3", + "referencedDeclaration": 540, + "src": "3460:12:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2852,26 +2787,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 508, + "id": 577, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "3469:6:3", + "referencedDeclaration": 1114, + "src": "3475:6:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 510, + "id": 579, "indexExpression": { "argumentTypes": null, - "id": 509, + "id": 578, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 469, - "src": "3476:12:3", + "referencedDeclaration": 540, + "src": "3482:12:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2882,21 +2817,21 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3469:20:3", + "src": "3475:20:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "3454:35:3", + "src": "3460:35:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 512, + "id": 581, "nodeType": "ExpressionStatement", - "src": "3454:35:3" + "src": "3460:35:4" } ] }, @@ -2906,19 +2841,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 476, + "id": 547, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 474, + "id": 545, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 469, - "src": "3092:12:3", + "referencedDeclaration": 540, + "src": "3133:12:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2928,26 +2863,26 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 475, + "id": 546, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 981, - "src": "3108:15:3", + "referencedDeclaration": 1110, + "src": "3149:15:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "3092:31:3", + "src": "3133:31:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 514, + "id": 583, "nodeType": "WhileStatement", - "src": "3085:415:3" + "src": "3126:380:4" }, { "expression": { @@ -2959,19 +2894,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 518, + "id": 587, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 516, + "id": 585, "name": "confirmations", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 465, - "src": "3517:13:3", + "referencedDeclaration": 536, + "src": "3523:13:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2981,18 +2916,18 @@ "operator": ">=", "rightExpression": { "argumentTypes": null, - "id": 517, + "id": 586, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 989, - "src": "3534:9:3", + "referencedDeclaration": 1118, + "src": "3540:9:4", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "3517:26:3", + "src": "3523:26:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3006,21 +2941,21 @@ "typeString": "bool" } ], - "id": 515, + "id": 584, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "3509:7:3", + "referencedDeclaration": 2601, + "src": "3515:7:4", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 519, + "id": 588, "isConstant": false, "isLValue": false, "isPure": false, @@ -3028,20 +2963,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3509:35:3", + "src": "3515:35:4", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 520, + "id": 589, "nodeType": "ExpressionStatement", - "src": "3509:35:3" + "src": "3515:35:4" } ] }, "documentation": null, - "id": 522, + "id": 591, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -3049,16 +2984,16 @@ "name": "checkAndClearConfirmations", "nodeType": "FunctionDefinition", "parameters": { - "id": 462, + "id": 525, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 461, + "id": 524, "name": "transactionHash", "nodeType": "VariableDeclaration", - "scope": 522, - "src": "2896:23:3", + "scope": 591, + "src": "2860:23:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3066,10 +3001,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 460, + "id": 523, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "2896:7:3", + "src": "2860:7:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3079,26 +3014,26 @@ "visibility": "internal" } ], - "src": "2895:25:3" + "src": "2859:25:4" }, "payable": false, "returnParameters": { - "id": 463, + "id": 526, "nodeType": "ParameterList", "parameters": [], - "src": "2942:0:3" + "src": "2906:0:4" }, - "scope": 554, - "src": "2860:691:3", + "scope": 626, + "src": "2824:733:4", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 552, + "id": 624, "nodeType": "Block", - "src": "4045:95:3", + "src": "4051:113:4", "statements": [ { "expression": { @@ -3109,239 +3044,291 @@ "arguments": [ { "argumentTypes": null, - "hexValue": "30783139", - "id": 539, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30783139", + "id": 610, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4100:4:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_25_by_1", + "typeString": "int_const 25" + }, + "value": "0x19" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_25_by_1", + "typeString": "int_const 25" + } + ], + "id": 609, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4095:4:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes1_$", + "typeString": "type(bytes1)" + }, + "typeName": "byte" + }, + "id": 611, "isConstant": false, "isLValue": false, "isPure": true, - "kind": "number", + "kind": "typeConversion", "lValueRequested": false, - "nodeType": "Literal", - "src": "4077:4:3", - "subdenomination": null, + "names": [], + "nodeType": "FunctionCall", + "src": "4095:10:4", "typeDescriptions": { - "typeIdentifier": "t_rational_25_by_1", - "typeString": "int_const 25" - }, - "value": "0x19" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_25_by_1", - "typeString": "int_const 25" + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" } - ], - "id": 538, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "4072:4:3", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes1_$", - "typeString": "type(bytes1)" }, - "typeName": "byte" - }, - "id": 540, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4072:10:3", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - } - }, - { - "argumentTypes": null, - "arguments": [ { "argumentTypes": null, - "hexValue": "30", - "id": 542, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 613, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4112:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 612, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4107:4:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes1_$", + "typeString": "type(bytes1)" + }, + "typeName": "byte" + }, + "id": 614, "isConstant": false, "isLValue": false, "isPure": true, - "kind": "number", + "kind": "typeConversion", "lValueRequested": false, - "nodeType": "Literal", - "src": "4089:1:3", - "subdenomination": null, + "names": [], + "nodeType": "FunctionCall", + "src": "4107:7:4", "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + { + "argumentTypes": null, + "id": 615, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2633, + "src": "4116:4:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafeTeamEdition_$626", + "typeString": "contract GnosisSafeTeamEdition" + } + }, + { + "argumentTypes": null, + "id": 616, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 593, + "src": "4122:2:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 617, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 595, + "src": "4126:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 618, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 597, + "src": "4133:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 619, + "name": "operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 599, + "src": "4139:9:4", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + }, + { + "argumentTypes": null, + "id": 620, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 601, + "src": "4150:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } } ], "expression": { "argumentTypes": [ { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + { + "typeIdentifier": "t_contract$_GnosisSafeTeamEdition_$626", + "typeString": "contract GnosisSafeTeamEdition" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } ], - "id": 541, + "expression": { + "argumentTypes": null, + "id": 607, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2585, + "src": "4078:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 608, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "4084:4:3", + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4078:16:4", "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes1_$", - "typeString": "type(bytes1)" - }, - "typeName": "byte" + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } }, - "id": 543, + "id": 621, "isConstant": false, "isLValue": false, - "isPure": true, - "kind": "typeConversion", + "isPure": false, + "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4084:7:3", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - } - }, - { - "argumentTypes": null, - "id": 544, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2425, - "src": "4093:4:3", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafeTeamEdition_$554", - "typeString": "contract GnosisSafeTeamEdition" - } - }, - { - "argumentTypes": null, - "id": 545, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 524, - "src": "4099:2:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 546, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 526, - "src": "4103:5:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 547, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 528, - "src": "4110:4:3", + "src": "4078:78:4", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } - }, - { - "argumentTypes": null, - "id": 548, - "name": "operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 530, - "src": "4116:9:3", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", - "typeString": "enum Enum.Operation" - } - }, - { - "argumentTypes": null, - "id": 549, - "name": "nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 532, - "src": "4127:5:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } } ], "expression": { "argumentTypes": [ - { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - }, - { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - }, - { - "typeIdentifier": "t_contract$_GnosisSafeTeamEdition_$554", - "typeString": "contract GnosisSafeTeamEdition" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_enum$_Operation_$5", - "typeString": "enum Enum.Operation" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" } ], - "id": 537, + "id": 606, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2390, - "src": "4062:9:3", + "referencedDeclaration": 2592, + "src": "4068:9:4", "typeDescriptions": { "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", "typeString": "function () pure returns (bytes32)" } }, - "id": 550, + "id": 622, "isConstant": false, "isLValue": false, "isPure": false, @@ -3349,21 +3336,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4062:71:3", + "src": "4068:89:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "functionReturnParameters": 536, - "id": 551, + "functionReturnParameters": 605, + "id": 623, "nodeType": "Return", - "src": "4055:78:3" + "src": "4061:96:4" } ] }, "documentation": "@dev Returns hash to be signed by owners.\n @param to Destination address.\n @param value Ether value.\n @param data Data payload.\n @param operation Operation type.\n @param nonce Transaction nonce.\n @return Transaction hash.", - "id": 553, + "id": 625, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -3371,16 +3358,16 @@ "name": "getTransactionHash", "nodeType": "FunctionDefinition", "parameters": { - "id": 533, + "id": 602, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 524, + "id": 593, "name": "to", "nodeType": "VariableDeclaration", - "scope": 553, - "src": "3866:10:3", + "scope": 625, + "src": "3872:10:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3388,10 +3375,10 @@ "typeString": "address" }, "typeName": { - "id": 523, + "id": 592, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3866:7:3", + "src": "3872:7:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3402,11 +3389,11 @@ }, { "constant": false, - "id": 526, + "id": 595, "name": "value", "nodeType": "VariableDeclaration", - "scope": 553, - "src": "3887:13:3", + "scope": 625, + "src": "3893:13:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3414,10 +3401,10 @@ "typeString": "uint256" }, "typeName": { - "id": 525, + "id": 594, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3887:7:3", + "src": "3893:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3428,11 +3415,11 @@ }, { "constant": false, - "id": 528, + "id": 597, "name": "data", "nodeType": "VariableDeclaration", - "scope": 553, - "src": "3911:10:3", + "scope": 625, + "src": "3917:10:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3440,10 +3427,10 @@ "typeString": "bytes" }, "typeName": { - "id": 527, + "id": 596, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "3911:5:3", + "src": "3917:5:4", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -3454,26 +3441,26 @@ }, { "constant": false, - "id": 530, + "id": 599, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 553, - "src": "3932:24:3", + "scope": 625, + "src": "3938:24:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, "typeName": { "contractScope": null, - "id": 529, + "id": 598, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 5, - "src": "3932:14:3", + "referencedDeclaration": 29, + "src": "3938:14:4", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, @@ -3482,11 +3469,11 @@ }, { "constant": false, - "id": 532, + "id": 601, "name": "nonce", "nodeType": "VariableDeclaration", - "scope": 553, - "src": "3967:13:3", + "scope": 625, + "src": "3973:13:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3494,10 +3481,10 @@ "typeString": "uint256" }, "typeName": { - "id": 531, + "id": 600, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3967:7:3", + "src": "3973:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3507,20 +3494,20 @@ "visibility": "internal" } ], - "src": "3856:130:3" + "src": "3862:130:4" }, "payable": false, "returnParameters": { - "id": 536, + "id": 605, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 535, + "id": 604, "name": "", "nodeType": "VariableDeclaration", - "scope": 553, - "src": "4032:7:3", + "scope": 625, + "src": "4038:7:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3528,10 +3515,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 534, + "id": 603, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "4032:7:3", + "src": "4038:7:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3541,60 +3528,60 @@ "visibility": "internal" } ], - "src": "4031:9:3" + "src": "4037:9:4" }, - "scope": 554, - "src": "3829:311:3", + "scope": 626, + "src": "3835:329:4", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 555, - "src": "272:3870:3" + "scope": 627, + "src": "272:3894:4" } ], - "src": "0:4143:3" + "src": "0:4167:4" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafeTeamEdition.sol", "exportedSymbols": { "GnosisSafeTeamEdition": [ - 554 + 626 ] }, - "id": 555, + "id": 627, "nodeType": "SourceUnit", "nodes": [ { - "id": 326, + "id": 399, "literals": [ "solidity", "0.4", - ".23" + ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:3" + "src": "0:23:4" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", "file": "./GnosisSafe.sol", - "id": 327, + "id": 400, "nodeType": "ImportDirective", - "scope": 555, - "sourceUnit": 40, - "src": "24:26:3", + "scope": 627, + "sourceUnit": 64, + "src": "24:26:4", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/MasterCopy.sol", "file": "./MasterCopy.sol", - "id": 328, + "id": 401, "nodeType": "ImportDirective", - "scope": 555, - "sourceUnit": 581, - "src": "51:26:3", + "scope": 627, + "sourceUnit": 653, + "src": "51:26:4", "symbolAliases": [], "unitAlias": "" }, @@ -3604,68 +3591,68 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 329, + "id": 402, "name": "MasterCopy", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 580, - "src": "306:10:3", + "referencedDeclaration": 652, + "src": "306:10:4", "typeDescriptions": { - "typeIdentifier": "t_contract$_MasterCopy_$580", + "typeIdentifier": "t_contract$_MasterCopy_$652", "typeString": "contract MasterCopy" } }, - "id": 330, + "id": 403, "nodeType": "InheritanceSpecifier", - "src": "306:10:3" + "src": "306:10:4" }, { "arguments": null, "baseName": { "contractScope": null, - "id": 331, + "id": 404, "name": "GnosisSafe", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 39, - "src": "318:10:3", + "referencedDeclaration": 63, + "src": "318:10:4", "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafe_$39", + "typeIdentifier": "t_contract$_GnosisSafe_$63", "typeString": "contract GnosisSafe" } }, - "id": 332, + "id": 405, "nodeType": "InheritanceSpecifier", - "src": "318:10:3" + "src": "318:10:4" } ], "contractDependencies": [ - 39, - 580, - 971, - 1343, - 1359 + 63, + 652, + 1100, + 1472, + 1619 ], "contractKind": "contract", "documentation": "@title Gnosis Safe Team Edition - A multisignature wallet with support for confirmations.\n @author Stefan George - \n @author Richard Meissner - ", "fullyImplemented": true, - "id": 554, + "id": 626, "linearizedBaseContracts": [ - 554, - 39, - 1343, - 971, - 580, - 1359 + 626, + 63, + 1472, + 1100, + 652, + 1619 ], "name": "GnosisSafeTeamEdition", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, - "id": 335, + "id": 408, "name": "NAME", "nodeType": "VariableDeclaration", - "scope": 554, - "src": "336:56:3", + "scope": 626, + "src": "336:56:4", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -3673,10 +3660,10 @@ "typeString": "string" }, "typeName": { - "id": 333, + "id": 406, "name": "string", "nodeType": "ElementaryTypeName", - "src": "336:6:3", + "src": "336:6:4", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -3685,14 +3672,14 @@ "value": { "argumentTypes": null, "hexValue": "476e6f7369732053616665205465616d2045646974696f6e", - "id": 334, + "id": 407, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "366:26:3", + "src": "366:26:4", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_69b1cb372bb47730ba653a0e87363aa6de8337d13ed5852e6fe3ba4e2004a81e", @@ -3704,11 +3691,11 @@ }, { "constant": true, - "id": 338, + "id": 411, "name": "VERSION", "nodeType": "VariableDeclaration", - "scope": 554, - "src": "398:40:3", + "scope": 626, + "src": "398:40:4", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -3716,10 +3703,10 @@ "typeString": "string" }, "typeName": { - "id": 336, + "id": 409, "name": "string", "nodeType": "ElementaryTypeName", - "src": "398:6:3", + "src": "398:6:4", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -3728,14 +3715,14 @@ "value": { "argumentTypes": null, "hexValue": "302e302e31", - "id": 337, + "id": 410, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "431:7:3", + "src": "431:7:4", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", @@ -3747,11 +3734,11 @@ }, { "constant": false, - "id": 342, + "id": 415, "name": "isExecuted", "nodeType": "VariableDeclaration", - "scope": 554, - "src": "536:43:3", + "scope": 626, + "src": "536:43:4", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -3759,28 +3746,28 @@ "typeString": "mapping(bytes32 => bool)" }, "typeName": { - "id": 341, + "id": 414, "keyType": { - "id": 339, + "id": 412, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "545:7:3", + "src": "545:7:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "Mapping", - "src": "536:25:3", + "src": "536:25:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" }, "valueType": { - "id": 340, + "id": 413, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "556:4:3", + "src": "556:4:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3792,61 +3779,61 @@ }, { "constant": false, - "id": 348, + "id": 421, "name": "isApproved", "nodeType": "VariableDeclaration", - "scope": 554, - "src": "682:63:3", + "scope": 626, + "src": "767:66:4", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", - "typeString": "mapping(bytes32 => mapping(address => bool))" + "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(bytes32 => mapping(address => uint256))" }, "typeName": { - "id": 347, + "id": 420, "keyType": { - "id": 343, + "id": 416, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "691:7:3", + "src": "776:7:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "Mapping", - "src": "682:45:3", + "src": "767:48:4", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", - "typeString": "mapping(bytes32 => mapping(address => bool))" + "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(bytes32 => mapping(address => uint256))" }, "valueType": { - "id": 346, + "id": 419, "keyType": { - "id": 344, + "id": 417, "name": "address", "nodeType": "ElementaryTypeName", - "src": "710:7:3", + "src": "795:7:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "702:24:3", + "src": "787:27:4", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" }, "valueType": { - "id": 345, - "name": "bool", + "id": 418, + "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "721:4:3", + "src": "806:7:4", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } } } @@ -3856,9 +3843,9 @@ }, { "body": { - "id": 406, + "id": 469, "nodeType": "Block", - "src": "1366:504:3", + "src": "1454:380:4", "statements": [ { "expression": { @@ -3870,7 +3857,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 367, + "id": 440, "isConstant": false, "isLValue": false, "isPure": false, @@ -3879,34 +3866,34 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 362, + "id": 435, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "1454:6:3", + "referencedDeclaration": 1114, + "src": "1542:6:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 365, + "id": 438, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 363, + "id": 436, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2396, - "src": "1461:3:3", + "referencedDeclaration": 2598, + "src": "1549:3:4", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 364, + "id": 437, "isConstant": false, "isLValue": false, "isPure": false, @@ -3914,7 +3901,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1461:10:3", + "src": "1549:10:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3925,7 +3912,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1454:18:3", + "src": "1542:18:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3936,14 +3923,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 366, + "id": 439, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1476:1:3", + "src": "1564:1:4", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3951,7 +3938,7 @@ }, "value": "0" }, - "src": "1454:23:3", + "src": "1542:23:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3965,21 +3952,21 @@ "typeString": "bool" } ], - "id": 361, + "id": 434, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "1446:7:3", + "referencedDeclaration": 2601, + "src": "1534:7:4", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 368, + "id": 441, "isConstant": false, "isLValue": false, "isPure": false, @@ -3987,28 +3974,28 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1446:32:3", + "src": "1534:32:4", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 369, + "id": 442, "nodeType": "ExpressionStatement", - "src": "1446:32:3" + "src": "1534:32:4" }, { "assignments": [ - 371 + 444 ], "declarations": [ { "constant": false, - "id": 371, + "id": 444, "name": "transactionHash", "nodeType": "VariableDeclaration", - "scope": 407, - "src": "1560:23:3", + "scope": 470, + "src": "1576:23:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4016,10 +4003,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 370, + "id": 443, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1560:7:3", + "src": "1576:7:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -4029,18 +4016,18 @@ "visibility": "internal" } ], - "id": 379, + "id": 452, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 373, + "id": 446, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 350, - "src": "1605:2:3", + "referencedDeclaration": 423, + "src": "1621:2:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4048,12 +4035,12 @@ }, { "argumentTypes": null, - "id": 374, + "id": 447, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 352, - "src": "1609:5:3", + "referencedDeclaration": 425, + "src": "1625:5:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4061,12 +4048,12 @@ }, { "argumentTypes": null, - "id": 375, + "id": 448, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 354, - "src": "1616:4:3", + "referencedDeclaration": 427, + "src": "1632:4:4", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -4074,25 +4061,25 @@ }, { "argumentTypes": null, - "id": 376, + "id": 449, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 356, - "src": "1622:9:3", + "referencedDeclaration": 429, + "src": "1638:9:4", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, { "argumentTypes": null, - "id": 377, + "id": 450, "name": "nonce", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 358, - "src": "1633:5:3", + "referencedDeclaration": 431, + "src": "1649:5:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4114,7 +4101,7 @@ "typeString": "bytes memory" }, { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, { @@ -4122,18 +4109,18 @@ "typeString": "uint256" } ], - "id": 372, + "id": 445, "name": "getTransactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 553, - "src": "1586:18:3", + "referencedDeclaration": 625, + "src": "1602:18:4", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$_t_uint256_$returns$_t_bytes32_$", + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bytes32_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) view returns (bytes32)" } }, - "id": 378, + "id": 451, "isConstant": false, "isLValue": false, "isPure": false, @@ -4141,14 +4128,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1586:53:3", + "src": "1602:53:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "VariableDeclarationStatement", - "src": "1560:79:3" + "src": "1576:79:4" }, { "expression": { @@ -4156,7 +4143,7 @@ "arguments": [ { "argumentTypes": null, - "id": 384, + "id": 457, "isConstant": false, "isLValue": false, "isPure": false, @@ -4164,31 +4151,31 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "1657:28:3", + "src": "1745:28:4", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 381, + "id": 454, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 342, - "src": "1658:10:3", + "referencedDeclaration": 415, + "src": "1746:10:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 383, + "id": 456, "indexExpression": { "argumentTypes": null, - "id": 382, + "id": 455, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 371, - "src": "1669:15:3", + "referencedDeclaration": 444, + "src": "1757:15:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -4199,150 +4186,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1658:27:3", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 380, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 2399, - 2400 - ], - "referencedDeclaration": 2399, - "src": "1649:7:3", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 385, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "1649:37:3", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 386, - "nodeType": "ExpressionStatement", - "src": "1649:37:3" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 394, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "!", - "prefix": true, - "src": "1766:40:3", - "subExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 388, - "name": "isApproved", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 348, - "src": "1767:10:3", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", - "typeString": "mapping(bytes32 => mapping(address => bool))" - } - }, - "id": 390, - "indexExpression": { - "argumentTypes": null, - "id": 389, - "name": "transactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 371, - "src": "1778:15:3", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1767:27:3", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 393, - "indexExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 391, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2396, - "src": "1795:3:3", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 392, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "1795:10:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "1767:39:3", + "src": "1746:27:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4361,21 +4205,21 @@ "typeString": "bool" } ], - "id": 387, + "id": 453, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "1758:7:3", + "referencedDeclaration": 2601, + "src": "1737:7:4", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 395, + "id": 458, "isConstant": false, "isLValue": false, "isPure": false, @@ -4383,20 +4227,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1758:49:3", + "src": "1737:37:4", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 396, + "id": 459, "nodeType": "ExpressionStatement", - "src": "1758:49:3" + "src": "1737:37:4" }, { "expression": { "argumentTypes": null, - "id": 404, + "id": 467, "isConstant": false, "isLValue": false, "isPure": false, @@ -4407,26 +4251,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 397, + "id": 460, "name": "isApproved", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 348, - "src": "1817:10:3", + "referencedDeclaration": 421, + "src": "1784:10:4", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", - "typeString": "mapping(bytes32 => mapping(address => bool))" + "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(bytes32 => mapping(address => uint256))" } }, - "id": 401, + "id": 464, "indexExpression": { "argumentTypes": null, - "id": 398, + "id": 461, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 371, - "src": "1828:15:3", + "referencedDeclaration": 444, + "src": "1795:15:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -4437,29 +4281,29 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1817:27:3", + "src": "1784:27:4", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" } }, - "id": 402, + "id": 465, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 399, + "id": 462, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2396, - "src": "1845:3:3", + "referencedDeclaration": 2598, + "src": "1812:3:4", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 400, + "id": 463, "isConstant": false, "isLValue": false, "isPure": false, @@ -4467,7 +4311,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1845:10:3", + "src": "1812:10:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4478,46 +4322,46 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1817:39:3", + "src": "1784:39:4", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, - "hexValue": "74727565", - "id": 403, + "hexValue": "31", + "id": 466, "isConstant": false, "isLValue": false, "isPure": true, - "kind": "bool", + "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1859:4:3", + "src": "1826:1:4", "subdenomination": null, "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_rational_1_by_1", + "typeString": "int_const 1" }, - "value": "true" + "value": "1" }, - "src": "1817:46:3", + "src": "1784:43:4", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "id": 405, + "id": 468, "nodeType": "ExpressionStatement", - "src": "1817:46:3" + "src": "1784:43:4" } ] }, "documentation": "@dev Allows to confirm a Safe transaction with a regular transaction.\n This can only be done from an owner address.\n @param to Destination address of Safe transaction.\n @param value Ether value of Safe transaction.\n @param data Data payload of Safe transaction.\n @param operation Operation type of Safe transaction.\n @param nonce Nonce used for this Safe transaction.", - "id": 407, + "id": 470, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -4525,16 +4369,16 @@ "name": "approveTransactionWithParameters", "nodeType": "FunctionDefinition", "parameters": { - "id": 359, + "id": 432, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 350, + "id": 423, "name": "to", "nodeType": "VariableDeclaration", - "scope": 407, - "src": "1226:10:3", + "scope": 470, + "src": "1314:10:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4542,10 +4386,10 @@ "typeString": "address" }, "typeName": { - "id": 349, + "id": 422, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1226:7:3", + "src": "1314:7:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4556,11 +4400,11 @@ }, { "constant": false, - "id": 352, + "id": 425, "name": "value", "nodeType": "VariableDeclaration", - "scope": 407, - "src": "1247:13:3", + "scope": 470, + "src": "1335:13:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4568,10 +4412,10 @@ "typeString": "uint256" }, "typeName": { - "id": 351, + "id": 424, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1247:7:3", + "src": "1335:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4582,11 +4426,11 @@ }, { "constant": false, - "id": 354, + "id": 427, "name": "data", "nodeType": "VariableDeclaration", - "scope": 407, - "src": "1271:10:3", + "scope": 470, + "src": "1359:10:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4594,10 +4438,10 @@ "typeString": "bytes" }, "typeName": { - "id": 353, + "id": 426, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "1271:5:3", + "src": "1359:5:4", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -4608,26 +4452,26 @@ }, { "constant": false, - "id": 356, + "id": 429, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 407, - "src": "1292:24:3", + "scope": 470, + "src": "1380:24:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, "typeName": { "contractScope": null, - "id": 355, + "id": 428, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 5, - "src": "1292:14:3", + "referencedDeclaration": 29, + "src": "1380:14:4", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, @@ -4636,11 +4480,11 @@ }, { "constant": false, - "id": 358, + "id": 431, "name": "nonce", "nodeType": "VariableDeclaration", - "scope": 407, - "src": "1327:13:3", + "scope": 470, + "src": "1415:13:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4648,10 +4492,10 @@ "typeString": "uint256" }, "typeName": { - "id": 357, + "id": 430, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1327:7:3", + "src": "1415:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4661,39 +4505,39 @@ "visibility": "internal" } ], - "src": "1216:130:3" + "src": "1304:130:4" }, "payable": false, "returnParameters": { - "id": 360, + "id": 433, "nodeType": "ParameterList", "parameters": [], - "src": "1366:0:3" + "src": "1454:0:4" }, - "scope": 554, - "src": "1175:695:3", + "scope": 626, + "src": "1263:571:4", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 458, + "id": 521, "nodeType": "Block", - "src": "2496:358:3", + "src": "2460:358:4", "statements": [ { "assignments": [ - 421 + 484 ], "declarations": [ { "constant": false, - "id": 421, + "id": 484, "name": "transactionHash", "nodeType": "VariableDeclaration", - "scope": 459, - "src": "2506:23:3", + "scope": 522, + "src": "2470:23:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4701,10 +4545,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 420, + "id": 483, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "2506:7:3", + "src": "2470:7:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -4714,18 +4558,18 @@ "visibility": "internal" } ], - "id": 429, + "id": 492, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 423, + "id": 486, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 409, - "src": "2551:2:3", + "referencedDeclaration": 472, + "src": "2515:2:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4733,12 +4577,12 @@ }, { "argumentTypes": null, - "id": 424, + "id": 487, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 411, - "src": "2555:5:3", + "referencedDeclaration": 474, + "src": "2519:5:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4746,12 +4590,12 @@ }, { "argumentTypes": null, - "id": 425, + "id": 488, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 413, - "src": "2562:4:3", + "referencedDeclaration": 476, + "src": "2526:4:4", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -4759,25 +4603,25 @@ }, { "argumentTypes": null, - "id": 426, + "id": 489, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 415, - "src": "2568:9:3", + "referencedDeclaration": 478, + "src": "2532:9:4", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, { "argumentTypes": null, - "id": 427, + "id": 490, "name": "nonce", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 417, - "src": "2579:5:3", + "referencedDeclaration": 480, + "src": "2543:5:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4799,7 +4643,7 @@ "typeString": "bytes memory" }, { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, { @@ -4807,18 +4651,18 @@ "typeString": "uint256" } ], - "id": 422, + "id": 485, "name": "getTransactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 553, - "src": "2532:18:3", + "referencedDeclaration": 625, + "src": "2496:18:4", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$_t_uint256_$returns$_t_bytes32_$", + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bytes32_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) view returns (bytes32)" } }, - "id": 428, + "id": 491, "isConstant": false, "isLValue": false, "isPure": false, @@ -4826,14 +4670,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2532:53:3", + "src": "2496:53:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "VariableDeclarationStatement", - "src": "2506:79:3" + "src": "2470:79:4" }, { "expression": { @@ -4841,7 +4685,7 @@ "arguments": [ { "argumentTypes": null, - "id": 434, + "id": 497, "isConstant": false, "isLValue": false, "isPure": false, @@ -4849,31 +4693,31 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "2603:28:3", + "src": "2567:28:4", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 431, + "id": 494, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 342, - "src": "2604:10:3", + "referencedDeclaration": 415, + "src": "2568:10:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 433, + "id": 496, "indexExpression": { "argumentTypes": null, - "id": 432, + "id": 495, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 421, - "src": "2615:15:3", + "referencedDeclaration": 484, + "src": "2579:15:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -4884,7 +4728,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2604:27:3", + "src": "2568:27:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4903,21 +4747,21 @@ "typeString": "bool" } ], - "id": 430, + "id": 493, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "2595:7:3", + "referencedDeclaration": 2601, + "src": "2559:7:4", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 435, + "id": 498, "isConstant": false, "isLValue": false, "isPure": false, @@ -4925,15 +4769,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2595:37:3", + "src": "2559:37:4", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 436, + "id": 499, "nodeType": "ExpressionStatement", - "src": "2595:37:3" + "src": "2559:37:4" }, { "expression": { @@ -4941,12 +4785,12 @@ "arguments": [ { "argumentTypes": null, - "id": 438, + "id": 501, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 421, - "src": "2669:15:3", + "referencedDeclaration": 484, + "src": "2633:15:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -4960,18 +4804,18 @@ "typeString": "bytes32" } ], - "id": 437, + "id": 500, "name": "checkAndClearConfirmations", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 522, - "src": "2642:26:3", + "referencedDeclaration": 591, + "src": "2606:26:4", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$__$", "typeString": "function (bytes32)" } }, - "id": 439, + "id": 502, "isConstant": false, "isLValue": false, "isPure": false, @@ -4979,20 +4823,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2642:43:3", + "src": "2606:43:4", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 440, + "id": 503, "nodeType": "ExpressionStatement", - "src": "2642:43:3" + "src": "2606:43:4" }, { "expression": { "argumentTypes": null, - "id": 445, + "id": 508, "isConstant": false, "isLValue": false, "isPure": false, @@ -5001,26 +4845,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 441, + "id": 504, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 342, - "src": "2748:10:3", + "referencedDeclaration": 415, + "src": "2712:10:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 443, + "id": 506, "indexExpression": { "argumentTypes": null, - "id": 442, + "id": 505, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 421, - "src": "2759:15:3", + "referencedDeclaration": 484, + "src": "2723:15:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -5031,7 +4875,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2748:27:3", + "src": "2712:27:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5042,14 +4886,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 444, + "id": 507, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "2778:4:3", + "src": "2742:4:4", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -5057,15 +4901,15 @@ }, "value": "true" }, - "src": "2748:34:3", + "src": "2712:34:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 446, + "id": 509, "nodeType": "ExpressionStatement", - "src": "2748:34:3" + "src": "2712:34:4" }, { "expression": { @@ -5076,12 +4920,12 @@ "arguments": [ { "argumentTypes": null, - "id": 449, + "id": 512, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 409, - "src": "2808:2:3", + "referencedDeclaration": 472, + "src": "2772:2:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5089,12 +4933,12 @@ }, { "argumentTypes": null, - "id": 450, + "id": 513, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 411, - "src": "2812:5:3", + "referencedDeclaration": 474, + "src": "2776:5:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5102,12 +4946,12 @@ }, { "argumentTypes": null, - "id": 451, + "id": 514, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 413, - "src": "2819:4:3", + "referencedDeclaration": 476, + "src": "2783:4:4", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -5115,14 +4959,14 @@ }, { "argumentTypes": null, - "id": 452, + "id": 515, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 415, - "src": "2825:9:3", + "referencedDeclaration": 478, + "src": "2789:9:4", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, @@ -5131,18 +4975,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 453, + "id": 516, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2389, - "src": "2836:7:3", + "referencedDeclaration": 2591, + "src": "2800:7:4", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 454, + "id": 517, "isConstant": false, "isLValue": false, "isPure": false, @@ -5150,7 +4994,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2836:9:3", + "src": "2800:9:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5172,7 +5016,7 @@ "typeString": "bytes memory" }, { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, { @@ -5180,18 +5024,18 @@ "typeString": "uint256" } ], - "id": 448, + "id": 511, "name": "execute", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 860, - "src": "2800:7:3", + "referencedDeclaration": 989, + "src": "2764:7:4", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$_t_uint256_$returns$_t_bool_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) returns (bool)" } }, - "id": 455, + "id": 518, "isConstant": false, "isLValue": false, "isPure": false, @@ -5199,7 +5043,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2800:46:3", + "src": "2764:46:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5213,21 +5057,21 @@ "typeString": "bool" } ], - "id": 447, + "id": 510, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "2792:7:3", + "referencedDeclaration": 2601, + "src": "2756:7:4", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 456, + "id": 519, "isConstant": false, "isLValue": false, "isPure": false, @@ -5235,20 +5079,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2792:55:3", + "src": "2756:55:4", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 457, + "id": 520, "nodeType": "ExpressionStatement", - "src": "2792:55:3" + "src": "2756:55:4" } ] }, "documentation": "@dev Allows to execute a Safe transaction confirmed by required number of owners. If the sender is an owner this is automatically confirmed.\n @param to Destination address of Safe transaction.\n @param value Ether value of Safe transaction.\n @param data Data payload of Safe transaction.\n @param operation Operation type of Safe transaction.\n @param nonce Nonce used for this Safe transaction.", - "id": 459, + "id": 522, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -5256,16 +5100,16 @@ "name": "execTransactionIfApproved", "nodeType": "FunctionDefinition", "parameters": { - "id": 418, + "id": 481, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 409, + "id": 472, "name": "to", "nodeType": "VariableDeclaration", - "scope": 459, - "src": "2356:10:3", + "scope": 522, + "src": "2320:10:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5273,10 +5117,10 @@ "typeString": "address" }, "typeName": { - "id": 408, + "id": 471, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2356:7:3", + "src": "2320:7:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5287,11 +5131,11 @@ }, { "constant": false, - "id": 411, + "id": 474, "name": "value", "nodeType": "VariableDeclaration", - "scope": 459, - "src": "2377:13:3", + "scope": 522, + "src": "2341:13:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5299,10 +5143,10 @@ "typeString": "uint256" }, "typeName": { - "id": 410, + "id": 473, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2377:7:3", + "src": "2341:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5313,11 +5157,11 @@ }, { "constant": false, - "id": 413, + "id": 476, "name": "data", "nodeType": "VariableDeclaration", - "scope": 459, - "src": "2401:10:3", + "scope": 522, + "src": "2365:10:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5325,10 +5169,10 @@ "typeString": "bytes" }, "typeName": { - "id": 412, + "id": 475, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "2401:5:3", + "src": "2365:5:4", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -5339,26 +5183,26 @@ }, { "constant": false, - "id": 415, + "id": 478, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 459, - "src": "2422:24:3", + "scope": 522, + "src": "2386:24:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, "typeName": { "contractScope": null, - "id": 414, + "id": 477, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 5, - "src": "2422:14:3", + "referencedDeclaration": 29, + "src": "2386:14:4", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, @@ -5367,11 +5211,11 @@ }, { "constant": false, - "id": 417, + "id": 480, "name": "nonce", "nodeType": "VariableDeclaration", - "scope": 459, - "src": "2457:13:3", + "scope": 522, + "src": "2421:13:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5379,10 +5223,10 @@ "typeString": "uint256" }, "typeName": { - "id": 416, + "id": 479, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2457:7:3", + "src": "2421:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5392,39 +5236,134 @@ "visibility": "internal" } ], - "src": "2346:130:3" + "src": "2310:130:4" }, "payable": false, "returnParameters": { - "id": 419, + "id": 482, "nodeType": "ParameterList", "parameters": [], - "src": "2496:0:3" + "src": "2460:0:4" }, - "scope": 554, - "src": "2312:542:3", + "scope": 626, + "src": "2276:542:4", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 521, + "id": 590, "nodeType": "Block", - "src": "2942:609:3", + "src": "2906:651:4", "statements": [ { "assignments": [ - 465 + 530 ], "declarations": [ { "constant": false, - "id": 465, + "id": 530, + "name": "approvals", + "nodeType": "VariableDeclaration", + "scope": 591, + "src": "2916:37:4", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "typeName": { + "id": 529, + "keyType": { + "id": 527, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2924:7:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "Mapping", + "src": "2916:27:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + }, + "valueType": { + "id": 528, + "name": "uint256", + "nodeType": "ElementaryTypeName", + "src": "2935:7:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + }, + "value": null, + "visibility": "internal" + } + ], + "id": 534, + "initialValue": { + "argumentTypes": null, + "baseExpression": { + "argumentTypes": null, + "id": 531, + "name": "isApproved", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 421, + "src": "2956:10:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_uint256_$_$", + "typeString": "mapping(bytes32 => mapping(address => uint256))" + } + }, + "id": 533, + "indexExpression": { + "argumentTypes": null, + "id": 532, + "name": "transactionHash", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 524, + "src": "2967:15:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes32", + "typeString": "bytes32" + } + }, + "isConstant": false, + "isLValue": true, + "isPure": false, + "lValueRequested": false, + "nodeType": "IndexAccess", + "src": "2956:27:4", + "typeDescriptions": { + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" + } + }, + "nodeType": "VariableDeclarationStatement", + "src": "2916:67:4" + }, + { + "assignments": [ + 536 + ], + "declarations": [ + { + "constant": false, + "id": 536, "name": "confirmations", "nodeType": "VariableDeclaration", - "scope": 522, - "src": "2952:21:3", + "scope": 591, + "src": "2993:21:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5432,10 +5371,10 @@ "typeString": "uint256" }, "typeName": { - "id": 464, + "id": 535, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2952:7:3", + "src": "2993:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5445,18 +5384,18 @@ "visibility": "internal" } ], - "id": 467, + "id": 538, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 466, + "id": 537, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2976:1:3", + "src": "3017:1:4", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -5465,20 +5404,20 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "2952:25:3" + "src": "2993:25:4" }, { "assignments": [ - 469 + 540 ], "declarations": [ { "constant": false, - "id": 469, + "id": 540, "name": "currentOwner", "nodeType": "VariableDeclaration", - "scope": 522, - "src": "3029:20:3", + "scope": 591, + "src": "3070:20:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5486,10 +5425,10 @@ "typeString": "address" }, "typeName": { - "id": 468, + "id": 539, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3029:7:3", + "src": "3070:7:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5499,31 +5438,31 @@ "visibility": "internal" } ], - "id": 473, + "id": 544, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 470, + "id": 541, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "3052:6:3", + "referencedDeclaration": 1114, + "src": "3093:6:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 472, + "id": 543, "indexExpression": { "argumentTypes": null, - "id": 471, + "id": 542, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 981, - "src": "3059:15:3", + "referencedDeclaration": 1110, + "src": "3100:15:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5534,33 +5473,33 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3052:23:3", + "src": "3093:23:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "3029:46:3" + "src": "3070:46:4" }, { "body": { - "id": 513, + "id": 582, "nodeType": "Block", - "src": "3125:375:3", + "src": "3166:340:4", "statements": [ { "assignments": [ - 478 + 549 ], "declarations": [ { "constant": false, - "id": 478, + "id": 549, "name": "ownerConfirmed", "nodeType": "VariableDeclaration", - "scope": 522, - "src": "3139:19:3", + "scope": 591, + "src": "3180:19:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5568,10 +5507,10 @@ "typeString": "bool" }, "typeName": { - "id": 477, + "id": 548, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "3139:4:3", + "src": "3180:4:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5581,36 +5520,45 @@ "visibility": "internal" } ], - "id": 484, + "id": 555, "initialValue": { "argumentTypes": null, - "baseExpression": { + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 554, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 479, - "name": "isApproved", + "id": 550, + "name": "approvals", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 348, - "src": "3161:10:3", + "referencedDeclaration": 530, + "src": "3202:9:4", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", - "typeString": "mapping(bytes32 => mapping(address => bool))" + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" } }, - "id": 481, + "id": 552, "indexExpression": { "argumentTypes": null, - "id": 480, - "name": "transactionHash", + "id": 551, + "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 461, - "src": "3172:15:3", + "referencedDeclaration": 540, + "src": "3212:12:4", "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" + "typeIdentifier": "t_address", + "typeString": "address" } }, "isConstant": false, @@ -5618,39 +5566,40 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3161:27:3", + "src": "3202:23:4", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "id": 483, - "indexExpression": { + "nodeType": "BinaryOperation", + "operator": "!=", + "rightExpression": { "argumentTypes": null, - "id": 482, - "name": "currentOwner", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 469, - "src": "3189:12:3", + "hexValue": "30", + "id": 553, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3229:1:4", + "subdenomination": null, "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3161:41:3", + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + }, + "src": "3202:28:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "VariableDeclarationStatement", - "src": "3139:63:3" + "src": "3180:50:4" }, { "condition": { @@ -5659,7 +5608,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 490, + "id": 561, "isConstant": false, "isLValue": false, "isPure": false, @@ -5670,19 +5619,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 488, + "id": 559, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 485, + "id": 556, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 469, - "src": "3219:12:3", + "referencedDeclaration": 540, + "src": "3247:12:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5694,18 +5643,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 486, + "id": 557, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2396, - "src": "3235:3:3", + "referencedDeclaration": 2598, + "src": "3263:3:4", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 487, + "id": 558, "isConstant": false, "isLValue": false, "isPure": false, @@ -5713,13 +5662,13 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3235:10:3", + "src": "3263:10:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "3219:26:3", + "src": "3247:26:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5729,59 +5678,59 @@ "operator": "||", "rightExpression": { "argumentTypes": null, - "id": 489, + "id": 560, "name": "ownerConfirmed", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 478, - "src": "3249:14:3", + "referencedDeclaration": 549, + "src": "3277:14:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "3219:44:3", + "src": "3247:44:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 506, + "id": 575, "nodeType": "IfStatement", - "src": "3216:225:3", + "src": "3244:203:4", "trueBody": { - "id": 505, + "id": 574, "nodeType": "Block", - "src": "3265:176:3", + "src": "3293:154:4", "statements": [ { "condition": { "argumentTypes": null, - "id": 491, + "id": 562, "name": "ownerConfirmed", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 478, - "src": "3287:14:3", + "referencedDeclaration": 549, + "src": "3315:14:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 501, + "id": 570, "nodeType": "IfStatement", - "src": "3283:110:3", + "src": "3311:88:4", "trueBody": { - "id": 500, + "id": 569, "nodeType": "Block", - "src": "3303:90:3", + "src": "3331:68:4", "statements": [ { "expression": { "argumentTypes": null, - "id": 498, + "id": 567, "isConstant": false, "isLValue": false, "isPure": false, @@ -5790,53 +5739,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 492, - "name": "isApproved", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 348, - "src": "3325:10:3", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", - "typeString": "mapping(bytes32 => mapping(address => bool))" - } - }, - "id": 495, - "indexExpression": { - "argumentTypes": null, - "id": 493, - "name": "transactionHash", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 461, - "src": "3336:15:3", - "typeDescriptions": { - "typeIdentifier": "t_bytes32", - "typeString": "bytes32" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "3325:27:3", + "id": 563, + "name": "approvals", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 530, + "src": "3353:9:4", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" + "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", + "typeString": "mapping(address => uint256)" } }, - "id": 496, + "id": 565, "indexExpression": { "argumentTypes": null, - "id": 494, + "id": 564, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 469, - "src": "3353:12:3", + "referencedDeclaration": 540, + "src": "3363:12:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5847,41 +5769,41 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "3325:41:3", + "src": "3353:23:4", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "argumentTypes": null, - "hexValue": "66616c7365", - "id": 497, + "hexValue": "30", + "id": 566, "isConstant": false, "isLValue": false, "isPure": true, - "kind": "bool", + "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3369:5:3", + "src": "3379:1:4", "subdenomination": null, "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" }, - "value": "false" + "value": "0" }, - "src": "3325:49:3", + "src": "3353:27:4", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_uint256", + "typeString": "uint256" } }, - "id": 499, + "id": 568, "nodeType": "ExpressionStatement", - "src": "3325:49:3" + "src": "3353:27:4" } ] } @@ -5889,7 +5811,7 @@ { "expression": { "argumentTypes": null, - "id": 503, + "id": 572, "isConstant": false, "isLValue": false, "isPure": false, @@ -5897,15 +5819,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "3410:16:3", + "src": "3416:16:4", "subExpression": { "argumentTypes": null, - "id": 502, + "id": 571, "name": "confirmations", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 465, - "src": "3410:13:3", + "referencedDeclaration": 536, + "src": "3416:13:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5916,9 +5838,9 @@ "typeString": "uint256" } }, - "id": 504, + "id": 573, "nodeType": "ExpressionStatement", - "src": "3410:16:3" + "src": "3416:16:4" } ] } @@ -5926,19 +5848,19 @@ { "expression": { "argumentTypes": null, - "id": 511, + "id": 580, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 507, + "id": 576, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 469, - "src": "3454:12:3", + "referencedDeclaration": 540, + "src": "3460:12:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5950,26 +5872,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 508, + "id": 577, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "3469:6:3", + "referencedDeclaration": 1114, + "src": "3475:6:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 510, + "id": 579, "indexExpression": { "argumentTypes": null, - "id": 509, + "id": 578, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 469, - "src": "3476:12:3", + "referencedDeclaration": 540, + "src": "3482:12:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5980,21 +5902,21 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3469:20:3", + "src": "3475:20:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "3454:35:3", + "src": "3460:35:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 512, + "id": 581, "nodeType": "ExpressionStatement", - "src": "3454:35:3" + "src": "3460:35:4" } ] }, @@ -6004,19 +5926,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 476, + "id": 547, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 474, + "id": 545, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 469, - "src": "3092:12:3", + "referencedDeclaration": 540, + "src": "3133:12:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6026,26 +5948,26 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 475, + "id": 546, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 981, - "src": "3108:15:3", + "referencedDeclaration": 1110, + "src": "3149:15:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "3092:31:3", + "src": "3133:31:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 514, + "id": 583, "nodeType": "WhileStatement", - "src": "3085:415:3" + "src": "3126:380:4" }, { "expression": { @@ -6057,19 +5979,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 518, + "id": 587, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 516, + "id": 585, "name": "confirmations", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 465, - "src": "3517:13:3", + "referencedDeclaration": 536, + "src": "3523:13:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6079,18 +6001,18 @@ "operator": ">=", "rightExpression": { "argumentTypes": null, - "id": 517, + "id": 586, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 989, - "src": "3534:9:3", + "referencedDeclaration": 1118, + "src": "3540:9:4", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "3517:26:3", + "src": "3523:26:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6104,21 +6026,21 @@ "typeString": "bool" } ], - "id": 515, + "id": 584, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "3509:7:3", + "referencedDeclaration": 2601, + "src": "3515:7:4", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 519, + "id": 588, "isConstant": false, "isLValue": false, "isPure": false, @@ -6126,20 +6048,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3509:35:3", + "src": "3515:35:4", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 520, + "id": 589, "nodeType": "ExpressionStatement", - "src": "3509:35:3" + "src": "3515:35:4" } ] }, "documentation": null, - "id": 522, + "id": 591, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -6147,16 +6069,16 @@ "name": "checkAndClearConfirmations", "nodeType": "FunctionDefinition", "parameters": { - "id": 462, + "id": 525, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 461, + "id": 524, "name": "transactionHash", "nodeType": "VariableDeclaration", - "scope": 522, - "src": "2896:23:3", + "scope": 591, + "src": "2860:23:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6164,10 +6086,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 460, + "id": 523, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "2896:7:3", + "src": "2860:7:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -6177,26 +6099,26 @@ "visibility": "internal" } ], - "src": "2895:25:3" + "src": "2859:25:4" }, "payable": false, "returnParameters": { - "id": 463, + "id": 526, "nodeType": "ParameterList", "parameters": [], - "src": "2942:0:3" + "src": "2906:0:4" }, - "scope": 554, - "src": "2860:691:3", + "scope": 626, + "src": "2824:733:4", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 552, + "id": 624, "nodeType": "Block", - "src": "4045:95:3", + "src": "4051:113:4", "statements": [ { "expression": { @@ -6207,239 +6129,291 @@ "arguments": [ { "argumentTypes": null, - "hexValue": "30783139", - "id": 539, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30783139", + "id": 610, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4100:4:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_25_by_1", + "typeString": "int_const 25" + }, + "value": "0x19" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_25_by_1", + "typeString": "int_const 25" + } + ], + "id": 609, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4095:4:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes1_$", + "typeString": "type(bytes1)" + }, + "typeName": "byte" + }, + "id": 611, "isConstant": false, "isLValue": false, "isPure": true, - "kind": "number", + "kind": "typeConversion", "lValueRequested": false, - "nodeType": "Literal", - "src": "4077:4:3", - "subdenomination": null, + "names": [], + "nodeType": "FunctionCall", + "src": "4095:10:4", "typeDescriptions": { - "typeIdentifier": "t_rational_25_by_1", - "typeString": "int_const 25" - }, - "value": "0x19" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_25_by_1", - "typeString": "int_const 25" + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" } - ], - "id": 538, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "4072:4:3", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes1_$", - "typeString": "type(bytes1)" }, - "typeName": "byte" - }, - "id": 540, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "4072:10:3", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - } - }, - { - "argumentTypes": null, - "arguments": [ { "argumentTypes": null, - "hexValue": "30", - "id": 542, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 613, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4112:1:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 612, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "4107:4:4", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes1_$", + "typeString": "type(bytes1)" + }, + "typeName": "byte" + }, + "id": 614, "isConstant": false, "isLValue": false, "isPure": true, - "kind": "number", + "kind": "typeConversion", "lValueRequested": false, - "nodeType": "Literal", - "src": "4089:1:3", - "subdenomination": null, + "names": [], + "nodeType": "FunctionCall", + "src": "4107:7:4", "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + { + "argumentTypes": null, + "id": 615, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2633, + "src": "4116:4:4", + "typeDescriptions": { + "typeIdentifier": "t_contract$_GnosisSafeTeamEdition_$626", + "typeString": "contract GnosisSafeTeamEdition" + } + }, + { + "argumentTypes": null, + "id": 616, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 593, + "src": "4122:2:4", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 617, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 595, + "src": "4126:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 618, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 597, + "src": "4133:4:4", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 619, + "name": "operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 599, + "src": "4139:9:4", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + }, + { + "argumentTypes": null, + "id": 620, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 601, + "src": "4150:5:4", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } } ], "expression": { "argumentTypes": [ { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + { + "typeIdentifier": "t_contract$_GnosisSafeTeamEdition_$626", + "typeString": "contract GnosisSafeTeamEdition" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } ], - "id": 541, + "expression": { + "argumentTypes": null, + "id": 607, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2585, + "src": "4078:3:4", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 608, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "4084:4:3", + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "4078:16:4", "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes1_$", - "typeString": "type(bytes1)" - }, - "typeName": "byte" + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } }, - "id": 543, + "id": 621, "isConstant": false, "isLValue": false, - "isPure": true, - "kind": "typeConversion", + "isPure": false, + "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4084:7:3", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - } - }, - { - "argumentTypes": null, - "id": 544, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2425, - "src": "4093:4:3", - "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafeTeamEdition_$554", - "typeString": "contract GnosisSafeTeamEdition" - } - }, - { - "argumentTypes": null, - "id": 545, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 524, - "src": "4099:2:3", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 546, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 526, - "src": "4103:5:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 547, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 528, - "src": "4110:4:3", + "src": "4078:78:4", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } - }, - { - "argumentTypes": null, - "id": 548, - "name": "operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 530, - "src": "4116:9:3", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", - "typeString": "enum Enum.Operation" - } - }, - { - "argumentTypes": null, - "id": 549, - "name": "nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 532, - "src": "4127:5:3", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } } ], "expression": { "argumentTypes": [ - { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - }, - { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - }, - { - "typeIdentifier": "t_contract$_GnosisSafeTeamEdition_$554", - "typeString": "contract GnosisSafeTeamEdition" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_enum$_Operation_$5", - "typeString": "enum Enum.Operation" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" } ], - "id": 537, + "id": 606, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2390, - "src": "4062:9:3", + "referencedDeclaration": 2592, + "src": "4068:9:4", "typeDescriptions": { "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", "typeString": "function () pure returns (bytes32)" } }, - "id": 550, + "id": 622, "isConstant": false, "isLValue": false, "isPure": false, @@ -6447,21 +6421,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4062:71:3", + "src": "4068:89:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "functionReturnParameters": 536, - "id": 551, + "functionReturnParameters": 605, + "id": 623, "nodeType": "Return", - "src": "4055:78:3" + "src": "4061:96:4" } ] }, "documentation": "@dev Returns hash to be signed by owners.\n @param to Destination address.\n @param value Ether value.\n @param data Data payload.\n @param operation Operation type.\n @param nonce Transaction nonce.\n @return Transaction hash.", - "id": 553, + "id": 625, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -6469,16 +6443,16 @@ "name": "getTransactionHash", "nodeType": "FunctionDefinition", "parameters": { - "id": 533, + "id": 602, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 524, + "id": 593, "name": "to", "nodeType": "VariableDeclaration", - "scope": 553, - "src": "3866:10:3", + "scope": 625, + "src": "3872:10:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6486,10 +6460,10 @@ "typeString": "address" }, "typeName": { - "id": 523, + "id": 592, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3866:7:3", + "src": "3872:7:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6500,11 +6474,11 @@ }, { "constant": false, - "id": 526, + "id": 595, "name": "value", "nodeType": "VariableDeclaration", - "scope": 553, - "src": "3887:13:3", + "scope": 625, + "src": "3893:13:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6512,10 +6486,10 @@ "typeString": "uint256" }, "typeName": { - "id": 525, + "id": 594, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3887:7:3", + "src": "3893:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6526,11 +6500,11 @@ }, { "constant": false, - "id": 528, + "id": 597, "name": "data", "nodeType": "VariableDeclaration", - "scope": 553, - "src": "3911:10:3", + "scope": 625, + "src": "3917:10:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6538,10 +6512,10 @@ "typeString": "bytes" }, "typeName": { - "id": 527, + "id": 596, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "3911:5:3", + "src": "3917:5:4", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -6552,26 +6526,26 @@ }, { "constant": false, - "id": 530, + "id": 599, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 553, - "src": "3932:24:3", + "scope": 625, + "src": "3938:24:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, "typeName": { "contractScope": null, - "id": 529, + "id": 598, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 5, - "src": "3932:14:3", + "referencedDeclaration": 29, + "src": "3938:14:4", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, @@ -6580,11 +6554,11 @@ }, { "constant": false, - "id": 532, + "id": 601, "name": "nonce", "nodeType": "VariableDeclaration", - "scope": 553, - "src": "3967:13:3", + "scope": 625, + "src": "3973:13:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6592,10 +6566,10 @@ "typeString": "uint256" }, "typeName": { - "id": 531, + "id": 600, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3967:7:3", + "src": "3973:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6605,20 +6579,20 @@ "visibility": "internal" } ], - "src": "3856:130:3" + "src": "3862:130:4" }, "payable": false, "returnParameters": { - "id": 536, + "id": 605, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 535, + "id": 604, "name": "", "nodeType": "VariableDeclaration", - "scope": 553, - "src": "4032:7:3", + "scope": 625, + "src": "4038:7:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6626,10 +6600,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 534, + "id": 603, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "4032:7:3", + "src": "4038:7:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -6639,63 +6613,45 @@ "visibility": "internal" } ], - "src": "4031:9:3" + "src": "4037:9:4" }, - "scope": 554, - "src": "3829:311:3", + "scope": 626, + "src": "3835:329:4", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 555, - "src": "272:3870:3" + "scope": 627, + "src": "272:3894:4" } ], - "src": "0:4143:3" + "src": "0:4167:4" }, "compiler": { "name": "solc", - "version": "0.4.23+commit.124ca40d.Emscripten.clang" + "version": "0.4.24+commit.e67f0147.Emscripten.clang" }, "networks": { "4": { "events": {}, "links": {}, - "address": "0x2dd472fa9a922d380282775d1b0a33b2ce62d094", - "transactionHash": "0x680b211f800d9cfe49c7f9d9e0259032d19ff74c43e7f44e16f14b1220ca7b89" - }, - "1525950336085": { - "events": {}, - "links": {}, - "address": "0xd16506c40cb044bf78552d9bea796c9d98fa0a45", - "transactionHash": "0x782ef1b28e30afdcb711e7119c7bc794bbd7f42356ea5a68072b8f59400b05e3" + "address": "0x2c4aed3a457a6c22b69e3c265e8ea2f1c63c3a22", + "transactionHash": "0xadc1acb04257fdd33996d12fb7aacca9dd0bbd4791091cadba4feb42d58d84b7" }, - "1526283540628": { - "events": {}, - "links": {}, - "address": "0xaadc387a6c96744064754aa1f2391cbe1bb55970", - "transactionHash": "0x782ef1b28e30afdcb711e7119c7bc794bbd7f42356ea5a68072b8f59400b05e3" - }, - "1526478212260": { - "events": {}, - "links": {}, - "address": "0xac64aef07af9275b66107f36039a47592c6507f8", - "transactionHash": "0x8004ae7f9ec8f459da793c0882711d8488c50b973f4bdddb9df31cade42b2cd3" - }, - "1526973574996": { + "1527316019334": { "events": {}, "links": {}, - "address": "0x592b6c1e500c567c0dd01c2a1dd6b84db9c41ace", - "transactionHash": "0x8004ae7f9ec8f459da793c0882711d8488c50b973f4bdddb9df31cade42b2cd3" + "address": "0x8a0005965449a50c878f81366c85b1b8ed684cd9", + "transactionHash": "0xb4a3d52a904d829e91e4502b2b0659cbfd5a90dd2af4c90f9d488e4e3f3b47d2" }, - "1527316019334": { + "1527420696956": { "events": {}, "links": {}, - "address": "0x29978b66e148e3e61ccff27e1f68784ed491fd82", - "transactionHash": "0x8004ae7f9ec8f459da793c0882711d8488c50b973f4bdddb9df31cade42b2cd3" + "address": "0x60c424968c3dc4ff9130b80591c0b97dda690b66", + "transactionHash": "0x304ee33d69762c466c689bbea9fcce594bfafd1cbad5482e75be43ad24ca200f" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-26T06:28:28.342Z" + "updatedAt": "2018-05-27T11:31:46.251Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/MasterCopy.json b/safe-contracts/build/contracts/MasterCopy.json index 75b6f868c2..5d41f32aa6 100644 --- a/safe-contracts/build/contracts/MasterCopy.json +++ b/safe-contracts/build/contracts/MasterCopy.json @@ -16,40 +16,40 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50610158806100206000396000f300608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680637de7edef14610046575b600080fd5b34801561005257600080fd5b50610087600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610089565b005b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156100c357600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156100e957600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505600a165627a7a7230582073cd5ab8858f9d67e5e09748f71ecf939357d0d1230776e9f935b1ef5d664eb00029", - "deployedBytecode": "0x608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680637de7edef14610046575b600080fd5b34801561005257600080fd5b50610087600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610089565b005b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156100c357600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156100e957600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505600a165627a7a7230582073cd5ab8858f9d67e5e09748f71ecf939357d0d1230776e9f935b1ef5d664eb00029", - "sourceMap": "203:633:4:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;203:633:4;;;;;;;", - "deployedSourceMap": "203:633:4:-;;;;;;;;;;;;;;;;;;;;;;;;626:208;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:208:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;791:1:4;776:11;:16;;;;768:25;;;;;;;;816:11;803:10;;:24;;;;;;;;;;;;;;;;;;626:208;:::o", - "source": "pragma solidity 0.4.23;\nimport \"./SelfAuthorized.sol\";\n\n\n/// @title MasterCopy - Base for master copy contracts (should always be first super contract)\n/// @author Richard Meissner - \ncontract MasterCopy is SelfAuthorized {\n // masterCopy always needs to be first declared variable, to ensure that it is at the same location as in the Proxy contract.\n // It should also always be ensured that the address is stored alone (uses a full word)\n address masterCopy;\n\n /// @dev Allows to upgrade the contract. This can only be done via a Safe transaction.\n /// @param _masterCopy New contract address.\n function changeMasterCopy(address _masterCopy)\n public\n authorized\n {\n // Master copy address cannot be null.\n require(_masterCopy != 0);\n masterCopy = _masterCopy;\n }\n}\n", + "bytecode": "0x608060405234801561001057600080fd5b50610158806100206000396000f300608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680637de7edef14610046575b600080fd5b34801561005257600080fd5b50610087600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610089565b005b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156100c357600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156100e957600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505600a165627a7a72305820af102433b8ccec4f2f22acc2112a110b3e5e8a3a9a6410aebbe25fc9281607660029", + "deployedBytecode": "0x608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680637de7edef14610046575b600080fd5b34801561005257600080fd5b50610087600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610089565b005b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156100c357600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156100e957600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505600a165627a7a72305820af102433b8ccec4f2f22acc2112a110b3e5e8a3a9a6410aebbe25fc9281607660029", + "sourceMap": "203:633:5:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;203:633:5;;;;;;;", + "deployedSourceMap": "203:633:5:-;;;;;;;;;;;;;;;;;;;;;;;;626:208;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:208:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;791:1:5;776:11;:16;;;;768:25;;;;;;;;816:11;803:10;;:24;;;;;;;;;;;;;;;;;;626:208;:::o", + "source": "pragma solidity 0.4.24;\nimport \"./SelfAuthorized.sol\";\n\n\n/// @title MasterCopy - Base for master copy contracts (should always be first super contract)\n/// @author Richard Meissner - \ncontract MasterCopy is SelfAuthorized {\n // masterCopy always needs to be first declared variable, to ensure that it is at the same location as in the Proxy contract.\n // It should also always be ensured that the address is stored alone (uses a full word)\n address masterCopy;\n\n /// @dev Allows to upgrade the contract. This can only be done via a Safe transaction.\n /// @param _masterCopy New contract address.\n function changeMasterCopy(address _masterCopy)\n public\n authorized\n {\n // Master copy address cannot be null.\n require(_masterCopy != 0);\n masterCopy = _masterCopy;\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/MasterCopy.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/MasterCopy.sol", "exportedSymbols": { "MasterCopy": [ - 580 + 652 ] }, - "id": 581, + "id": 653, "nodeType": "SourceUnit", "nodes": [ { - "id": 556, + "id": 628, "literals": [ "solidity", "0.4", - ".23" + ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:4" + "src": "0:23:5" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/SelfAuthorized.sol", "file": "./SelfAuthorized.sol", - "id": 557, + "id": 629, "nodeType": "ImportDirective", - "scope": 581, - "sourceUnit": 1360, - "src": "24:30:4", + "scope": 653, + "sourceUnit": 1620, + "src": "24:30:5", "symbolAliases": [], "unitAlias": "" }, @@ -59,42 +59,42 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 558, + "id": 630, "name": "SelfAuthorized", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1359, - "src": "226:14:4", + "referencedDeclaration": 1619, + "src": "226:14:5", "typeDescriptions": { - "typeIdentifier": "t_contract$_SelfAuthorized_$1359", + "typeIdentifier": "t_contract$_SelfAuthorized_$1619", "typeString": "contract SelfAuthorized" } }, - "id": 559, + "id": 631, "nodeType": "InheritanceSpecifier", - "src": "226:14:4" + "src": "226:14:5" } ], "contractDependencies": [ - 1359 + 1619 ], "contractKind": "contract", "documentation": "@title MasterCopy - Base for master copy contracts (should always be first super contract)\n @author Richard Meissner - ", "fullyImplemented": true, - "id": 580, + "id": 652, "linearizedBaseContracts": [ - 580, - 1359 + 652, + 1619 ], "name": "MasterCopy", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, - "id": 561, + "id": 633, "name": "masterCopy", "nodeType": "VariableDeclaration", - "scope": 580, - "src": "465:18:4", + "scope": 652, + "src": "465:18:5", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -102,10 +102,10 @@ "typeString": "address" }, "typeName": { - "id": 560, + "id": 632, "name": "address", "nodeType": "ElementaryTypeName", - "src": "465:7:4", + "src": "465:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -116,9 +116,9 @@ }, { "body": { - "id": 578, + "id": 650, "nodeType": "Block", - "src": "711:123:4", + "src": "711:123:5", "statements": [ { "expression": { @@ -130,19 +130,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 571, + "id": 643, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 569, + "id": 641, "name": "_masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 563, - "src": "776:11:4", + "referencedDeclaration": 635, + "src": "776:11:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -153,14 +153,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 570, + "id": 642, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "791:1:4", + "src": "791:1:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -168,7 +168,7 @@ }, "value": "0" }, - "src": "776:16:4", + "src": "776:16:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -182,21 +182,21 @@ "typeString": "bool" } ], - "id": 568, + "id": 640, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "768:7:4", + "referencedDeclaration": 2601, + "src": "768:7:5", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 572, + "id": 644, "isConstant": false, "isLValue": false, "isPure": false, @@ -204,32 +204,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "768:25:4", + "src": "768:25:5", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 573, + "id": 645, "nodeType": "ExpressionStatement", - "src": "768:25:4" + "src": "768:25:5" }, { "expression": { "argumentTypes": null, - "id": 576, + "id": 648, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 574, + "id": 646, "name": "masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 561, - "src": "803:10:4", + "referencedDeclaration": 633, + "src": "803:10:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -239,68 +239,68 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 575, + "id": 647, "name": "_masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 563, - "src": "816:11:4", + "referencedDeclaration": 635, + "src": "816:11:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "803:24:4", + "src": "803:24:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 577, + "id": 649, "nodeType": "ExpressionStatement", - "src": "803:24:4" + "src": "803:24:5" } ] }, "documentation": "@dev Allows to upgrade the contract. This can only be done via a Safe transaction.\n @param _masterCopy New contract address.", - "id": 579, + "id": 651, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 566, + "id": 638, "modifierName": { "argumentTypes": null, - "id": 565, + "id": 637, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1358, - "src": "696:10:4", + "referencedDeclaration": 1618, + "src": "696:10:5", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "696:10:4" + "src": "696:10:5" } ], "name": "changeMasterCopy", "nodeType": "FunctionDefinition", "parameters": { - "id": 564, + "id": 636, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 563, + "id": 635, "name": "_masterCopy", "nodeType": "VariableDeclaration", - "scope": 579, - "src": "652:19:4", + "scope": 651, + "src": "652:19:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -308,10 +308,10 @@ "typeString": "address" }, "typeName": { - "id": 562, + "id": 634, "name": "address", "nodeType": "ElementaryTypeName", - "src": "652:7:4", + "src": "652:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -321,56 +321,56 @@ "visibility": "internal" } ], - "src": "651:21:4" + "src": "651:21:5" }, "payable": false, "returnParameters": { - "id": 567, + "id": 639, "nodeType": "ParameterList", "parameters": [], - "src": "711:0:4" + "src": "711:0:5" }, - "scope": 580, - "src": "626:208:4", + "scope": 652, + "src": "626:208:5", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 581, - "src": "203:633:4" + "scope": 653, + "src": "203:633:5" } ], - "src": "0:837:4" + "src": "0:837:5" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/MasterCopy.sol", "exportedSymbols": { "MasterCopy": [ - 580 + 652 ] }, - "id": 581, + "id": 653, "nodeType": "SourceUnit", "nodes": [ { - "id": 556, + "id": 628, "literals": [ "solidity", "0.4", - ".23" + ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:4" + "src": "0:23:5" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/SelfAuthorized.sol", "file": "./SelfAuthorized.sol", - "id": 557, + "id": 629, "nodeType": "ImportDirective", - "scope": 581, - "sourceUnit": 1360, - "src": "24:30:4", + "scope": 653, + "sourceUnit": 1620, + "src": "24:30:5", "symbolAliases": [], "unitAlias": "" }, @@ -380,42 +380,42 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 558, + "id": 630, "name": "SelfAuthorized", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1359, - "src": "226:14:4", + "referencedDeclaration": 1619, + "src": "226:14:5", "typeDescriptions": { - "typeIdentifier": "t_contract$_SelfAuthorized_$1359", + "typeIdentifier": "t_contract$_SelfAuthorized_$1619", "typeString": "contract SelfAuthorized" } }, - "id": 559, + "id": 631, "nodeType": "InheritanceSpecifier", - "src": "226:14:4" + "src": "226:14:5" } ], "contractDependencies": [ - 1359 + 1619 ], "contractKind": "contract", "documentation": "@title MasterCopy - Base for master copy contracts (should always be first super contract)\n @author Richard Meissner - ", "fullyImplemented": true, - "id": 580, + "id": 652, "linearizedBaseContracts": [ - 580, - 1359 + 652, + 1619 ], "name": "MasterCopy", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, - "id": 561, + "id": 633, "name": "masterCopy", "nodeType": "VariableDeclaration", - "scope": 580, - "src": "465:18:4", + "scope": 652, + "src": "465:18:5", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -423,10 +423,10 @@ "typeString": "address" }, "typeName": { - "id": 560, + "id": 632, "name": "address", "nodeType": "ElementaryTypeName", - "src": "465:7:4", + "src": "465:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -437,9 +437,9 @@ }, { "body": { - "id": 578, + "id": 650, "nodeType": "Block", - "src": "711:123:4", + "src": "711:123:5", "statements": [ { "expression": { @@ -451,19 +451,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 571, + "id": 643, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 569, + "id": 641, "name": "_masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 563, - "src": "776:11:4", + "referencedDeclaration": 635, + "src": "776:11:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -474,14 +474,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 570, + "id": 642, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "791:1:4", + "src": "791:1:5", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -489,7 +489,7 @@ }, "value": "0" }, - "src": "776:16:4", + "src": "776:16:5", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -503,21 +503,21 @@ "typeString": "bool" } ], - "id": 568, + "id": 640, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "768:7:4", + "referencedDeclaration": 2601, + "src": "768:7:5", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 572, + "id": 644, "isConstant": false, "isLValue": false, "isPure": false, @@ -525,32 +525,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "768:25:4", + "src": "768:25:5", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 573, + "id": 645, "nodeType": "ExpressionStatement", - "src": "768:25:4" + "src": "768:25:5" }, { "expression": { "argumentTypes": null, - "id": 576, + "id": 648, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 574, + "id": 646, "name": "masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 561, - "src": "803:10:4", + "referencedDeclaration": 633, + "src": "803:10:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -560,68 +560,68 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 575, + "id": 647, "name": "_masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 563, - "src": "816:11:4", + "referencedDeclaration": 635, + "src": "816:11:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "803:24:4", + "src": "803:24:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 577, + "id": 649, "nodeType": "ExpressionStatement", - "src": "803:24:4" + "src": "803:24:5" } ] }, "documentation": "@dev Allows to upgrade the contract. This can only be done via a Safe transaction.\n @param _masterCopy New contract address.", - "id": 579, + "id": 651, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 566, + "id": 638, "modifierName": { "argumentTypes": null, - "id": 565, + "id": 637, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1358, - "src": "696:10:4", + "referencedDeclaration": 1618, + "src": "696:10:5", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "696:10:4" + "src": "696:10:5" } ], "name": "changeMasterCopy", "nodeType": "FunctionDefinition", "parameters": { - "id": 564, + "id": 636, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 563, + "id": 635, "name": "_masterCopy", "nodeType": "VariableDeclaration", - "scope": 579, - "src": "652:19:4", + "scope": 651, + "src": "652:19:5", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -629,10 +629,10 @@ "typeString": "address" }, "typeName": { - "id": 562, + "id": 634, "name": "address", "nodeType": "ElementaryTypeName", - "src": "652:7:4", + "src": "652:7:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -642,33 +642,33 @@ "visibility": "internal" } ], - "src": "651:21:4" + "src": "651:21:5" }, "payable": false, "returnParameters": { - "id": 567, + "id": 639, "nodeType": "ParameterList", "parameters": [], - "src": "711:0:4" + "src": "711:0:5" }, - "scope": 580, - "src": "626:208:4", + "scope": 652, + "src": "626:208:5", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 581, - "src": "203:633:4" + "scope": 653, + "src": "203:633:5" } ], - "src": "0:837:4" + "src": "0:837:5" }, "compiler": { "name": "solc", - "version": "0.4.23+commit.124ca40d.Emscripten.clang" + "version": "0.4.24+commit.e67f0147.Emscripten.clang" }, "networks": {}, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-16T10:51:14.746Z" + "updatedAt": "2018-05-27T11:12:45.579Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/Migrations.json b/safe-contracts/build/contracts/Migrations.json index 2f25e4e0a9..a7baf88bdf 100644 --- a/safe-contracts/build/contracts/Migrations.json +++ b/safe-contracts/build/contracts/Migrations.json @@ -64,24 +64,24 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506102f8806100606000396000f300608060405260043610610062576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630900f01014610067578063445df0ac146100aa5780638da5cb5b146100d5578063fdacd5761461012c575b600080fd5b34801561007357600080fd5b506100a8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610159565b005b3480156100b657600080fd5b506100bf610241565b6040518082815260200191505060405180910390f35b3480156100e157600080fd5b506100ea610247565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561013857600080fd5b506101576004803603810190808035906020019092919050505061026c565b005b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561023d578190508073ffffffffffffffffffffffffffffffffffffffff1663fdacd5766001546040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b15801561022457600080fd5b505af1158015610238573d6000803e3d6000fd5b505050505b5050565b60015481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156102c957806001819055505b505600a165627a7a723058206ae04dab7842a035dafed67c3a7c6e4dba46f3f40b8fa0fd9a934fb2efadc85b0029", - "deployedBytecode": "0x608060405260043610610062576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630900f01014610067578063445df0ac146100aa5780638da5cb5b146100d5578063fdacd5761461012c575b600080fd5b34801561007357600080fd5b506100a8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610159565b005b3480156100b657600080fd5b506100bf610241565b6040518082815260200191505060405180910390f35b3480156100e157600080fd5b506100ea610247565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561013857600080fd5b506101576004803603810190808035906020019092919050505061026c565b005b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561023d578190508073ffffffffffffffffffffffffffffffffffffffff1663fdacd5766001546040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b15801561022457600080fd5b505af1158015610238573d6000803e3d6000fd5b505050505b5050565b60015481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156102c957806001819055505b505600a165627a7a723058206ae04dab7842a035dafed67c3a7c6e4dba46f3f40b8fa0fd9a934fb2efadc85b0029", - "sourceMap": "25:580:7:-;;;191:76;8:9:-1;5:2;;;30:1;27;20:12;5:2;191:76:7;250:10;242:5;;:18;;;;;;;;;;;;;;;;;;25:580;;;;;;", - "deployedSourceMap": "25:580:7:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;408:195;;8:9:-1;5:2;;;30:1;27;20:12;5:2;408:195:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;77:36;;8:9:-1;5:2;;;30:1;27;20:12;5:2;77:36:7;;;;;;;;;;;;;;;;;;;;;;;51:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;51:20:7;;;;;;;;;;;;;;;;;;;;;;;;;;;273:129;;8:9:-1;5:2;;;30:1;27;20:12;5:2;273:129:7;;;;;;;;;;;;;;;;;;;;;;;;;;408:195;494:19;170:5;;;;;;;;;;;156:19;;:10;:19;;;152:26;;;527:11;494:45;;549:8;:21;;;571:24;;549:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;549:47:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;549:47:7;;;;152:26;408:195;;:::o;77:36::-;;;;:::o;51:20::-;;;;;;;;;;;;;:::o;273:129::-;170:5;;;;;;;;;;;156:19;;:10;:19;;;152:26;;;386:9;359:24;:36;;;;152:26;273:129;:::o", - "source": "pragma solidity ^0.4.4;\n\ncontract Migrations {\n address public owner;\n uint public last_completed_migration;\n\n modifier restricted() {\n if (msg.sender == owner) _;\n }\n\n function Migrations()\n public\n {\n owner = msg.sender;\n }\n\n function setCompleted(uint completed)\n public\n restricted\n {\n last_completed_migration = completed;\n }\n\n function upgrade(address new_address)\n public\n restricted\n {\n Migrations upgraded = Migrations(new_address);\n upgraded.setCompleted(last_completed_migration);\n }\n}\n", + "bytecode": "0x608060405234801561001057600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506102f8806100606000396000f300608060405260043610610062576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630900f01014610067578063445df0ac146100aa5780638da5cb5b146100d5578063fdacd5761461012c575b600080fd5b34801561007357600080fd5b506100a8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610159565b005b3480156100b657600080fd5b506100bf610241565b6040518082815260200191505060405180910390f35b3480156100e157600080fd5b506100ea610247565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561013857600080fd5b506101576004803603810190808035906020019092919050505061026c565b005b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561023d578190508073ffffffffffffffffffffffffffffffffffffffff1663fdacd5766001546040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b15801561022457600080fd5b505af1158015610238573d6000803e3d6000fd5b505050505b5050565b60015481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156102c957806001819055505b505600a165627a7a72305820395a1faf61b0f17e3924c1d3e3b1152739b523adb57dd5b79bb0bea6897a5ff70029", + "deployedBytecode": "0x608060405260043610610062576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680630900f01014610067578063445df0ac146100aa5780638da5cb5b146100d5578063fdacd5761461012c575b600080fd5b34801561007357600080fd5b506100a8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610159565b005b3480156100b657600080fd5b506100bf610241565b6040518082815260200191505060405180910390f35b3480156100e157600080fd5b506100ea610247565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561013857600080fd5b506101576004803603810190808035906020019092919050505061026c565b005b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141561023d578190508073ffffffffffffffffffffffffffffffffffffffff1663fdacd5766001546040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b15801561022457600080fd5b505af1158015610238573d6000803e3d6000fd5b505050505b5050565b60015481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614156102c957806001819055505b505600a165627a7a72305820395a1faf61b0f17e3924c1d3e3b1152739b523adb57dd5b79bb0bea6897a5ff70029", + "sourceMap": "25:572:6:-;;;191:68;8:9:-1;5:2;;;30:1;27;20:12;5:2;191:68:6;242:10;234:5;;:18;;;;;;;;;;;;;;;;;;25:572;;;;;;", + "deployedSourceMap": "25:572:6:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;400:195;;8:9:-1;5:2;;;30:1;27;20:12;5:2;400:195:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;77:36;;8:9:-1;5:2;;;30:1;27;20:12;5:2;77:36:6;;;;;;;;;;;;;;;;;;;;;;;51:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;51:20:6;;;;;;;;;;;;;;;;;;;;;;;;;;;265:129;;8:9:-1;5:2;;;30:1;27;20:12;5:2;265:129:6;;;;;;;;;;;;;;;;;;;;;;;;;;400:195;486:19;170:5;;;;;;;;;;;156:19;;:10;:19;;;152:26;;;519:11;486:45;;541:8;:21;;;563:24;;541:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;541:47:6;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;541:47:6;;;;152:26;400:195;;:::o;77:36::-;;;;:::o;51:20::-;;;;;;;;;;;;;:::o;265:129::-;170:5;;;;;;;;;;;156:19;;:10;:19;;;152:26;;;378:9;351:24;:36;;;;152:26;265:129;:::o", + "source": "pragma solidity ^0.4.4;\n\ncontract Migrations {\n address public owner;\n uint public last_completed_migration;\n\n modifier restricted() {\n if (msg.sender == owner) _;\n }\n\n constructor()\n public\n {\n owner = msg.sender;\n }\n\n function setCompleted(uint completed)\n public\n restricted\n {\n last_completed_migration = completed;\n }\n\n function upgrade(address new_address)\n public\n restricted\n {\n Migrations upgraded = Migrations(new_address);\n upgraded.setCompleted(last_completed_migration);\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Migrations.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Migrations.sol", "exportedSymbols": { "Migrations": [ - 836 + 709 ] }, - "id": 837, + "id": 710, "nodeType": "SourceUnit", "nodes": [ { - "id": 781, + "id": 654, "literals": [ "solidity", "^", @@ -89,7 +89,7 @@ ".4" ], "nodeType": "PragmaDirective", - "src": "0:23:7" + "src": "0:23:6" }, { "baseContracts": [], @@ -97,20 +97,20 @@ "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 836, + "id": 709, "linearizedBaseContracts": [ - 836 + 709 ], "name": "Migrations", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, - "id": 783, + "id": 656, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 836, - "src": "51:20:7", + "scope": 709, + "src": "51:20:6", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -118,10 +118,10 @@ "typeString": "address" }, "typeName": { - "id": 782, + "id": 655, "name": "address", "nodeType": "ElementaryTypeName", - "src": "51:7:7", + "src": "51:7:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -132,11 +132,11 @@ }, { "constant": false, - "id": 785, + "id": 658, "name": "last_completed_migration", "nodeType": "VariableDeclaration", - "scope": 836, - "src": "77:36:7", + "scope": 709, + "src": "77:36:6", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -144,10 +144,10 @@ "typeString": "uint256" }, "typeName": { - "id": 784, + "id": 657, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "77:4:7", + "src": "77:4:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -158,9 +158,9 @@ }, { "body": { - "id": 793, + "id": 666, "nodeType": "Block", - "src": "142:43:7", + "src": "142:43:6", "statements": [ { "condition": { @@ -169,7 +169,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 790, + "id": 663, "isConstant": false, "isLValue": false, "isPure": false, @@ -178,18 +178,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 787, + "id": 660, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2465, - "src": "156:3:7", + "referencedDeclaration": 2598, + "src": "156:3:6", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 788, + "id": 661, "isConstant": false, "isLValue": false, "isPure": false, @@ -197,7 +197,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "156:10:7", + "src": "156:10:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -207,70 +207,70 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 789, + "id": 662, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 783, - "src": "170:5:7", + "referencedDeclaration": 656, + "src": "170:5:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "156:19:7", + "src": "156:19:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 792, + "id": 665, "nodeType": "IfStatement", - "src": "152:26:7", + "src": "152:26:6", "trueBody": { - "id": 791, + "id": 664, "nodeType": "PlaceholderStatement", - "src": "177:1:7" + "src": "177:1:6" } } ] }, "documentation": null, - "id": 794, + "id": 667, "name": "restricted", "nodeType": "ModifierDefinition", "parameters": { - "id": 786, + "id": 659, "nodeType": "ParameterList", "parameters": [], - "src": "139:2:7" + "src": "139:2:6" }, - "src": "120:65:7", + "src": "120:65:6", "visibility": "internal" }, { "body": { - "id": 802, + "id": 675, "nodeType": "Block", - "src": "232:35:7", + "src": "224:35:6", "statements": [ { "expression": { "argumentTypes": null, - "id": 800, + "id": 673, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 797, + "id": 670, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 783, - "src": "242:5:7", + "referencedDeclaration": 656, + "src": "234:5:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -282,18 +282,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 798, + "id": 671, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2465, - "src": "250:3:7", + "referencedDeclaration": 2598, + "src": "242:3:6", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 799, + "id": 672, "isConstant": false, "isLValue": false, "isPure": false, @@ -301,73 +301,73 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "250:10:7", + "src": "242:10:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "242:18:7", + "src": "234:18:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 801, + "id": 674, "nodeType": "ExpressionStatement", - "src": "242:18:7" + "src": "234:18:6" } ] }, "documentation": null, - "id": 803, + "id": 676, "implemented": true, "isConstructor": true, "isDeclaredConst": false, "modifiers": [], - "name": "Migrations", + "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 795, + "id": 668, "nodeType": "ParameterList", "parameters": [], - "src": "210:2:7" + "src": "202:2:6" }, "payable": false, "returnParameters": { - "id": 796, + "id": 669, "nodeType": "ParameterList", "parameters": [], - "src": "232:0:7" + "src": "224:0:6" }, - "scope": 836, - "src": "191:76:7", + "scope": 709, + "src": "191:68:6", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 814, + "id": 687, "nodeType": "Block", - "src": "349:53:7", + "src": "341:53:6", "statements": [ { "expression": { "argumentTypes": null, - "id": 812, + "id": 685, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 810, + "id": 683, "name": "last_completed_migration", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 785, - "src": "359:24:7", + "referencedDeclaration": 658, + "src": "351:24:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -377,68 +377,68 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 811, + "id": 684, "name": "completed", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 805, - "src": "386:9:7", + "referencedDeclaration": 678, + "src": "378:9:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "359:36:7", + "src": "351:36:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 813, + "id": 686, "nodeType": "ExpressionStatement", - "src": "359:36:7" + "src": "351:36:6" } ] }, "documentation": null, - "id": 815, + "id": 688, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 808, + "id": 681, "modifierName": { "argumentTypes": null, - "id": 807, + "id": 680, "name": "restricted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 794, - "src": "334:10:7", + "referencedDeclaration": 667, + "src": "326:10:6", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "334:10:7" + "src": "326:10:6" } ], "name": "setCompleted", "nodeType": "FunctionDefinition", "parameters": { - "id": 806, + "id": 679, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 805, + "id": 678, "name": "completed", "nodeType": "VariableDeclaration", - "scope": 815, - "src": "295:14:7", + "scope": 688, + "src": "287:14:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -446,10 +446,10 @@ "typeString": "uint256" }, "typeName": { - "id": 804, + "id": 677, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "295:4:7", + "src": "287:4:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -459,54 +459,54 @@ "visibility": "internal" } ], - "src": "294:16:7" + "src": "286:16:6" }, "payable": false, "returnParameters": { - "id": 809, + "id": 682, "nodeType": "ParameterList", "parameters": [], - "src": "349:0:7" + "src": "341:0:6" }, - "scope": 836, - "src": "273:129:7", + "scope": 709, + "src": "265:129:6", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 834, + "id": 707, "nodeType": "Block", - "src": "484:119:7", + "src": "476:119:6", "statements": [ { "assignments": [ - 823 + 696 ], "declarations": [ { "constant": false, - "id": 823, + "id": 696, "name": "upgraded", "nodeType": "VariableDeclaration", - "scope": 835, - "src": "494:19:7", + "scope": 708, + "src": "486:19:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Migrations_$836", + "typeIdentifier": "t_contract$_Migrations_$709", "typeString": "contract Migrations" }, "typeName": { "contractScope": null, - "id": 822, + "id": 695, "name": "Migrations", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 836, - "src": "494:10:7", + "referencedDeclaration": 709, + "src": "486:10:6", "typeDescriptions": { - "typeIdentifier": "t_contract$_Migrations_$836", + "typeIdentifier": "t_contract$_Migrations_$709", "typeString": "contract Migrations" } }, @@ -514,18 +514,18 @@ "visibility": "internal" } ], - "id": 827, + "id": 700, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 825, + "id": 698, "name": "new_address", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 817, - "src": "527:11:7", + "referencedDeclaration": 690, + "src": "519:11:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -539,18 +539,18 @@ "typeString": "address" } ], - "id": 824, + "id": 697, "name": "Migrations", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 836, - "src": "516:10:7", + "referencedDeclaration": 709, + "src": "508:10:6", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Migrations_$836_$", + "typeIdentifier": "t_type$_t_contract$_Migrations_$709_$", "typeString": "type(contract Migrations)" } }, - "id": 826, + "id": 699, "isConstant": false, "isLValue": false, "isPure": false, @@ -558,14 +558,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "516:23:7", + "src": "508:23:6", "typeDescriptions": { - "typeIdentifier": "t_contract$_Migrations_$836", + "typeIdentifier": "t_contract$_Migrations_$709", "typeString": "contract Migrations" } }, "nodeType": "VariableDeclarationStatement", - "src": "494:45:7" + "src": "486:45:6" }, { "expression": { @@ -573,12 +573,12 @@ "arguments": [ { "argumentTypes": null, - "id": 831, + "id": 704, "name": "last_completed_migration", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 785, - "src": "571:24:7", + "referencedDeclaration": 658, + "src": "563:24:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -594,32 +594,32 @@ ], "expression": { "argumentTypes": null, - "id": 828, + "id": 701, "name": "upgraded", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 823, - "src": "549:8:7", + "referencedDeclaration": 696, + "src": "541:8:6", "typeDescriptions": { - "typeIdentifier": "t_contract$_Migrations_$836", + "typeIdentifier": "t_contract$_Migrations_$709", "typeString": "contract Migrations" } }, - "id": 830, + "id": 703, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "setCompleted", "nodeType": "MemberAccess", - "referencedDeclaration": 815, - "src": "549:21:7", + "referencedDeclaration": 688, + "src": "541:21:6", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256) external" } }, - "id": 832, + "id": 705, "isConstant": false, "isLValue": false, "isPure": false, @@ -627,57 +627,57 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "549:47:7", + "src": "541:47:6", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 833, + "id": 706, "nodeType": "ExpressionStatement", - "src": "549:47:7" + "src": "541:47:6" } ] }, "documentation": null, - "id": 835, + "id": 708, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 820, + "id": 693, "modifierName": { "argumentTypes": null, - "id": 819, + "id": 692, "name": "restricted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 794, - "src": "469:10:7", + "referencedDeclaration": 667, + "src": "461:10:6", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "469:10:7" + "src": "461:10:6" } ], "name": "upgrade", "nodeType": "FunctionDefinition", "parameters": { - "id": 818, + "id": 691, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 817, + "id": 690, "name": "new_address", "nodeType": "VariableDeclaration", - "scope": 835, - "src": "425:19:7", + "scope": 708, + "src": "417:19:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -685,10 +685,10 @@ "typeString": "address" }, "typeName": { - "id": 816, + "id": 689, "name": "address", "nodeType": "ElementaryTypeName", - "src": "425:7:7", + "src": "417:7:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -698,40 +698,40 @@ "visibility": "internal" } ], - "src": "424:21:7" + "src": "416:21:6" }, "payable": false, "returnParameters": { - "id": 821, + "id": 694, "nodeType": "ParameterList", "parameters": [], - "src": "484:0:7" + "src": "476:0:6" }, - "scope": 836, - "src": "408:195:7", + "scope": 709, + "src": "400:195:6", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 837, - "src": "25:580:7" + "scope": 710, + "src": "25:572:6" } ], - "src": "0:606:7" + "src": "0:598:6" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Migrations.sol", "exportedSymbols": { "Migrations": [ - 836 + 709 ] }, - "id": 837, + "id": 710, "nodeType": "SourceUnit", "nodes": [ { - "id": 781, + "id": 654, "literals": [ "solidity", "^", @@ -739,7 +739,7 @@ ".4" ], "nodeType": "PragmaDirective", - "src": "0:23:7" + "src": "0:23:6" }, { "baseContracts": [], @@ -747,20 +747,20 @@ "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 836, + "id": 709, "linearizedBaseContracts": [ - 836 + 709 ], "name": "Migrations", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, - "id": 783, + "id": 656, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 836, - "src": "51:20:7", + "scope": 709, + "src": "51:20:6", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -768,10 +768,10 @@ "typeString": "address" }, "typeName": { - "id": 782, + "id": 655, "name": "address", "nodeType": "ElementaryTypeName", - "src": "51:7:7", + "src": "51:7:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -782,11 +782,11 @@ }, { "constant": false, - "id": 785, + "id": 658, "name": "last_completed_migration", "nodeType": "VariableDeclaration", - "scope": 836, - "src": "77:36:7", + "scope": 709, + "src": "77:36:6", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -794,10 +794,10 @@ "typeString": "uint256" }, "typeName": { - "id": 784, + "id": 657, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "77:4:7", + "src": "77:4:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -808,9 +808,9 @@ }, { "body": { - "id": 793, + "id": 666, "nodeType": "Block", - "src": "142:43:7", + "src": "142:43:6", "statements": [ { "condition": { @@ -819,7 +819,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 790, + "id": 663, "isConstant": false, "isLValue": false, "isPure": false, @@ -828,18 +828,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 787, + "id": 660, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2465, - "src": "156:3:7", + "referencedDeclaration": 2598, + "src": "156:3:6", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 788, + "id": 661, "isConstant": false, "isLValue": false, "isPure": false, @@ -847,7 +847,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "156:10:7", + "src": "156:10:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -857,70 +857,70 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 789, + "id": 662, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 783, - "src": "170:5:7", + "referencedDeclaration": 656, + "src": "170:5:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "156:19:7", + "src": "156:19:6", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 792, + "id": 665, "nodeType": "IfStatement", - "src": "152:26:7", + "src": "152:26:6", "trueBody": { - "id": 791, + "id": 664, "nodeType": "PlaceholderStatement", - "src": "177:1:7" + "src": "177:1:6" } } ] }, "documentation": null, - "id": 794, + "id": 667, "name": "restricted", "nodeType": "ModifierDefinition", "parameters": { - "id": 786, + "id": 659, "nodeType": "ParameterList", "parameters": [], - "src": "139:2:7" + "src": "139:2:6" }, - "src": "120:65:7", + "src": "120:65:6", "visibility": "internal" }, { "body": { - "id": 802, + "id": 675, "nodeType": "Block", - "src": "232:35:7", + "src": "224:35:6", "statements": [ { "expression": { "argumentTypes": null, - "id": 800, + "id": 673, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 797, + "id": 670, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 783, - "src": "242:5:7", + "referencedDeclaration": 656, + "src": "234:5:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -932,18 +932,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 798, + "id": 671, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2465, - "src": "250:3:7", + "referencedDeclaration": 2598, + "src": "242:3:6", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 799, + "id": 672, "isConstant": false, "isLValue": false, "isPure": false, @@ -951,73 +951,73 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "250:10:7", + "src": "242:10:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "242:18:7", + "src": "234:18:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 801, + "id": 674, "nodeType": "ExpressionStatement", - "src": "242:18:7" + "src": "234:18:6" } ] }, "documentation": null, - "id": 803, + "id": 676, "implemented": true, "isConstructor": true, "isDeclaredConst": false, "modifiers": [], - "name": "Migrations", + "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 795, + "id": 668, "nodeType": "ParameterList", "parameters": [], - "src": "210:2:7" + "src": "202:2:6" }, "payable": false, "returnParameters": { - "id": 796, + "id": 669, "nodeType": "ParameterList", "parameters": [], - "src": "232:0:7" + "src": "224:0:6" }, - "scope": 836, - "src": "191:76:7", + "scope": 709, + "src": "191:68:6", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 814, + "id": 687, "nodeType": "Block", - "src": "349:53:7", + "src": "341:53:6", "statements": [ { "expression": { "argumentTypes": null, - "id": 812, + "id": 685, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 810, + "id": 683, "name": "last_completed_migration", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 785, - "src": "359:24:7", + "referencedDeclaration": 658, + "src": "351:24:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1027,68 +1027,68 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 811, + "id": 684, "name": "completed", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 805, - "src": "386:9:7", + "referencedDeclaration": 678, + "src": "378:9:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "359:36:7", + "src": "351:36:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 813, + "id": 686, "nodeType": "ExpressionStatement", - "src": "359:36:7" + "src": "351:36:6" } ] }, "documentation": null, - "id": 815, + "id": 688, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 808, + "id": 681, "modifierName": { "argumentTypes": null, - "id": 807, + "id": 680, "name": "restricted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 794, - "src": "334:10:7", + "referencedDeclaration": 667, + "src": "326:10:6", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "334:10:7" + "src": "326:10:6" } ], "name": "setCompleted", "nodeType": "FunctionDefinition", "parameters": { - "id": 806, + "id": 679, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 805, + "id": 678, "name": "completed", "nodeType": "VariableDeclaration", - "scope": 815, - "src": "295:14:7", + "scope": 688, + "src": "287:14:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1096,10 +1096,10 @@ "typeString": "uint256" }, "typeName": { - "id": 804, + "id": 677, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "295:4:7", + "src": "287:4:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1109,54 +1109,54 @@ "visibility": "internal" } ], - "src": "294:16:7" + "src": "286:16:6" }, "payable": false, "returnParameters": { - "id": 809, + "id": 682, "nodeType": "ParameterList", "parameters": [], - "src": "349:0:7" + "src": "341:0:6" }, - "scope": 836, - "src": "273:129:7", + "scope": 709, + "src": "265:129:6", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 834, + "id": 707, "nodeType": "Block", - "src": "484:119:7", + "src": "476:119:6", "statements": [ { "assignments": [ - 823 + 696 ], "declarations": [ { "constant": false, - "id": 823, + "id": 696, "name": "upgraded", "nodeType": "VariableDeclaration", - "scope": 835, - "src": "494:19:7", + "scope": 708, + "src": "486:19:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Migrations_$836", + "typeIdentifier": "t_contract$_Migrations_$709", "typeString": "contract Migrations" }, "typeName": { "contractScope": null, - "id": 822, + "id": 695, "name": "Migrations", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 836, - "src": "494:10:7", + "referencedDeclaration": 709, + "src": "486:10:6", "typeDescriptions": { - "typeIdentifier": "t_contract$_Migrations_$836", + "typeIdentifier": "t_contract$_Migrations_$709", "typeString": "contract Migrations" } }, @@ -1164,18 +1164,18 @@ "visibility": "internal" } ], - "id": 827, + "id": 700, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 825, + "id": 698, "name": "new_address", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 817, - "src": "527:11:7", + "referencedDeclaration": 690, + "src": "519:11:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1189,18 +1189,18 @@ "typeString": "address" } ], - "id": 824, + "id": 697, "name": "Migrations", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 836, - "src": "516:10:7", + "referencedDeclaration": 709, + "src": "508:10:6", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Migrations_$836_$", + "typeIdentifier": "t_type$_t_contract$_Migrations_$709_$", "typeString": "type(contract Migrations)" } }, - "id": 826, + "id": 699, "isConstant": false, "isLValue": false, "isPure": false, @@ -1208,14 +1208,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "516:23:7", + "src": "508:23:6", "typeDescriptions": { - "typeIdentifier": "t_contract$_Migrations_$836", + "typeIdentifier": "t_contract$_Migrations_$709", "typeString": "contract Migrations" } }, "nodeType": "VariableDeclarationStatement", - "src": "494:45:7" + "src": "486:45:6" }, { "expression": { @@ -1223,12 +1223,12 @@ "arguments": [ { "argumentTypes": null, - "id": 831, + "id": 704, "name": "last_completed_migration", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 785, - "src": "571:24:7", + "referencedDeclaration": 658, + "src": "563:24:6", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1244,32 +1244,32 @@ ], "expression": { "argumentTypes": null, - "id": 828, + "id": 701, "name": "upgraded", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 823, - "src": "549:8:7", + "referencedDeclaration": 696, + "src": "541:8:6", "typeDescriptions": { - "typeIdentifier": "t_contract$_Migrations_$836", + "typeIdentifier": "t_contract$_Migrations_$709", "typeString": "contract Migrations" } }, - "id": 830, + "id": 703, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "setCompleted", "nodeType": "MemberAccess", - "referencedDeclaration": 815, - "src": "549:21:7", + "referencedDeclaration": 688, + "src": "541:21:6", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256) external" } }, - "id": 832, + "id": 705, "isConstant": false, "isLValue": false, "isPure": false, @@ -1277,57 +1277,57 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "549:47:7", + "src": "541:47:6", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 833, + "id": 706, "nodeType": "ExpressionStatement", - "src": "549:47:7" + "src": "541:47:6" } ] }, "documentation": null, - "id": 835, + "id": 708, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 820, + "id": 693, "modifierName": { "argumentTypes": null, - "id": 819, + "id": 692, "name": "restricted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 794, - "src": "469:10:7", + "referencedDeclaration": 667, + "src": "461:10:6", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "469:10:7" + "src": "461:10:6" } ], "name": "upgrade", "nodeType": "FunctionDefinition", "parameters": { - "id": 818, + "id": 691, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 817, + "id": 690, "name": "new_address", "nodeType": "VariableDeclaration", - "scope": 835, - "src": "425:19:7", + "scope": 708, + "src": "417:19:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1335,10 +1335,10 @@ "typeString": "address" }, "typeName": { - "id": 816, + "id": 689, "name": "address", "nodeType": "ElementaryTypeName", - "src": "425:7:7", + "src": "417:7:6", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1348,76 +1348,52 @@ "visibility": "internal" } ], - "src": "424:21:7" + "src": "416:21:6" }, "payable": false, "returnParameters": { - "id": 821, + "id": 694, "nodeType": "ParameterList", "parameters": [], - "src": "484:0:7" + "src": "476:0:6" }, - "scope": 836, - "src": "408:195:7", + "scope": 709, + "src": "400:195:6", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 837, - "src": "25:580:7" + "scope": 710, + "src": "25:572:6" } ], - "src": "0:606:7" + "src": "0:598:6" }, "compiler": { "name": "solc", - "version": "0.4.23+commit.124ca40d.Emscripten.clang" + "version": "0.4.24+commit.e67f0147.Emscripten.clang" }, "networks": { "4": { "events": {}, "links": {}, - "address": "0x682586e353e6befc8c7c09ba28165afca941ed5f", - "transactionHash": "0xfa828695bce76ea64bfa11fac92c01894ca684341a49e1d583c43a0d13bb0ec1" + "address": "0x310ed4914d3d280593bdd91cd25f3010cef95c8f", + "transactionHash": "0x77ed51dc2aaa3502d11556785f91f9a1ec7102c4ab4d9fd24b163a12d46664ed" }, - "42": { - "events": {}, - "links": {}, - "address": "0x304f68cf0ca47b08d6bbf23c6f82d92bacf5378e", - "transactionHash": "0xa1edbc493e7f59db46fe904a775189a9fcdca9efabeea55db94f09fd64d37461" - }, - "1525950336085": { - "events": {}, - "links": {}, - "address": "0xb97a46b50b9e38d540e9701d3d4afe71a65c09df", - "transactionHash": "0x137111f15934455430bea53bd8a6721561285af6a431f174f090257877635ab6" - }, - "1526283540628": { - "events": {}, - "links": {}, - "address": "0x3b293b12ee278dba3d4350cd5b4434c228bad69b", - "transactionHash": "0x137111f15934455430bea53bd8a6721561285af6a431f174f090257877635ab6" - }, - "1526478212260": { - "events": {}, - "links": {}, - "address": "0x6ff07ab4d4ecb8339dee6bd028e379c2a1992103", - "transactionHash": "0x137111f15934455430bea53bd8a6721561285af6a431f174f090257877635ab6" - }, - "1526973574996": { + "1527316019334": { "events": {}, "links": {}, - "address": "0xf06f42d5ffd359b4a14e6fecada46cafdb3276f2", - "transactionHash": "0x137111f15934455430bea53bd8a6721561285af6a431f174f090257877635ab6" + "address": "0x9511a1770d3700a42a922080cf7f2f20db4d9c05", + "transactionHash": "0x3215566e4282c1fe81a9e093b0fa684ce647015b0e43446042c71426709d8170" }, - "1527316019334": { + "1527420696956": { "events": {}, "links": {}, - "address": "0x2a4404906523f58d56823eacf9f27d62348baff5", - "transactionHash": "0x137111f15934455430bea53bd8a6721561285af6a431f174f090257877635ab6" + "address": "0x03b6c37cb58fdaec2b5f7e9f9ed58a7525ef79d7", + "transactionHash": "0xb6a19a7a679a1474c09c651e4151421f210afa3f47effed019d4c0206144ee5f" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-26T06:28:28.365Z" + "updatedAt": "2018-05-27T11:31:46.343Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/Module.json b/safe-contracts/build/contracts/Module.json index d5d93b4e46..0f0669675d 100644 --- a/safe-contracts/build/contracts/Module.json +++ b/safe-contracts/build/contracts/Module.json @@ -30,51 +30,51 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50610202806100206000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063481c6a75146100515780637de7edef146100a8575b600080fd5b34801561005d57600080fd5b506100666100eb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156100b457600080fd5b506100e9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610111565b005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561016d57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561019357600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505600a165627a7a72305820022bc97a157f8f1660f06255d7c4b4cf1258759b394ed54181754cfffe1f70ee0029", - "deployedBytecode": "0x60806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063481c6a75146100515780637de7edef146100a8575b600080fd5b34801561005d57600080fd5b506100666100eb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156100b457600080fd5b506100e9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610111565b005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561016d57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561019357600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505600a165627a7a72305820022bc97a157f8f1660f06255d7c4b4cf1258759b394ed54181754cfffe1f70ee0029", - "sourceMap": "225:437:5:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;225:437:5;;;;;;;", - "deployedSourceMap": "225:437:5:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;262:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;262:28:5;;;;;;;;;;;;;;;;;;;;;;;;;;;626:208:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:208:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;262:28:5;;;;;;;;;;;;;:::o;626:208:4:-;359:7:5;;;;;;;;;;;337:30;;:10;:30;;;329:39;;;;;;;;791:1:4;776:11;:16;;;;768:25;;;;;;;;816:11;803:10;;:24;;;;;;;;;;;;;;;;;;626:208;:::o", - "source": "pragma solidity 0.4.23;\nimport \"./MasterCopy.sol\";\nimport \"./ModuleManager.sol\";\n\n\n/// @title Module - Base class for modules.\n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract Module is MasterCopy {\n\n ModuleManager public manager;\n\n modifier authorized() {\n require(msg.sender == address(manager));\n _;\n }\n\n function setManager()\n internal\n {\n // manager can only be 0 at initalization of contract.\n // Check ensures that setup function can only be called once.\n require(address(manager) == 0);\n manager = ModuleManager(msg.sender);\n }\n}\n", + "bytecode": "0x608060405234801561001057600080fd5b50610202806100206000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063481c6a75146100515780637de7edef146100a8575b600080fd5b34801561005d57600080fd5b506100666100eb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156100b457600080fd5b506100e9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610111565b005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561016d57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561019357600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505600a165627a7a723058201e28a6acfe6922717722c910e51de720875c6e665112c8866ae58ba4fc613f1b0029", + "deployedBytecode": "0x60806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063481c6a75146100515780637de7edef146100a8575b600080fd5b34801561005d57600080fd5b506100666100eb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156100b457600080fd5b506100e9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610111565b005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561016d57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561019357600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505600a165627a7a723058201e28a6acfe6922717722c910e51de720875c6e665112c8866ae58ba4fc613f1b0029", + "sourceMap": "225:437:7:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;225:437:7;;;;;;;", + "deployedSourceMap": "225:437:7:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;262:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;262:28:7;;;;;;;;;;;;;;;;;;;;;;;;;;;626:208:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:208:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;262:28:7;;;;;;;;;;;;;:::o;626:208:5:-;359:7:7;;;;;;;;;;;337:30;;:10;:30;;;329:39;;;;;;;;791:1:5;776:11;:16;;;;768:25;;;;;;;;816:11;803:10;;:24;;;;;;;;;;;;;;;;;;626:208;:::o", + "source": "pragma solidity 0.4.24;\nimport \"./MasterCopy.sol\";\nimport \"./ModuleManager.sol\";\n\n\n/// @title Module - Base class for modules.\n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract Module is MasterCopy {\n\n ModuleManager public manager;\n\n modifier authorized() {\n require(msg.sender == address(manager));\n _;\n }\n\n function setManager()\n internal\n {\n // manager can only be 0 at initalization of contract.\n // Check ensures that setup function can only be called once.\n require(address(manager) == 0);\n manager = ModuleManager(msg.sender);\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "exportedSymbols": { "Module": [ - 621 + 750 ] }, - "id": 622, + "id": 751, "nodeType": "SourceUnit", "nodes": [ { - "id": 582, + "id": 711, "literals": [ "solidity", "0.4", - ".23" + ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:5" + "src": "0:23:7" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/MasterCopy.sol", "file": "./MasterCopy.sol", - "id": 583, + "id": 712, "nodeType": "ImportDirective", - "scope": 622, - "sourceUnit": 581, - "src": "24:26:5", + "scope": 751, + "sourceUnit": 653, + "src": "24:26:7", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ModuleManager.sol", "file": "./ModuleManager.sol", - "id": 584, + "id": 713, "nodeType": "ImportDirective", - "scope": 622, - "sourceUnit": 972, - "src": "51:29:5", + "scope": 751, + "sourceUnit": 1101, + "src": "51:29:7", "symbolAliases": [], "unitAlias": "" }, @@ -84,59 +84,59 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 585, + "id": 714, "name": "MasterCopy", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 580, - "src": "244:10:5", + "referencedDeclaration": 652, + "src": "244:10:7", "typeDescriptions": { - "typeIdentifier": "t_contract$_MasterCopy_$580", + "typeIdentifier": "t_contract$_MasterCopy_$652", "typeString": "contract MasterCopy" } }, - "id": 586, + "id": 715, "nodeType": "InheritanceSpecifier", - "src": "244:10:5" + "src": "244:10:7" } ], "contractDependencies": [ - 580, - 1359 + 652, + 1619 ], "contractKind": "contract", "documentation": "@title Module - Base class for modules.\n @author Stefan George - \n @author Richard Meissner - ", "fullyImplemented": true, - "id": 621, + "id": 750, "linearizedBaseContracts": [ - 621, - 580, - 1359 + 750, + 652, + 1619 ], "name": "Module", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, - "id": 588, + "id": 717, "name": "manager", "nodeType": "VariableDeclaration", - "scope": 621, - "src": "262:28:5", + "scope": 750, + "src": "262:28:7", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" }, "typeName": { "contractScope": null, - "id": 587, + "id": 716, "name": "ModuleManager", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 971, - "src": "262:13:5", + "referencedDeclaration": 1100, + "src": "262:13:7", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" } }, @@ -145,9 +145,9 @@ }, { "body": { - "id": 600, + "id": 729, "nodeType": "Block", - "src": "319:67:5", + "src": "319:67:7", "statements": [ { "expression": { @@ -159,7 +159,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 596, + "id": 725, "isConstant": false, "isLValue": false, "isPure": false, @@ -168,18 +168,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 591, + "id": 720, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2396, - "src": "337:3:5", + "referencedDeclaration": 2598, + "src": "337:3:7", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 592, + "id": 721, "isConstant": false, "isLValue": false, "isPure": false, @@ -187,7 +187,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "337:10:5", + "src": "337:10:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -200,14 +200,14 @@ "arguments": [ { "argumentTypes": null, - "id": 594, + "id": 723, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 588, - "src": "359:7:5", + "referencedDeclaration": 717, + "src": "359:7:7", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" } } @@ -215,24 +215,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" } ], - "id": 593, + "id": 722, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "351:7:5", + "src": "351:7:7", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 595, + "id": 724, "isConstant": false, "isLValue": false, "isPure": false, @@ -240,13 +240,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "351:16:5", + "src": "351:16:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "337:30:5", + "src": "337:30:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -260,21 +260,21 @@ "typeString": "bool" } ], - "id": 590, + "id": 719, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "329:7:5", + "referencedDeclaration": 2601, + "src": "329:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 597, + "id": 726, "isConstant": false, "isLValue": false, "isPure": false, @@ -282,41 +282,41 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "329:39:5", + "src": "329:39:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 598, + "id": 727, "nodeType": "ExpressionStatement", - "src": "329:39:5" + "src": "329:39:7" }, { - "id": 599, + "id": 728, "nodeType": "PlaceholderStatement", - "src": "378:1:5" + "src": "378:1:7" } ] }, "documentation": null, - "id": 601, + "id": 730, "name": "authorized", "nodeType": "ModifierDefinition", "parameters": { - "id": 589, + "id": 718, "nodeType": "ParameterList", "parameters": [], - "src": "316:2:5" + "src": "316:2:7" }, - "src": "297:89:5", + "src": "297:89:7", "visibility": "internal" }, { "body": { - "id": 619, + "id": 748, "nodeType": "Block", - "src": "435:225:5", + "src": "435:225:7", "statements": [ { "expression": { @@ -328,7 +328,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 609, + "id": 738, "isConstant": false, "isLValue": false, "isPure": false, @@ -338,14 +338,14 @@ "arguments": [ { "argumentTypes": null, - "id": 606, + "id": 735, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 588, - "src": "594:7:5", + "referencedDeclaration": 717, + "src": "594:7:7", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" } } @@ -353,24 +353,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" } ], - "id": 605, + "id": 734, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "586:7:5", + "src": "586:7:7", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 607, + "id": 736, "isConstant": false, "isLValue": false, "isPure": false, @@ -378,7 +378,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "586:16:5", + "src": "586:16:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -389,14 +389,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 608, + "id": 737, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "606:1:5", + "src": "606:1:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -404,7 +404,7 @@ }, "value": "0" }, - "src": "586:21:5", + "src": "586:21:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -418,21 +418,21 @@ "typeString": "bool" } ], - "id": 604, + "id": 733, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "578:7:5", + "referencedDeclaration": 2601, + "src": "578:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 610, + "id": 739, "isConstant": false, "isLValue": false, "isPure": false, @@ -440,34 +440,34 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "578:30:5", + "src": "578:30:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 611, + "id": 740, "nodeType": "ExpressionStatement", - "src": "578:30:5" + "src": "578:30:7" }, { "expression": { "argumentTypes": null, - "id": 617, + "id": 746, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 612, + "id": 741, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 588, - "src": "618:7:5", + "referencedDeclaration": 717, + "src": "618:7:7", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" } }, @@ -480,18 +480,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 614, + "id": 743, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2396, - "src": "642:3:5", + "referencedDeclaration": 2598, + "src": "642:3:7", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 615, + "id": 744, "isConstant": false, "isLValue": false, "isPure": false, @@ -499,7 +499,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "642:10:5", + "src": "642:10:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -513,18 +513,18 @@ "typeString": "address" } ], - "id": 613, + "id": 742, "name": "ModuleManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 971, - "src": "628:13:5", + "referencedDeclaration": 1100, + "src": "628:13:7", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ModuleManager_$971_$", + "typeIdentifier": "t_type$_t_contract$_ModuleManager_$1100_$", "typeString": "type(contract ModuleManager)" } }, - "id": 616, + "id": 745, "isConstant": false, "isLValue": false, "isPure": false, @@ -532,26 +532,26 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "628:25:5", + "src": "628:25:7", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" } }, - "src": "618:35:5", + "src": "618:35:7", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" } }, - "id": 618, + "id": 747, "nodeType": "ExpressionStatement", - "src": "618:35:5" + "src": "618:35:7" } ] }, "documentation": null, - "id": 620, + "id": 749, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -559,70 +559,70 @@ "name": "setManager", "nodeType": "FunctionDefinition", "parameters": { - "id": 602, + "id": 731, "nodeType": "ParameterList", "parameters": [], - "src": "411:2:5" + "src": "411:2:7" }, "payable": false, "returnParameters": { - "id": 603, + "id": 732, "nodeType": "ParameterList", "parameters": [], - "src": "435:0:5" + "src": "435:0:7" }, - "scope": 621, - "src": "392:268:5", + "scope": 750, + "src": "392:268:7", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" } ], - "scope": 622, - "src": "225:437:5" + "scope": 751, + "src": "225:437:7" } ], - "src": "0:663:5" + "src": "0:663:7" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "exportedSymbols": { "Module": [ - 621 + 750 ] }, - "id": 622, + "id": 751, "nodeType": "SourceUnit", "nodes": [ { - "id": 582, + "id": 711, "literals": [ "solidity", "0.4", - ".23" + ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:5" + "src": "0:23:7" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/MasterCopy.sol", "file": "./MasterCopy.sol", - "id": 583, + "id": 712, "nodeType": "ImportDirective", - "scope": 622, - "sourceUnit": 581, - "src": "24:26:5", + "scope": 751, + "sourceUnit": 653, + "src": "24:26:7", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ModuleManager.sol", "file": "./ModuleManager.sol", - "id": 584, + "id": 713, "nodeType": "ImportDirective", - "scope": 622, - "sourceUnit": 972, - "src": "51:29:5", + "scope": 751, + "sourceUnit": 1101, + "src": "51:29:7", "symbolAliases": [], "unitAlias": "" }, @@ -632,59 +632,59 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 585, + "id": 714, "name": "MasterCopy", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 580, - "src": "244:10:5", + "referencedDeclaration": 652, + "src": "244:10:7", "typeDescriptions": { - "typeIdentifier": "t_contract$_MasterCopy_$580", + "typeIdentifier": "t_contract$_MasterCopy_$652", "typeString": "contract MasterCopy" } }, - "id": 586, + "id": 715, "nodeType": "InheritanceSpecifier", - "src": "244:10:5" + "src": "244:10:7" } ], "contractDependencies": [ - 580, - 1359 + 652, + 1619 ], "contractKind": "contract", "documentation": "@title Module - Base class for modules.\n @author Stefan George - \n @author Richard Meissner - ", "fullyImplemented": true, - "id": 621, + "id": 750, "linearizedBaseContracts": [ - 621, - 580, - 1359 + 750, + 652, + 1619 ], "name": "Module", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, - "id": 588, + "id": 717, "name": "manager", "nodeType": "VariableDeclaration", - "scope": 621, - "src": "262:28:5", + "scope": 750, + "src": "262:28:7", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" }, "typeName": { "contractScope": null, - "id": 587, + "id": 716, "name": "ModuleManager", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 971, - "src": "262:13:5", + "referencedDeclaration": 1100, + "src": "262:13:7", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" } }, @@ -693,9 +693,9 @@ }, { "body": { - "id": 600, + "id": 729, "nodeType": "Block", - "src": "319:67:5", + "src": "319:67:7", "statements": [ { "expression": { @@ -707,7 +707,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 596, + "id": 725, "isConstant": false, "isLValue": false, "isPure": false, @@ -716,18 +716,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 591, + "id": 720, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2396, - "src": "337:3:5", + "referencedDeclaration": 2598, + "src": "337:3:7", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 592, + "id": 721, "isConstant": false, "isLValue": false, "isPure": false, @@ -735,7 +735,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "337:10:5", + "src": "337:10:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -748,14 +748,14 @@ "arguments": [ { "argumentTypes": null, - "id": 594, + "id": 723, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 588, - "src": "359:7:5", + "referencedDeclaration": 717, + "src": "359:7:7", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" } } @@ -763,24 +763,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" } ], - "id": 593, + "id": 722, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "351:7:5", + "src": "351:7:7", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 595, + "id": 724, "isConstant": false, "isLValue": false, "isPure": false, @@ -788,13 +788,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "351:16:5", + "src": "351:16:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "337:30:5", + "src": "337:30:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -808,21 +808,21 @@ "typeString": "bool" } ], - "id": 590, + "id": 719, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "329:7:5", + "referencedDeclaration": 2601, + "src": "329:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 597, + "id": 726, "isConstant": false, "isLValue": false, "isPure": false, @@ -830,41 +830,41 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "329:39:5", + "src": "329:39:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 598, + "id": 727, "nodeType": "ExpressionStatement", - "src": "329:39:5" + "src": "329:39:7" }, { - "id": 599, + "id": 728, "nodeType": "PlaceholderStatement", - "src": "378:1:5" + "src": "378:1:7" } ] }, "documentation": null, - "id": 601, + "id": 730, "name": "authorized", "nodeType": "ModifierDefinition", "parameters": { - "id": 589, + "id": 718, "nodeType": "ParameterList", "parameters": [], - "src": "316:2:5" + "src": "316:2:7" }, - "src": "297:89:5", + "src": "297:89:7", "visibility": "internal" }, { "body": { - "id": 619, + "id": 748, "nodeType": "Block", - "src": "435:225:5", + "src": "435:225:7", "statements": [ { "expression": { @@ -876,7 +876,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 609, + "id": 738, "isConstant": false, "isLValue": false, "isPure": false, @@ -886,14 +886,14 @@ "arguments": [ { "argumentTypes": null, - "id": 606, + "id": 735, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 588, - "src": "594:7:5", + "referencedDeclaration": 717, + "src": "594:7:7", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" } } @@ -901,24 +901,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" } ], - "id": 605, + "id": 734, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "586:7:5", + "src": "586:7:7", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 607, + "id": 736, "isConstant": false, "isLValue": false, "isPure": false, @@ -926,7 +926,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "586:16:5", + "src": "586:16:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -937,14 +937,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 608, + "id": 737, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "606:1:5", + "src": "606:1:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -952,7 +952,7 @@ }, "value": "0" }, - "src": "586:21:5", + "src": "586:21:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -966,21 +966,21 @@ "typeString": "bool" } ], - "id": 604, + "id": 733, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "578:7:5", + "referencedDeclaration": 2601, + "src": "578:7:7", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 610, + "id": 739, "isConstant": false, "isLValue": false, "isPure": false, @@ -988,34 +988,34 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "578:30:5", + "src": "578:30:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 611, + "id": 740, "nodeType": "ExpressionStatement", - "src": "578:30:5" + "src": "578:30:7" }, { "expression": { "argumentTypes": null, - "id": 617, + "id": 746, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 612, + "id": 741, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 588, - "src": "618:7:5", + "referencedDeclaration": 717, + "src": "618:7:7", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" } }, @@ -1028,18 +1028,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 614, + "id": 743, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2396, - "src": "642:3:5", + "referencedDeclaration": 2598, + "src": "642:3:7", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 615, + "id": 744, "isConstant": false, "isLValue": false, "isPure": false, @@ -1047,7 +1047,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "642:10:5", + "src": "642:10:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1061,18 +1061,18 @@ "typeString": "address" } ], - "id": 613, + "id": 742, "name": "ModuleManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 971, - "src": "628:13:5", + "referencedDeclaration": 1100, + "src": "628:13:7", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ModuleManager_$971_$", + "typeIdentifier": "t_type$_t_contract$_ModuleManager_$1100_$", "typeString": "type(contract ModuleManager)" } }, - "id": 616, + "id": 745, "isConstant": false, "isLValue": false, "isPure": false, @@ -1080,26 +1080,26 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "628:25:5", + "src": "628:25:7", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" } }, - "src": "618:35:5", + "src": "618:35:7", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" } }, - "id": 618, + "id": 747, "nodeType": "ExpressionStatement", - "src": "618:35:5" + "src": "618:35:7" } ] }, "documentation": null, - "id": 620, + "id": 749, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -1107,36 +1107,36 @@ "name": "setManager", "nodeType": "FunctionDefinition", "parameters": { - "id": 602, + "id": 731, "nodeType": "ParameterList", "parameters": [], - "src": "411:2:5" + "src": "411:2:7" }, "payable": false, "returnParameters": { - "id": 603, + "id": 732, "nodeType": "ParameterList", "parameters": [], - "src": "435:0:5" + "src": "435:0:7" }, - "scope": 621, - "src": "392:268:5", + "scope": 750, + "src": "392:268:7", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" } ], - "scope": 622, - "src": "225:437:5" + "scope": 751, + "src": "225:437:7" } ], - "src": "0:663:5" + "src": "0:663:7" }, "compiler": { "name": "solc", - "version": "0.4.23+commit.124ca40d.Emscripten.clang" + "version": "0.4.24+commit.e67f0147.Emscripten.clang" }, "networks": {}, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-16T10:51:14.746Z" + "updatedAt": "2018-05-27T11:12:45.579Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/ModuleManager.json b/safe-contracts/build/contracts/ModuleManager.json index 8ab073d57a..240aef1617 100644 --- a/safe-contracts/build/contracts/ModuleManager.json +++ b/safe-contracts/build/contracts/ModuleManager.json @@ -138,62 +138,62 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50610d8f806100206000396000f300608060405260043610610083576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063468721a714610085578063610b59251461013d57806385e332cd14610180578063a3f4df7e146101d7578063b2494df314610267578063e009cfde146102d3578063ffa1ad7414610336575b005b34801561009157600080fd5b50610123600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff1690602001909291905050506103c6565b604051808215151515815260200191505060405180910390f35b34801561014957600080fd5b5061017e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610462565b005b34801561018c57600080fd5b506101956106db565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101e357600080fd5b506101ec6106e0565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561022c578082015181840152602081019050610211565b50505050905090810190601f1680156102595780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561027357600080fd5b5061027c610719565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156102bf5780820151818401526020810190506102a4565b505050509050019250505060405180910390f35b3480156102df57600080fd5b50610334600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109bc565b005b34801561034257600080fd5b5061034b610beb565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561038b578082015181840152602081019050610370565b50505050905090810190601f1680156103b85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000806000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561044b57600080fd5b610458858585855a610c24565b9050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561049c57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156104f05750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15156104fb57600080fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561057e57600080fd5b600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b6040805190810160405280600e81526020017f4d6f64756c65204d616e6167657200000000000000000000000000000000000081525081565b6060600080606060009250600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151561082b576000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050610787565b8260405190808252806020026020018201604052801561085a5781602001602082028038833980820191505090505b50905060009250600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156109b35781818481518110151561090957fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915082806001019350506108c4565b80935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156109f657600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610a8e57600080fd5b6000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b60008060006002811115610c3457fe5b846002811115610c4057fe5b1415610c5957610c5287878786610d21565b9150610d17565b60016002811115610c6657fe5b846002811115610c7257fe5b1415610c8a57610c83878685610d3a565b9150610d16565b610c9385610d51565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f090509190505600a165627a7a72305820f73984cc7cb90fc15f3fdf21f5e74b21221f6ace06f0742ae3ee75acdbd56ef40029", - "deployedBytecode": "0x608060405260043610610083576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063468721a714610085578063610b59251461013d57806385e332cd14610180578063a3f4df7e146101d7578063b2494df314610267578063e009cfde146102d3578063ffa1ad7414610336575b005b34801561009157600080fd5b50610123600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff1690602001909291905050506103c6565b604051808215151515815260200191505060405180910390f35b34801561014957600080fd5b5061017e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610462565b005b34801561018c57600080fd5b506101956106db565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101e357600080fd5b506101ec6106e0565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561022c578082015181840152602081019050610211565b50505050905090810190601f1680156102595780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561027357600080fd5b5061027c610719565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156102bf5780820151818401526020810190506102a4565b505050509050019250505060405180910390f35b3480156102df57600080fd5b50610334600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109bc565b005b34801561034257600080fd5b5061034b610beb565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561038b578082015181840152602081019050610370565b50505050905090810190601f1680156103b85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000806000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561044b57600080fd5b610458858585855a610c24565b9050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561049c57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156104f05750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15156104fb57600080fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561057e57600080fd5b600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b6040805190810160405280600e81526020017f4d6f64756c65204d616e6167657200000000000000000000000000000000000081525081565b6060600080606060009250600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151561082b576000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050610787565b8260405190808252806020026020018201604052801561085a5781602001602082028038833980820191505090505b50905060009250600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156109b35781818481518110151561090957fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915082806001019350506108c4565b80935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156109f657600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610a8e57600080fd5b6000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b60008060006002811115610c3457fe5b846002811115610c4057fe5b1415610c5957610c5287878786610d21565b9150610d17565b60016002811115610c6657fe5b846002811115610c7257fe5b1415610c8a57610c83878685610d3a565b9150610d16565b610c9385610d51565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f090509190505600a165627a7a72305820f73984cc7cb90fc15f3fdf21f5e74b21221f6ace06f0742ae3ee75acdbd56ef40029", - "sourceMap": "303:4860:6:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;303:4860:6;;;;;;;", - "deployedSourceMap": "303:4860:6:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2522:377;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2522:377:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1235:391;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1235:391:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;499:55;;8:9:-1;5:2;;;30:1;27;20:12;5:2;499:55:6;;;;;;;;;;;;;;;;;;;;;;;;;;;401:46;;8:9:-1;5:2;;;30:1;27;20:12;5:2;401:46:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;401:46:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4423:738;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4423:738:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;4423:738:6;;;;;;;;;;;;;;;;;1887:299;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1887:299:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;453:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;453:40:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;453:40:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2522:377;2654:12;2762:1;2739:7;:19;2747:10;2739:19;;;;;;;;;;;;;;;;;;;;;;;;;:24;;;;2731:33;;;;;;;;2846:46;2854:2;2858:5;2865:4;2871:9;2882;2846:7;:46::i;:::-;2836:56;;2522:377;;;;;;:::o;1235:391::-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;1401:1:6;1390:6;1382:20;;;;:59;;;;;550:3;1406:35;;1414:6;1406:35;;;;1382:59;1374:68;;;;;;;;1520:1;1501:7;:15;1509:6;1501:15;;;;;;;;;;;;;;;;;;;;;;;;;:20;;;1493:29;;;;;;;;1550:7;:25;550:3;1550:25;;;;;;;;;;;;;;;;;;;;;;;;;1532:7;:15;1540:6;1532:15;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;1613:6;1585:7;:25;550:3;1585:25;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;1235:391;:::o;499:55::-;550:3;499:55;:::o;401:46::-;;;;;;;;;;;;;;;;;;;;:::o;4423:738::-;4490:9;4549:19;4582:21;4782:22;4571:1;4549:23;;4606:7;:25;550:3;4606:25;;;;;;;;;;;;;;;;;;;;;;;;;4582:49;;4641:132;550:3;4647:33;;:13;:33;;;;4641:132;;;4712:7;:22;4720:13;4712:22;;;;;;;;;;;;;;;;;;;;;;;;;4696:38;;4748:14;;;;;;;4641:132;;;4821:11;4807:26;;;;;;;;;;;;;;;;;;;;;;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;4807:26:6;;;;4782:51;;4891:1;4877:15;;4918:7;:25;550:3;4918:25;;;;;;;;;;;;;;;;;;;;;;;;;4902:41;;4953:180;550:3;4959:33;;:13;:33;;;;4953:180;;;5029:13;5008:5;5014:11;5008:18;;;;;;;;;;;;;;;;;:34;;;;;;;;;;;5072:7;:22;5080:13;5072:22;;;;;;;;;;;;;;;;;;;;;;;;;5056:38;;5108:14;;;;;;;4953:180;;;5149:5;5142:12;;4423:738;;;;:::o;1887:299::-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;2095:6:6;2064:38;;:7;:19;2072:10;2064:19;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;2056:47;;;;;;;;2135:7;:15;2143:6;2135:15;;;;;;;;;;;;;;;;;;;;;;;;;2113:7;:19;2121:10;2113:19;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;2178:1;2160:7;:15;2168:6;2160:15;;;;;;;;;;;;;;;;:19;;;;;;;;;;;;;;;;;;1887:299;;:::o;453:40::-;;;;;;;;;;;;;;;;;;;;:::o;2905:548::-;3036:12;3307:19;3081;3068:32;;;;;;;;:9;:32;;;;;;;;;3064:383;;;3124:35;3136:2;3140:5;3147:4;3153:5;3124:11;:35::i;:::-;3114:45;;3064:383;;;3191:27;3178:40;;;;;;;;:9;:40;;;;;;;;;3174:273;;;3242:36;3262:2;3266:4;3272:5;3242:19;:36::i;:::-;3232:46;;3174:273;;;3329:19;3343:4;3329:13;:19::i;:::-;3307:41;;3387:1;3372:11;:16;;;;3362:26;;3407:29;3424:11;3407:29;;;;;;;;;;;;;;;;;;;;;;3174:273;3064:383;2905:548;;;;;;;;:::o;3459:309::-;3568:12;3750:1;3747;3740:4;3734:11;3727:4;3721;3717:15;3710:5;3706:2;3699:5;3694:58;3683:69;;3669:93;;;;;;:::o;3774:303::-;3876:12;4059:1;4056;4049:4;4043:11;4036:4;4030;4026:15;4022:2;4015:5;4002:59;3991:70;;3977:94;;;;;:::o;4083:261::-;4152:19;4322:4;4316:11;4309:4;4303;4299:15;4296:1;4289:39;4274:54;;4260:78;;;:::o", - "source": "pragma solidity 0.4.23;\nimport \"./Module.sol\";\nimport \"./MasterCopy.sol\";\nimport \"./Enum.sol\";\n\n\n/// @title Module Manager - A contract that manages modules that can execute transactions via this contract\n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract ModuleManager is SelfAuthorized {\n\n event ContractCreation(address newContract);\n\n string public constant NAME = \"Module Manager\";\n string public constant VERSION = \"0.0.1\";\n address public constant SENTINEL_MODULES = address(0x1);\n\n mapping (address => address) internal modules;\n\n /// @dev Fallback function accepts Ether transactions.\n function ()\n external\n payable\n {\n\n }\n\n function setupModules(address to, bytes data)\n internal\n {\n require(modules[SENTINEL_MODULES] == 0);\n modules[SENTINEL_MODULES] = SENTINEL_MODULES;\n if (to != 0)\n // Setup has to complete successfully or transaction fails.\n require(executeDelegateCall(to, data, gasleft()));\n }\n\n /// @dev Allows to add a module to the whitelist.\n /// This can only be done via a Safe transaction.\n /// @param module Module to be whitelisted.\n function enableModule(Module module)\n public\n authorized\n {\n // Module address cannot be null or sentinel.\n require(address(module) != 0 && address(module) != SENTINEL_MODULES);\n // Module cannot be added twice.\n require(modules[module] == 0);\n modules[module] = modules[SENTINEL_MODULES];\n modules[SENTINEL_MODULES] = module;\n }\n\n /// @dev Allows to remove a module from the whitelist.\n /// This can only be done via a Safe transaction.\n /// @param prevModule Module that pointed to the module to be removed in the linked list\n /// @param module Module to be removed.\n function disableModule(Module prevModule, Module module)\n public\n authorized\n {\n // Validate module address corresponds to module index.\n require(modules[prevModule] == address(module));\n modules[prevModule] = modules[module];\n modules[module] = 0;\n }\n\n /// @dev Allows a Module to execute a Safe transaction without any further confirmations.\n /// @param to Destination address of module transaction.\n /// @param value Ether value of module transaction.\n /// @param data Data payload of module transaction.\n /// @param operation Operation type of module transaction.\n function execTransactionFromModule(address to, uint256 value, bytes data, Enum.Operation operation)\n public\n returns (bool success)\n {\n // Only whitelisted modules are allowed.\n require(modules[msg.sender] != 0);\n // Execute transaction without further confirmations.\n success = execute(to, value, data, operation, gasleft());\n }\n\n function execute(address to, uint256 value, bytes data, Enum.Operation operation, uint256 txGas)\n internal\n returns (bool success)\n {\n if (operation == Enum.Operation.Call)\n success = executeCall(to, value, data, txGas);\n else if (operation == Enum.Operation.DelegateCall)\n success = executeDelegateCall(to, data, txGas);\n else {\n address newContract = executeCreate(data);\n success = newContract != 0;\n emit ContractCreation(newContract);\n }\n }\n\n function executeCall(address to, uint256 value, bytes data, uint256 txGas)\n internal\n returns (bool success)\n {\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n success := call(txGas, to, value, add(data, 0x20), mload(data), 0, 0)\n }\n }\n\n function executeDelegateCall(address to, bytes data, uint256 txGas)\n internal\n returns (bool success)\n {\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n success := delegatecall(txGas, to, add(data, 0x20), mload(data), 0, 0)\n }\n }\n\n function executeCreate(bytes data)\n internal\n returns (address newContract)\n {\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n newContract := create(0, add(data, 0x20), mload(data))\n }\n }\n\n /// @dev Returns array of modules.\n /// @return Array of modules.\n function getModules()\n public\n view\n returns (address[])\n {\n // Calculate module count\n uint256 moduleCount = 0;\n address currentModule = modules[SENTINEL_MODULES];\n while(currentModule != SENTINEL_MODULES) {\n currentModule = modules[currentModule];\n moduleCount ++;\n }\n address[] memory array = new address[](moduleCount);\n\n // populate return array\n moduleCount = 0;\n currentModule = modules[SENTINEL_MODULES];\n while(currentModule != SENTINEL_MODULES) {\n array[moduleCount] = currentModule;\n currentModule = modules[currentModule];\n moduleCount ++;\n }\n return array;\n }\n}\n", + "bytecode": "0x608060405234801561001057600080fd5b50610d8f806100206000396000f300608060405260043610610083576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063468721a714610085578063610b59251461013d57806385e332cd14610180578063a3f4df7e146101d7578063b2494df314610267578063e009cfde146102d3578063ffa1ad7414610336575b005b34801561009157600080fd5b50610123600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff1690602001909291905050506103c6565b604051808215151515815260200191505060405180910390f35b34801561014957600080fd5b5061017e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610462565b005b34801561018c57600080fd5b506101956106db565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101e357600080fd5b506101ec6106e0565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561022c578082015181840152602081019050610211565b50505050905090810190601f1680156102595780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561027357600080fd5b5061027c610719565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156102bf5780820151818401526020810190506102a4565b505050509050019250505060405180910390f35b3480156102df57600080fd5b50610334600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109bc565b005b34801561034257600080fd5b5061034b610beb565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561038b578082015181840152602081019050610370565b50505050905090810190601f1680156103b85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000806000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561044b57600080fd5b610458858585855a610c24565b9050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561049c57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156104f05750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15156104fb57600080fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561057e57600080fd5b600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b6040805190810160405280600e81526020017f4d6f64756c65204d616e6167657200000000000000000000000000000000000081525081565b6060600080606060009250600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151561082b576000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050610787565b8260405190808252806020026020018201604052801561085a5781602001602082028038833980820191505090505b50905060009250600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156109b35781818481518110151561090957fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915082806001019350506108c4565b80935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156109f657600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610a8e57600080fd5b6000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b60008060006002811115610c3457fe5b846002811115610c4057fe5b1415610c5957610c5287878786610d21565b9150610d17565b60016002811115610c6657fe5b846002811115610c7257fe5b1415610c8a57610c83878685610d3a565b9150610d16565b610c9385610d51565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f090509190505600a165627a7a72305820433f31b2330c2467d55766d21a1ebc4edbb89e459704843222ec9c2d5e0f8c000029", + "deployedBytecode": "0x608060405260043610610083576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063468721a714610085578063610b59251461013d57806385e332cd14610180578063a3f4df7e146101d7578063b2494df314610267578063e009cfde146102d3578063ffa1ad7414610336575b005b34801561009157600080fd5b50610123600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff1690602001909291905050506103c6565b604051808215151515815260200191505060405180910390f35b34801561014957600080fd5b5061017e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610462565b005b34801561018c57600080fd5b506101956106db565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101e357600080fd5b506101ec6106e0565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561022c578082015181840152602081019050610211565b50505050905090810190601f1680156102595780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561027357600080fd5b5061027c610719565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156102bf5780820151818401526020810190506102a4565b505050509050019250505060405180910390f35b3480156102df57600080fd5b50610334600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109bc565b005b34801561034257600080fd5b5061034b610beb565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561038b578082015181840152602081019050610370565b50505050905090810190601f1680156103b85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000806000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561044b57600080fd5b610458858585855a610c24565b9050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561049c57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156104f05750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15156104fb57600080fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561057e57600080fd5b600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b6040805190810160405280600e81526020017f4d6f64756c65204d616e6167657200000000000000000000000000000000000081525081565b6060600080606060009250600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151561082b576000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050610787565b8260405190808252806020026020018201604052801561085a5781602001602082028038833980820191505090505b50905060009250600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156109b35781818481518110151561090957fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915082806001019350506108c4565b80935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156109f657600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610a8e57600080fd5b6000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b60008060006002811115610c3457fe5b846002811115610c4057fe5b1415610c5957610c5287878786610d21565b9150610d17565b60016002811115610c6657fe5b846002811115610c7257fe5b1415610c8a57610c83878685610d3a565b9150610d16565b610c9385610d51565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f090509190505600a165627a7a72305820433f31b2330c2467d55766d21a1ebc4edbb89e459704843222ec9c2d5e0f8c000029", + "sourceMap": "303:4860:8:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;303:4860:8;;;;;;;", + "deployedSourceMap": "303:4860:8:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2522:377;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2522:377:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1235:391;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1235:391:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;499:55;;8:9:-1;5:2;;;30:1;27;20:12;5:2;499:55:8;;;;;;;;;;;;;;;;;;;;;;;;;;;401:46;;8:9:-1;5:2;;;30:1;27;20:12;5:2;401:46:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;401:46:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4423:738;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4423:738:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;4423:738:8;;;;;;;;;;;;;;;;;1887:299;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1887:299:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;453:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;453:40:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;453:40:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2522:377;2654:12;2762:1;2739:7;:19;2747:10;2739:19;;;;;;;;;;;;;;;;;;;;;;;;;:24;;;;2731:33;;;;;;;;2846:46;2854:2;2858:5;2865:4;2871:9;2882;2846:7;:46::i;:::-;2836:56;;2522:377;;;;;;:::o;1235:391::-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;1401:1:8;1390:6;1382:20;;;;:59;;;;;550:3;1406:35;;1414:6;1406:35;;;;1382:59;1374:68;;;;;;;;1520:1;1501:7;:15;1509:6;1501:15;;;;;;;;;;;;;;;;;;;;;;;;;:20;;;1493:29;;;;;;;;1550:7;:25;550:3;1550:25;;;;;;;;;;;;;;;;;;;;;;;;;1532:7;:15;1540:6;1532:15;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;1613:6;1585:7;:25;550:3;1585:25;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;1235:391;:::o;499:55::-;550:3;499:55;:::o;401:46::-;;;;;;;;;;;;;;;;;;;;:::o;4423:738::-;4490:9;4549:19;4582:21;4782:22;4571:1;4549:23;;4606:7;:25;550:3;4606:25;;;;;;;;;;;;;;;;;;;;;;;;;4582:49;;4641:132;550:3;4647:33;;:13;:33;;;;4641:132;;;4712:7;:22;4720:13;4712:22;;;;;;;;;;;;;;;;;;;;;;;;;4696:38;;4748:14;;;;;;;4641:132;;;4821:11;4807:26;;;;;;;;;;;;;;;;;;;;;;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;4807:26:8;;;;4782:51;;4891:1;4877:15;;4918:7;:25;550:3;4918:25;;;;;;;;;;;;;;;;;;;;;;;;;4902:41;;4953:180;550:3;4959:33;;:13;:33;;;;4953:180;;;5029:13;5008:5;5014:11;5008:18;;;;;;;;;;;;;;;;;:34;;;;;;;;;;;5072:7;:22;5080:13;5072:22;;;;;;;;;;;;;;;;;;;;;;;;;5056:38;;5108:14;;;;;;;4953:180;;;5149:5;5142:12;;4423:738;;;;:::o;1887:299::-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;2095:6:8;2064:38;;:7;:19;2072:10;2064:19;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;2056:47;;;;;;;;2135:7;:15;2143:6;2135:15;;;;;;;;;;;;;;;;;;;;;;;;;2113:7;:19;2121:10;2113:19;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;2178:1;2160:7;:15;2168:6;2160:15;;;;;;;;;;;;;;;;:19;;;;;;;;;;;;;;;;;;1887:299;;:::o;453:40::-;;;;;;;;;;;;;;;;;;;;:::o;2905:548::-;3036:12;3307:19;3081;3068:32;;;;;;;;:9;:32;;;;;;;;;3064:383;;;3124:35;3136:2;3140:5;3147:4;3153:5;3124:11;:35::i;:::-;3114:45;;3064:383;;;3191:27;3178:40;;;;;;;;:9;:40;;;;;;;;;3174:273;;;3242:36;3262:2;3266:4;3272:5;3242:19;:36::i;:::-;3232:46;;3174:273;;;3329:19;3343:4;3329:13;:19::i;:::-;3307:41;;3387:1;3372:11;:16;;;;3362:26;;3407:29;3424:11;3407:29;;;;;;;;;;;;;;;;;;;;;;3174:273;3064:383;2905:548;;;;;;;;:::o;3459:309::-;3568:12;3750:1;3747;3740:4;3734:11;3727:4;3721;3717:15;3710:5;3706:2;3699:5;3694:58;3683:69;;3669:93;;;;;;:::o;3774:303::-;3876:12;4059:1;4056;4049:4;4043:11;4036:4;4030;4026:15;4022:2;4015:5;4002:59;3991:70;;3977:94;;;;;:::o;4083:261::-;4152:19;4322:4;4316:11;4309:4;4303;4299:15;4296:1;4289:39;4274:54;;4260:78;;;:::o", + "source": "pragma solidity 0.4.24;\nimport \"./Module.sol\";\nimport \"./MasterCopy.sol\";\nimport \"./Enum.sol\";\n\n\n/// @title Module Manager - A contract that manages modules that can execute transactions via this contract\n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract ModuleManager is SelfAuthorized {\n\n event ContractCreation(address newContract);\n\n string public constant NAME = \"Module Manager\";\n string public constant VERSION = \"0.0.1\";\n address public constant SENTINEL_MODULES = address(0x1);\n\n mapping (address => address) internal modules;\n\n /// @dev Fallback function accepts Ether transactions.\n function ()\n external\n payable\n {\n\n }\n\n function setupModules(address to, bytes data)\n internal\n {\n require(modules[SENTINEL_MODULES] == 0);\n modules[SENTINEL_MODULES] = SENTINEL_MODULES;\n if (to != 0)\n // Setup has to complete successfully or transaction fails.\n require(executeDelegateCall(to, data, gasleft()));\n }\n\n /// @dev Allows to add a module to the whitelist.\n /// This can only be done via a Safe transaction.\n /// @param module Module to be whitelisted.\n function enableModule(Module module)\n public\n authorized\n {\n // Module address cannot be null or sentinel.\n require(address(module) != 0 && address(module) != SENTINEL_MODULES);\n // Module cannot be added twice.\n require(modules[module] == 0);\n modules[module] = modules[SENTINEL_MODULES];\n modules[SENTINEL_MODULES] = module;\n }\n\n /// @dev Allows to remove a module from the whitelist.\n /// This can only be done via a Safe transaction.\n /// @param prevModule Module that pointed to the module to be removed in the linked list\n /// @param module Module to be removed.\n function disableModule(Module prevModule, Module module)\n public\n authorized\n {\n // Validate module address corresponds to module index.\n require(modules[prevModule] == address(module));\n modules[prevModule] = modules[module];\n modules[module] = 0;\n }\n\n /// @dev Allows a Module to execute a Safe transaction without any further confirmations.\n /// @param to Destination address of module transaction.\n /// @param value Ether value of module transaction.\n /// @param data Data payload of module transaction.\n /// @param operation Operation type of module transaction.\n function execTransactionFromModule(address to, uint256 value, bytes data, Enum.Operation operation)\n public\n returns (bool success)\n {\n // Only whitelisted modules are allowed.\n require(modules[msg.sender] != 0);\n // Execute transaction without further confirmations.\n success = execute(to, value, data, operation, gasleft());\n }\n\n function execute(address to, uint256 value, bytes data, Enum.Operation operation, uint256 txGas)\n internal\n returns (bool success)\n {\n if (operation == Enum.Operation.Call)\n success = executeCall(to, value, data, txGas);\n else if (operation == Enum.Operation.DelegateCall)\n success = executeDelegateCall(to, data, txGas);\n else {\n address newContract = executeCreate(data);\n success = newContract != 0;\n emit ContractCreation(newContract);\n }\n }\n\n function executeCall(address to, uint256 value, bytes data, uint256 txGas)\n internal\n returns (bool success)\n {\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n success := call(txGas, to, value, add(data, 0x20), mload(data), 0, 0)\n }\n }\n\n function executeDelegateCall(address to, bytes data, uint256 txGas)\n internal\n returns (bool success)\n {\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n success := delegatecall(txGas, to, add(data, 0x20), mload(data), 0, 0)\n }\n }\n\n function executeCreate(bytes data)\n internal\n returns (address newContract)\n {\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n newContract := create(0, add(data, 0x20), mload(data))\n }\n }\n\n /// @dev Returns array of modules.\n /// @return Array of modules.\n function getModules()\n public\n view\n returns (address[])\n {\n // Calculate module count\n uint256 moduleCount = 0;\n address currentModule = modules[SENTINEL_MODULES];\n while(currentModule != SENTINEL_MODULES) {\n currentModule = modules[currentModule];\n moduleCount ++;\n }\n address[] memory array = new address[](moduleCount);\n\n // populate return array\n moduleCount = 0;\n currentModule = modules[SENTINEL_MODULES];\n while(currentModule != SENTINEL_MODULES) {\n array[moduleCount] = currentModule;\n currentModule = modules[currentModule];\n moduleCount ++;\n }\n return array;\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ModuleManager.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ModuleManager.sol", "exportedSymbols": { "ModuleManager": [ - 971 + 1100 ] }, - "id": 972, + "id": 1101, "nodeType": "SourceUnit", "nodes": [ { - "id": 623, + "id": 752, "literals": [ "solidity", "0.4", - ".23" + ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:6" + "src": "0:23:8" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "file": "./Module.sol", - "id": 624, + "id": 753, "nodeType": "ImportDirective", - "scope": 972, - "sourceUnit": 622, - "src": "24:22:6", + "scope": 1101, + "sourceUnit": 751, + "src": "24:22:8", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/MasterCopy.sol", "file": "./MasterCopy.sol", - "id": 625, + "id": 754, "nodeType": "ImportDirective", - "scope": 972, - "sourceUnit": 581, - "src": "47:26:6", + "scope": 1101, + "sourceUnit": 653, + "src": "47:26:8", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Enum.sol", "file": "./Enum.sol", - "id": 626, + "id": 755, "nodeType": "ImportDirective", - "scope": 972, - "sourceUnit": 7, - "src": "74:20:6", + "scope": 1101, + "sourceUnit": 31, + "src": "74:20:8", "symbolAliases": [], "unitAlias": "" }, @@ -203,31 +203,31 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 627, + "id": 756, "name": "SelfAuthorized", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1359, - "src": "329:14:6", + "referencedDeclaration": 1619, + "src": "329:14:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_SelfAuthorized_$1359", + "typeIdentifier": "t_contract$_SelfAuthorized_$1619", "typeString": "contract SelfAuthorized" } }, - "id": 628, + "id": 757, "nodeType": "InheritanceSpecifier", - "src": "329:14:6" + "src": "329:14:8" } ], "contractDependencies": [ - 1359 + 1619 ], "contractKind": "contract", "documentation": "@title Module Manager - A contract that manages modules that can execute transactions via this contract\n @author Stefan George - \n @author Richard Meissner - ", "fullyImplemented": true, - "id": 971, + "id": 1100, "linearizedBaseContracts": [ - 971, - 1359 + 1100, + 1619 ], "name": "ModuleManager", "nodeType": "ContractDefinition", @@ -235,21 +235,21 @@ { "anonymous": false, "documentation": null, - "id": 632, + "id": 761, "name": "ContractCreation", "nodeType": "EventDefinition", "parameters": { - "id": 631, + "id": 760, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 630, + "id": 759, "indexed": false, "name": "newContract", "nodeType": "VariableDeclaration", - "scope": 632, - "src": "374:19:6", + "scope": 761, + "src": "374:19:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -257,10 +257,10 @@ "typeString": "address" }, "typeName": { - "id": 629, + "id": 758, "name": "address", "nodeType": "ElementaryTypeName", - "src": "374:7:6", + "src": "374:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -270,17 +270,17 @@ "visibility": "internal" } ], - "src": "373:21:6" + "src": "373:21:8" }, - "src": "351:44:6" + "src": "351:44:8" }, { "constant": true, - "id": 635, + "id": 764, "name": "NAME", "nodeType": "VariableDeclaration", - "scope": 971, - "src": "401:46:6", + "scope": 1100, + "src": "401:46:8", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -288,10 +288,10 @@ "typeString": "string" }, "typeName": { - "id": 633, + "id": 762, "name": "string", "nodeType": "ElementaryTypeName", - "src": "401:6:6", + "src": "401:6:8", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -300,14 +300,14 @@ "value": { "argumentTypes": null, "hexValue": "4d6f64756c65204d616e61676572", - "id": 634, + "id": 763, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "431:16:6", + "src": "431:16:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_12aaa44a1bae367a1e1d9881f5d80283afded6373c2a1ca586db420944084efb", @@ -319,11 +319,11 @@ }, { "constant": true, - "id": 638, + "id": 767, "name": "VERSION", "nodeType": "VariableDeclaration", - "scope": 971, - "src": "453:40:6", + "scope": 1100, + "src": "453:40:8", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -331,10 +331,10 @@ "typeString": "string" }, "typeName": { - "id": 636, + "id": 765, "name": "string", "nodeType": "ElementaryTypeName", - "src": "453:6:6", + "src": "453:6:8", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -343,14 +343,14 @@ "value": { "argumentTypes": null, "hexValue": "302e302e31", - "id": 637, + "id": 766, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "486:7:6", + "src": "486:7:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", @@ -362,11 +362,11 @@ }, { "constant": true, - "id": 643, + "id": 772, "name": "SENTINEL_MODULES", "nodeType": "VariableDeclaration", - "scope": 971, - "src": "499:55:6", + "scope": 1100, + "src": "499:55:8", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -374,10 +374,10 @@ "typeString": "address" }, "typeName": { - "id": 639, + "id": 768, "name": "address", "nodeType": "ElementaryTypeName", - "src": "499:7:6", + "src": "499:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -389,14 +389,14 @@ { "argumentTypes": null, "hexValue": "307831", - "id": 641, + "id": 770, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "550:3:6", + "src": "550:3:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -412,20 +412,20 @@ "typeString": "int_const 1" } ], - "id": 640, + "id": 769, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "542:7:6", + "src": "542:7:8", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 642, + "id": 771, "isConstant": false, "isLValue": false, "isPure": true, @@ -433,7 +433,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "542:12:6", + "src": "542:12:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -443,11 +443,11 @@ }, { "constant": false, - "id": 647, + "id": 776, "name": "modules", "nodeType": "VariableDeclaration", - "scope": 971, - "src": "561:45:6", + "scope": 1100, + "src": "561:45:8", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -455,28 +455,28 @@ "typeString": "mapping(address => address)" }, "typeName": { - "id": 646, + "id": 775, "keyType": { - "id": 644, + "id": 773, "name": "address", "nodeType": "ElementaryTypeName", - "src": "570:7:6", + "src": "570:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "561:28:6", + "src": "561:28:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" }, "valueType": { - "id": 645, + "id": 774, "name": "address", "nodeType": "ElementaryTypeName", - "src": "581:7:6", + "src": "581:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -488,13 +488,13 @@ }, { "body": { - "id": 650, + "id": 779, "nodeType": "Block", - "src": "721:8:6", + "src": "721:8:8", "statements": [] }, "documentation": "@dev Fallback function accepts Ether transactions.", - "id": 651, + "id": 780, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -502,29 +502,29 @@ "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 648, + "id": 777, "nodeType": "ParameterList", "parameters": [], - "src": "681:2:6" + "src": "681:2:8" }, "payable": true, "returnParameters": { - "id": 649, + "id": 778, "nodeType": "ParameterList", "parameters": [], - "src": "721:0:6" + "src": "721:0:8" }, - "scope": 971, - "src": "672:57:6", + "scope": 1100, + "src": "672:57:8", "stateMutability": "payable", "superFunction": null, "visibility": "external" }, { "body": { - "id": 685, + "id": 814, "nodeType": "Block", - "src": "802:266:6", + "src": "802:266:8", "statements": [ { "expression": { @@ -536,7 +536,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 663, + "id": 792, "isConstant": false, "isLValue": false, "isPure": false, @@ -545,26 +545,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 659, + "id": 788, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 647, - "src": "820:7:6", + "referencedDeclaration": 776, + "src": "820:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 661, + "id": 790, "indexExpression": { "argumentTypes": null, - "id": 660, + "id": 789, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 643, - "src": "828:16:6", + "referencedDeclaration": 772, + "src": "828:16:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -575,7 +575,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "820:25:6", + "src": "820:25:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -586,14 +586,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 662, + "id": 791, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "849:1:6", + "src": "849:1:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -601,7 +601,7 @@ }, "value": "0" }, - "src": "820:30:6", + "src": "820:30:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -615,21 +615,21 @@ "typeString": "bool" } ], - "id": 658, + "id": 787, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "812:7:6", + "referencedDeclaration": 2601, + "src": "812:7:8", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 664, + "id": 793, "isConstant": false, "isLValue": false, "isPure": false, @@ -637,20 +637,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "812:39:6", + "src": "812:39:8", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 665, + "id": 794, "nodeType": "ExpressionStatement", - "src": "812:39:6" + "src": "812:39:8" }, { "expression": { "argumentTypes": null, - "id": 670, + "id": 799, "isConstant": false, "isLValue": false, "isPure": false, @@ -659,26 +659,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 666, + "id": 795, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 647, - "src": "861:7:6", + "referencedDeclaration": 776, + "src": "861:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 668, + "id": 797, "indexExpression": { "argumentTypes": null, - "id": 667, + "id": 796, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 643, - "src": "869:16:6", + "referencedDeclaration": 772, + "src": "869:16:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -689,7 +689,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "861:25:6", + "src": "861:25:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -699,26 +699,26 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 669, + "id": 798, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 643, - "src": "889:16:6", + "referencedDeclaration": 772, + "src": "889:16:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "861:44:6", + "src": "861:44:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 671, + "id": 800, "nodeType": "ExpressionStatement", - "src": "861:44:6" + "src": "861:44:8" }, { "condition": { @@ -727,19 +727,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 674, + "id": 803, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 672, + "id": 801, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 653, - "src": "919:2:6", + "referencedDeclaration": 782, + "src": "919:2:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -750,14 +750,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 673, + "id": 802, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "925:1:6", + "src": "925:1:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -765,16 +765,16 @@ }, "value": "0" }, - "src": "919:7:6", + "src": "919:7:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 684, + "id": 813, "nodeType": "IfStatement", - "src": "915:146:6", + "src": "915:146:8", "trueBody": { "expression": { "argumentTypes": null, @@ -784,12 +784,12 @@ "arguments": [ { "argumentTypes": null, - "id": 677, + "id": 806, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 653, - "src": "1040:2:6", + "referencedDeclaration": 782, + "src": "1040:2:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -797,12 +797,12 @@ }, { "argumentTypes": null, - "id": 678, + "id": 807, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 655, - "src": "1044:4:6", + "referencedDeclaration": 784, + "src": "1044:4:8", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -813,18 +813,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 679, + "id": 808, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2389, - "src": "1050:7:6", + "referencedDeclaration": 2591, + "src": "1050:7:8", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 680, + "id": 809, "isConstant": false, "isLValue": false, "isPure": false, @@ -832,7 +832,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1050:9:6", + "src": "1050:9:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -854,18 +854,18 @@ "typeString": "uint256" } ], - "id": 676, + "id": 805, "name": "executeDelegateCall", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 888, - "src": "1020:19:6", + "referencedDeclaration": 1017, + "src": "1020:19:8", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,bytes memory,uint256) returns (bool)" } }, - "id": 681, + "id": 810, "isConstant": false, "isLValue": false, "isPure": false, @@ -873,7 +873,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1020:40:6", + "src": "1020:40:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -887,21 +887,21 @@ "typeString": "bool" } ], - "id": 675, + "id": 804, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "1012:7:6", + "referencedDeclaration": 2601, + "src": "1012:7:8", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 682, + "id": 811, "isConstant": false, "isLValue": false, "isPure": false, @@ -909,21 +909,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1012:49:6", + "src": "1012:49:8", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 683, + "id": 812, "nodeType": "ExpressionStatement", - "src": "1012:49:6" + "src": "1012:49:8" } } ] }, "documentation": null, - "id": 686, + "id": 815, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -931,16 +931,16 @@ "name": "setupModules", "nodeType": "FunctionDefinition", "parameters": { - "id": 656, + "id": 785, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 653, + "id": 782, "name": "to", "nodeType": "VariableDeclaration", - "scope": 686, - "src": "757:10:6", + "scope": 815, + "src": "757:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -948,10 +948,10 @@ "typeString": "address" }, "typeName": { - "id": 652, + "id": 781, "name": "address", "nodeType": "ElementaryTypeName", - "src": "757:7:6", + "src": "757:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -962,11 +962,11 @@ }, { "constant": false, - "id": 655, + "id": 784, "name": "data", "nodeType": "VariableDeclaration", - "scope": 686, - "src": "769:10:6", + "scope": 815, + "src": "769:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -974,10 +974,10 @@ "typeString": "bytes" }, "typeName": { - "id": 654, + "id": 783, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "769:5:6", + "src": "769:5:8", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -987,26 +987,26 @@ "visibility": "internal" } ], - "src": "756:24:6" + "src": "756:24:8" }, "payable": false, "returnParameters": { - "id": 657, + "id": 786, "nodeType": "ParameterList", "parameters": [], - "src": "802:0:6" + "src": "802:0:8" }, - "scope": 971, - "src": "735:333:6", + "scope": 1100, + "src": "735:333:8", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 729, + "id": 858, "nodeType": "Block", - "src": "1310:316:6", + "src": "1310:316:8", "statements": [ { "expression": { @@ -1018,7 +1018,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 704, + "id": 833, "isConstant": false, "isLValue": false, "isPure": false, @@ -1029,7 +1029,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 698, + "id": 827, "isConstant": false, "isLValue": false, "isPure": false, @@ -1039,14 +1039,14 @@ "arguments": [ { "argumentTypes": null, - "id": 695, + "id": 824, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 688, - "src": "1390:6:6", + "referencedDeclaration": 817, + "src": "1390:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } } @@ -1054,24 +1054,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } ], - "id": 694, + "id": 823, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1382:7:6", + "src": "1382:7:8", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 696, + "id": 825, "isConstant": false, "isLValue": false, "isPure": false, @@ -1079,7 +1079,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1382:15:6", + "src": "1382:15:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1090,14 +1090,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 697, + "id": 826, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1401:1:6", + "src": "1401:1:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1105,7 +1105,7 @@ }, "value": "0" }, - "src": "1382:20:6", + "src": "1382:20:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1119,7 +1119,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 703, + "id": 832, "isConstant": false, "isLValue": false, "isPure": false, @@ -1129,14 +1129,14 @@ "arguments": [ { "argumentTypes": null, - "id": 700, + "id": 829, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 688, - "src": "1414:6:6", + "referencedDeclaration": 817, + "src": "1414:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } } @@ -1144,24 +1144,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } ], - "id": 699, + "id": 828, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1406:7:6", + "src": "1406:7:8", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 701, + "id": 830, "isConstant": false, "isLValue": false, "isPure": false, @@ -1169,7 +1169,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1406:15:6", + "src": "1406:15:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1179,24 +1179,24 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 702, + "id": 831, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 643, - "src": "1425:16:6", + "referencedDeclaration": 772, + "src": "1425:16:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1406:35:6", + "src": "1406:35:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "1382:59:6", + "src": "1382:59:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1210,21 +1210,21 @@ "typeString": "bool" } ], - "id": 693, + "id": 822, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "1374:7:6", + "referencedDeclaration": 2601, + "src": "1374:7:8", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 705, + "id": 834, "isConstant": false, "isLValue": false, "isPure": false, @@ -1232,15 +1232,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1374:68:6", + "src": "1374:68:8", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 706, + "id": 835, "nodeType": "ExpressionStatement", - "src": "1374:68:6" + "src": "1374:68:8" }, { "expression": { @@ -1252,7 +1252,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 712, + "id": 841, "isConstant": false, "isLValue": false, "isPure": false, @@ -1261,28 +1261,28 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 708, + "id": 837, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 647, - "src": "1501:7:6", + "referencedDeclaration": 776, + "src": "1501:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 710, + "id": 839, "indexExpression": { "argumentTypes": null, - "id": 709, + "id": 838, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 688, - "src": "1509:6:6", + "referencedDeclaration": 817, + "src": "1509:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } }, @@ -1291,7 +1291,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1501:15:6", + "src": "1501:15:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1302,14 +1302,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 711, + "id": 840, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1520:1:6", + "src": "1520:1:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1317,7 +1317,7 @@ }, "value": "0" }, - "src": "1501:20:6", + "src": "1501:20:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1331,21 +1331,21 @@ "typeString": "bool" } ], - "id": 707, + "id": 836, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "1493:7:6", + "referencedDeclaration": 2601, + "src": "1493:7:8", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 713, + "id": 842, "isConstant": false, "isLValue": false, "isPure": false, @@ -1353,20 +1353,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1493:29:6", + "src": "1493:29:8", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 714, + "id": 843, "nodeType": "ExpressionStatement", - "src": "1493:29:6" + "src": "1493:29:8" }, { "expression": { "argumentTypes": null, - "id": 721, + "id": 850, "isConstant": false, "isLValue": false, "isPure": false, @@ -1375,28 +1375,28 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 715, + "id": 844, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 647, - "src": "1532:7:6", + "referencedDeclaration": 776, + "src": "1532:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 717, + "id": 846, "indexExpression": { "argumentTypes": null, - "id": 716, + "id": 845, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 688, - "src": "1540:6:6", + "referencedDeclaration": 817, + "src": "1540:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } }, @@ -1405,7 +1405,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1532:15:6", + "src": "1532:15:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1417,26 +1417,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 718, + "id": 847, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 647, - "src": "1550:7:6", + "referencedDeclaration": 776, + "src": "1550:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 720, + "id": 849, "indexExpression": { "argumentTypes": null, - "id": 719, + "id": 848, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 643, - "src": "1558:16:6", + "referencedDeclaration": 772, + "src": "1558:16:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1447,26 +1447,26 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1550:25:6", + "src": "1550:25:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1532:43:6", + "src": "1532:43:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 722, + "id": 851, "nodeType": "ExpressionStatement", - "src": "1532:43:6" + "src": "1532:43:8" }, { "expression": { "argumentTypes": null, - "id": 727, + "id": 856, "isConstant": false, "isLValue": false, "isPure": false, @@ -1475,26 +1475,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 723, + "id": 852, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 647, - "src": "1585:7:6", + "referencedDeclaration": 776, + "src": "1585:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 725, + "id": 854, "indexExpression": { "argumentTypes": null, - "id": 724, + "id": 853, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 643, - "src": "1593:16:6", + "referencedDeclaration": 772, + "src": "1593:16:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1505,7 +1505,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1585:25:6", + "src": "1585:25:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1515,83 +1515,83 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 726, + "id": 855, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 688, - "src": "1613:6:6", + "referencedDeclaration": 817, + "src": "1613:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } }, - "src": "1585:34:6", + "src": "1585:34:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 728, + "id": 857, "nodeType": "ExpressionStatement", - "src": "1585:34:6" + "src": "1585:34:8" } ] }, "documentation": "@dev Allows to add a module to the whitelist.\n This can only be done via a Safe transaction.\n @param module Module to be whitelisted.", - "id": 730, + "id": 859, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 691, + "id": 820, "modifierName": { "argumentTypes": null, - "id": 690, + "id": 819, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1358, - "src": "1295:10:6", + "referencedDeclaration": 1618, + "src": "1295:10:8", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1295:10:6" + "src": "1295:10:8" } ], "name": "enableModule", "nodeType": "FunctionDefinition", "parameters": { - "id": 689, + "id": 818, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 688, + "id": 817, "name": "module", "nodeType": "VariableDeclaration", - "scope": 730, - "src": "1257:13:6", + "scope": 859, + "src": "1257:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" }, "typeName": { "contractScope": null, - "id": 687, + "id": 816, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 621, - "src": "1257:6:6", + "referencedDeclaration": 750, + "src": "1257:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } }, @@ -1599,26 +1599,26 @@ "visibility": "internal" } ], - "src": "1256:15:6" + "src": "1256:15:8" }, "payable": false, "returnParameters": { - "id": 692, + "id": 821, "nodeType": "ParameterList", "parameters": [], - "src": "1310:0:6" + "src": "1310:0:8" }, - "scope": 971, - "src": "1235:391:6", + "scope": 1100, + "src": "1235:391:8", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 763, + "id": 892, "nodeType": "Block", - "src": "1982:204:6", + "src": "1982:204:8", "statements": [ { "expression": { @@ -1630,7 +1630,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 746, + "id": 875, "isConstant": false, "isLValue": false, "isPure": false, @@ -1639,28 +1639,28 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 740, + "id": 869, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 647, - "src": "2064:7:6", + "referencedDeclaration": 776, + "src": "2064:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 742, + "id": 871, "indexExpression": { "argumentTypes": null, - "id": 741, + "id": 870, "name": "prevModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 732, - "src": "2072:10:6", + "referencedDeclaration": 861, + "src": "2072:10:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } }, @@ -1669,7 +1669,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2064:19:6", + "src": "2064:19:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1682,14 +1682,14 @@ "arguments": [ { "argumentTypes": null, - "id": 744, + "id": 873, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 734, - "src": "2095:6:6", + "referencedDeclaration": 863, + "src": "2095:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } } @@ -1697,24 +1697,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } ], - "id": 743, + "id": 872, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2087:7:6", + "src": "2087:7:8", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 745, + "id": 874, "isConstant": false, "isLValue": false, "isPure": false, @@ -1722,13 +1722,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2087:15:6", + "src": "2087:15:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2064:38:6", + "src": "2064:38:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1742,21 +1742,21 @@ "typeString": "bool" } ], - "id": 739, + "id": 868, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "2056:7:6", + "referencedDeclaration": 2601, + "src": "2056:7:8", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 747, + "id": 876, "isConstant": false, "isLValue": false, "isPure": false, @@ -1764,20 +1764,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2056:47:6", + "src": "2056:47:8", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 748, + "id": 877, "nodeType": "ExpressionStatement", - "src": "2056:47:6" + "src": "2056:47:8" }, { "expression": { "argumentTypes": null, - "id": 755, + "id": 884, "isConstant": false, "isLValue": false, "isPure": false, @@ -1786,28 +1786,28 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 749, + "id": 878, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 647, - "src": "2113:7:6", + "referencedDeclaration": 776, + "src": "2113:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 751, + "id": 880, "indexExpression": { "argumentTypes": null, - "id": 750, + "id": 879, "name": "prevModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 732, - "src": "2121:10:6", + "referencedDeclaration": 861, + "src": "2121:10:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } }, @@ -1816,7 +1816,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2113:19:6", + "src": "2113:19:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1828,28 +1828,28 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 752, + "id": 881, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 647, - "src": "2135:7:6", + "referencedDeclaration": 776, + "src": "2135:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 754, + "id": 883, "indexExpression": { "argumentTypes": null, - "id": 753, + "id": 882, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 734, - "src": "2143:6:6", + "referencedDeclaration": 863, + "src": "2143:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } }, @@ -1858,26 +1858,26 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2135:15:6", + "src": "2135:15:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2113:37:6", + "src": "2113:37:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 756, + "id": 885, "nodeType": "ExpressionStatement", - "src": "2113:37:6" + "src": "2113:37:8" }, { "expression": { "argumentTypes": null, - "id": 761, + "id": 890, "isConstant": false, "isLValue": false, "isPure": false, @@ -1886,28 +1886,28 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 757, + "id": 886, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 647, - "src": "2160:7:6", + "referencedDeclaration": 776, + "src": "2160:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 759, + "id": 888, "indexExpression": { "argumentTypes": null, - "id": 758, + "id": 887, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 734, - "src": "2168:6:6", + "referencedDeclaration": 863, + "src": "2168:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } }, @@ -1916,7 +1916,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2160:15:6", + "src": "2160:15:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1927,14 +1927,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "30", - "id": 760, + "id": 889, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2178:1:6", + "src": "2178:1:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1942,72 +1942,72 @@ }, "value": "0" }, - "src": "2160:19:6", + "src": "2160:19:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 762, + "id": 891, "nodeType": "ExpressionStatement", - "src": "2160:19:6" + "src": "2160:19:8" } ] }, "documentation": "@dev Allows to remove a module from the whitelist.\n This can only be done via a Safe transaction.\n @param prevModule Module that pointed to the module to be removed in the linked list\n @param module Module to be removed.", - "id": 764, + "id": 893, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 737, + "id": 866, "modifierName": { "argumentTypes": null, - "id": 736, + "id": 865, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1358, - "src": "1967:10:6", + "referencedDeclaration": 1618, + "src": "1967:10:8", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1967:10:6" + "src": "1967:10:8" } ], "name": "disableModule", "nodeType": "FunctionDefinition", "parameters": { - "id": 735, + "id": 864, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 732, + "id": 861, "name": "prevModule", "nodeType": "VariableDeclaration", - "scope": 764, - "src": "1910:17:6", + "scope": 893, + "src": "1910:17:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" }, "typeName": { "contractScope": null, - "id": 731, + "id": 860, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 621, - "src": "1910:6:6", + "referencedDeclaration": 750, + "src": "1910:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } }, @@ -2016,26 +2016,26 @@ }, { "constant": false, - "id": 734, + "id": 863, "name": "module", "nodeType": "VariableDeclaration", - "scope": 764, - "src": "1929:13:6", + "scope": 893, + "src": "1929:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" }, "typeName": { "contractScope": null, - "id": 733, + "id": 862, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 621, - "src": "1929:6:6", + "referencedDeclaration": 750, + "src": "1929:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } }, @@ -2043,26 +2043,26 @@ "visibility": "internal" } ], - "src": "1909:34:6" + "src": "1909:34:8" }, "payable": false, "returnParameters": { - "id": 738, + "id": 867, "nodeType": "ParameterList", "parameters": [], - "src": "1982:0:6" + "src": "1982:0:8" }, - "scope": 971, - "src": "1887:299:6", + "scope": 1100, + "src": "1887:299:8", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 797, + "id": 926, "nodeType": "Block", - "src": "2672:227:6", + "src": "2672:227:8", "statements": [ { "expression": { @@ -2074,7 +2074,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 783, + "id": 912, "isConstant": false, "isLValue": false, "isPure": false, @@ -2083,34 +2083,34 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 778, + "id": 907, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 647, - "src": "2739:7:6", + "referencedDeclaration": 776, + "src": "2739:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 781, + "id": 910, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 779, + "id": 908, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2396, - "src": "2747:3:6", + "referencedDeclaration": 2598, + "src": "2747:3:8", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 780, + "id": 909, "isConstant": false, "isLValue": false, "isPure": false, @@ -2118,7 +2118,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2747:10:6", + "src": "2747:10:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2129,7 +2129,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2739:19:6", + "src": "2739:19:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2140,14 +2140,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 782, + "id": 911, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2762:1:6", + "src": "2762:1:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -2155,7 +2155,7 @@ }, "value": "0" }, - "src": "2739:24:6", + "src": "2739:24:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2169,21 +2169,21 @@ "typeString": "bool" } ], - "id": 777, + "id": 906, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "2731:7:6", + "referencedDeclaration": 2601, + "src": "2731:7:8", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 784, + "id": 913, "isConstant": false, "isLValue": false, "isPure": false, @@ -2191,32 +2191,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2731:33:6", + "src": "2731:33:8", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 785, + "id": 914, "nodeType": "ExpressionStatement", - "src": "2731:33:6" + "src": "2731:33:8" }, { "expression": { "argumentTypes": null, - "id": 795, + "id": 924, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 786, + "id": 915, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 775, - "src": "2836:7:6", + "referencedDeclaration": 904, + "src": "2836:7:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2229,12 +2229,12 @@ "arguments": [ { "argumentTypes": null, - "id": 788, + "id": 917, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 766, - "src": "2854:2:6", + "referencedDeclaration": 895, + "src": "2854:2:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2242,12 +2242,12 @@ }, { "argumentTypes": null, - "id": 789, + "id": 918, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 768, - "src": "2858:5:6", + "referencedDeclaration": 897, + "src": "2858:5:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2255,12 +2255,12 @@ }, { "argumentTypes": null, - "id": 790, + "id": 919, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 770, - "src": "2865:4:6", + "referencedDeclaration": 899, + "src": "2865:4:8", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -2268,14 +2268,14 @@ }, { "argumentTypes": null, - "id": 791, + "id": 920, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 772, - "src": "2871:9:6", + "referencedDeclaration": 901, + "src": "2871:9:8", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, @@ -2284,18 +2284,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 792, + "id": 921, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2389, - "src": "2882:7:6", + "referencedDeclaration": 2591, + "src": "2882:7:8", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 793, + "id": 922, "isConstant": false, "isLValue": false, "isPure": false, @@ -2303,7 +2303,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2882:9:6", + "src": "2882:9:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2325,7 +2325,7 @@ "typeString": "bytes memory" }, { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, { @@ -2333,18 +2333,18 @@ "typeString": "uint256" } ], - "id": 787, + "id": 916, "name": "execute", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 860, - "src": "2846:7:6", + "referencedDeclaration": 989, + "src": "2846:7:8", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$_t_uint256_$returns$_t_bool_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) returns (bool)" } }, - "id": 794, + "id": 923, "isConstant": false, "isLValue": false, "isPure": false, @@ -2352,26 +2352,26 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2846:46:6", + "src": "2846:46:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "2836:56:6", + "src": "2836:56:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 796, + "id": 925, "nodeType": "ExpressionStatement", - "src": "2836:56:6" + "src": "2836:56:8" } ] }, "documentation": "@dev Allows a Module to execute a Safe transaction without any further confirmations.\n @param to Destination address of module transaction.\n @param value Ether value of module transaction.\n @param data Data payload of module transaction.\n @param operation Operation type of module transaction.", - "id": 798, + "id": 927, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -2379,16 +2379,16 @@ "name": "execTransactionFromModule", "nodeType": "FunctionDefinition", "parameters": { - "id": 773, + "id": 902, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 766, + "id": 895, "name": "to", "nodeType": "VariableDeclaration", - "scope": 798, - "src": "2557:10:6", + "scope": 927, + "src": "2557:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2396,10 +2396,10 @@ "typeString": "address" }, "typeName": { - "id": 765, + "id": 894, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2557:7:6", + "src": "2557:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2410,11 +2410,11 @@ }, { "constant": false, - "id": 768, + "id": 897, "name": "value", "nodeType": "VariableDeclaration", - "scope": 798, - "src": "2569:13:6", + "scope": 927, + "src": "2569:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2422,10 +2422,10 @@ "typeString": "uint256" }, "typeName": { - "id": 767, + "id": 896, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2569:7:6", + "src": "2569:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2436,11 +2436,11 @@ }, { "constant": false, - "id": 770, + "id": 899, "name": "data", "nodeType": "VariableDeclaration", - "scope": 798, - "src": "2584:10:6", + "scope": 927, + "src": "2584:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2448,10 +2448,10 @@ "typeString": "bytes" }, "typeName": { - "id": 769, + "id": 898, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "2584:5:6", + "src": "2584:5:8", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -2462,26 +2462,26 @@ }, { "constant": false, - "id": 772, + "id": 901, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 798, - "src": "2596:24:6", + "scope": 927, + "src": "2596:24:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, "typeName": { "contractScope": null, - "id": 771, + "id": 900, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 5, - "src": "2596:14:6", + "referencedDeclaration": 29, + "src": "2596:14:8", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, @@ -2489,20 +2489,20 @@ "visibility": "internal" } ], - "src": "2556:65:6" + "src": "2556:65:8" }, "payable": false, "returnParameters": { - "id": 776, + "id": 905, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 775, + "id": 904, "name": "success", "nodeType": "VariableDeclaration", - "scope": 798, - "src": "2654:12:6", + "scope": 927, + "src": "2654:12:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2510,10 +2510,10 @@ "typeString": "bool" }, "typeName": { - "id": 774, + "id": 903, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "2654:4:6", + "src": "2654:4:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2523,42 +2523,42 @@ "visibility": "internal" } ], - "src": "2653:14:6" + "src": "2653:14:8" }, - "scope": 971, - "src": "2522:377:6", + "scope": 1100, + "src": "2522:377:8", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 859, + "id": 988, "nodeType": "Block", - "src": "3054:399:6", + "src": "3054:399:8", "statements": [ { "condition": { "argumentTypes": null, "commonType": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, - "id": 817, + "id": 946, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 813, + "id": 942, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 806, - "src": "3068:9:6", + "referencedDeclaration": 935, + "src": "3068:9:8", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, @@ -2570,32 +2570,32 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 814, + "id": 943, "name": "Enum", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6, - "src": "3081:4:6", + "referencedDeclaration": 30, + "src": "3081:4:8", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Enum_$6_$", + "typeIdentifier": "t_type$_t_contract$_Enum_$30_$", "typeString": "type(contract Enum)" } }, - "id": 815, + "id": 944, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "Operation", "nodeType": "MemberAccess", - "referencedDeclaration": 5, - "src": "3081:14:6", + "referencedDeclaration": 29, + "src": "3081:14:8", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_Operation_$5_$", + "typeIdentifier": "t_type$_t_enum$_Operation_$29_$", "typeString": "type(enum Enum.Operation)" } }, - "id": 816, + "id": 945, "isConstant": false, "isLValue": false, "isPure": true, @@ -2603,13 +2603,13 @@ "memberName": "Call", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3081:19:6", + "src": "3081:19:8", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, - "src": "3068:32:6", + "src": "3068:32:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2619,24 +2619,24 @@ "condition": { "argumentTypes": null, "commonType": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, - "id": 831, + "id": 960, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 827, + "id": 956, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 806, - "src": "3178:9:6", + "referencedDeclaration": 935, + "src": "3178:9:8", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, @@ -2648,32 +2648,32 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 828, + "id": 957, "name": "Enum", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6, - "src": "3191:4:6", + "referencedDeclaration": 30, + "src": "3191:4:8", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Enum_$6_$", + "typeIdentifier": "t_type$_t_contract$_Enum_$30_$", "typeString": "type(contract Enum)" } }, - "id": 829, + "id": 958, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "Operation", "nodeType": "MemberAccess", - "referencedDeclaration": 5, - "src": "3191:14:6", + "referencedDeclaration": 29, + "src": "3191:14:8", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_Operation_$5_$", + "typeIdentifier": "t_type$_t_enum$_Operation_$29_$", "typeString": "type(enum Enum.Operation)" } }, - "id": 830, + "id": 959, "isConstant": false, "isLValue": false, "isPure": true, @@ -2681,35 +2681,35 @@ "memberName": "DelegateCall", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3191:27:6", + "src": "3191:27:8", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, - "src": "3178:40:6", + "src": "3178:40:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { - "id": 856, + "id": 985, "nodeType": "Block", - "src": "3293:154:6", + "src": "3293:154:8", "statements": [ { "assignments": [ - 841 + 970 ], "declarations": [ { "constant": false, - "id": 841, + "id": 970, "name": "newContract", "nodeType": "VariableDeclaration", - "scope": 860, - "src": "3307:19:6", + "scope": 989, + "src": "3307:19:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2717,10 +2717,10 @@ "typeString": "address" }, "typeName": { - "id": 840, + "id": 969, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3307:7:6", + "src": "3307:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2730,18 +2730,18 @@ "visibility": "internal" } ], - "id": 845, + "id": 974, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 843, + "id": 972, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 804, - "src": "3343:4:6", + "referencedDeclaration": 933, + "src": "3343:4:8", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -2755,18 +2755,18 @@ "typeString": "bytes memory" } ], - "id": 842, + "id": 971, "name": "executeCreate", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 897, - "src": "3329:13:6", + "referencedDeclaration": 1026, + "src": "3329:13:8", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$_t_address_$", "typeString": "function (bytes memory) returns (address)" } }, - "id": 844, + "id": 973, "isConstant": false, "isLValue": false, "isPure": false, @@ -2774,31 +2774,31 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3329:19:6", + "src": "3329:19:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "3307:41:6" + "src": "3307:41:8" }, { "expression": { "argumentTypes": null, - "id": 850, + "id": 979, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 846, + "id": 975, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 811, - "src": "3362:7:6", + "referencedDeclaration": 940, + "src": "3362:7:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2812,19 +2812,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 849, + "id": 978, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 847, + "id": 976, "name": "newContract", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 841, - "src": "3372:11:6", + "referencedDeclaration": 970, + "src": "3372:11:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2835,14 +2835,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 848, + "id": 977, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3387:1:6", + "src": "3387:1:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -2850,21 +2850,21 @@ }, "value": "0" }, - "src": "3372:16:6", + "src": "3372:16:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "3362:26:6", + "src": "3362:26:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 851, + "id": 980, "nodeType": "ExpressionStatement", - "src": "3362:26:6" + "src": "3362:26:8" }, { "eventCall": { @@ -2872,12 +2872,12 @@ "arguments": [ { "argumentTypes": null, - "id": 853, + "id": 982, "name": "newContract", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 841, - "src": "3424:11:6", + "referencedDeclaration": 970, + "src": "3424:11:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2891,18 +2891,18 @@ "typeString": "address" } ], - "id": 852, + "id": 981, "name": "ContractCreation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 632, - "src": "3407:16:6", + "referencedDeclaration": 761, + "src": "3407:16:8", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, - "id": 854, + "id": 983, "isConstant": false, "isLValue": false, "isPure": false, @@ -2910,37 +2910,37 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3407:29:6", + "src": "3407:29:8", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 855, + "id": 984, "nodeType": "EmitStatement", - "src": "3402:34:6" + "src": "3402:34:8" } ] }, - "id": 857, + "id": 986, "nodeType": "IfStatement", - "src": "3174:273:6", + "src": "3174:273:8", "trueBody": { "expression": { "argumentTypes": null, - "id": 838, + "id": 967, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 832, + "id": 961, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 811, - "src": "3232:7:6", + "referencedDeclaration": 940, + "src": "3232:7:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2953,12 +2953,12 @@ "arguments": [ { "argumentTypes": null, - "id": 834, + "id": 963, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 800, - "src": "3262:2:6", + "referencedDeclaration": 929, + "src": "3262:2:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2966,12 +2966,12 @@ }, { "argumentTypes": null, - "id": 835, + "id": 964, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 804, - "src": "3266:4:6", + "referencedDeclaration": 933, + "src": "3266:4:8", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -2979,12 +2979,12 @@ }, { "argumentTypes": null, - "id": 836, + "id": 965, "name": "txGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 808, - "src": "3272:5:6", + "referencedDeclaration": 937, + "src": "3272:5:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3006,18 +3006,18 @@ "typeString": "uint256" } ], - "id": 833, + "id": 962, "name": "executeDelegateCall", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 888, - "src": "3242:19:6", + "referencedDeclaration": 1017, + "src": "3242:19:8", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,bytes memory,uint256) returns (bool)" } }, - "id": 837, + "id": 966, "isConstant": false, "isLValue": false, "isPure": false, @@ -3025,42 +3025,42 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3242:36:6", + "src": "3242:36:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "3232:46:6", + "src": "3232:46:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 839, + "id": 968, "nodeType": "ExpressionStatement", - "src": "3232:46:6" + "src": "3232:46:8" } }, - "id": 858, + "id": 987, "nodeType": "IfStatement", - "src": "3064:383:6", + "src": "3064:383:8", "trueBody": { "expression": { "argumentTypes": null, - "id": 825, + "id": 954, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 818, + "id": 947, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 811, - "src": "3114:7:6", + "referencedDeclaration": 940, + "src": "3114:7:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3073,12 +3073,12 @@ "arguments": [ { "argumentTypes": null, - "id": 820, + "id": 949, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 800, - "src": "3136:2:6", + "referencedDeclaration": 929, + "src": "3136:2:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3086,12 +3086,12 @@ }, { "argumentTypes": null, - "id": 821, + "id": 950, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 802, - "src": "3140:5:6", + "referencedDeclaration": 931, + "src": "3140:5:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3099,12 +3099,12 @@ }, { "argumentTypes": null, - "id": 822, + "id": 951, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 804, - "src": "3147:4:6", + "referencedDeclaration": 933, + "src": "3147:4:8", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -3112,12 +3112,12 @@ }, { "argumentTypes": null, - "id": 823, + "id": 952, "name": "txGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 808, - "src": "3153:5:6", + "referencedDeclaration": 937, + "src": "3153:5:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3143,18 +3143,18 @@ "typeString": "uint256" } ], - "id": 819, + "id": 948, "name": "executeCall", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 875, - "src": "3124:11:6", + "referencedDeclaration": 1004, + "src": "3124:11:8", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,uint256) returns (bool)" } }, - "id": 824, + "id": 953, "isConstant": false, "isLValue": false, "isPure": false, @@ -3162,27 +3162,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3124:35:6", + "src": "3124:35:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "3114:45:6", + "src": "3114:45:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 826, + "id": 955, "nodeType": "ExpressionStatement", - "src": "3114:45:6" + "src": "3114:45:8" } } ] }, "documentation": null, - "id": 860, + "id": 989, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -3190,16 +3190,16 @@ "name": "execute", "nodeType": "FunctionDefinition", "parameters": { - "id": 809, + "id": 938, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 800, + "id": 929, "name": "to", "nodeType": "VariableDeclaration", - "scope": 860, - "src": "2922:10:6", + "scope": 989, + "src": "2922:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3207,10 +3207,10 @@ "typeString": "address" }, "typeName": { - "id": 799, + "id": 928, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2922:7:6", + "src": "2922:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3221,11 +3221,11 @@ }, { "constant": false, - "id": 802, + "id": 931, "name": "value", "nodeType": "VariableDeclaration", - "scope": 860, - "src": "2934:13:6", + "scope": 989, + "src": "2934:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3233,10 +3233,10 @@ "typeString": "uint256" }, "typeName": { - "id": 801, + "id": 930, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2934:7:6", + "src": "2934:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3247,11 +3247,11 @@ }, { "constant": false, - "id": 804, + "id": 933, "name": "data", "nodeType": "VariableDeclaration", - "scope": 860, - "src": "2949:10:6", + "scope": 989, + "src": "2949:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3259,10 +3259,10 @@ "typeString": "bytes" }, "typeName": { - "id": 803, + "id": 932, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "2949:5:6", + "src": "2949:5:8", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -3273,26 +3273,26 @@ }, { "constant": false, - "id": 806, + "id": 935, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 860, - "src": "2961:24:6", + "scope": 989, + "src": "2961:24:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, "typeName": { "contractScope": null, - "id": 805, + "id": 934, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 5, - "src": "2961:14:6", + "referencedDeclaration": 29, + "src": "2961:14:8", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, @@ -3301,11 +3301,11 @@ }, { "constant": false, - "id": 808, + "id": 937, "name": "txGas", "nodeType": "VariableDeclaration", - "scope": 860, - "src": "2987:13:6", + "scope": 989, + "src": "2987:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3313,10 +3313,10 @@ "typeString": "uint256" }, "typeName": { - "id": 807, + "id": 936, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2987:7:6", + "src": "2987:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3326,20 +3326,20 @@ "visibility": "internal" } ], - "src": "2921:80:6" + "src": "2921:80:8" }, "payable": false, "returnParameters": { - "id": 812, + "id": 941, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 811, + "id": 940, "name": "success", "nodeType": "VariableDeclaration", - "scope": 860, - "src": "3036:12:6", + "scope": 989, + "src": "3036:12:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3347,10 +3347,10 @@ "typeString": "bool" }, "typeName": { - "id": 810, + "id": 939, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "3036:4:6", + "src": "3036:4:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3360,86 +3360,86 @@ "visibility": "internal" } ], - "src": "3035:14:6" + "src": "3035:14:8" }, - "scope": 971, - "src": "2905:548:6", + "scope": 1100, + "src": "2905:548:8", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 874, + "id": 1003, "nodeType": "Block", - "src": "3586:182:6", + "src": "3586:182:8", "statements": [ { "externalReferences": [ { "data": { - "declaration": 866, + "declaration": 995, "isOffset": false, "isSlot": false, - "src": "3740:4:6", + "src": "3740:4:8", "valueSize": 1 } }, { "data": { - "declaration": 866, + "declaration": 995, "isOffset": false, "isSlot": false, - "src": "3721:4:6", + "src": "3721:4:8", "valueSize": 1 } }, { "success": { - "declaration": 871, + "declaration": 1000, "isOffset": false, "isSlot": false, - "src": "3683:7:6", + "src": "3683:7:8", "valueSize": 1 } }, { "txGas": { - "declaration": 868, + "declaration": 997, "isOffset": false, "isSlot": false, - "src": "3699:5:6", + "src": "3699:5:8", "valueSize": 1 } }, { "to": { - "declaration": 862, + "declaration": 991, "isOffset": false, "isSlot": false, - "src": "3706:2:6", + "src": "3706:2:8", "valueSize": 1 } }, { "value": { - "declaration": 864, + "declaration": 993, "isOffset": false, "isSlot": false, - "src": "3710:5:6", + "src": "3710:5:8", "valueSize": 1 } } ], - "id": 873, + "id": 1002, "nodeType": "InlineAssembly", "operations": "{\n success := call(txGas, to, value, add(data, 0x20), mload(data), 0, 0)\n}", - "src": "3660:108:6" + "src": "3660:108:8" } ] }, "documentation": null, - "id": 875, + "id": 1004, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -3447,16 +3447,16 @@ "name": "executeCall", "nodeType": "FunctionDefinition", "parameters": { - "id": 869, + "id": 998, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 862, + "id": 991, "name": "to", "nodeType": "VariableDeclaration", - "scope": 875, - "src": "3480:10:6", + "scope": 1004, + "src": "3480:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3464,10 +3464,10 @@ "typeString": "address" }, "typeName": { - "id": 861, + "id": 990, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3480:7:6", + "src": "3480:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3478,11 +3478,11 @@ }, { "constant": false, - "id": 864, + "id": 993, "name": "value", "nodeType": "VariableDeclaration", - "scope": 875, - "src": "3492:13:6", + "scope": 1004, + "src": "3492:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3490,10 +3490,10 @@ "typeString": "uint256" }, "typeName": { - "id": 863, + "id": 992, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3492:7:6", + "src": "3492:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3504,11 +3504,11 @@ }, { "constant": false, - "id": 866, + "id": 995, "name": "data", "nodeType": "VariableDeclaration", - "scope": 875, - "src": "3507:10:6", + "scope": 1004, + "src": "3507:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3516,10 +3516,10 @@ "typeString": "bytes" }, "typeName": { - "id": 865, + "id": 994, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "3507:5:6", + "src": "3507:5:8", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -3530,11 +3530,11 @@ }, { "constant": false, - "id": 868, + "id": 997, "name": "txGas", "nodeType": "VariableDeclaration", - "scope": 875, - "src": "3519:13:6", + "scope": 1004, + "src": "3519:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3542,10 +3542,10 @@ "typeString": "uint256" }, "typeName": { - "id": 867, + "id": 996, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3519:7:6", + "src": "3519:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3555,20 +3555,20 @@ "visibility": "internal" } ], - "src": "3479:54:6" + "src": "3479:54:8" }, "payable": false, "returnParameters": { - "id": 872, + "id": 1001, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 871, + "id": 1000, "name": "success", "nodeType": "VariableDeclaration", - "scope": 875, - "src": "3568:12:6", + "scope": 1004, + "src": "3568:12:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3576,10 +3576,10 @@ "typeString": "bool" }, "typeName": { - "id": 870, + "id": 999, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "3568:4:6", + "src": "3568:4:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3589,77 +3589,77 @@ "visibility": "internal" } ], - "src": "3567:14:6" + "src": "3567:14:8" }, - "scope": 971, - "src": "3459:309:6", + "scope": 1100, + "src": "3459:309:8", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 887, + "id": 1016, "nodeType": "Block", - "src": "3894:183:6", + "src": "3894:183:8", "statements": [ { "externalReferences": [ { "data": { - "declaration": 879, + "declaration": 1008, "isOffset": false, "isSlot": false, - "src": "4049:4:6", + "src": "4049:4:8", "valueSize": 1 } }, { "data": { - "declaration": 879, + "declaration": 1008, "isOffset": false, "isSlot": false, - "src": "4030:4:6", + "src": "4030:4:8", "valueSize": 1 } }, { "success": { - "declaration": 884, + "declaration": 1013, "isOffset": false, "isSlot": false, - "src": "3991:7:6", + "src": "3991:7:8", "valueSize": 1 } }, { "txGas": { - "declaration": 881, + "declaration": 1010, "isOffset": false, "isSlot": false, - "src": "4015:5:6", + "src": "4015:5:8", "valueSize": 1 } }, { "to": { - "declaration": 877, + "declaration": 1006, "isOffset": false, "isSlot": false, - "src": "4022:2:6", + "src": "4022:2:8", "valueSize": 1 } } ], - "id": 886, + "id": 1015, "nodeType": "InlineAssembly", "operations": "{\n success := delegatecall(txGas, to, add(data, 0x20), mload(data), 0, 0)\n}", - "src": "3968:109:6" + "src": "3968:109:8" } ] }, "documentation": null, - "id": 888, + "id": 1017, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -3667,16 +3667,16 @@ "name": "executeDelegateCall", "nodeType": "FunctionDefinition", "parameters": { - "id": 882, + "id": 1011, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 877, + "id": 1006, "name": "to", "nodeType": "VariableDeclaration", - "scope": 888, - "src": "3803:10:6", + "scope": 1017, + "src": "3803:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3684,10 +3684,10 @@ "typeString": "address" }, "typeName": { - "id": 876, + "id": 1005, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3803:7:6", + "src": "3803:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3698,11 +3698,11 @@ }, { "constant": false, - "id": 879, + "id": 1008, "name": "data", "nodeType": "VariableDeclaration", - "scope": 888, - "src": "3815:10:6", + "scope": 1017, + "src": "3815:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3710,10 +3710,10 @@ "typeString": "bytes" }, "typeName": { - "id": 878, + "id": 1007, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "3815:5:6", + "src": "3815:5:8", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -3724,11 +3724,11 @@ }, { "constant": false, - "id": 881, + "id": 1010, "name": "txGas", "nodeType": "VariableDeclaration", - "scope": 888, - "src": "3827:13:6", + "scope": 1017, + "src": "3827:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3736,10 +3736,10 @@ "typeString": "uint256" }, "typeName": { - "id": 880, + "id": 1009, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3827:7:6", + "src": "3827:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3749,20 +3749,20 @@ "visibility": "internal" } ], - "src": "3802:39:6" + "src": "3802:39:8" }, "payable": false, "returnParameters": { - "id": 885, + "id": 1014, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 884, + "id": 1013, "name": "success", "nodeType": "VariableDeclaration", - "scope": 888, - "src": "3876:12:6", + "scope": 1017, + "src": "3876:12:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3770,10 +3770,10 @@ "typeString": "bool" }, "typeName": { - "id": 883, + "id": 1012, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "3876:4:6", + "src": "3876:4:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3783,59 +3783,59 @@ "visibility": "internal" } ], - "src": "3875:14:6" + "src": "3875:14:8" }, - "scope": 971, - "src": "3774:303:6", + "scope": 1100, + "src": "3774:303:8", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 896, + "id": 1025, "nodeType": "Block", - "src": "4177:167:6", + "src": "4177:167:8", "statements": [ { "externalReferences": [ { "newContract": { - "declaration": 893, + "declaration": 1022, "isOffset": false, "isSlot": false, - "src": "4274:11:6", + "src": "4274:11:8", "valueSize": 1 } }, { "data": { - "declaration": 890, + "declaration": 1019, "isOffset": false, "isSlot": false, - "src": "4303:4:6", + "src": "4303:4:8", "valueSize": 1 } }, { "data": { - "declaration": 890, + "declaration": 1019, "isOffset": false, "isSlot": false, - "src": "4322:4:6", + "src": "4322:4:8", "valueSize": 1 } } ], - "id": 895, + "id": 1024, "nodeType": "InlineAssembly", "operations": "{\n newContract := create(0, add(data, 0x20), mload(data))\n}", - "src": "4251:93:6" + "src": "4251:93:8" } ] }, "documentation": null, - "id": 897, + "id": 1026, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -3843,16 +3843,16 @@ "name": "executeCreate", "nodeType": "FunctionDefinition", "parameters": { - "id": 891, + "id": 1020, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 890, + "id": 1019, "name": "data", "nodeType": "VariableDeclaration", - "scope": 897, - "src": "4106:10:6", + "scope": 1026, + "src": "4106:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3860,10 +3860,10 @@ "typeString": "bytes" }, "typeName": { - "id": 889, + "id": 1018, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "4106:5:6", + "src": "4106:5:8", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -3873,20 +3873,20 @@ "visibility": "internal" } ], - "src": "4105:12:6" + "src": "4105:12:8" }, "payable": false, "returnParameters": { - "id": 894, + "id": 1023, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 893, + "id": 1022, "name": "newContract", "nodeType": "VariableDeclaration", - "scope": 897, - "src": "4152:19:6", + "scope": 1026, + "src": "4152:19:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3894,10 +3894,10 @@ "typeString": "address" }, "typeName": { - "id": 892, + "id": 1021, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4152:7:6", + "src": "4152:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3907,32 +3907,32 @@ "visibility": "internal" } ], - "src": "4151:21:6" + "src": "4151:21:8" }, - "scope": 971, - "src": "4083:261:6", + "scope": 1100, + "src": "4083:261:8", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 969, + "id": 1098, "nodeType": "Block", - "src": "4505:656:6", + "src": "4505:656:8", "statements": [ { "assignments": [ - 904 + 1033 ], "declarations": [ { "constant": false, - "id": 904, + "id": 1033, "name": "moduleCount", "nodeType": "VariableDeclaration", - "scope": 970, - "src": "4549:19:6", + "scope": 1099, + "src": "4549:19:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3940,10 +3940,10 @@ "typeString": "uint256" }, "typeName": { - "id": 903, + "id": 1032, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4549:7:6", + "src": "4549:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3953,18 +3953,18 @@ "visibility": "internal" } ], - "id": 906, + "id": 1035, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 905, + "id": 1034, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4571:1:6", + "src": "4571:1:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3973,20 +3973,20 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "4549:23:6" + "src": "4549:23:8" }, { "assignments": [ - 908 + 1037 ], "declarations": [ { "constant": false, - "id": 908, + "id": 1037, "name": "currentModule", "nodeType": "VariableDeclaration", - "scope": 970, - "src": "4582:21:6", + "scope": 1099, + "src": "4582:21:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3994,10 +3994,10 @@ "typeString": "address" }, "typeName": { - "id": 907, + "id": 1036, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4582:7:6", + "src": "4582:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4007,31 +4007,31 @@ "visibility": "internal" } ], - "id": 912, + "id": 1041, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 909, + "id": 1038, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 647, - "src": "4606:7:6", + "referencedDeclaration": 776, + "src": "4606:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 911, + "id": 1040, "indexExpression": { "argumentTypes": null, - "id": 910, + "id": 1039, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 643, - "src": "4614:16:6", + "referencedDeclaration": 772, + "src": "4614:16:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4042,37 +4042,37 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4606:25:6", + "src": "4606:25:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "4582:49:6" + "src": "4582:49:8" }, { "body": { - "id": 925, + "id": 1054, "nodeType": "Block", - "src": "4682:91:6", + "src": "4682:91:8", "statements": [ { "expression": { "argumentTypes": null, - "id": 920, + "id": 1049, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 916, + "id": 1045, "name": "currentModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 908, - "src": "4696:13:6", + "referencedDeclaration": 1037, + "src": "4696:13:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4084,26 +4084,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 917, + "id": 1046, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 647, - "src": "4712:7:6", + "referencedDeclaration": 776, + "src": "4712:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 919, + "id": 1048, "indexExpression": { "argumentTypes": null, - "id": 918, + "id": 1047, "name": "currentModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 908, - "src": "4720:13:6", + "referencedDeclaration": 1037, + "src": "4720:13:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4114,26 +4114,26 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4712:22:6", + "src": "4712:22:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4696:38:6", + "src": "4696:38:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 921, + "id": 1050, "nodeType": "ExpressionStatement", - "src": "4696:38:6" + "src": "4696:38:8" }, { "expression": { "argumentTypes": null, - "id": 923, + "id": 1052, "isConstant": false, "isLValue": false, "isPure": false, @@ -4141,15 +4141,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "4748:14:6", + "src": "4748:14:8", "subExpression": { "argumentTypes": null, - "id": 922, + "id": 1051, "name": "moduleCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 904, - "src": "4748:11:6", + "referencedDeclaration": 1033, + "src": "4748:11:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4160,9 +4160,9 @@ "typeString": "uint256" } }, - "id": 924, + "id": 1053, "nodeType": "ExpressionStatement", - "src": "4748:14:6" + "src": "4748:14:8" } ] }, @@ -4172,19 +4172,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 915, + "id": 1044, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 913, + "id": 1042, "name": "currentModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 908, - "src": "4647:13:6", + "referencedDeclaration": 1037, + "src": "4647:13:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4194,39 +4194,39 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 914, + "id": 1043, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 643, - "src": "4664:16:6", + "referencedDeclaration": 772, + "src": "4664:16:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4647:33:6", + "src": "4647:33:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 926, + "id": 1055, "nodeType": "WhileStatement", - "src": "4641:132:6" + "src": "4641:132:8" }, { "assignments": [ - 930 + 1059 ], "declarations": [ { "constant": false, - "id": 930, + "id": 1059, "name": "array", "nodeType": "VariableDeclaration", - "scope": 970, - "src": "4782:22:6", + "scope": 1099, + "src": "4782:22:8", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -4235,19 +4235,19 @@ }, "typeName": { "baseType": { - "id": 928, + "id": 1057, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4782:7:6", + "src": "4782:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 929, + "id": 1058, "length": null, "nodeType": "ArrayTypeName", - "src": "4782:9:6", + "src": "4782:9:8", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -4257,18 +4257,18 @@ "visibility": "internal" } ], - "id": 936, + "id": 1065, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 934, + "id": 1063, "name": "moduleCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 904, - "src": "4821:11:6", + "referencedDeclaration": 1033, + "src": "4821:11:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4282,39 +4282,39 @@ "typeString": "uint256" } ], - "id": 933, + "id": 1062, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", - "src": "4807:13:6", + "src": "4807:13:8", "typeDescriptions": { "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_$", "typeString": "function (uint256) pure returns (address[] memory)" }, "typeName": { "baseType": { - "id": 931, + "id": 1060, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4811:7:6", + "src": "4811:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 932, + "id": 1061, "length": null, "nodeType": "ArrayTypeName", - "src": "4811:9:6", + "src": "4811:9:8", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" } } }, - "id": 935, + "id": 1064, "isConstant": false, "isLValue": false, "isPure": false, @@ -4322,31 +4322,31 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4807:26:6", + "src": "4807:26:8", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory", "typeString": "address[] memory" } }, "nodeType": "VariableDeclarationStatement", - "src": "4782:51:6" + "src": "4782:51:8" }, { "expression": { "argumentTypes": null, - "id": 939, + "id": 1068, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 937, + "id": 1066, "name": "moduleCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 904, - "src": "4877:11:6", + "referencedDeclaration": 1033, + "src": "4877:11:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4357,14 +4357,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "30", - "id": 938, + "id": 1067, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4891:1:6", + "src": "4891:1:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -4372,32 +4372,32 @@ }, "value": "0" }, - "src": "4877:15:6", + "src": "4877:15:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 940, + "id": 1069, "nodeType": "ExpressionStatement", - "src": "4877:15:6" + "src": "4877:15:8" }, { "expression": { "argumentTypes": null, - "id": 945, + "id": 1074, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 941, + "id": 1070, "name": "currentModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 908, - "src": "4902:13:6", + "referencedDeclaration": 1037, + "src": "4902:13:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4409,26 +4409,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 942, + "id": 1071, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 647, - "src": "4918:7:6", + "referencedDeclaration": 776, + "src": "4918:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 944, + "id": 1073, "indexExpression": { "argumentTypes": null, - "id": 943, + "id": 1072, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 643, - "src": "4926:16:6", + "referencedDeclaration": 772, + "src": "4926:16:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4439,32 +4439,32 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4918:25:6", + "src": "4918:25:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4902:41:6", + "src": "4902:41:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 946, + "id": 1075, "nodeType": "ExpressionStatement", - "src": "4902:41:6" + "src": "4902:41:8" }, { "body": { - "id": 965, + "id": 1094, "nodeType": "Block", - "src": "4994:139:6", + "src": "4994:139:8", "statements": [ { "expression": { "argumentTypes": null, - "id": 954, + "id": 1083, "isConstant": false, "isLValue": false, "isPure": false, @@ -4473,26 +4473,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 950, + "id": 1079, "name": "array", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 930, - "src": "5008:5:6", + "referencedDeclaration": 1059, + "src": "5008:5:8", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 952, + "id": 1081, "indexExpression": { "argumentTypes": null, - "id": 951, + "id": 1080, "name": "moduleCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 904, - "src": "5014:11:6", + "referencedDeclaration": 1033, + "src": "5014:11:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4503,7 +4503,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "5008:18:6", + "src": "5008:18:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4513,43 +4513,43 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 953, + "id": 1082, "name": "currentModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 908, - "src": "5029:13:6", + "referencedDeclaration": 1037, + "src": "5029:13:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "5008:34:6", + "src": "5008:34:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 955, + "id": 1084, "nodeType": "ExpressionStatement", - "src": "5008:34:6" + "src": "5008:34:8" }, { "expression": { "argumentTypes": null, - "id": 960, + "id": 1089, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 956, + "id": 1085, "name": "currentModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 908, - "src": "5056:13:6", + "referencedDeclaration": 1037, + "src": "5056:13:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4561,26 +4561,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 957, + "id": 1086, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 647, - "src": "5072:7:6", + "referencedDeclaration": 776, + "src": "5072:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 959, + "id": 1088, "indexExpression": { "argumentTypes": null, - "id": 958, + "id": 1087, "name": "currentModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 908, - "src": "5080:13:6", + "referencedDeclaration": 1037, + "src": "5080:13:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4591,26 +4591,26 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "5072:22:6", + "src": "5072:22:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "5056:38:6", + "src": "5056:38:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 961, + "id": 1090, "nodeType": "ExpressionStatement", - "src": "5056:38:6" + "src": "5056:38:8" }, { "expression": { "argumentTypes": null, - "id": 963, + "id": 1092, "isConstant": false, "isLValue": false, "isPure": false, @@ -4618,15 +4618,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "5108:14:6", + "src": "5108:14:8", "subExpression": { "argumentTypes": null, - "id": 962, + "id": 1091, "name": "moduleCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 904, - "src": "5108:11:6", + "referencedDeclaration": 1033, + "src": "5108:11:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4637,9 +4637,9 @@ "typeString": "uint256" } }, - "id": 964, + "id": 1093, "nodeType": "ExpressionStatement", - "src": "5108:14:6" + "src": "5108:14:8" } ] }, @@ -4649,19 +4649,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 949, + "id": 1078, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 947, + "id": 1076, "name": "currentModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 908, - "src": "4959:13:6", + "referencedDeclaration": 1037, + "src": "4959:13:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4671,50 +4671,50 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 948, + "id": 1077, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 643, - "src": "4976:16:6", + "referencedDeclaration": 772, + "src": "4976:16:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4959:33:6", + "src": "4959:33:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 966, + "id": 1095, "nodeType": "WhileStatement", - "src": "4953:180:6" + "src": "4953:180:8" }, { "expression": { "argumentTypes": null, - "id": 967, + "id": 1096, "name": "array", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 930, - "src": "5149:5:6", + "referencedDeclaration": 1059, + "src": "5149:5:8", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "functionReturnParameters": 902, - "id": 968, + "functionReturnParameters": 1031, + "id": 1097, "nodeType": "Return", - "src": "5142:12:6" + "src": "5142:12:8" } ] }, "documentation": "@dev Returns array of modules.\n @return Array of modules.", - "id": 970, + "id": 1099, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -4722,23 +4722,23 @@ "name": "getModules", "nodeType": "FunctionDefinition", "parameters": { - "id": 898, + "id": 1027, "nodeType": "ParameterList", "parameters": [], - "src": "4442:2:6" + "src": "4442:2:8" }, "payable": false, "returnParameters": { - "id": 902, + "id": 1031, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 901, + "id": 1030, "name": "", "nodeType": "VariableDeclaration", - "scope": 970, - "src": "4490:9:6", + "scope": 1099, + "src": "4490:9:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4747,19 +4747,19 @@ }, "typeName": { "baseType": { - "id": 899, + "id": 1028, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4490:7:6", + "src": "4490:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 900, + "id": 1029, "length": null, "nodeType": "ArrayTypeName", - "src": "4490:9:6", + "src": "4490:9:8", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -4769,71 +4769,71 @@ "visibility": "internal" } ], - "src": "4489:11:6" + "src": "4489:11:8" }, - "scope": 971, - "src": "4423:738:6", + "scope": 1100, + "src": "4423:738:8", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 972, - "src": "303:4860:6" + "scope": 1101, + "src": "303:4860:8" } ], - "src": "0:5164:6" + "src": "0:5164:8" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ModuleManager.sol", "exportedSymbols": { "ModuleManager": [ - 971 + 1100 ] }, - "id": 972, + "id": 1101, "nodeType": "SourceUnit", "nodes": [ { - "id": 623, + "id": 752, "literals": [ "solidity", "0.4", - ".23" + ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:6" + "src": "0:23:8" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "file": "./Module.sol", - "id": 624, + "id": 753, "nodeType": "ImportDirective", - "scope": 972, - "sourceUnit": 622, - "src": "24:22:6", + "scope": 1101, + "sourceUnit": 751, + "src": "24:22:8", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/MasterCopy.sol", "file": "./MasterCopy.sol", - "id": 625, + "id": 754, "nodeType": "ImportDirective", - "scope": 972, - "sourceUnit": 581, - "src": "47:26:6", + "scope": 1101, + "sourceUnit": 653, + "src": "47:26:8", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Enum.sol", "file": "./Enum.sol", - "id": 626, + "id": 755, "nodeType": "ImportDirective", - "scope": 972, - "sourceUnit": 7, - "src": "74:20:6", + "scope": 1101, + "sourceUnit": 31, + "src": "74:20:8", "symbolAliases": [], "unitAlias": "" }, @@ -4843,31 +4843,31 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 627, + "id": 756, "name": "SelfAuthorized", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1359, - "src": "329:14:6", + "referencedDeclaration": 1619, + "src": "329:14:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_SelfAuthorized_$1359", + "typeIdentifier": "t_contract$_SelfAuthorized_$1619", "typeString": "contract SelfAuthorized" } }, - "id": 628, + "id": 757, "nodeType": "InheritanceSpecifier", - "src": "329:14:6" + "src": "329:14:8" } ], "contractDependencies": [ - 1359 + 1619 ], "contractKind": "contract", "documentation": "@title Module Manager - A contract that manages modules that can execute transactions via this contract\n @author Stefan George - \n @author Richard Meissner - ", "fullyImplemented": true, - "id": 971, + "id": 1100, "linearizedBaseContracts": [ - 971, - 1359 + 1100, + 1619 ], "name": "ModuleManager", "nodeType": "ContractDefinition", @@ -4875,21 +4875,21 @@ { "anonymous": false, "documentation": null, - "id": 632, + "id": 761, "name": "ContractCreation", "nodeType": "EventDefinition", "parameters": { - "id": 631, + "id": 760, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 630, + "id": 759, "indexed": false, "name": "newContract", "nodeType": "VariableDeclaration", - "scope": 632, - "src": "374:19:6", + "scope": 761, + "src": "374:19:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4897,10 +4897,10 @@ "typeString": "address" }, "typeName": { - "id": 629, + "id": 758, "name": "address", "nodeType": "ElementaryTypeName", - "src": "374:7:6", + "src": "374:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4910,17 +4910,17 @@ "visibility": "internal" } ], - "src": "373:21:6" + "src": "373:21:8" }, - "src": "351:44:6" + "src": "351:44:8" }, { "constant": true, - "id": 635, + "id": 764, "name": "NAME", "nodeType": "VariableDeclaration", - "scope": 971, - "src": "401:46:6", + "scope": 1100, + "src": "401:46:8", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -4928,10 +4928,10 @@ "typeString": "string" }, "typeName": { - "id": 633, + "id": 762, "name": "string", "nodeType": "ElementaryTypeName", - "src": "401:6:6", + "src": "401:6:8", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -4940,14 +4940,14 @@ "value": { "argumentTypes": null, "hexValue": "4d6f64756c65204d616e61676572", - "id": 634, + "id": 763, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "431:16:6", + "src": "431:16:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_12aaa44a1bae367a1e1d9881f5d80283afded6373c2a1ca586db420944084efb", @@ -4959,11 +4959,11 @@ }, { "constant": true, - "id": 638, + "id": 767, "name": "VERSION", "nodeType": "VariableDeclaration", - "scope": 971, - "src": "453:40:6", + "scope": 1100, + "src": "453:40:8", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -4971,10 +4971,10 @@ "typeString": "string" }, "typeName": { - "id": 636, + "id": 765, "name": "string", "nodeType": "ElementaryTypeName", - "src": "453:6:6", + "src": "453:6:8", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -4983,14 +4983,14 @@ "value": { "argumentTypes": null, "hexValue": "302e302e31", - "id": 637, + "id": 766, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "486:7:6", + "src": "486:7:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", @@ -5002,11 +5002,11 @@ }, { "constant": true, - "id": 643, + "id": 772, "name": "SENTINEL_MODULES", "nodeType": "VariableDeclaration", - "scope": 971, - "src": "499:55:6", + "scope": 1100, + "src": "499:55:8", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -5014,10 +5014,10 @@ "typeString": "address" }, "typeName": { - "id": 639, + "id": 768, "name": "address", "nodeType": "ElementaryTypeName", - "src": "499:7:6", + "src": "499:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5029,14 +5029,14 @@ { "argumentTypes": null, "hexValue": "307831", - "id": 641, + "id": 770, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "550:3:6", + "src": "550:3:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -5052,20 +5052,20 @@ "typeString": "int_const 1" } ], - "id": 640, + "id": 769, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "542:7:6", + "src": "542:7:8", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 642, + "id": 771, "isConstant": false, "isLValue": false, "isPure": true, @@ -5073,7 +5073,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "542:12:6", + "src": "542:12:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5083,11 +5083,11 @@ }, { "constant": false, - "id": 647, + "id": 776, "name": "modules", "nodeType": "VariableDeclaration", - "scope": 971, - "src": "561:45:6", + "scope": 1100, + "src": "561:45:8", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -5095,28 +5095,28 @@ "typeString": "mapping(address => address)" }, "typeName": { - "id": 646, + "id": 775, "keyType": { - "id": 644, + "id": 773, "name": "address", "nodeType": "ElementaryTypeName", - "src": "570:7:6", + "src": "570:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "561:28:6", + "src": "561:28:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" }, "valueType": { - "id": 645, + "id": 774, "name": "address", "nodeType": "ElementaryTypeName", - "src": "581:7:6", + "src": "581:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5128,13 +5128,13 @@ }, { "body": { - "id": 650, + "id": 779, "nodeType": "Block", - "src": "721:8:6", + "src": "721:8:8", "statements": [] }, "documentation": "@dev Fallback function accepts Ether transactions.", - "id": 651, + "id": 780, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -5142,29 +5142,29 @@ "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 648, + "id": 777, "nodeType": "ParameterList", "parameters": [], - "src": "681:2:6" + "src": "681:2:8" }, "payable": true, "returnParameters": { - "id": 649, + "id": 778, "nodeType": "ParameterList", "parameters": [], - "src": "721:0:6" + "src": "721:0:8" }, - "scope": 971, - "src": "672:57:6", + "scope": 1100, + "src": "672:57:8", "stateMutability": "payable", "superFunction": null, "visibility": "external" }, { "body": { - "id": 685, + "id": 814, "nodeType": "Block", - "src": "802:266:6", + "src": "802:266:8", "statements": [ { "expression": { @@ -5176,7 +5176,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 663, + "id": 792, "isConstant": false, "isLValue": false, "isPure": false, @@ -5185,26 +5185,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 659, + "id": 788, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 647, - "src": "820:7:6", + "referencedDeclaration": 776, + "src": "820:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 661, + "id": 790, "indexExpression": { "argumentTypes": null, - "id": 660, + "id": 789, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 643, - "src": "828:16:6", + "referencedDeclaration": 772, + "src": "828:16:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5215,7 +5215,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "820:25:6", + "src": "820:25:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5226,14 +5226,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 662, + "id": 791, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "849:1:6", + "src": "849:1:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -5241,7 +5241,7 @@ }, "value": "0" }, - "src": "820:30:6", + "src": "820:30:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5255,21 +5255,21 @@ "typeString": "bool" } ], - "id": 658, + "id": 787, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "812:7:6", + "referencedDeclaration": 2601, + "src": "812:7:8", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 664, + "id": 793, "isConstant": false, "isLValue": false, "isPure": false, @@ -5277,20 +5277,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "812:39:6", + "src": "812:39:8", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 665, + "id": 794, "nodeType": "ExpressionStatement", - "src": "812:39:6" + "src": "812:39:8" }, { "expression": { "argumentTypes": null, - "id": 670, + "id": 799, "isConstant": false, "isLValue": false, "isPure": false, @@ -5299,26 +5299,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 666, + "id": 795, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 647, - "src": "861:7:6", + "referencedDeclaration": 776, + "src": "861:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 668, + "id": 797, "indexExpression": { "argumentTypes": null, - "id": 667, + "id": 796, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 643, - "src": "869:16:6", + "referencedDeclaration": 772, + "src": "869:16:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5329,7 +5329,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "861:25:6", + "src": "861:25:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5339,26 +5339,26 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 669, + "id": 798, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 643, - "src": "889:16:6", + "referencedDeclaration": 772, + "src": "889:16:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "861:44:6", + "src": "861:44:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 671, + "id": 800, "nodeType": "ExpressionStatement", - "src": "861:44:6" + "src": "861:44:8" }, { "condition": { @@ -5367,19 +5367,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 674, + "id": 803, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 672, + "id": 801, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 653, - "src": "919:2:6", + "referencedDeclaration": 782, + "src": "919:2:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5390,14 +5390,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 673, + "id": 802, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "925:1:6", + "src": "925:1:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -5405,16 +5405,16 @@ }, "value": "0" }, - "src": "919:7:6", + "src": "919:7:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 684, + "id": 813, "nodeType": "IfStatement", - "src": "915:146:6", + "src": "915:146:8", "trueBody": { "expression": { "argumentTypes": null, @@ -5424,12 +5424,12 @@ "arguments": [ { "argumentTypes": null, - "id": 677, + "id": 806, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 653, - "src": "1040:2:6", + "referencedDeclaration": 782, + "src": "1040:2:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5437,12 +5437,12 @@ }, { "argumentTypes": null, - "id": 678, + "id": 807, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 655, - "src": "1044:4:6", + "referencedDeclaration": 784, + "src": "1044:4:8", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -5453,18 +5453,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 679, + "id": 808, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2389, - "src": "1050:7:6", + "referencedDeclaration": 2591, + "src": "1050:7:8", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 680, + "id": 809, "isConstant": false, "isLValue": false, "isPure": false, @@ -5472,7 +5472,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1050:9:6", + "src": "1050:9:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5494,18 +5494,18 @@ "typeString": "uint256" } ], - "id": 676, + "id": 805, "name": "executeDelegateCall", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 888, - "src": "1020:19:6", + "referencedDeclaration": 1017, + "src": "1020:19:8", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,bytes memory,uint256) returns (bool)" } }, - "id": 681, + "id": 810, "isConstant": false, "isLValue": false, "isPure": false, @@ -5513,7 +5513,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1020:40:6", + "src": "1020:40:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5527,21 +5527,21 @@ "typeString": "bool" } ], - "id": 675, + "id": 804, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "1012:7:6", + "referencedDeclaration": 2601, + "src": "1012:7:8", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 682, + "id": 811, "isConstant": false, "isLValue": false, "isPure": false, @@ -5549,21 +5549,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1012:49:6", + "src": "1012:49:8", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 683, + "id": 812, "nodeType": "ExpressionStatement", - "src": "1012:49:6" + "src": "1012:49:8" } } ] }, "documentation": null, - "id": 686, + "id": 815, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -5571,16 +5571,16 @@ "name": "setupModules", "nodeType": "FunctionDefinition", "parameters": { - "id": 656, + "id": 785, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 653, + "id": 782, "name": "to", "nodeType": "VariableDeclaration", - "scope": 686, - "src": "757:10:6", + "scope": 815, + "src": "757:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5588,10 +5588,10 @@ "typeString": "address" }, "typeName": { - "id": 652, + "id": 781, "name": "address", "nodeType": "ElementaryTypeName", - "src": "757:7:6", + "src": "757:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5602,11 +5602,11 @@ }, { "constant": false, - "id": 655, + "id": 784, "name": "data", "nodeType": "VariableDeclaration", - "scope": 686, - "src": "769:10:6", + "scope": 815, + "src": "769:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5614,10 +5614,10 @@ "typeString": "bytes" }, "typeName": { - "id": 654, + "id": 783, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "769:5:6", + "src": "769:5:8", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -5627,26 +5627,26 @@ "visibility": "internal" } ], - "src": "756:24:6" + "src": "756:24:8" }, "payable": false, "returnParameters": { - "id": 657, + "id": 786, "nodeType": "ParameterList", "parameters": [], - "src": "802:0:6" + "src": "802:0:8" }, - "scope": 971, - "src": "735:333:6", + "scope": 1100, + "src": "735:333:8", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 729, + "id": 858, "nodeType": "Block", - "src": "1310:316:6", + "src": "1310:316:8", "statements": [ { "expression": { @@ -5658,7 +5658,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 704, + "id": 833, "isConstant": false, "isLValue": false, "isPure": false, @@ -5669,7 +5669,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 698, + "id": 827, "isConstant": false, "isLValue": false, "isPure": false, @@ -5679,14 +5679,14 @@ "arguments": [ { "argumentTypes": null, - "id": 695, + "id": 824, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 688, - "src": "1390:6:6", + "referencedDeclaration": 817, + "src": "1390:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } } @@ -5694,24 +5694,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } ], - "id": 694, + "id": 823, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1382:7:6", + "src": "1382:7:8", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 696, + "id": 825, "isConstant": false, "isLValue": false, "isPure": false, @@ -5719,7 +5719,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1382:15:6", + "src": "1382:15:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5730,14 +5730,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 697, + "id": 826, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1401:1:6", + "src": "1401:1:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -5745,7 +5745,7 @@ }, "value": "0" }, - "src": "1382:20:6", + "src": "1382:20:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5759,7 +5759,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 703, + "id": 832, "isConstant": false, "isLValue": false, "isPure": false, @@ -5769,14 +5769,14 @@ "arguments": [ { "argumentTypes": null, - "id": 700, + "id": 829, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 688, - "src": "1414:6:6", + "referencedDeclaration": 817, + "src": "1414:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } } @@ -5784,24 +5784,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } ], - "id": 699, + "id": 828, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1406:7:6", + "src": "1406:7:8", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 701, + "id": 830, "isConstant": false, "isLValue": false, "isPure": false, @@ -5809,7 +5809,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1406:15:6", + "src": "1406:15:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5819,24 +5819,24 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 702, + "id": 831, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 643, - "src": "1425:16:6", + "referencedDeclaration": 772, + "src": "1425:16:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1406:35:6", + "src": "1406:35:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "1382:59:6", + "src": "1382:59:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5850,21 +5850,21 @@ "typeString": "bool" } ], - "id": 693, + "id": 822, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "1374:7:6", + "referencedDeclaration": 2601, + "src": "1374:7:8", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 705, + "id": 834, "isConstant": false, "isLValue": false, "isPure": false, @@ -5872,15 +5872,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1374:68:6", + "src": "1374:68:8", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 706, + "id": 835, "nodeType": "ExpressionStatement", - "src": "1374:68:6" + "src": "1374:68:8" }, { "expression": { @@ -5892,7 +5892,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 712, + "id": 841, "isConstant": false, "isLValue": false, "isPure": false, @@ -5901,28 +5901,28 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 708, + "id": 837, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 647, - "src": "1501:7:6", + "referencedDeclaration": 776, + "src": "1501:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 710, + "id": 839, "indexExpression": { "argumentTypes": null, - "id": 709, + "id": 838, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 688, - "src": "1509:6:6", + "referencedDeclaration": 817, + "src": "1509:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } }, @@ -5931,7 +5931,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1501:15:6", + "src": "1501:15:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5942,14 +5942,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 711, + "id": 840, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1520:1:6", + "src": "1520:1:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -5957,7 +5957,7 @@ }, "value": "0" }, - "src": "1501:20:6", + "src": "1501:20:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5971,21 +5971,21 @@ "typeString": "bool" } ], - "id": 707, + "id": 836, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "1493:7:6", + "referencedDeclaration": 2601, + "src": "1493:7:8", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 713, + "id": 842, "isConstant": false, "isLValue": false, "isPure": false, @@ -5993,20 +5993,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1493:29:6", + "src": "1493:29:8", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 714, + "id": 843, "nodeType": "ExpressionStatement", - "src": "1493:29:6" + "src": "1493:29:8" }, { "expression": { "argumentTypes": null, - "id": 721, + "id": 850, "isConstant": false, "isLValue": false, "isPure": false, @@ -6015,28 +6015,28 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 715, + "id": 844, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 647, - "src": "1532:7:6", + "referencedDeclaration": 776, + "src": "1532:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 717, + "id": 846, "indexExpression": { "argumentTypes": null, - "id": 716, + "id": 845, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 688, - "src": "1540:6:6", + "referencedDeclaration": 817, + "src": "1540:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } }, @@ -6045,7 +6045,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1532:15:6", + "src": "1532:15:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6057,26 +6057,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 718, + "id": 847, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 647, - "src": "1550:7:6", + "referencedDeclaration": 776, + "src": "1550:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 720, + "id": 849, "indexExpression": { "argumentTypes": null, - "id": 719, + "id": 848, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 643, - "src": "1558:16:6", + "referencedDeclaration": 772, + "src": "1558:16:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6087,26 +6087,26 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1550:25:6", + "src": "1550:25:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1532:43:6", + "src": "1532:43:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 722, + "id": 851, "nodeType": "ExpressionStatement", - "src": "1532:43:6" + "src": "1532:43:8" }, { "expression": { "argumentTypes": null, - "id": 727, + "id": 856, "isConstant": false, "isLValue": false, "isPure": false, @@ -6115,26 +6115,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 723, + "id": 852, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 647, - "src": "1585:7:6", + "referencedDeclaration": 776, + "src": "1585:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 725, + "id": 854, "indexExpression": { "argumentTypes": null, - "id": 724, + "id": 853, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 643, - "src": "1593:16:6", + "referencedDeclaration": 772, + "src": "1593:16:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6145,7 +6145,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1585:25:6", + "src": "1585:25:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6155,83 +6155,83 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 726, + "id": 855, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 688, - "src": "1613:6:6", + "referencedDeclaration": 817, + "src": "1613:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } }, - "src": "1585:34:6", + "src": "1585:34:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 728, + "id": 857, "nodeType": "ExpressionStatement", - "src": "1585:34:6" + "src": "1585:34:8" } ] }, "documentation": "@dev Allows to add a module to the whitelist.\n This can only be done via a Safe transaction.\n @param module Module to be whitelisted.", - "id": 730, + "id": 859, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 691, + "id": 820, "modifierName": { "argumentTypes": null, - "id": 690, + "id": 819, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1358, - "src": "1295:10:6", + "referencedDeclaration": 1618, + "src": "1295:10:8", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1295:10:6" + "src": "1295:10:8" } ], "name": "enableModule", "nodeType": "FunctionDefinition", "parameters": { - "id": 689, + "id": 818, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 688, + "id": 817, "name": "module", "nodeType": "VariableDeclaration", - "scope": 730, - "src": "1257:13:6", + "scope": 859, + "src": "1257:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" }, "typeName": { "contractScope": null, - "id": 687, + "id": 816, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 621, - "src": "1257:6:6", + "referencedDeclaration": 750, + "src": "1257:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } }, @@ -6239,26 +6239,26 @@ "visibility": "internal" } ], - "src": "1256:15:6" + "src": "1256:15:8" }, "payable": false, "returnParameters": { - "id": 692, + "id": 821, "nodeType": "ParameterList", "parameters": [], - "src": "1310:0:6" + "src": "1310:0:8" }, - "scope": 971, - "src": "1235:391:6", + "scope": 1100, + "src": "1235:391:8", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 763, + "id": 892, "nodeType": "Block", - "src": "1982:204:6", + "src": "1982:204:8", "statements": [ { "expression": { @@ -6270,7 +6270,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 746, + "id": 875, "isConstant": false, "isLValue": false, "isPure": false, @@ -6279,28 +6279,28 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 740, + "id": 869, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 647, - "src": "2064:7:6", + "referencedDeclaration": 776, + "src": "2064:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 742, + "id": 871, "indexExpression": { "argumentTypes": null, - "id": 741, + "id": 870, "name": "prevModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 732, - "src": "2072:10:6", + "referencedDeclaration": 861, + "src": "2072:10:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } }, @@ -6309,7 +6309,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2064:19:6", + "src": "2064:19:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6322,14 +6322,14 @@ "arguments": [ { "argumentTypes": null, - "id": 744, + "id": 873, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 734, - "src": "2095:6:6", + "referencedDeclaration": 863, + "src": "2095:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } } @@ -6337,24 +6337,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } ], - "id": 743, + "id": 872, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2087:7:6", + "src": "2087:7:8", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 745, + "id": 874, "isConstant": false, "isLValue": false, "isPure": false, @@ -6362,13 +6362,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2087:15:6", + "src": "2087:15:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2064:38:6", + "src": "2064:38:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6382,21 +6382,21 @@ "typeString": "bool" } ], - "id": 739, + "id": 868, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "2056:7:6", + "referencedDeclaration": 2601, + "src": "2056:7:8", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 747, + "id": 876, "isConstant": false, "isLValue": false, "isPure": false, @@ -6404,20 +6404,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2056:47:6", + "src": "2056:47:8", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 748, + "id": 877, "nodeType": "ExpressionStatement", - "src": "2056:47:6" + "src": "2056:47:8" }, { "expression": { "argumentTypes": null, - "id": 755, + "id": 884, "isConstant": false, "isLValue": false, "isPure": false, @@ -6426,28 +6426,28 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 749, + "id": 878, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 647, - "src": "2113:7:6", + "referencedDeclaration": 776, + "src": "2113:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 751, + "id": 880, "indexExpression": { "argumentTypes": null, - "id": 750, + "id": 879, "name": "prevModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 732, - "src": "2121:10:6", + "referencedDeclaration": 861, + "src": "2121:10:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } }, @@ -6456,7 +6456,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2113:19:6", + "src": "2113:19:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6468,28 +6468,28 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 752, + "id": 881, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 647, - "src": "2135:7:6", + "referencedDeclaration": 776, + "src": "2135:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 754, + "id": 883, "indexExpression": { "argumentTypes": null, - "id": 753, + "id": 882, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 734, - "src": "2143:6:6", + "referencedDeclaration": 863, + "src": "2143:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } }, @@ -6498,26 +6498,26 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2135:15:6", + "src": "2135:15:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2113:37:6", + "src": "2113:37:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 756, + "id": 885, "nodeType": "ExpressionStatement", - "src": "2113:37:6" + "src": "2113:37:8" }, { "expression": { "argumentTypes": null, - "id": 761, + "id": 890, "isConstant": false, "isLValue": false, "isPure": false, @@ -6526,28 +6526,28 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 757, + "id": 886, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 647, - "src": "2160:7:6", + "referencedDeclaration": 776, + "src": "2160:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 759, + "id": 888, "indexExpression": { "argumentTypes": null, - "id": 758, + "id": 887, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 734, - "src": "2168:6:6", + "referencedDeclaration": 863, + "src": "2168:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } }, @@ -6556,7 +6556,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2160:15:6", + "src": "2160:15:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6567,14 +6567,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "30", - "id": 760, + "id": 889, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2178:1:6", + "src": "2178:1:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -6582,72 +6582,72 @@ }, "value": "0" }, - "src": "2160:19:6", + "src": "2160:19:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 762, + "id": 891, "nodeType": "ExpressionStatement", - "src": "2160:19:6" + "src": "2160:19:8" } ] }, "documentation": "@dev Allows to remove a module from the whitelist.\n This can only be done via a Safe transaction.\n @param prevModule Module that pointed to the module to be removed in the linked list\n @param module Module to be removed.", - "id": 764, + "id": 893, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 737, + "id": 866, "modifierName": { "argumentTypes": null, - "id": 736, + "id": 865, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1358, - "src": "1967:10:6", + "referencedDeclaration": 1618, + "src": "1967:10:8", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1967:10:6" + "src": "1967:10:8" } ], "name": "disableModule", "nodeType": "FunctionDefinition", "parameters": { - "id": 735, + "id": 864, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 732, + "id": 861, "name": "prevModule", "nodeType": "VariableDeclaration", - "scope": 764, - "src": "1910:17:6", + "scope": 893, + "src": "1910:17:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" }, "typeName": { "contractScope": null, - "id": 731, + "id": 860, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 621, - "src": "1910:6:6", + "referencedDeclaration": 750, + "src": "1910:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } }, @@ -6656,26 +6656,26 @@ }, { "constant": false, - "id": 734, + "id": 863, "name": "module", "nodeType": "VariableDeclaration", - "scope": 764, - "src": "1929:13:6", + "scope": 893, + "src": "1929:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" }, "typeName": { "contractScope": null, - "id": 733, + "id": 862, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 621, - "src": "1929:6:6", + "referencedDeclaration": 750, + "src": "1929:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } }, @@ -6683,26 +6683,26 @@ "visibility": "internal" } ], - "src": "1909:34:6" + "src": "1909:34:8" }, "payable": false, "returnParameters": { - "id": 738, + "id": 867, "nodeType": "ParameterList", "parameters": [], - "src": "1982:0:6" + "src": "1982:0:8" }, - "scope": 971, - "src": "1887:299:6", + "scope": 1100, + "src": "1887:299:8", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 797, + "id": 926, "nodeType": "Block", - "src": "2672:227:6", + "src": "2672:227:8", "statements": [ { "expression": { @@ -6714,7 +6714,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 783, + "id": 912, "isConstant": false, "isLValue": false, "isPure": false, @@ -6723,34 +6723,34 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 778, + "id": 907, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 647, - "src": "2739:7:6", + "referencedDeclaration": 776, + "src": "2739:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 781, + "id": 910, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 779, + "id": 908, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2396, - "src": "2747:3:6", + "referencedDeclaration": 2598, + "src": "2747:3:8", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 780, + "id": 909, "isConstant": false, "isLValue": false, "isPure": false, @@ -6758,7 +6758,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2747:10:6", + "src": "2747:10:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6769,7 +6769,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2739:19:6", + "src": "2739:19:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6780,14 +6780,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 782, + "id": 911, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2762:1:6", + "src": "2762:1:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -6795,7 +6795,7 @@ }, "value": "0" }, - "src": "2739:24:6", + "src": "2739:24:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6809,21 +6809,21 @@ "typeString": "bool" } ], - "id": 777, + "id": 906, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "2731:7:6", + "referencedDeclaration": 2601, + "src": "2731:7:8", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 784, + "id": 913, "isConstant": false, "isLValue": false, "isPure": false, @@ -6831,32 +6831,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2731:33:6", + "src": "2731:33:8", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 785, + "id": 914, "nodeType": "ExpressionStatement", - "src": "2731:33:6" + "src": "2731:33:8" }, { "expression": { "argumentTypes": null, - "id": 795, + "id": 924, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 786, + "id": 915, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 775, - "src": "2836:7:6", + "referencedDeclaration": 904, + "src": "2836:7:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6869,12 +6869,12 @@ "arguments": [ { "argumentTypes": null, - "id": 788, + "id": 917, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 766, - "src": "2854:2:6", + "referencedDeclaration": 895, + "src": "2854:2:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6882,12 +6882,12 @@ }, { "argumentTypes": null, - "id": 789, + "id": 918, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 768, - "src": "2858:5:6", + "referencedDeclaration": 897, + "src": "2858:5:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6895,12 +6895,12 @@ }, { "argumentTypes": null, - "id": 790, + "id": 919, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 770, - "src": "2865:4:6", + "referencedDeclaration": 899, + "src": "2865:4:8", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -6908,14 +6908,14 @@ }, { "argumentTypes": null, - "id": 791, + "id": 920, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 772, - "src": "2871:9:6", + "referencedDeclaration": 901, + "src": "2871:9:8", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, @@ -6924,18 +6924,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 792, + "id": 921, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2389, - "src": "2882:7:6", + "referencedDeclaration": 2591, + "src": "2882:7:8", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 793, + "id": 922, "isConstant": false, "isLValue": false, "isPure": false, @@ -6943,7 +6943,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2882:9:6", + "src": "2882:9:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6965,7 +6965,7 @@ "typeString": "bytes memory" }, { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, { @@ -6973,18 +6973,18 @@ "typeString": "uint256" } ], - "id": 787, + "id": 916, "name": "execute", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 860, - "src": "2846:7:6", + "referencedDeclaration": 989, + "src": "2846:7:8", "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$_t_uint256_$returns$_t_bool_$", + "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) returns (bool)" } }, - "id": 794, + "id": 923, "isConstant": false, "isLValue": false, "isPure": false, @@ -6992,26 +6992,26 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2846:46:6", + "src": "2846:46:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "2836:56:6", + "src": "2836:56:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 796, + "id": 925, "nodeType": "ExpressionStatement", - "src": "2836:56:6" + "src": "2836:56:8" } ] }, "documentation": "@dev Allows a Module to execute a Safe transaction without any further confirmations.\n @param to Destination address of module transaction.\n @param value Ether value of module transaction.\n @param data Data payload of module transaction.\n @param operation Operation type of module transaction.", - "id": 798, + "id": 927, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -7019,16 +7019,16 @@ "name": "execTransactionFromModule", "nodeType": "FunctionDefinition", "parameters": { - "id": 773, + "id": 902, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 766, + "id": 895, "name": "to", "nodeType": "VariableDeclaration", - "scope": 798, - "src": "2557:10:6", + "scope": 927, + "src": "2557:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7036,10 +7036,10 @@ "typeString": "address" }, "typeName": { - "id": 765, + "id": 894, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2557:7:6", + "src": "2557:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7050,11 +7050,11 @@ }, { "constant": false, - "id": 768, + "id": 897, "name": "value", "nodeType": "VariableDeclaration", - "scope": 798, - "src": "2569:13:6", + "scope": 927, + "src": "2569:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7062,10 +7062,10 @@ "typeString": "uint256" }, "typeName": { - "id": 767, + "id": 896, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2569:7:6", + "src": "2569:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7076,11 +7076,11 @@ }, { "constant": false, - "id": 770, + "id": 899, "name": "data", "nodeType": "VariableDeclaration", - "scope": 798, - "src": "2584:10:6", + "scope": 927, + "src": "2584:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7088,10 +7088,10 @@ "typeString": "bytes" }, "typeName": { - "id": 769, + "id": 898, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "2584:5:6", + "src": "2584:5:8", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -7102,26 +7102,26 @@ }, { "constant": false, - "id": 772, + "id": 901, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 798, - "src": "2596:24:6", + "scope": 927, + "src": "2596:24:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, "typeName": { "contractScope": null, - "id": 771, + "id": 900, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 5, - "src": "2596:14:6", + "referencedDeclaration": 29, + "src": "2596:14:8", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, @@ -7129,20 +7129,20 @@ "visibility": "internal" } ], - "src": "2556:65:6" + "src": "2556:65:8" }, "payable": false, "returnParameters": { - "id": 776, + "id": 905, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 775, + "id": 904, "name": "success", "nodeType": "VariableDeclaration", - "scope": 798, - "src": "2654:12:6", + "scope": 927, + "src": "2654:12:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7150,10 +7150,10 @@ "typeString": "bool" }, "typeName": { - "id": 774, + "id": 903, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "2654:4:6", + "src": "2654:4:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7163,42 +7163,42 @@ "visibility": "internal" } ], - "src": "2653:14:6" + "src": "2653:14:8" }, - "scope": 971, - "src": "2522:377:6", + "scope": 1100, + "src": "2522:377:8", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 859, + "id": 988, "nodeType": "Block", - "src": "3054:399:6", + "src": "3054:399:8", "statements": [ { "condition": { "argumentTypes": null, "commonType": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, - "id": 817, + "id": 946, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 813, + "id": 942, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 806, - "src": "3068:9:6", + "referencedDeclaration": 935, + "src": "3068:9:8", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, @@ -7210,32 +7210,32 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 814, + "id": 943, "name": "Enum", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6, - "src": "3081:4:6", + "referencedDeclaration": 30, + "src": "3081:4:8", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Enum_$6_$", + "typeIdentifier": "t_type$_t_contract$_Enum_$30_$", "typeString": "type(contract Enum)" } }, - "id": 815, + "id": 944, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "Operation", "nodeType": "MemberAccess", - "referencedDeclaration": 5, - "src": "3081:14:6", + "referencedDeclaration": 29, + "src": "3081:14:8", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_Operation_$5_$", + "typeIdentifier": "t_type$_t_enum$_Operation_$29_$", "typeString": "type(enum Enum.Operation)" } }, - "id": 816, + "id": 945, "isConstant": false, "isLValue": false, "isPure": true, @@ -7243,13 +7243,13 @@ "memberName": "Call", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3081:19:6", + "src": "3081:19:8", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, - "src": "3068:32:6", + "src": "3068:32:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7259,24 +7259,24 @@ "condition": { "argumentTypes": null, "commonType": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, - "id": 831, + "id": 960, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 827, + "id": 956, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 806, - "src": "3178:9:6", + "referencedDeclaration": 935, + "src": "3178:9:8", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, @@ -7288,32 +7288,32 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 828, + "id": 957, "name": "Enum", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6, - "src": "3191:4:6", + "referencedDeclaration": 30, + "src": "3191:4:8", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Enum_$6_$", + "typeIdentifier": "t_type$_t_contract$_Enum_$30_$", "typeString": "type(contract Enum)" } }, - "id": 829, + "id": 958, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "Operation", "nodeType": "MemberAccess", - "referencedDeclaration": 5, - "src": "3191:14:6", + "referencedDeclaration": 29, + "src": "3191:14:8", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_Operation_$5_$", + "typeIdentifier": "t_type$_t_enum$_Operation_$29_$", "typeString": "type(enum Enum.Operation)" } }, - "id": 830, + "id": 959, "isConstant": false, "isLValue": false, "isPure": true, @@ -7321,35 +7321,35 @@ "memberName": "DelegateCall", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3191:27:6", + "src": "3191:27:8", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, - "src": "3178:40:6", + "src": "3178:40:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { - "id": 856, + "id": 985, "nodeType": "Block", - "src": "3293:154:6", + "src": "3293:154:8", "statements": [ { "assignments": [ - 841 + 970 ], "declarations": [ { "constant": false, - "id": 841, + "id": 970, "name": "newContract", "nodeType": "VariableDeclaration", - "scope": 860, - "src": "3307:19:6", + "scope": 989, + "src": "3307:19:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7357,10 +7357,10 @@ "typeString": "address" }, "typeName": { - "id": 840, + "id": 969, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3307:7:6", + "src": "3307:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7370,18 +7370,18 @@ "visibility": "internal" } ], - "id": 845, + "id": 974, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 843, + "id": 972, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 804, - "src": "3343:4:6", + "referencedDeclaration": 933, + "src": "3343:4:8", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -7395,18 +7395,18 @@ "typeString": "bytes memory" } ], - "id": 842, + "id": 971, "name": "executeCreate", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 897, - "src": "3329:13:6", + "referencedDeclaration": 1026, + "src": "3329:13:8", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$_t_address_$", "typeString": "function (bytes memory) returns (address)" } }, - "id": 844, + "id": 973, "isConstant": false, "isLValue": false, "isPure": false, @@ -7414,31 +7414,31 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3329:19:6", + "src": "3329:19:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "3307:41:6" + "src": "3307:41:8" }, { "expression": { "argumentTypes": null, - "id": 850, + "id": 979, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 846, + "id": 975, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 811, - "src": "3362:7:6", + "referencedDeclaration": 940, + "src": "3362:7:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7452,19 +7452,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 849, + "id": 978, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 847, + "id": 976, "name": "newContract", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 841, - "src": "3372:11:6", + "referencedDeclaration": 970, + "src": "3372:11:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7475,14 +7475,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 848, + "id": 977, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3387:1:6", + "src": "3387:1:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -7490,21 +7490,21 @@ }, "value": "0" }, - "src": "3372:16:6", + "src": "3372:16:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "3362:26:6", + "src": "3362:26:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 851, + "id": 980, "nodeType": "ExpressionStatement", - "src": "3362:26:6" + "src": "3362:26:8" }, { "eventCall": { @@ -7512,12 +7512,12 @@ "arguments": [ { "argumentTypes": null, - "id": 853, + "id": 982, "name": "newContract", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 841, - "src": "3424:11:6", + "referencedDeclaration": 970, + "src": "3424:11:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7531,18 +7531,18 @@ "typeString": "address" } ], - "id": 852, + "id": 981, "name": "ContractCreation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 632, - "src": "3407:16:6", + "referencedDeclaration": 761, + "src": "3407:16:8", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, - "id": 854, + "id": 983, "isConstant": false, "isLValue": false, "isPure": false, @@ -7550,37 +7550,37 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3407:29:6", + "src": "3407:29:8", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 855, + "id": 984, "nodeType": "EmitStatement", - "src": "3402:34:6" + "src": "3402:34:8" } ] }, - "id": 857, + "id": 986, "nodeType": "IfStatement", - "src": "3174:273:6", + "src": "3174:273:8", "trueBody": { "expression": { "argumentTypes": null, - "id": 838, + "id": 967, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 832, + "id": 961, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 811, - "src": "3232:7:6", + "referencedDeclaration": 940, + "src": "3232:7:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7593,12 +7593,12 @@ "arguments": [ { "argumentTypes": null, - "id": 834, + "id": 963, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 800, - "src": "3262:2:6", + "referencedDeclaration": 929, + "src": "3262:2:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7606,12 +7606,12 @@ }, { "argumentTypes": null, - "id": 835, + "id": 964, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 804, - "src": "3266:4:6", + "referencedDeclaration": 933, + "src": "3266:4:8", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -7619,12 +7619,12 @@ }, { "argumentTypes": null, - "id": 836, + "id": 965, "name": "txGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 808, - "src": "3272:5:6", + "referencedDeclaration": 937, + "src": "3272:5:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7646,18 +7646,18 @@ "typeString": "uint256" } ], - "id": 833, + "id": 962, "name": "executeDelegateCall", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 888, - "src": "3242:19:6", + "referencedDeclaration": 1017, + "src": "3242:19:8", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,bytes memory,uint256) returns (bool)" } }, - "id": 837, + "id": 966, "isConstant": false, "isLValue": false, "isPure": false, @@ -7665,42 +7665,42 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3242:36:6", + "src": "3242:36:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "3232:46:6", + "src": "3232:46:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 839, + "id": 968, "nodeType": "ExpressionStatement", - "src": "3232:46:6" + "src": "3232:46:8" } }, - "id": 858, + "id": 987, "nodeType": "IfStatement", - "src": "3064:383:6", + "src": "3064:383:8", "trueBody": { "expression": { "argumentTypes": null, - "id": 825, + "id": 954, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 818, + "id": 947, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 811, - "src": "3114:7:6", + "referencedDeclaration": 940, + "src": "3114:7:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7713,12 +7713,12 @@ "arguments": [ { "argumentTypes": null, - "id": 820, + "id": 949, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 800, - "src": "3136:2:6", + "referencedDeclaration": 929, + "src": "3136:2:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7726,12 +7726,12 @@ }, { "argumentTypes": null, - "id": 821, + "id": 950, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 802, - "src": "3140:5:6", + "referencedDeclaration": 931, + "src": "3140:5:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7739,12 +7739,12 @@ }, { "argumentTypes": null, - "id": 822, + "id": 951, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 804, - "src": "3147:4:6", + "referencedDeclaration": 933, + "src": "3147:4:8", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -7752,12 +7752,12 @@ }, { "argumentTypes": null, - "id": 823, + "id": 952, "name": "txGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 808, - "src": "3153:5:6", + "referencedDeclaration": 937, + "src": "3153:5:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7783,18 +7783,18 @@ "typeString": "uint256" } ], - "id": 819, + "id": 948, "name": "executeCall", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 875, - "src": "3124:11:6", + "referencedDeclaration": 1004, + "src": "3124:11:8", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,uint256) returns (bool)" } }, - "id": 824, + "id": 953, "isConstant": false, "isLValue": false, "isPure": false, @@ -7802,27 +7802,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3124:35:6", + "src": "3124:35:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "3114:45:6", + "src": "3114:45:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 826, + "id": 955, "nodeType": "ExpressionStatement", - "src": "3114:45:6" + "src": "3114:45:8" } } ] }, "documentation": null, - "id": 860, + "id": 989, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -7830,16 +7830,16 @@ "name": "execute", "nodeType": "FunctionDefinition", "parameters": { - "id": 809, + "id": 938, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 800, + "id": 929, "name": "to", "nodeType": "VariableDeclaration", - "scope": 860, - "src": "2922:10:6", + "scope": 989, + "src": "2922:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7847,10 +7847,10 @@ "typeString": "address" }, "typeName": { - "id": 799, + "id": 928, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2922:7:6", + "src": "2922:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7861,11 +7861,11 @@ }, { "constant": false, - "id": 802, + "id": 931, "name": "value", "nodeType": "VariableDeclaration", - "scope": 860, - "src": "2934:13:6", + "scope": 989, + "src": "2934:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7873,10 +7873,10 @@ "typeString": "uint256" }, "typeName": { - "id": 801, + "id": 930, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2934:7:6", + "src": "2934:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7887,11 +7887,11 @@ }, { "constant": false, - "id": 804, + "id": 933, "name": "data", "nodeType": "VariableDeclaration", - "scope": 860, - "src": "2949:10:6", + "scope": 989, + "src": "2949:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7899,10 +7899,10 @@ "typeString": "bytes" }, "typeName": { - "id": 803, + "id": 932, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "2949:5:6", + "src": "2949:5:8", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -7913,26 +7913,26 @@ }, { "constant": false, - "id": 806, + "id": 935, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 860, - "src": "2961:24:6", + "scope": 989, + "src": "2961:24:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, "typeName": { "contractScope": null, - "id": 805, + "id": 934, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 5, - "src": "2961:14:6", + "referencedDeclaration": 29, + "src": "2961:14:8", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, @@ -7941,11 +7941,11 @@ }, { "constant": false, - "id": 808, + "id": 937, "name": "txGas", "nodeType": "VariableDeclaration", - "scope": 860, - "src": "2987:13:6", + "scope": 989, + "src": "2987:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7953,10 +7953,10 @@ "typeString": "uint256" }, "typeName": { - "id": 807, + "id": 936, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2987:7:6", + "src": "2987:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7966,20 +7966,20 @@ "visibility": "internal" } ], - "src": "2921:80:6" + "src": "2921:80:8" }, "payable": false, "returnParameters": { - "id": 812, + "id": 941, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 811, + "id": 940, "name": "success", "nodeType": "VariableDeclaration", - "scope": 860, - "src": "3036:12:6", + "scope": 989, + "src": "3036:12:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7987,10 +7987,10 @@ "typeString": "bool" }, "typeName": { - "id": 810, + "id": 939, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "3036:4:6", + "src": "3036:4:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8000,86 +8000,86 @@ "visibility": "internal" } ], - "src": "3035:14:6" + "src": "3035:14:8" }, - "scope": 971, - "src": "2905:548:6", + "scope": 1100, + "src": "2905:548:8", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 874, + "id": 1003, "nodeType": "Block", - "src": "3586:182:6", + "src": "3586:182:8", "statements": [ { "externalReferences": [ { "data": { - "declaration": 866, + "declaration": 995, "isOffset": false, "isSlot": false, - "src": "3740:4:6", + "src": "3740:4:8", "valueSize": 1 } }, { "data": { - "declaration": 866, + "declaration": 995, "isOffset": false, "isSlot": false, - "src": "3721:4:6", + "src": "3721:4:8", "valueSize": 1 } }, { "success": { - "declaration": 871, + "declaration": 1000, "isOffset": false, "isSlot": false, - "src": "3683:7:6", + "src": "3683:7:8", "valueSize": 1 } }, { "txGas": { - "declaration": 868, + "declaration": 997, "isOffset": false, "isSlot": false, - "src": "3699:5:6", + "src": "3699:5:8", "valueSize": 1 } }, { "to": { - "declaration": 862, + "declaration": 991, "isOffset": false, "isSlot": false, - "src": "3706:2:6", + "src": "3706:2:8", "valueSize": 1 } }, { "value": { - "declaration": 864, + "declaration": 993, "isOffset": false, "isSlot": false, - "src": "3710:5:6", + "src": "3710:5:8", "valueSize": 1 } } ], - "id": 873, + "id": 1002, "nodeType": "InlineAssembly", "operations": "{\n success := call(txGas, to, value, add(data, 0x20), mload(data), 0, 0)\n}", - "src": "3660:108:6" + "src": "3660:108:8" } ] }, "documentation": null, - "id": 875, + "id": 1004, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -8087,16 +8087,16 @@ "name": "executeCall", "nodeType": "FunctionDefinition", "parameters": { - "id": 869, + "id": 998, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 862, + "id": 991, "name": "to", "nodeType": "VariableDeclaration", - "scope": 875, - "src": "3480:10:6", + "scope": 1004, + "src": "3480:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8104,10 +8104,10 @@ "typeString": "address" }, "typeName": { - "id": 861, + "id": 990, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3480:7:6", + "src": "3480:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8118,11 +8118,11 @@ }, { "constant": false, - "id": 864, + "id": 993, "name": "value", "nodeType": "VariableDeclaration", - "scope": 875, - "src": "3492:13:6", + "scope": 1004, + "src": "3492:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8130,10 +8130,10 @@ "typeString": "uint256" }, "typeName": { - "id": 863, + "id": 992, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3492:7:6", + "src": "3492:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8144,11 +8144,11 @@ }, { "constant": false, - "id": 866, + "id": 995, "name": "data", "nodeType": "VariableDeclaration", - "scope": 875, - "src": "3507:10:6", + "scope": 1004, + "src": "3507:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8156,10 +8156,10 @@ "typeString": "bytes" }, "typeName": { - "id": 865, + "id": 994, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "3507:5:6", + "src": "3507:5:8", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -8170,11 +8170,11 @@ }, { "constant": false, - "id": 868, + "id": 997, "name": "txGas", "nodeType": "VariableDeclaration", - "scope": 875, - "src": "3519:13:6", + "scope": 1004, + "src": "3519:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8182,10 +8182,10 @@ "typeString": "uint256" }, "typeName": { - "id": 867, + "id": 996, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3519:7:6", + "src": "3519:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8195,20 +8195,20 @@ "visibility": "internal" } ], - "src": "3479:54:6" + "src": "3479:54:8" }, "payable": false, "returnParameters": { - "id": 872, + "id": 1001, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 871, + "id": 1000, "name": "success", "nodeType": "VariableDeclaration", - "scope": 875, - "src": "3568:12:6", + "scope": 1004, + "src": "3568:12:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8216,10 +8216,10 @@ "typeString": "bool" }, "typeName": { - "id": 870, + "id": 999, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "3568:4:6", + "src": "3568:4:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8229,77 +8229,77 @@ "visibility": "internal" } ], - "src": "3567:14:6" + "src": "3567:14:8" }, - "scope": 971, - "src": "3459:309:6", + "scope": 1100, + "src": "3459:309:8", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 887, + "id": 1016, "nodeType": "Block", - "src": "3894:183:6", + "src": "3894:183:8", "statements": [ { "externalReferences": [ { "data": { - "declaration": 879, + "declaration": 1008, "isOffset": false, "isSlot": false, - "src": "4049:4:6", + "src": "4049:4:8", "valueSize": 1 } }, { "data": { - "declaration": 879, + "declaration": 1008, "isOffset": false, "isSlot": false, - "src": "4030:4:6", + "src": "4030:4:8", "valueSize": 1 } }, { "success": { - "declaration": 884, + "declaration": 1013, "isOffset": false, "isSlot": false, - "src": "3991:7:6", + "src": "3991:7:8", "valueSize": 1 } }, { "txGas": { - "declaration": 881, + "declaration": 1010, "isOffset": false, "isSlot": false, - "src": "4015:5:6", + "src": "4015:5:8", "valueSize": 1 } }, { "to": { - "declaration": 877, + "declaration": 1006, "isOffset": false, "isSlot": false, - "src": "4022:2:6", + "src": "4022:2:8", "valueSize": 1 } } ], - "id": 886, + "id": 1015, "nodeType": "InlineAssembly", "operations": "{\n success := delegatecall(txGas, to, add(data, 0x20), mload(data), 0, 0)\n}", - "src": "3968:109:6" + "src": "3968:109:8" } ] }, "documentation": null, - "id": 888, + "id": 1017, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -8307,16 +8307,16 @@ "name": "executeDelegateCall", "nodeType": "FunctionDefinition", "parameters": { - "id": 882, + "id": 1011, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 877, + "id": 1006, "name": "to", "nodeType": "VariableDeclaration", - "scope": 888, - "src": "3803:10:6", + "scope": 1017, + "src": "3803:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8324,10 +8324,10 @@ "typeString": "address" }, "typeName": { - "id": 876, + "id": 1005, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3803:7:6", + "src": "3803:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8338,11 +8338,11 @@ }, { "constant": false, - "id": 879, + "id": 1008, "name": "data", "nodeType": "VariableDeclaration", - "scope": 888, - "src": "3815:10:6", + "scope": 1017, + "src": "3815:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8350,10 +8350,10 @@ "typeString": "bytes" }, "typeName": { - "id": 878, + "id": 1007, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "3815:5:6", + "src": "3815:5:8", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -8364,11 +8364,11 @@ }, { "constant": false, - "id": 881, + "id": 1010, "name": "txGas", "nodeType": "VariableDeclaration", - "scope": 888, - "src": "3827:13:6", + "scope": 1017, + "src": "3827:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8376,10 +8376,10 @@ "typeString": "uint256" }, "typeName": { - "id": 880, + "id": 1009, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3827:7:6", + "src": "3827:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8389,20 +8389,20 @@ "visibility": "internal" } ], - "src": "3802:39:6" + "src": "3802:39:8" }, "payable": false, "returnParameters": { - "id": 885, + "id": 1014, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 884, + "id": 1013, "name": "success", "nodeType": "VariableDeclaration", - "scope": 888, - "src": "3876:12:6", + "scope": 1017, + "src": "3876:12:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8410,10 +8410,10 @@ "typeString": "bool" }, "typeName": { - "id": 883, + "id": 1012, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "3876:4:6", + "src": "3876:4:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8423,59 +8423,59 @@ "visibility": "internal" } ], - "src": "3875:14:6" + "src": "3875:14:8" }, - "scope": 971, - "src": "3774:303:6", + "scope": 1100, + "src": "3774:303:8", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 896, + "id": 1025, "nodeType": "Block", - "src": "4177:167:6", + "src": "4177:167:8", "statements": [ { "externalReferences": [ { "newContract": { - "declaration": 893, + "declaration": 1022, "isOffset": false, "isSlot": false, - "src": "4274:11:6", + "src": "4274:11:8", "valueSize": 1 } }, { "data": { - "declaration": 890, + "declaration": 1019, "isOffset": false, "isSlot": false, - "src": "4303:4:6", + "src": "4303:4:8", "valueSize": 1 } }, { "data": { - "declaration": 890, + "declaration": 1019, "isOffset": false, "isSlot": false, - "src": "4322:4:6", + "src": "4322:4:8", "valueSize": 1 } } ], - "id": 895, + "id": 1024, "nodeType": "InlineAssembly", "operations": "{\n newContract := create(0, add(data, 0x20), mload(data))\n}", - "src": "4251:93:6" + "src": "4251:93:8" } ] }, "documentation": null, - "id": 897, + "id": 1026, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -8483,16 +8483,16 @@ "name": "executeCreate", "nodeType": "FunctionDefinition", "parameters": { - "id": 891, + "id": 1020, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 890, + "id": 1019, "name": "data", "nodeType": "VariableDeclaration", - "scope": 897, - "src": "4106:10:6", + "scope": 1026, + "src": "4106:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8500,10 +8500,10 @@ "typeString": "bytes" }, "typeName": { - "id": 889, + "id": 1018, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "4106:5:6", + "src": "4106:5:8", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -8513,20 +8513,20 @@ "visibility": "internal" } ], - "src": "4105:12:6" + "src": "4105:12:8" }, "payable": false, "returnParameters": { - "id": 894, + "id": 1023, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 893, + "id": 1022, "name": "newContract", "nodeType": "VariableDeclaration", - "scope": 897, - "src": "4152:19:6", + "scope": 1026, + "src": "4152:19:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8534,10 +8534,10 @@ "typeString": "address" }, "typeName": { - "id": 892, + "id": 1021, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4152:7:6", + "src": "4152:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8547,32 +8547,32 @@ "visibility": "internal" } ], - "src": "4151:21:6" + "src": "4151:21:8" }, - "scope": 971, - "src": "4083:261:6", + "scope": 1100, + "src": "4083:261:8", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 969, + "id": 1098, "nodeType": "Block", - "src": "4505:656:6", + "src": "4505:656:8", "statements": [ { "assignments": [ - 904 + 1033 ], "declarations": [ { "constant": false, - "id": 904, + "id": 1033, "name": "moduleCount", "nodeType": "VariableDeclaration", - "scope": 970, - "src": "4549:19:6", + "scope": 1099, + "src": "4549:19:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8580,10 +8580,10 @@ "typeString": "uint256" }, "typeName": { - "id": 903, + "id": 1032, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4549:7:6", + "src": "4549:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8593,18 +8593,18 @@ "visibility": "internal" } ], - "id": 906, + "id": 1035, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 905, + "id": 1034, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4571:1:6", + "src": "4571:1:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -8613,20 +8613,20 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "4549:23:6" + "src": "4549:23:8" }, { "assignments": [ - 908 + 1037 ], "declarations": [ { "constant": false, - "id": 908, + "id": 1037, "name": "currentModule", "nodeType": "VariableDeclaration", - "scope": 970, - "src": "4582:21:6", + "scope": 1099, + "src": "4582:21:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8634,10 +8634,10 @@ "typeString": "address" }, "typeName": { - "id": 907, + "id": 1036, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4582:7:6", + "src": "4582:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8647,31 +8647,31 @@ "visibility": "internal" } ], - "id": 912, + "id": 1041, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 909, + "id": 1038, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 647, - "src": "4606:7:6", + "referencedDeclaration": 776, + "src": "4606:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 911, + "id": 1040, "indexExpression": { "argumentTypes": null, - "id": 910, + "id": 1039, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 643, - "src": "4614:16:6", + "referencedDeclaration": 772, + "src": "4614:16:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8682,37 +8682,37 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4606:25:6", + "src": "4606:25:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "4582:49:6" + "src": "4582:49:8" }, { "body": { - "id": 925, + "id": 1054, "nodeType": "Block", - "src": "4682:91:6", + "src": "4682:91:8", "statements": [ { "expression": { "argumentTypes": null, - "id": 920, + "id": 1049, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 916, + "id": 1045, "name": "currentModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 908, - "src": "4696:13:6", + "referencedDeclaration": 1037, + "src": "4696:13:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8724,26 +8724,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 917, + "id": 1046, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 647, - "src": "4712:7:6", + "referencedDeclaration": 776, + "src": "4712:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 919, + "id": 1048, "indexExpression": { "argumentTypes": null, - "id": 918, + "id": 1047, "name": "currentModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 908, - "src": "4720:13:6", + "referencedDeclaration": 1037, + "src": "4720:13:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8754,26 +8754,26 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4712:22:6", + "src": "4712:22:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4696:38:6", + "src": "4696:38:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 921, + "id": 1050, "nodeType": "ExpressionStatement", - "src": "4696:38:6" + "src": "4696:38:8" }, { "expression": { "argumentTypes": null, - "id": 923, + "id": 1052, "isConstant": false, "isLValue": false, "isPure": false, @@ -8781,15 +8781,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "4748:14:6", + "src": "4748:14:8", "subExpression": { "argumentTypes": null, - "id": 922, + "id": 1051, "name": "moduleCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 904, - "src": "4748:11:6", + "referencedDeclaration": 1033, + "src": "4748:11:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8800,9 +8800,9 @@ "typeString": "uint256" } }, - "id": 924, + "id": 1053, "nodeType": "ExpressionStatement", - "src": "4748:14:6" + "src": "4748:14:8" } ] }, @@ -8812,19 +8812,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 915, + "id": 1044, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 913, + "id": 1042, "name": "currentModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 908, - "src": "4647:13:6", + "referencedDeclaration": 1037, + "src": "4647:13:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8834,39 +8834,39 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 914, + "id": 1043, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 643, - "src": "4664:16:6", + "referencedDeclaration": 772, + "src": "4664:16:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4647:33:6", + "src": "4647:33:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 926, + "id": 1055, "nodeType": "WhileStatement", - "src": "4641:132:6" + "src": "4641:132:8" }, { "assignments": [ - 930 + 1059 ], "declarations": [ { "constant": false, - "id": 930, + "id": 1059, "name": "array", "nodeType": "VariableDeclaration", - "scope": 970, - "src": "4782:22:6", + "scope": 1099, + "src": "4782:22:8", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -8875,19 +8875,19 @@ }, "typeName": { "baseType": { - "id": 928, + "id": 1057, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4782:7:6", + "src": "4782:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 929, + "id": 1058, "length": null, "nodeType": "ArrayTypeName", - "src": "4782:9:6", + "src": "4782:9:8", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -8897,18 +8897,18 @@ "visibility": "internal" } ], - "id": 936, + "id": 1065, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 934, + "id": 1063, "name": "moduleCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 904, - "src": "4821:11:6", + "referencedDeclaration": 1033, + "src": "4821:11:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8922,39 +8922,39 @@ "typeString": "uint256" } ], - "id": 933, + "id": 1062, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", - "src": "4807:13:6", + "src": "4807:13:8", "typeDescriptions": { "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_$", "typeString": "function (uint256) pure returns (address[] memory)" }, "typeName": { "baseType": { - "id": 931, + "id": 1060, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4811:7:6", + "src": "4811:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 932, + "id": 1061, "length": null, "nodeType": "ArrayTypeName", - "src": "4811:9:6", + "src": "4811:9:8", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" } } }, - "id": 935, + "id": 1064, "isConstant": false, "isLValue": false, "isPure": false, @@ -8962,31 +8962,31 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4807:26:6", + "src": "4807:26:8", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory", "typeString": "address[] memory" } }, "nodeType": "VariableDeclarationStatement", - "src": "4782:51:6" + "src": "4782:51:8" }, { "expression": { "argumentTypes": null, - "id": 939, + "id": 1068, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 937, + "id": 1066, "name": "moduleCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 904, - "src": "4877:11:6", + "referencedDeclaration": 1033, + "src": "4877:11:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8997,14 +8997,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "30", - "id": 938, + "id": 1067, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4891:1:6", + "src": "4891:1:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -9012,32 +9012,32 @@ }, "value": "0" }, - "src": "4877:15:6", + "src": "4877:15:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 940, + "id": 1069, "nodeType": "ExpressionStatement", - "src": "4877:15:6" + "src": "4877:15:8" }, { "expression": { "argumentTypes": null, - "id": 945, + "id": 1074, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 941, + "id": 1070, "name": "currentModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 908, - "src": "4902:13:6", + "referencedDeclaration": 1037, + "src": "4902:13:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9049,26 +9049,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 942, + "id": 1071, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 647, - "src": "4918:7:6", + "referencedDeclaration": 776, + "src": "4918:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 944, + "id": 1073, "indexExpression": { "argumentTypes": null, - "id": 943, + "id": 1072, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 643, - "src": "4926:16:6", + "referencedDeclaration": 772, + "src": "4926:16:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9079,32 +9079,32 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4918:25:6", + "src": "4918:25:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4902:41:6", + "src": "4902:41:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 946, + "id": 1075, "nodeType": "ExpressionStatement", - "src": "4902:41:6" + "src": "4902:41:8" }, { "body": { - "id": 965, + "id": 1094, "nodeType": "Block", - "src": "4994:139:6", + "src": "4994:139:8", "statements": [ { "expression": { "argumentTypes": null, - "id": 954, + "id": 1083, "isConstant": false, "isLValue": false, "isPure": false, @@ -9113,26 +9113,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 950, + "id": 1079, "name": "array", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 930, - "src": "5008:5:6", + "referencedDeclaration": 1059, + "src": "5008:5:8", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 952, + "id": 1081, "indexExpression": { "argumentTypes": null, - "id": 951, + "id": 1080, "name": "moduleCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 904, - "src": "5014:11:6", + "referencedDeclaration": 1033, + "src": "5014:11:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9143,7 +9143,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "5008:18:6", + "src": "5008:18:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9153,43 +9153,43 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 953, + "id": 1082, "name": "currentModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 908, - "src": "5029:13:6", + "referencedDeclaration": 1037, + "src": "5029:13:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "5008:34:6", + "src": "5008:34:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 955, + "id": 1084, "nodeType": "ExpressionStatement", - "src": "5008:34:6" + "src": "5008:34:8" }, { "expression": { "argumentTypes": null, - "id": 960, + "id": 1089, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 956, + "id": 1085, "name": "currentModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 908, - "src": "5056:13:6", + "referencedDeclaration": 1037, + "src": "5056:13:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9201,26 +9201,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 957, + "id": 1086, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 647, - "src": "5072:7:6", + "referencedDeclaration": 776, + "src": "5072:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 959, + "id": 1088, "indexExpression": { "argumentTypes": null, - "id": 958, + "id": 1087, "name": "currentModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 908, - "src": "5080:13:6", + "referencedDeclaration": 1037, + "src": "5080:13:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9231,26 +9231,26 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "5072:22:6", + "src": "5072:22:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "5056:38:6", + "src": "5056:38:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 961, + "id": 1090, "nodeType": "ExpressionStatement", - "src": "5056:38:6" + "src": "5056:38:8" }, { "expression": { "argumentTypes": null, - "id": 963, + "id": 1092, "isConstant": false, "isLValue": false, "isPure": false, @@ -9258,15 +9258,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "5108:14:6", + "src": "5108:14:8", "subExpression": { "argumentTypes": null, - "id": 962, + "id": 1091, "name": "moduleCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 904, - "src": "5108:11:6", + "referencedDeclaration": 1033, + "src": "5108:11:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9277,9 +9277,9 @@ "typeString": "uint256" } }, - "id": 964, + "id": 1093, "nodeType": "ExpressionStatement", - "src": "5108:14:6" + "src": "5108:14:8" } ] }, @@ -9289,19 +9289,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 949, + "id": 1078, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 947, + "id": 1076, "name": "currentModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 908, - "src": "4959:13:6", + "referencedDeclaration": 1037, + "src": "4959:13:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9311,50 +9311,50 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 948, + "id": 1077, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 643, - "src": "4976:16:6", + "referencedDeclaration": 772, + "src": "4976:16:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4959:33:6", + "src": "4959:33:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 966, + "id": 1095, "nodeType": "WhileStatement", - "src": "4953:180:6" + "src": "4953:180:8" }, { "expression": { "argumentTypes": null, - "id": 967, + "id": 1096, "name": "array", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 930, - "src": "5149:5:6", + "referencedDeclaration": 1059, + "src": "5149:5:8", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "functionReturnParameters": 902, - "id": 968, + "functionReturnParameters": 1031, + "id": 1097, "nodeType": "Return", - "src": "5142:12:6" + "src": "5142:12:8" } ] }, "documentation": "@dev Returns array of modules.\n @return Array of modules.", - "id": 970, + "id": 1099, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -9362,23 +9362,23 @@ "name": "getModules", "nodeType": "FunctionDefinition", "parameters": { - "id": 898, + "id": 1027, "nodeType": "ParameterList", "parameters": [], - "src": "4442:2:6" + "src": "4442:2:8" }, "payable": false, "returnParameters": { - "id": 902, + "id": 1031, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 901, + "id": 1030, "name": "", "nodeType": "VariableDeclaration", - "scope": 970, - "src": "4490:9:6", + "scope": 1099, + "src": "4490:9:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9387,19 +9387,19 @@ }, "typeName": { "baseType": { - "id": 899, + "id": 1028, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4490:7:6", + "src": "4490:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 900, + "id": 1029, "length": null, "nodeType": "ArrayTypeName", - "src": "4490:9:6", + "src": "4490:9:8", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -9409,26 +9409,26 @@ "visibility": "internal" } ], - "src": "4489:11:6" + "src": "4489:11:8" }, - "scope": 971, - "src": "4423:738:6", + "scope": 1100, + "src": "4423:738:8", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 972, - "src": "303:4860:6" + "scope": 1101, + "src": "303:4860:8" } ], - "src": "0:5164:6" + "src": "0:5164:8" }, "compiler": { "name": "solc", - "version": "0.4.23+commit.124ca40d.Emscripten.clang" + "version": "0.4.24+commit.e67f0147.Emscripten.clang" }, "networks": {}, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-16T10:51:14.748Z" + "updatedAt": "2018-05-27T11:12:45.579Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/MultiSend.json b/safe-contracts/build/contracts/MultiSend.json index 9d356f7786..7e13b41104 100644 --- a/safe-contracts/build/contracts/MultiSend.json +++ b/safe-contracts/build/contracts/MultiSend.json @@ -16,28 +16,28 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b5061013a806100206000396000f300608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680638d80ff0a14610046575b600080fd5b34801561005257600080fd5b506100ad600480360381019080803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506100af565b005b805160205b8181101561010957808301516020820184015160608301850151608084018601600080838386885af1600081146100ea576100ef565b600080fd5b5060208060208401040260800185019450505050506100b4565b5050505600a165627a7a7230582085c54bc0284c5004bee6b973aad924e63fe6628856cdf34c1eedabe70b1787fb0029", - "deployedBytecode": "0x608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680638d80ff0a14610046575b600080fd5b34801561005257600080fd5b506100ad600480360381019080803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506100af565b005b805160205b8181101561010957808301516020820184015160608301850151608084018601600080838386885af1600081146100ea576100ef565b600080fd5b5060208060208401040260800185019450505050506100b4565b5050505600a165627a7a7230582085c54bc0284c5004bee6b973aad924e63fe6628856cdf34c1eedabe70b1787fb0029", + "bytecode": "0x608060405234801561001057600080fd5b5061013a806100206000396000f300608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680638d80ff0a14610046575b600080fd5b34801561005257600080fd5b506100ad600480360381019080803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506100af565b005b805160205b8181101561010957808301516020820184015160608301850151608084018601600080838386885af1600081146100ea576100ef565b600080fd5b50602080601f8401040260800185019450505050506100b4565b5050505600a165627a7a72305820d762b9a26edc788e8139b309555c37a91970e3acfe5f209dff1eaf14345bdbe60029", + "deployedBytecode": "0x608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680638d80ff0a14610046575b600080fd5b34801561005257600080fd5b506100ad600480360381019080803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506100af565b005b805160205b8181101561010957808301516020820184015160608301850151608084018601600080838386885af1600081146100ea576100ef565b600080fd5b50602080601f8401040260800185019450505050506100b4565b5050505600a165627a7a72305820d762b9a26edc788e8139b309555c37a91970e3acfe5f209dff1eaf14345bdbe60029", "sourceMap": "253:1073:16:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;253:1073:16;;;;;;;", "deployedSourceMap": "253:1073:16:-;;;;;;;;;;;;;;;;;;;;;;;;593:731;;8:9:-1;5:2;;;30:1;27;20:12;5:2;593:731:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;768:12;762:19;803:4;820:488;834:6;831:1;828:13;820:488;;;898:1;884:12;880:20;874:27;962:4;959:1;955:12;941;937:31;931:38;1035:4;1032:1;1028:12;1014;1010:31;1004:38;1096:4;1093:1;1089:12;1075;1071:31;1168:1;1165;1153:10;1147:4;1140:5;1136:2;1131:3;1126:44;1192:1;1187:23;;;;1119:91;;1187:23;1206:1;1203;1196:12;1119:91;;1287:4;1280;1273;1261:10;1257:21;1253:32;1249:43;1243:4;1239:54;1236:1;1232:62;1227:67;;846:462;;;;820:488;;;734:584;;;:::o", - "source": "pragma solidity 0.4.23;\n\n\n/// @title Multi Send - Allows to batch multiple transactions into one.\n/// @author Nick Dodson - \n/// @author Gonçalo Sá - \n/// @author Stefan George - \ncontract MultiSend {\n\n /// @dev Sends multiple transactions and reverts all if one fails.\n /// @param transactions Encoded transactions. Each transaction is encoded as\n /// a tuple(address,uint256,bytes). The bytes of all\n /// encoded transactions are concatenated to form the input.\n function multiSend(bytes transactions)\n public\n {\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n let length := mload(transactions)\n let i := 0x20\n for { } lt(i, length) { } {\n let to := mload(add(transactions, i))\n let value := mload(add(transactions, add(i, 0x20)))\n let dataLength := mload(add(transactions, add(i, 0x60)))\n let data := add(transactions, add(i, 0x80))\n switch call(gas, to, value, data, dataLength, 0, 0)\n case 0 { revert(0, 0) }\n i := add(i, add(0x80, mul(div(add(dataLength, 0x20), 0x20), 0x20)))\n }\n }\n }\n}\n", + "source": "pragma solidity 0.4.24;\n\n\n/// @title Multi Send - Allows to batch multiple transactions into one.\n/// @author Nick Dodson - \n/// @author Gonçalo Sá - \n/// @author Stefan George - \ncontract MultiSend {\n\n /// @dev Sends multiple transactions and reverts all if one fails.\n /// @param transactions Encoded transactions. Each transaction is encoded as\n /// a tuple(address,uint256,bytes). The bytes of all\n /// encoded transactions are concatenated to form the input.\n function multiSend(bytes transactions)\n public\n {\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n let length := mload(transactions)\n let i := 0x20\n for { } lt(i, length) { } {\n let to := mload(add(transactions, i))\n let value := mload(add(transactions, add(i, 0x20)))\n let dataLength := mload(add(transactions, add(i, 0x60)))\n let data := add(transactions, add(i, 0x80))\n switch call(gas, to, value, data, dataLength, 0, 0)\n case 0 { revert(0, 0) }\n i := add(i, add(0x80, mul(div(add(dataLength, 0x1f), 0x20), 0x20)))\n }\n }\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/libraries/MultiSend.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/libraries/MultiSend.sol", "exportedSymbols": { "MultiSend": [ - 1614 + 1740 ] }, - "id": 1615, + "id": 1741, "nodeType": "SourceUnit", "nodes": [ { - "id": 1606, + "id": 1732, "literals": [ "solidity", "0.4", - ".23" + ".24" ], "nodeType": "PragmaDirective", "src": "0:23:16" @@ -48,16 +48,16 @@ "contractKind": "contract", "documentation": "@title Multi Send - Allows to batch multiple transactions into one.\n @author Nick Dodson - \n @author Gonçalo Sá - \n @author Stefan George - ", "fullyImplemented": true, - "id": 1614, + "id": 1740, "linearizedBaseContracts": [ - 1614 + 1740 ], "name": "MultiSend", "nodeType": "ContractDefinition", "nodes": [ { "body": { - "id": 1612, + "id": 1738, "nodeType": "Block", "src": "651:673:16", "statements": [ @@ -65,7 +65,7 @@ "externalReferences": [ { "transactions": { - "declaration": 1608, + "declaration": 1734, "isOffset": false, "isSlot": false, "src": "768:12:16", @@ -74,7 +74,7 @@ }, { "transactions": { - "declaration": 1608, + "declaration": 1734, "isOffset": false, "isSlot": false, "src": "884:12:16", @@ -83,7 +83,7 @@ }, { "transactions": { - "declaration": 1608, + "declaration": 1734, "isOffset": false, "isSlot": false, "src": "941:12:16", @@ -92,7 +92,7 @@ }, { "transactions": { - "declaration": 1608, + "declaration": 1734, "isOffset": false, "isSlot": false, "src": "1014:12:16", @@ -101,7 +101,7 @@ }, { "transactions": { - "declaration": 1608, + "declaration": 1734, "isOffset": false, "isSlot": false, "src": "1075:12:16", @@ -109,15 +109,15 @@ } } ], - "id": 1611, + "id": 1737, "nodeType": "InlineAssembly", - "operations": "{\n let length := mload(transactions)\n let i := 0x20\n for {\n }\n lt(i, length)\n {\n }\n {\n let to := mload(add(transactions, i))\n let value := mload(add(transactions, add(i, 0x20)))\n let dataLength := mload(add(transactions, add(i, 0x60)))\n let data := add(transactions, add(i, 0x80))\n switch call(gas(), to, value, data, dataLength, 0, 0)\n case 0 {\n revert(0, 0)\n }\n i := add(i, add(0x80, mul(div(add(dataLength, 0x20), 0x20), 0x20)))\n }\n}", + "operations": "{\n let length := mload(transactions)\n let i := 0x20\n for {\n }\n lt(i, length)\n {\n }\n {\n let to := mload(add(transactions, i))\n let value := mload(add(transactions, add(i, 0x20)))\n let dataLength := mload(add(transactions, add(i, 0x60)))\n let data := add(transactions, add(i, 0x80))\n switch call(gas(), to, value, data, dataLength, 0, 0)\n case 0 {\n revert(0, 0)\n }\n i := add(i, add(0x80, mul(div(add(dataLength, 0x1f), 0x20), 0x20)))\n }\n}", "src": "725:599:16" } ] }, "documentation": "@dev Sends multiple transactions and reverts all if one fails.\n @param transactions Encoded transactions. Each transaction is encoded as\n a tuple(address,uint256,bytes). The bytes of all\n encoded transactions are concatenated to form the input.", - "id": 1613, + "id": 1739, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -125,15 +125,15 @@ "name": "multiSend", "nodeType": "FunctionDefinition", "parameters": { - "id": 1609, + "id": 1735, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1608, + "id": 1734, "name": "transactions", "nodeType": "VariableDeclaration", - "scope": 1613, + "scope": 1739, "src": "612:18:16", "stateVariable": false, "storageLocation": "default", @@ -142,7 +142,7 @@ "typeString": "bytes" }, "typeName": { - "id": 1607, + "id": 1733, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "612:5:16", @@ -159,19 +159,19 @@ }, "payable": false, "returnParameters": { - "id": 1610, + "id": 1736, "nodeType": "ParameterList", "parameters": [], "src": "651:0:16" }, - "scope": 1614, + "scope": 1740, "src": "593:731:16", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 1615, + "scope": 1741, "src": "253:1073:16" } ], @@ -181,18 +181,18 @@ "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/libraries/MultiSend.sol", "exportedSymbols": { "MultiSend": [ - 1614 + 1740 ] }, - "id": 1615, + "id": 1741, "nodeType": "SourceUnit", "nodes": [ { - "id": 1606, + "id": 1732, "literals": [ "solidity", "0.4", - ".23" + ".24" ], "nodeType": "PragmaDirective", "src": "0:23:16" @@ -203,16 +203,16 @@ "contractKind": "contract", "documentation": "@title Multi Send - Allows to batch multiple transactions into one.\n @author Nick Dodson - \n @author Gonçalo Sá - \n @author Stefan George - ", "fullyImplemented": true, - "id": 1614, + "id": 1740, "linearizedBaseContracts": [ - 1614 + 1740 ], "name": "MultiSend", "nodeType": "ContractDefinition", "nodes": [ { "body": { - "id": 1612, + "id": 1738, "nodeType": "Block", "src": "651:673:16", "statements": [ @@ -220,7 +220,7 @@ "externalReferences": [ { "transactions": { - "declaration": 1608, + "declaration": 1734, "isOffset": false, "isSlot": false, "src": "768:12:16", @@ -229,7 +229,7 @@ }, { "transactions": { - "declaration": 1608, + "declaration": 1734, "isOffset": false, "isSlot": false, "src": "884:12:16", @@ -238,7 +238,7 @@ }, { "transactions": { - "declaration": 1608, + "declaration": 1734, "isOffset": false, "isSlot": false, "src": "941:12:16", @@ -247,7 +247,7 @@ }, { "transactions": { - "declaration": 1608, + "declaration": 1734, "isOffset": false, "isSlot": false, "src": "1014:12:16", @@ -256,7 +256,7 @@ }, { "transactions": { - "declaration": 1608, + "declaration": 1734, "isOffset": false, "isSlot": false, "src": "1075:12:16", @@ -264,15 +264,15 @@ } } ], - "id": 1611, + "id": 1737, "nodeType": "InlineAssembly", - "operations": "{\n let length := mload(transactions)\n let i := 0x20\n for {\n }\n lt(i, length)\n {\n }\n {\n let to := mload(add(transactions, i))\n let value := mload(add(transactions, add(i, 0x20)))\n let dataLength := mload(add(transactions, add(i, 0x60)))\n let data := add(transactions, add(i, 0x80))\n switch call(gas(), to, value, data, dataLength, 0, 0)\n case 0 {\n revert(0, 0)\n }\n i := add(i, add(0x80, mul(div(add(dataLength, 0x20), 0x20), 0x20)))\n }\n}", + "operations": "{\n let length := mload(transactions)\n let i := 0x20\n for {\n }\n lt(i, length)\n {\n }\n {\n let to := mload(add(transactions, i))\n let value := mload(add(transactions, add(i, 0x20)))\n let dataLength := mload(add(transactions, add(i, 0x60)))\n let data := add(transactions, add(i, 0x80))\n switch call(gas(), to, value, data, dataLength, 0, 0)\n case 0 {\n revert(0, 0)\n }\n i := add(i, add(0x80, mul(div(add(dataLength, 0x1f), 0x20), 0x20)))\n }\n}", "src": "725:599:16" } ] }, "documentation": "@dev Sends multiple transactions and reverts all if one fails.\n @param transactions Encoded transactions. Each transaction is encoded as\n a tuple(address,uint256,bytes). The bytes of all\n encoded transactions are concatenated to form the input.", - "id": 1613, + "id": 1739, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -280,15 +280,15 @@ "name": "multiSend", "nodeType": "FunctionDefinition", "parameters": { - "id": 1609, + "id": 1735, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1608, + "id": 1734, "name": "transactions", "nodeType": "VariableDeclaration", - "scope": 1613, + "scope": 1739, "src": "612:18:16", "stateVariable": false, "storageLocation": "default", @@ -297,7 +297,7 @@ "typeString": "bytes" }, "typeName": { - "id": 1607, + "id": 1733, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "612:5:16", @@ -314,19 +314,19 @@ }, "payable": false, "returnParameters": { - "id": 1610, + "id": 1736, "nodeType": "ParameterList", "parameters": [], "src": "651:0:16" }, - "scope": 1614, + "scope": 1740, "src": "593:731:16", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 1615, + "scope": 1741, "src": "253:1073:16" } ], @@ -334,46 +334,28 @@ }, "compiler": { "name": "solc", - "version": "0.4.23+commit.124ca40d.Emscripten.clang" + "version": "0.4.24+commit.e67f0147.Emscripten.clang" }, "networks": { "4": { "events": {}, "links": {}, - "address": "0xeb51df3ce4e31ee60ed86cc860e68a4f892960cc", - "transactionHash": "0x1a3baba678d7b4d4c2ae5d151176442d5306e7958e83cecf49a6256fdfd2f4cb" + "address": "0x46ba31fce67f6e0cfdf767b2b24c8cfa56015334", + "transactionHash": "0x4d190832f77421880276d21d750264b5a465b1c38d09d44667ce6617a8dd6a2f" }, - "1525950336085": { - "events": {}, - "links": {}, - "address": "0xa4604b882b2c10ce381c4e61ad9ac72ab32f350f", - "transactionHash": "0xf4586ae05ae02801de1759128e43658bb0439e622a5ba84ad6bb4b652d641f4f" - }, - "1526283540628": { - "events": {}, - "links": {}, - "address": "0xf5cfa4069271285402ba2585c521c6c627810963", - "transactionHash": "0xf4586ae05ae02801de1759128e43658bb0439e622a5ba84ad6bb4b652d641f4f" - }, - "1526478212260": { - "events": {}, - "links": {}, - "address": "0x20658014abeebf3f064bf4442a5cd160143b800e", - "transactionHash": "0xf4586ae05ae02801de1759128e43658bb0439e622a5ba84ad6bb4b652d641f4f" - }, - "1526973574996": { + "1527316019334": { "events": {}, "links": {}, - "address": "0xf27293ee4c8876589b0e197d3bebb2402c798e1f", - "transactionHash": "0xf4586ae05ae02801de1759128e43658bb0439e622a5ba84ad6bb4b652d641f4f" + "address": "0xb0945dc5aa1de7306033fe26a1bba93292ccf9b8", + "transactionHash": "0x09e43d5e80b83dd623f34456dac3db1c4a8610a5734a9b8bb210e0e97dfab47e" }, - "1527316019334": { + "1527420696956": { "events": {}, "links": {}, - "address": "0x0f72f565275c8985a41a0ea8346420a61004771d", - "transactionHash": "0xf4586ae05ae02801de1759128e43658bb0439e622a5ba84ad6bb4b652d641f4f" + "address": "0xf76104e6bd2085f236594bf61a3d818aa6eb6d8a", + "transactionHash": "0xd044f1662e339061a8cabf2b06ac94a9f86fcccf3f5d80ebd1bea2a7542d4021" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-26T06:28:28.360Z" + "updatedAt": "2018-05-27T11:31:46.257Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/MultiSendStruct.json b/safe-contracts/build/contracts/MultiSendStruct.json deleted file mode 100644 index d70c025192..0000000000 --- a/safe-contracts/build/contracts/MultiSendStruct.json +++ /dev/null @@ -1,1688 +0,0 @@ -{ - "contractName": "MultiSendStruct", - "abi": [ - { - "constant": false, - "inputs": [ - { - "components": [ - { - "name": "to", - "type": "address" - }, - { - "name": "value", - "type": "uint256" - }, - { - "name": "data", - "type": "bytes" - } - ], - "name": "transactions", - "type": "tuple[]" - } - ], - "name": "multiSend", - "outputs": [], - "payable": false, - "stateMutability": "nonpayable", - "type": "function" - } - ], - "bytecode": "0x608060405234801561001057600080fd5b506103c6806100206000396000f300608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632f6fda4a14610046575b600080fd5b34801561005257600080fd5b5061006d60048036036100689190810190610291565b61006f565b005b60006100796100ed565b600091505b82518210156100d057828281518110151561009557fe5b9060200190602002015190506100b88160000151826020015183604001516100d5565b15156100c357600080fd5b818060010192505061007e565b505050565b600080600083516020850186885af190509392505050565b606060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001606081525090565b60006101318235610353565b905092915050565b600082601f830112151561014c57600080fd5b813561015f61015a826102ff565b6102d2565b9150818183526020840193506020810190508360005b838110156101a5578135860161018b8882610205565b845260208401935060208301925050600181019050610175565b5050505092915050565b600082601f83011215156101c257600080fd5b81356101d56101d082610327565b6102d2565b915080825260208301602083018583830111156101f157600080fd5b6101fc83828461037d565b50505092915050565b60006060828403121561021757600080fd5b61022160606102d2565b9050600061023184828501610125565b60008301525060206102458482850161027d565b602083015250604082013567ffffffffffffffff81111561026557600080fd5b610271848285016101af565b60408301525092915050565b60006102898235610373565b905092915050565b6000602082840312156102a357600080fd5b600082013567ffffffffffffffff8111156102bd57600080fd5b6102c984828501610139565b91505092915050565b6000604051905081810181811067ffffffffffffffff821117156102f557600080fd5b8060405250919050565b600067ffffffffffffffff82111561031657600080fd5b602082029050602081019050919050565b600067ffffffffffffffff82111561033e57600080fd5b601f19601f8301169050602081019050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b828183376000838301525050505600a265627a7a7230582005384089695c7c77816220e122b3c45435a664207e3c979cd8b6653c05e379236c6578706572696d656e74616cf50037", - "deployedBytecode": "0x608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632f6fda4a14610046575b600080fd5b34801561005257600080fd5b5061006d60048036036100689190810190610291565b61006f565b005b60006100796100ed565b600091505b82518210156100d057828281518110151561009557fe5b9060200190602002015190506100b88160000151826020015183604001516100d5565b15156100c357600080fd5b818060010192505061007e565b505050565b600080600083516020850186885af190509392505050565b606060405190810160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152602001606081525090565b60006101318235610353565b905092915050565b600082601f830112151561014c57600080fd5b813561015f61015a826102ff565b6102d2565b9150818183526020840193506020810190508360005b838110156101a5578135860161018b8882610205565b845260208401935060208301925050600181019050610175565b5050505092915050565b600082601f83011215156101c257600080fd5b81356101d56101d082610327565b6102d2565b915080825260208301602083018583830111156101f157600080fd5b6101fc83828461037d565b50505092915050565b60006060828403121561021757600080fd5b61022160606102d2565b9050600061023184828501610125565b60008301525060206102458482850161027d565b602083015250604082013567ffffffffffffffff81111561026557600080fd5b610271848285016101af565b60408301525092915050565b60006102898235610373565b905092915050565b6000602082840312156102a357600080fd5b600082013567ffffffffffffffff8111156102bd57600080fd5b6102c984828501610139565b91505092915050565b6000604051905081810181811067ffffffffffffffff821117156102f557600080fd5b8060405250919050565b600067ffffffffffffffff82111561031657600080fd5b602082029050602081019050919050565b600067ffffffffffffffff82111561033e57600080fd5b601f19601f8301169050602081019050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b828183376000838301525050505600a265627a7a7230582005384089695c7c77816220e122b3c45435a664207e3c979cd8b6653c05e379236c6578706572696d656e74616cf50037", - "sourceMap": "339:839:17:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;339:839:17;;;;;;;", - "deployedSourceMap": "339:839:17:-;;;;;;;;;;;;;;;;;;;;;;;;587:291;;8:9:-1;5:2;;;30:1;27;20:12;5:2;587:291:17;;;;;;;;;;;;;;;;;;;;667:9;726:30;;:::i;:::-;679:1;667:13;;663:209;686:12;:19;682:1;:23;663:209;;;759:12;772:1;759:15;;;;;;;;;;;;;;;;;;726:48;;796:64;808:11;:14;;;824:11;:17;;;843:11;:16;;;796:11;:64::i;:::-;788:73;;;;;;;;707:3;;;;;;;663:209;;;587:291;;;:::o;884:292::-;978:12;1158:1;1155;1148:4;1142:11;1135:4;1129;1125:15;1118:5;1114:2;1109:3;1104:56;1093:67;;1079:91;;;;;:::o;339:839::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5:118:-1:-;;72:46;110:6;97:20;72:46;;;63:55;;57:66;;;;;175:753;;317:3;310:4;302:6;298:17;294:27;287:35;284:2;;;335:1;332;325:12;284:2;372:6;359:20;394:105;409:89;491:6;409:89;;;394:105;;;385:114;;516:5;541:6;534:5;527:21;571:4;563:6;559:17;549:27;;593:4;588:3;584:14;577:21;;646:6;679:1;664:258;689:6;686:1;683:13;664:258;;;772:3;759:17;751:6;747:30;796:62;854:3;842:10;796:62;;;791:3;784:75;882:4;877:3;873:14;866:21;;910:4;905:3;901:14;894:21;;721:201;711:1;708;704:9;699:14;;664:258;;;668:14;277:651;;;;;;;;937:432;;1034:3;1027:4;1019:6;1015:17;1011:27;1004:35;1001:2;;;1052:1;1049;1042:12;1001:2;1089:6;1076:20;1111:60;1126:44;1163:6;1126:44;;;1111:60;;;1102:69;;1191:6;1184:5;1177:21;1227:4;1219:6;1215:17;1260:4;1253:5;1249:16;1295:3;1286:6;1281:3;1277:16;1274:25;1271:2;;;1312:1;1309;1302:12;1271:2;1322:41;1356:6;1351:3;1346;1322:41;;;994:375;;;;;;;;1418:700;;1532:4;1520:9;1515:3;1511:19;1507:30;1504:2;;;1550:1;1547;1540:12;1504:2;1568:20;1583:4;1568:20;;;1559:29;;1636:1;1667:49;1712:3;1703:6;1692:9;1688:22;1667:49;;;1661:3;1654:5;1650:15;1643:74;1598:130;1779:2;1812:49;1857:3;1848:6;1837:9;1833:22;1812:49;;;1805:4;1798:5;1794:16;1787:75;1738:135;1951:2;1940:9;1936:18;1923:32;1975:18;1967:6;1964:30;1961:2;;;2007:1;2004;1997:12;1961:2;2042:54;2092:3;2083:6;2072:9;2068:22;2042:54;;;2035:4;2028:5;2024:16;2017:80;1883:225;1498:620;;;;;2125:118;;2192:46;2230:6;2217:20;2192:46;;;2183:55;;2177:66;;;;;2250:427;;2404:2;2392:9;2383:7;2379:23;2375:32;2372:2;;;2420:1;2417;2410:12;2372:2;2483:1;2472:9;2468:17;2455:31;2506:18;2498:6;2495:30;2492:2;;;2538:1;2535;2528:12;2492:2;2558:103;2653:7;2644:6;2633:9;2629:22;2558:103;;;2548:113;;2434:233;2366:311;;;;;2684:256;;2746:2;2740:9;2730:19;;2784:4;2776:6;2772:17;2883:6;2871:10;2868:22;2847:18;2835:10;2832:34;2829:62;2826:2;;;2904:1;2901;2894:12;2826:2;2924:10;2920:2;2913:22;2724:216;;;;;2947:283;;3131:18;3123:6;3120:30;3117:2;;;3163:1;3160;3153:12;3117:2;3192:4;3184:6;3180:17;3172:25;;3220:4;3214;3210:15;3202:23;;3054:176;;;;3237:254;;3376:18;3368:6;3365:30;3362:2;;;3408:1;3405;3398:12;3362:2;3452:4;3448:9;3441:4;3433:6;3429:17;3425:33;3417:41;;3481:4;3475;3471:15;3463:23;;3299:192;;;;3498:128;;3578:42;3571:5;3567:54;3556:65;;3550:76;;;;3633:79;;3702:5;3691:16;;3685:27;;;;3720:145;3801:6;3796:3;3791;3778:30;3857:1;3848:6;3843:3;3839:16;3832:27;3771:94;;;", - "source": "pragma solidity ^0.4.23;\npragma experimental ABIEncoderV2;\n\n\n/// @title Multi Send - Allows to batch multiple transactions into one.\n/// @author Nick Dodson - \n/// @author Gonçalo Sá - \n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract MultiSendStruct {\n\n struct Transaction {\n address to;\n uint256 value;\n bytes data;\n }\n\n /// @dev Sends multiple transactions and reverts all if one fails.\n /// @param transactions Encoded transactions.\n function multiSend(Transaction[] transactions)\n public\n {\n for(uint256 i = 0; i < transactions.length; i++) {\n Transaction memory transaction = transactions[i];\n require(executeCall(transaction.to, transaction.value, transaction.data));\n }\n }\n\n function executeCall(address to, uint256 value, bytes data)\n internal\n returns (bool success)\n {\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n success := call(gas, to, value, add(data, 0x20), mload(data), 0, 0)\n }\n }\n}\n", - "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/libraries/MultiSendStruct.sol", - "ast": { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/libraries/MultiSendStruct.sol", - "exportedSymbols": { - "MultiSendStruct": [ - 1675 - ] - }, - "id": 1676, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 1616, - "literals": [ - "solidity", - "^", - "0.4", - ".23" - ], - "nodeType": "PragmaDirective", - "src": "0:24:17" - }, - { - "id": 1617, - "literals": [ - "experimental", - "ABIEncoderV2" - ], - "nodeType": "PragmaDirective", - "src": "25:33:17" - }, - { - "baseContracts": [], - "contractDependencies": [], - "contractKind": "contract", - "documentation": "@title Multi Send - Allows to batch multiple transactions into one.\n @author Nick Dodson - \n @author Gonçalo Sá - \n @author Stefan George - \n @author Richard Meissner - ", - "fullyImplemented": true, - "id": 1675, - "linearizedBaseContracts": [ - 1675 - ], - "name": "MultiSendStruct", - "nodeType": "ContractDefinition", - "nodes": [ - { - "canonicalName": "MultiSendStruct.Transaction", - "id": 1624, - "members": [ - { - "constant": false, - "id": 1619, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 1624, - "src": "400:10:17", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1618, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "400:7:17", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1621, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 1624, - "src": "420:13:17", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1620, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "420:7:17", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1623, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 1624, - "src": "443:10:17", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 1622, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "443:5:17", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - } - ], - "name": "Transaction", - "nodeType": "StructDefinition", - "scope": 1675, - "src": "371:89:17", - "visibility": "public" - }, - { - "body": { - "id": 1660, - "nodeType": "Block", - "src": "653:225:17", - "statements": [ - { - "body": { - "id": 1658, - "nodeType": "Block", - "src": "712:160:17", - "statements": [ - { - "assignments": [ - 1642 - ], - "declarations": [ - { - "constant": false, - "id": 1642, - "name": "transaction", - "nodeType": "VariableDeclaration", - "scope": 1661, - "src": "726:30:17", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$1624_memory_ptr", - "typeString": "struct MultiSendStruct.Transaction" - }, - "typeName": { - "contractScope": null, - "id": 1641, - "name": "Transaction", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1624, - "src": "726:11:17", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$1624_storage_ptr", - "typeString": "struct MultiSendStruct.Transaction" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1646, - "initialValue": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1643, - "name": "transactions", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1627, - "src": "759:12:17", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Transaction_$1624_memory_$dyn_memory_ptr", - "typeString": "struct MultiSendStruct.Transaction memory[] memory" - } - }, - "id": 1645, - "indexExpression": { - "argumentTypes": null, - "id": 1644, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1631, - "src": "772:1:17", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "759:15:17", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$1624_memory", - "typeString": "struct MultiSendStruct.Transaction memory" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "726:48:17" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1649, - "name": "transaction", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1642, - "src": "808:11:17", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$1624_memory_ptr", - "typeString": "struct MultiSendStruct.Transaction memory" - } - }, - "id": 1650, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "to", - "nodeType": "MemberAccess", - "referencedDeclaration": 1619, - "src": "808:14:17", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1651, - "name": "transaction", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1642, - "src": "824:11:17", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$1624_memory_ptr", - "typeString": "struct MultiSendStruct.Transaction memory" - } - }, - "id": 1652, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "value", - "nodeType": "MemberAccess", - "referencedDeclaration": 1621, - "src": "824:17:17", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1653, - "name": "transaction", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1642, - "src": "843:11:17", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$1624_memory_ptr", - "typeString": "struct MultiSendStruct.Transaction memory" - } - }, - "id": 1654, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "data", - "nodeType": "MemberAccess", - "referencedDeclaration": 1623, - "src": "843:16:17", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory", - "typeString": "bytes memory" - } - ], - "id": 1648, - "name": "executeCall", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1674, - "src": "796:11:17", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$", - "typeString": "function (address,uint256,bytes memory) returns (bool)" - } - }, - "id": 1655, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "796:64:17", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1647, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 2468, - 2469 - ], - "referencedDeclaration": 2468, - "src": "788:7:17", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1656, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "788:73:17", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1657, - "nodeType": "ExpressionStatement", - "src": "788:73:17" - } - ] - }, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1637, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1634, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1631, - "src": "682:1:17", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1635, - "name": "transactions", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1627, - "src": "686:12:17", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Transaction_$1624_memory_$dyn_memory_ptr", - "typeString": "struct MultiSendStruct.Transaction memory[] memory" - } - }, - "id": 1636, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "686:19:17", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "682:23:17", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1659, - "initializationExpression": { - "assignments": [ - 1631 - ], - "declarations": [ - { - "constant": false, - "id": 1631, - "name": "i", - "nodeType": "VariableDeclaration", - "scope": 1661, - "src": "667:9:17", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1630, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "667:7:17", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1633, - "initialValue": { - "argumentTypes": null, - "hexValue": "30", - "id": 1632, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "679:1:17", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "667:13:17" - }, - "loopExpression": { - "expression": { - "argumentTypes": null, - "id": 1639, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "707:3:17", - "subExpression": { - "argumentTypes": null, - "id": 1638, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1631, - "src": "707:1:17", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1640, - "nodeType": "ExpressionStatement", - "src": "707:3:17" - }, - "nodeType": "ForStatement", - "src": "663:209:17" - } - ] - }, - "documentation": "@dev Sends multiple transactions and reverts all if one fails.\n @param transactions Encoded transactions.", - "id": 1661, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "multiSend", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1628, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1627, - "name": "transactions", - "nodeType": "VariableDeclaration", - "scope": 1661, - "src": "606:26:17", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Transaction_$1624_memory_$dyn_memory_ptr", - "typeString": "struct MultiSendStruct.Transaction[]" - }, - "typeName": { - "baseType": { - "contractScope": null, - "id": 1625, - "name": "Transaction", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1624, - "src": "606:11:17", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$1624_storage_ptr", - "typeString": "struct MultiSendStruct.Transaction" - } - }, - "id": 1626, - "length": null, - "nodeType": "ArrayTypeName", - "src": "606:13:17", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Transaction_$1624_storage_$dyn_storage_ptr", - "typeString": "struct MultiSendStruct.Transaction[]" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "605:28:17" - }, - "payable": false, - "returnParameters": { - "id": 1629, - "nodeType": "ParameterList", - "parameters": [], - "src": "653:0:17" - }, - "scope": 1675, - "src": "587:291:17", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1673, - "nodeType": "Block", - "src": "996:180:17", - "statements": [ - { - "externalReferences": [ - { - "data": { - "declaration": 1667, - "isOffset": false, - "isSlot": false, - "src": "1148:4:17", - "valueSize": 1 - } - }, - { - "data": { - "declaration": 1667, - "isOffset": false, - "isSlot": false, - "src": "1129:4:17", - "valueSize": 1 - } - }, - { - "success": { - "declaration": 1670, - "isOffset": false, - "isSlot": false, - "src": "1093:7:17", - "valueSize": 1 - } - }, - { - "to": { - "declaration": 1663, - "isOffset": false, - "isSlot": false, - "src": "1114:2:17", - "valueSize": 1 - } - }, - { - "value": { - "declaration": 1665, - "isOffset": false, - "isSlot": false, - "src": "1118:5:17", - "valueSize": 1 - } - } - ], - "id": 1672, - "nodeType": "InlineAssembly", - "operations": "{\n success := call(gas(), to, value, add(data, 0x20), mload(data), 0, 0)\n}", - "src": "1070:106:17" - } - ] - }, - "documentation": null, - "id": 1674, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "executeCall", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1668, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1663, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 1674, - "src": "905:10:17", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1662, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "905:7:17", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1665, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 1674, - "src": "917:13:17", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1664, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "917:7:17", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1667, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 1674, - "src": "932:10:17", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 1666, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "932:5:17", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "904:39:17" - }, - "payable": false, - "returnParameters": { - "id": 1671, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1670, - "name": "success", - "nodeType": "VariableDeclaration", - "scope": 1674, - "src": "978:12:17", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 1669, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "978:4:17", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "977:14:17" - }, - "scope": 1675, - "src": "884:292:17", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - } - ], - "scope": 1676, - "src": "339:839:17" - } - ], - "src": "0:1179:17" - }, - "legacyAST": { - "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/libraries/MultiSendStruct.sol", - "exportedSymbols": { - "MultiSendStruct": [ - 1675 - ] - }, - "id": 1676, - "nodeType": "SourceUnit", - "nodes": [ - { - "id": 1616, - "literals": [ - "solidity", - "^", - "0.4", - ".23" - ], - "nodeType": "PragmaDirective", - "src": "0:24:17" - }, - { - "id": 1617, - "literals": [ - "experimental", - "ABIEncoderV2" - ], - "nodeType": "PragmaDirective", - "src": "25:33:17" - }, - { - "baseContracts": [], - "contractDependencies": [], - "contractKind": "contract", - "documentation": "@title Multi Send - Allows to batch multiple transactions into one.\n @author Nick Dodson - \n @author Gonçalo Sá - \n @author Stefan George - \n @author Richard Meissner - ", - "fullyImplemented": true, - "id": 1675, - "linearizedBaseContracts": [ - 1675 - ], - "name": "MultiSendStruct", - "nodeType": "ContractDefinition", - "nodes": [ - { - "canonicalName": "MultiSendStruct.Transaction", - "id": 1624, - "members": [ - { - "constant": false, - "id": 1619, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 1624, - "src": "400:10:17", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1618, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "400:7:17", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1621, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 1624, - "src": "420:13:17", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1620, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "420:7:17", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1623, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 1624, - "src": "443:10:17", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 1622, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "443:5:17", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - } - ], - "name": "Transaction", - "nodeType": "StructDefinition", - "scope": 1675, - "src": "371:89:17", - "visibility": "public" - }, - { - "body": { - "id": 1660, - "nodeType": "Block", - "src": "653:225:17", - "statements": [ - { - "body": { - "id": 1658, - "nodeType": "Block", - "src": "712:160:17", - "statements": [ - { - "assignments": [ - 1642 - ], - "declarations": [ - { - "constant": false, - "id": 1642, - "name": "transaction", - "nodeType": "VariableDeclaration", - "scope": 1661, - "src": "726:30:17", - "stateVariable": false, - "storageLocation": "memory", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$1624_memory_ptr", - "typeString": "struct MultiSendStruct.Transaction" - }, - "typeName": { - "contractScope": null, - "id": 1641, - "name": "Transaction", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1624, - "src": "726:11:17", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$1624_storage_ptr", - "typeString": "struct MultiSendStruct.Transaction" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1646, - "initialValue": { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 1643, - "name": "transactions", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1627, - "src": "759:12:17", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Transaction_$1624_memory_$dyn_memory_ptr", - "typeString": "struct MultiSendStruct.Transaction memory[] memory" - } - }, - "id": 1645, - "indexExpression": { - "argumentTypes": null, - "id": 1644, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1631, - "src": "772:1:17", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "759:15:17", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$1624_memory", - "typeString": "struct MultiSendStruct.Transaction memory" - } - }, - "nodeType": "VariableDeclarationStatement", - "src": "726:48:17" - }, - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1649, - "name": "transaction", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1642, - "src": "808:11:17", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$1624_memory_ptr", - "typeString": "struct MultiSendStruct.Transaction memory" - } - }, - "id": 1650, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "to", - "nodeType": "MemberAccess", - "referencedDeclaration": 1619, - "src": "808:14:17", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1651, - "name": "transaction", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1642, - "src": "824:11:17", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$1624_memory_ptr", - "typeString": "struct MultiSendStruct.Transaction memory" - } - }, - "id": 1652, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "value", - "nodeType": "MemberAccess", - "referencedDeclaration": 1621, - "src": "824:17:17", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1653, - "name": "transaction", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1642, - "src": "843:11:17", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$1624_memory_ptr", - "typeString": "struct MultiSendStruct.Transaction memory" - } - }, - "id": 1654, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "memberName": "data", - "nodeType": "MemberAccess", - "referencedDeclaration": 1623, - "src": "843:16:17", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory", - "typeString": "bytes memory" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - { - "typeIdentifier": "t_bytes_memory", - "typeString": "bytes memory" - } - ], - "id": 1648, - "name": "executeCall", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1674, - "src": "796:11:17", - "typeDescriptions": { - "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$_t_bool_$", - "typeString": "function (address,uint256,bytes memory) returns (bool)" - } - }, - "id": 1655, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "796:64:17", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 1647, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 2468, - 2469 - ], - "referencedDeclaration": 2468, - "src": "788:7:17", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 1656, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "788:73:17", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 1657, - "nodeType": "ExpressionStatement", - "src": "788:73:17" - } - ] - }, - "condition": { - "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "id": 1637, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1634, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1631, - "src": "682:1:17", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "nodeType": "BinaryOperation", - "operator": "<", - "rightExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 1635, - "name": "transactions", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1627, - "src": "686:12:17", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Transaction_$1624_memory_$dyn_memory_ptr", - "typeString": "struct MultiSendStruct.Transaction memory[] memory" - } - }, - "id": 1636, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "length", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "686:19:17", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "src": "682:23:17", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "id": 1659, - "initializationExpression": { - "assignments": [ - 1631 - ], - "declarations": [ - { - "constant": false, - "id": 1631, - "name": "i", - "nodeType": "VariableDeclaration", - "scope": 1661, - "src": "667:9:17", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1630, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "667:7:17", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - } - ], - "id": 1633, - "initialValue": { - "argumentTypes": null, - "hexValue": "30", - "id": 1632, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "number", - "lValueRequested": false, - "nodeType": "Literal", - "src": "679:1:17", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" - }, - "nodeType": "VariableDeclarationStatement", - "src": "667:13:17" - }, - "loopExpression": { - "expression": { - "argumentTypes": null, - "id": 1639, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "nodeType": "UnaryOperation", - "operator": "++", - "prefix": false, - "src": "707:3:17", - "subExpression": { - "argumentTypes": null, - "id": 1638, - "name": "i", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1631, - "src": "707:1:17", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "id": 1640, - "nodeType": "ExpressionStatement", - "src": "707:3:17" - }, - "nodeType": "ForStatement", - "src": "663:209:17" - } - ] - }, - "documentation": "@dev Sends multiple transactions and reverts all if one fails.\n @param transactions Encoded transactions.", - "id": 1661, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "multiSend", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1628, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1627, - "name": "transactions", - "nodeType": "VariableDeclaration", - "scope": 1661, - "src": "606:26:17", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Transaction_$1624_memory_$dyn_memory_ptr", - "typeString": "struct MultiSendStruct.Transaction[]" - }, - "typeName": { - "baseType": { - "contractScope": null, - "id": 1625, - "name": "Transaction", - "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1624, - "src": "606:11:17", - "typeDescriptions": { - "typeIdentifier": "t_struct$_Transaction_$1624_storage_ptr", - "typeString": "struct MultiSendStruct.Transaction" - } - }, - "id": 1626, - "length": null, - "nodeType": "ArrayTypeName", - "src": "606:13:17", - "typeDescriptions": { - "typeIdentifier": "t_array$_t_struct$_Transaction_$1624_storage_$dyn_storage_ptr", - "typeString": "struct MultiSendStruct.Transaction[]" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "605:28:17" - }, - "payable": false, - "returnParameters": { - "id": 1629, - "nodeType": "ParameterList", - "parameters": [], - "src": "653:0:17" - }, - "scope": 1675, - "src": "587:291:17", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "public" - }, - { - "body": { - "id": 1673, - "nodeType": "Block", - "src": "996:180:17", - "statements": [ - { - "externalReferences": [ - { - "data": { - "declaration": 1667, - "isOffset": false, - "isSlot": false, - "src": "1148:4:17", - "valueSize": 1 - } - }, - { - "data": { - "declaration": 1667, - "isOffset": false, - "isSlot": false, - "src": "1129:4:17", - "valueSize": 1 - } - }, - { - "success": { - "declaration": 1670, - "isOffset": false, - "isSlot": false, - "src": "1093:7:17", - "valueSize": 1 - } - }, - { - "to": { - "declaration": 1663, - "isOffset": false, - "isSlot": false, - "src": "1114:2:17", - "valueSize": 1 - } - }, - { - "value": { - "declaration": 1665, - "isOffset": false, - "isSlot": false, - "src": "1118:5:17", - "valueSize": 1 - } - } - ], - "id": 1672, - "nodeType": "InlineAssembly", - "operations": "{\n success := call(gas(), to, value, add(data, 0x20), mload(data), 0, 0)\n}", - "src": "1070:106:17" - } - ] - }, - "documentation": null, - "id": 1674, - "implemented": true, - "isConstructor": false, - "isDeclaredConst": false, - "modifiers": [], - "name": "executeCall", - "nodeType": "FunctionDefinition", - "parameters": { - "id": 1668, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1663, - "name": "to", - "nodeType": "VariableDeclaration", - "scope": 1674, - "src": "905:10:17", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - }, - "typeName": { - "id": 1662, - "name": "address", - "nodeType": "ElementaryTypeName", - "src": "905:7:17", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1665, - "name": "value", - "nodeType": "VariableDeclaration", - "scope": 1674, - "src": "917:13:17", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, - "typeName": { - "id": 1664, - "name": "uint256", - "nodeType": "ElementaryTypeName", - "src": "917:7:17", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - "value": null, - "visibility": "internal" - }, - { - "constant": false, - "id": 1667, - "name": "data", - "nodeType": "VariableDeclaration", - "scope": 1674, - "src": "932:10:17", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" - }, - "typeName": { - "id": 1666, - "name": "bytes", - "nodeType": "ElementaryTypeName", - "src": "932:5:17", - "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "904:39:17" - }, - "payable": false, - "returnParameters": { - "id": 1671, - "nodeType": "ParameterList", - "parameters": [ - { - "constant": false, - "id": 1670, - "name": "success", - "nodeType": "VariableDeclaration", - "scope": 1674, - "src": "978:12:17", - "stateVariable": false, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - }, - "typeName": { - "id": 1669, - "name": "bool", - "nodeType": "ElementaryTypeName", - "src": "978:4:17", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - }, - "value": null, - "visibility": "internal" - } - ], - "src": "977:14:17" - }, - "scope": 1675, - "src": "884:292:17", - "stateMutability": "nonpayable", - "superFunction": null, - "visibility": "internal" - } - ], - "scope": 1676, - "src": "339:839:17" - } - ], - "src": "0:1179:17" - }, - "compiler": { - "name": "solc", - "version": "0.4.23+commit.124ca40d.Emscripten.clang" - }, - "networks": {}, - "schemaVersion": "2.0.0", - "updatedAt": "2018-05-10T10:43:07.902Z" -} \ No newline at end of file diff --git a/safe-contracts/build/contracts/OwnerManager.json b/safe-contracts/build/contracts/OwnerManager.json index cf8b0653d8..e929f63a75 100644 --- a/safe-contracts/build/contracts/OwnerManager.json +++ b/safe-contracts/build/contracts/OwnerManager.json @@ -139,40 +139,40 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50610efa806100206000396000f30060806040526004361061008e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632f54bf6e1461009357806386040aa9146100ee5780638cff63551461015e578063a0e67e2b146101b5578063b7f3358d14610221578063b91a667f14610251578063e318b52b146102a1578063e75235b814610324575b600080fd5b34801561009f57600080fd5b506100d4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610355565b604051808215151515815260200191505060405180910390f35b3480156100fa57600080fd5b5061015c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506103d6565b005b34801561016a57600080fd5b50610173610657565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101c157600080fd5b506101ca61065c565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561020d5780820151818401526020810190506101f2565b505050509050019250505060405180910390f35b34801561022d57600080fd5b5061024f600480360381019080803560ff1690602001909291905050506107f5565b005b34801561025d57600080fd5b5061029f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050610874565b005b3480156102ad57600080fd5b50610322600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b28565b005b34801561033057600080fd5b50610339610eb7565b604051808260ff1660ff16815260200191505060405180910390f35b6000806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561041057600080fd5b8060ff1660018054031015151561042657600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156104be57600080fd5b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160008154809291906001900391905055508060ff16600260009054906101000a900460ff1660ff1614151561065257610651816107f5565b5b505050565b600181565b6060806000806001546040519080825280602002602001820160405280156106935781602001602082028038833980820191505090505b50925060009150600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415156107ec5780838381518110151561074257fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081806001019250506106fd565b82935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561082f57600080fd5b6001548160ff161115151561084357600080fd5b60018160ff161015151561085657600080fd5b80600260006101000a81548160ff021916908360ff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156108ae57600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff16141580156109025750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b151561090d57600080fd5b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561099057600080fd5b600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600081548092919060010191905055508060ff16600260009054906101000a900460ff1660ff16141515610b2457610b23816107f5565b5b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b6257600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614158015610bb65750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515610bc157600080fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610c4457600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610cdc57600080fd5b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000600260009054906101000a900460ff169050905600a165627a7a72305820372e97755cf66d7d4dedc8cf9b71ad26a96c66a3db678bac90c5e04bea67c8ab0029", - "deployedBytecode": "0x60806040526004361061008e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632f54bf6e1461009357806386040aa9146100ee5780638cff63551461015e578063a0e67e2b146101b5578063b7f3358d14610221578063b91a667f14610251578063e318b52b146102a1578063e75235b814610324575b600080fd5b34801561009f57600080fd5b506100d4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610355565b604051808215151515815260200191505060405180910390f35b3480156100fa57600080fd5b5061015c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506103d6565b005b34801561016a57600080fd5b50610173610657565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101c157600080fd5b506101ca61065c565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561020d5780820151818401526020810190506101f2565b505050509050019250505060405180910390f35b34801561022d57600080fd5b5061024f600480360381019080803560ff1690602001909291905050506107f5565b005b34801561025d57600080fd5b5061029f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050610874565b005b3480156102ad57600080fd5b50610322600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b28565b005b34801561033057600080fd5b50610339610eb7565b604051808260ff1660ff16815260200191505060405180910390f35b6000806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561041057600080fd5b8060ff1660018054031015151561042657600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156104be57600080fd5b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160008154809291906001900391905055508060ff16600260009054906101000a900460ff1660ff1614151561065257610651816107f5565b5b505050565b600181565b6060806000806001546040519080825280602002602001820160405280156106935781602001602082028038833980820191505090505b50925060009150600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415156107ec5780838381518110151561074257fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081806001019250506106fd565b82935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561082f57600080fd5b6001548160ff161115151561084357600080fd5b60018160ff161015151561085657600080fd5b80600260006101000a81548160ff021916908360ff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156108ae57600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff16141580156109025750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b151561090d57600080fd5b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561099057600080fd5b600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600081548092919060010191905055508060ff16600260009054906101000a900460ff1660ff16141515610b2457610b23816107f5565b5b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b6257600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614158015610bb65750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515610bc157600080fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610c4457600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610cdc57600080fd5b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000600260009054906101000a900460ff169050905600a165627a7a72305820372e97755cf66d7d4dedc8cf9b71ad26a96c66a3db678bac90c5e04bea67c8ab0029", - "sourceMap": "240:5272:7:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;240:5272:7;;;;;;;", - "deployedSourceMap": "240:5272:7:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4841:129;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4841:129:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2776:573;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2776:573:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;287:54;;8:9:-1;5:2;;;30:1;27;20:12;5:2;287:54:7;;;;;;;;;;;;;;;;;;;;;;;;;;;5052:458;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5052:458:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;5052:458:7;;;;;;;;;;;;;;;;;4398:318;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4398:318:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;1906:528;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1906:528:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3683:526;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3683:526:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4722:113;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4722:113:7;;;;;;;;;;;;;;;;;;;;;;;;;;;4841:129;4918:4;4962:1;4945:6;:13;4952:5;4945:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;;4938:25;;4841:129;;;:::o;2776:573::-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;3000:10:7;2982:28;;2995:1;2982:10;;:14;:28;;2974:37;;;;;;;;3112:5;3091:26;;:6;:17;3098:9;3091:17;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;3083:35;;;;;;;;3148:6;:13;3155:5;3148:13;;;;;;;;;;;;;;;;;;;;;;;;;3128:6;:17;3135:9;3128:17;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;3187:1;3171:6;:13;3178:5;3171:13;;;;;;;;;;;;;;;;:17;;;;;;;;;;;;;;;;;;3198:10;;:12;;;;;;;;;;;;;;3291:10;3278:23;;:9;;;;;;;;;;;:23;;;;3274:68;;;3315:27;3331:10;3315:15;:27::i;:::-;3274:68;2776:573;;;:::o;287:54::-;337:3;287:54;:::o;5052:458::-;5118:9;5143:22;5237:13;5264:20;5182:10;;5168:25;;;;;;;;;;;;;;;;;;;;;;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;5168:25:7;;;;5143:50;;5253:1;5237:17;;5287:6;:23;337:3;5287:23;;;;;;;;;;;;;;;;;;;;;;;;;5264:46;;5320:162;337:3;5326:31;;:12;:31;;;;5320:162;;;5388:12;5373:5;5379;5373:12;;;;;;;;;;;;;;;;;:27;;;;;;;;;;;5429:6;:20;5436:12;5429:20;;;;;;;;;;;;;;;;;;;;;;;;;5414:35;;5463:8;;;;;;;5320:162;;;5498:5;5491:12;;5052:458;;;;:::o;4398:318::-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;4580:10:7;;4566;:24;;;;4558:33;;;;;;;;4675:1;4661:10;:15;;;;4653:24;;;;;;;;4699:10;4687:9;;:22;;;;;;;;;;;;;;;;;;4398:318;:::o;1906:528::-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;2076:1:7;2067:5;:10;;;;:38;;;;;337:3;2081:24;;:5;:24;;;;2067:38;2059:47;;;;;;;;2181:1;2164:6;:13;2171:5;2164:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;2156:27;;;;;;;;2209:6;:23;337:3;2209:23;;;;;;;;;;;;;;;;;;;;;;;;;2193:6;:13;2200:5;2193:13;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;2268:5;2242:6;:23;337:3;2242:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;2283:10;;:12;;;;;;;;;;;;;2376:10;2363:23;;:9;;;;;;;;;;;:23;;;;2359:68;;;2400:27;2416:10;2400:15;:27::i;:::-;2359:68;1906:528;;:::o;3683:526::-;244:4:8;222:27;;:10;:27;;;214:36;;;;;;;;3866:1:7;3854:8;:13;;;;:44;;;;;337:3;3871:27;;:8;:27;;;;3854:44;3846:53;;;;;;;;3977:1;3957:6;:16;3964:8;3957:16;;;;;;;;;;;;;;;;;;;;;;;;;:21;;;3949:30;;;;;;;;4080:8;4059:29;;:6;:17;4066:9;4059:17;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;4051:38;;;;;;;;4118:6;:16;4125:8;4118:16;;;;;;;;;;;;;;;;;;;;;;;;;4099:6;:16;4106:8;4099:16;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;4164:8;4144:6;:17;4151:9;4144:17;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;4201:1;4182:6;:16;4189:8;4182:16;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;3683:526;;;:::o;4722:113::-;4791:5;4819:9;;;;;;;;;;;4812:16;;4722:113;:::o", - "source": "pragma solidity 0.4.23;\nimport \"./SelfAuthorized.sol\";\n\n/// @title OwnerManager - Manages a set of owners and a threshold to perform actions.\n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract OwnerManager is SelfAuthorized {\n\n address public constant SENTINEL_OWNERS = address(0x1);\n\n mapping(address => address) internal owners;\n uint256 ownerCount;\n uint8 internal threshold;\n\n /// @dev Setup function sets initial storage of contract.\n /// @param _owners List of Safe owners.\n /// @param _threshold Number of required confirmations for a Safe transaction.\n function setupOwners(address[] _owners, uint8 _threshold)\n internal\n {\n // Threshold can only be 0 at initialization.\n // Check ensures that setup function can only be called once.\n require(threshold == 0);\n // Validate that threshold is smaller than number of added owners.\n require(_threshold <= _owners.length);\n // There has to be at least one Safe owner.\n require(_threshold >= 1);\n // Initializing Safe owners.\n address currentOwner = SENTINEL_OWNERS;\n for (uint256 i = 0; i < _owners.length; i++) {\n // Owner address cannot be null.\n address owner = _owners[i];\n require(owner != 0 && owner != SENTINEL_OWNERS);\n // No duplicate owners allowed.\n require(owners[owner] == 0);\n owners[currentOwner] = owner;\n currentOwner = owner;\n }\n owners[currentOwner] = SENTINEL_OWNERS;\n ownerCount = _owners.length;\n threshold = _threshold;\n }\n\n /// @dev Allows to add a new owner to the Safe and update the threshold at the same time.\n /// This can only be done via a Safe transaction.\n /// @param owner New owner address.\n /// @param _threshold New threshold.\n function addOwnerWithThreshold(address owner, uint8 _threshold)\n public\n authorized\n {\n // Owner address cannot be null.\n require(owner != 0 && owner != SENTINEL_OWNERS);\n // No duplicate owners allowed.\n require(owners[owner] == 0);\n owners[owner] = owners[SENTINEL_OWNERS];\n owners[SENTINEL_OWNERS] = owner;\n ownerCount++;\n // Change threshold if threshold was changed.\n if (threshold != _threshold)\n changeThreshold(_threshold);\n }\n\n /// @dev Allows to remove an owner from the Safe and update the threshold at the same time.\n /// This can only be done via a Safe transaction.\n /// @param prevOwner Owner that pointed to the owner to be removed in the linked list\n /// @param owner Owner address to be removed.\n /// @param _threshold New threshold.\n function removeOwner(address prevOwner, address owner, uint8 _threshold)\n public\n authorized\n {\n // Only allow to remove an owner, if threshold can still be reached.\n require(ownerCount - 1 >= _threshold);\n // Validate owner address corresponds to owner index.\n require(owners[prevOwner] == owner);\n owners[prevOwner] = owners[owner];\n owners[owner] = 0;\n ownerCount--;\n // Change threshold if threshold was changed.\n if (threshold != _threshold)\n changeThreshold(_threshold);\n }\n\n /// @dev Allows to swap/replace an owner from the Safe with another address.\n /// This can only be done via a Safe transaction.\n /// @param prevOwner Owner that pointed to the owner to be replaced in the linked list\n /// @param oldOwner Owner address to be replaced.\n /// @param newOwner New owner address.\n function swapOwner(address prevOwner, address oldOwner, address newOwner)\n public\n authorized\n {\n // Owner address cannot be null.\n require(newOwner != 0 && newOwner != SENTINEL_OWNERS);\n // No duplicate owners allowed.\n require(owners[newOwner] == 0);\n // Validate owner address corresponds to owner index.\n require(owners[prevOwner] == oldOwner);\n owners[newOwner] = owners[oldOwner];\n owners[prevOwner] = newOwner;\n owners[oldOwner] = 0;\n }\n\n /// @dev Allows to update the number of required confirmations by Safe owners.\n /// This can only be done via a Safe transaction.\n /// @param _threshold New threshold.\n function changeThreshold(uint8 _threshold)\n public\n authorized\n {\n // Validate that threshold is smaller than number of owners.\n require(_threshold <= ownerCount);\n // There has to be at least one Safe owner.\n require(_threshold >= 1);\n threshold = _threshold;\n }\n\n function getThreshold()\n public\n view\n returns (uint8)\n {\n return threshold;\n }\n\n function isOwner(address owner)\n public\n view\n returns (bool)\n {\n return owners[owner] != 0;\n }\n\n /// @dev Returns array of owners.\n /// @return Array of Safe owners.\n function getOwners()\n public\n view\n returns (address[])\n {\n address[] memory array = new address[](ownerCount);\n\n // populate return array\n uint256 index = 0;\n address currentOwner = owners[SENTINEL_OWNERS];\n while(currentOwner != SENTINEL_OWNERS) {\n array[index] = currentOwner;\n currentOwner = owners[currentOwner];\n index ++;\n }\n return array;\n }\n}\n", + "bytecode": "0x608060405234801561001057600080fd5b50610efa806100206000396000f30060806040526004361061008e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632f54bf6e1461009357806386040aa9146100ee5780638cff63551461015e578063a0e67e2b146101b5578063b7f3358d14610221578063b91a667f14610251578063e318b52b146102a1578063e75235b814610324575b600080fd5b34801561009f57600080fd5b506100d4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610355565b604051808215151515815260200191505060405180910390f35b3480156100fa57600080fd5b5061015c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506103d6565b005b34801561016a57600080fd5b50610173610657565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101c157600080fd5b506101ca61065c565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561020d5780820151818401526020810190506101f2565b505050509050019250505060405180910390f35b34801561022d57600080fd5b5061024f600480360381019080803560ff1690602001909291905050506107f5565b005b34801561025d57600080fd5b5061029f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050610874565b005b3480156102ad57600080fd5b50610322600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b28565b005b34801561033057600080fd5b50610339610eb7565b604051808260ff1660ff16815260200191505060405180910390f35b6000806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561041057600080fd5b8060ff1660018054031015151561042657600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156104be57600080fd5b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160008154809291906001900391905055508060ff16600260009054906101000a900460ff1660ff1614151561065257610651816107f5565b5b505050565b600181565b6060806000806001546040519080825280602002602001820160405280156106935781602001602082028038833980820191505090505b50925060009150600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415156107ec5780838381518110151561074257fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081806001019250506106fd565b82935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561082f57600080fd5b6001548160ff161115151561084357600080fd5b60018160ff161015151561085657600080fd5b80600260006101000a81548160ff021916908360ff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156108ae57600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff16141580156109025750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b151561090d57600080fd5b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561099057600080fd5b600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600081548092919060010191905055508060ff16600260009054906101000a900460ff1660ff16141515610b2457610b23816107f5565b5b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b6257600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614158015610bb65750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515610bc157600080fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610c4457600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610cdc57600080fd5b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000600260009054906101000a900460ff169050905600a165627a7a723058207162ce7887c437c5aff253c6ee66707c5dd406c4fefdd37babe3c37d937512df0029", + "deployedBytecode": "0x60806040526004361061008e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632f54bf6e1461009357806386040aa9146100ee5780638cff63551461015e578063a0e67e2b146101b5578063b7f3358d14610221578063b91a667f14610251578063e318b52b146102a1578063e75235b814610324575b600080fd5b34801561009f57600080fd5b506100d4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610355565b604051808215151515815260200191505060405180910390f35b3480156100fa57600080fd5b5061015c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506103d6565b005b34801561016a57600080fd5b50610173610657565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101c157600080fd5b506101ca61065c565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561020d5780820151818401526020810190506101f2565b505050509050019250505060405180910390f35b34801561022d57600080fd5b5061024f600480360381019080803560ff1690602001909291905050506107f5565b005b34801561025d57600080fd5b5061029f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050610874565b005b3480156102ad57600080fd5b50610322600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b28565b005b34801561033057600080fd5b50610339610eb7565b604051808260ff1660ff16815260200191505060405180910390f35b6000806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561041057600080fd5b8060ff1660018054031015151561042657600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156104be57600080fd5b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160008154809291906001900391905055508060ff16600260009054906101000a900460ff1660ff1614151561065257610651816107f5565b5b505050565b600181565b6060806000806001546040519080825280602002602001820160405280156106935781602001602082028038833980820191505090505b50925060009150600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415156107ec5780838381518110151561074257fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081806001019250506106fd565b82935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561082f57600080fd5b6001548160ff161115151561084357600080fd5b60018160ff161015151561085657600080fd5b80600260006101000a81548160ff021916908360ff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156108ae57600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff16141580156109025750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b151561090d57600080fd5b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561099057600080fd5b600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600081548092919060010191905055508060ff16600260009054906101000a900460ff1660ff16141515610b2457610b23816107f5565b5b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b6257600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614158015610bb65750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515610bc157600080fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610c4457600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610cdc57600080fd5b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000600260009054906101000a900460ff169050905600a165627a7a723058207162ce7887c437c5aff253c6ee66707c5dd406c4fefdd37babe3c37d937512df0029", + "sourceMap": "240:5272:9:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;240:5272:9;;;;;;;", + "deployedSourceMap": "240:5272:9:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4841:129;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4841:129:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2776:573;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2776:573:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;287:54;;8:9:-1;5:2;;;30:1;27;20:12;5:2;287:54:9;;;;;;;;;;;;;;;;;;;;;;;;;;;5052:458;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5052:458:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;5052:458:9;;;;;;;;;;;;;;;;;4398:318;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4398:318:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;1906:528;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1906:528:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3683:526;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3683:526:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4722:113;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4722:113:9;;;;;;;;;;;;;;;;;;;;;;;;;;;4841:129;4918:4;4962:1;4945:6;:13;4952:5;4945:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;;4938:25;;4841:129;;;:::o;2776:573::-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;3000:10:9;2982:28;;2995:1;2982:10;;:14;:28;;2974:37;;;;;;;;3112:5;3091:26;;:6;:17;3098:9;3091:17;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;3083:35;;;;;;;;3148:6;:13;3155:5;3148:13;;;;;;;;;;;;;;;;;;;;;;;;;3128:6;:17;3135:9;3128:17;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;3187:1;3171:6;:13;3178:5;3171:13;;;;;;;;;;;;;;;;:17;;;;;;;;;;;;;;;;;;3198:10;;:12;;;;;;;;;;;;;;3291:10;3278:23;;:9;;;;;;;;;;;:23;;;;3274:68;;;3315:27;3331:10;3315:15;:27::i;:::-;3274:68;2776:573;;;:::o;287:54::-;337:3;287:54;:::o;5052:458::-;5118:9;5143:22;5237:13;5264:20;5182:10;;5168:25;;;;;;;;;;;;;;;;;;;;;;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;5168:25:9;;;;5143:50;;5253:1;5237:17;;5287:6;:23;337:3;5287:23;;;;;;;;;;;;;;;;;;;;;;;;;5264:46;;5320:162;337:3;5326:31;;:12;:31;;;;5320:162;;;5388:12;5373:5;5379;5373:12;;;;;;;;;;;;;;;;;:27;;;;;;;;;;;5429:6;:20;5436:12;5429:20;;;;;;;;;;;;;;;;;;;;;;;;;5414:35;;5463:8;;;;;;;5320:162;;;5498:5;5491:12;;5052:458;;;;:::o;4398:318::-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;4580:10:9;;4566;:24;;;;4558:33;;;;;;;;4675:1;4661:10;:15;;;;4653:24;;;;;;;;4699:10;4687:9;;:22;;;;;;;;;;;;;;;;;;4398:318;:::o;1906:528::-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;2076:1:9;2067:5;:10;;;;:38;;;;;337:3;2081:24;;:5;:24;;;;2067:38;2059:47;;;;;;;;2181:1;2164:6;:13;2171:5;2164:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;2156:27;;;;;;;;2209:6;:23;337:3;2209:23;;;;;;;;;;;;;;;;;;;;;;;;;2193:6;:13;2200:5;2193:13;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;2268:5;2242:6;:23;337:3;2242:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;2283:10;;:12;;;;;;;;;;;;;2376:10;2363:23;;:9;;;;;;;;;;;:23;;;;2359:68;;;2400:27;2416:10;2400:15;:27::i;:::-;2359:68;1906:528;;:::o;3683:526::-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;3866:1:9;3854:8;:13;;;;:44;;;;;337:3;3871:27;;:8;:27;;;;3854:44;3846:53;;;;;;;;3977:1;3957:6;:16;3964:8;3957:16;;;;;;;;;;;;;;;;;;;;;;;;;:21;;;3949:30;;;;;;;;4080:8;4059:29;;:6;:17;4066:9;4059:17;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;4051:38;;;;;;;;4118:6;:16;4125:8;4118:16;;;;;;;;;;;;;;;;;;;;;;;;;4099:6;:16;4106:8;4099:16;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;4164:8;4144:6;:17;4151:9;4144:17;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;4201:1;4182:6;:16;4189:8;4182:16;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;3683:526;;;:::o;4722:113::-;4791:5;4819:9;;;;;;;;;;;4812:16;;4722:113;:::o", + "source": "pragma solidity 0.4.24;\nimport \"./SelfAuthorized.sol\";\n\n/// @title OwnerManager - Manages a set of owners and a threshold to perform actions.\n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract OwnerManager is SelfAuthorized {\n\n address public constant SENTINEL_OWNERS = address(0x1);\n\n mapping(address => address) internal owners;\n uint256 ownerCount;\n uint8 internal threshold;\n\n /// @dev Setup function sets initial storage of contract.\n /// @param _owners List of Safe owners.\n /// @param _threshold Number of required confirmations for a Safe transaction.\n function setupOwners(address[] _owners, uint8 _threshold)\n internal\n {\n // Threshold can only be 0 at initialization.\n // Check ensures that setup function can only be called once.\n require(threshold == 0);\n // Validate that threshold is smaller than number of added owners.\n require(_threshold <= _owners.length);\n // There has to be at least one Safe owner.\n require(_threshold >= 1);\n // Initializing Safe owners.\n address currentOwner = SENTINEL_OWNERS;\n for (uint256 i = 0; i < _owners.length; i++) {\n // Owner address cannot be null.\n address owner = _owners[i];\n require(owner != 0 && owner != SENTINEL_OWNERS);\n // No duplicate owners allowed.\n require(owners[owner] == 0);\n owners[currentOwner] = owner;\n currentOwner = owner;\n }\n owners[currentOwner] = SENTINEL_OWNERS;\n ownerCount = _owners.length;\n threshold = _threshold;\n }\n\n /// @dev Allows to add a new owner to the Safe and update the threshold at the same time.\n /// This can only be done via a Safe transaction.\n /// @param owner New owner address.\n /// @param _threshold New threshold.\n function addOwnerWithThreshold(address owner, uint8 _threshold)\n public\n authorized\n {\n // Owner address cannot be null.\n require(owner != 0 && owner != SENTINEL_OWNERS);\n // No duplicate owners allowed.\n require(owners[owner] == 0);\n owners[owner] = owners[SENTINEL_OWNERS];\n owners[SENTINEL_OWNERS] = owner;\n ownerCount++;\n // Change threshold if threshold was changed.\n if (threshold != _threshold)\n changeThreshold(_threshold);\n }\n\n /// @dev Allows to remove an owner from the Safe and update the threshold at the same time.\n /// This can only be done via a Safe transaction.\n /// @param prevOwner Owner that pointed to the owner to be removed in the linked list\n /// @param owner Owner address to be removed.\n /// @param _threshold New threshold.\n function removeOwner(address prevOwner, address owner, uint8 _threshold)\n public\n authorized\n {\n // Only allow to remove an owner, if threshold can still be reached.\n require(ownerCount - 1 >= _threshold);\n // Validate owner address corresponds to owner index.\n require(owners[prevOwner] == owner);\n owners[prevOwner] = owners[owner];\n owners[owner] = 0;\n ownerCount--;\n // Change threshold if threshold was changed.\n if (threshold != _threshold)\n changeThreshold(_threshold);\n }\n\n /// @dev Allows to swap/replace an owner from the Safe with another address.\n /// This can only be done via a Safe transaction.\n /// @param prevOwner Owner that pointed to the owner to be replaced in the linked list\n /// @param oldOwner Owner address to be replaced.\n /// @param newOwner New owner address.\n function swapOwner(address prevOwner, address oldOwner, address newOwner)\n public\n authorized\n {\n // Owner address cannot be null.\n require(newOwner != 0 && newOwner != SENTINEL_OWNERS);\n // No duplicate owners allowed.\n require(owners[newOwner] == 0);\n // Validate owner address corresponds to owner index.\n require(owners[prevOwner] == oldOwner);\n owners[newOwner] = owners[oldOwner];\n owners[prevOwner] = newOwner;\n owners[oldOwner] = 0;\n }\n\n /// @dev Allows to update the number of required confirmations by Safe owners.\n /// This can only be done via a Safe transaction.\n /// @param _threshold New threshold.\n function changeThreshold(uint8 _threshold)\n public\n authorized\n {\n // Validate that threshold is smaller than number of owners.\n require(_threshold <= ownerCount);\n // There has to be at least one Safe owner.\n require(_threshold >= 1);\n threshold = _threshold;\n }\n\n function getThreshold()\n public\n view\n returns (uint8)\n {\n return threshold;\n }\n\n function isOwner(address owner)\n public\n view\n returns (bool)\n {\n return owners[owner] != 0;\n }\n\n /// @dev Returns array of owners.\n /// @return Array of Safe owners.\n function getOwners()\n public\n view\n returns (address[])\n {\n address[] memory array = new address[](ownerCount);\n\n // populate return array\n uint256 index = 0;\n address currentOwner = owners[SENTINEL_OWNERS];\n while(currentOwner != SENTINEL_OWNERS) {\n array[index] = currentOwner;\n currentOwner = owners[currentOwner];\n index ++;\n }\n return array;\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", "exportedSymbols": { "OwnerManager": [ - 1343 + 1472 ] }, - "id": 1344, + "id": 1473, "nodeType": "SourceUnit", "nodes": [ { - "id": 973, + "id": 1102, "literals": [ "solidity", "0.4", - ".23" + ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:7" + "src": "0:23:9" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/SelfAuthorized.sol", "file": "./SelfAuthorized.sol", - "id": 974, + "id": 1103, "nodeType": "ImportDirective", - "scope": 1344, - "sourceUnit": 1360, - "src": "24:30:7", + "scope": 1473, + "sourceUnit": 1620, + "src": "24:30:9", "symbolAliases": [], "unitAlias": "" }, @@ -182,42 +182,42 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 975, + "id": 1104, "name": "SelfAuthorized", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1359, - "src": "265:14:7", + "referencedDeclaration": 1619, + "src": "265:14:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_SelfAuthorized_$1359", + "typeIdentifier": "t_contract$_SelfAuthorized_$1619", "typeString": "contract SelfAuthorized" } }, - "id": 976, + "id": 1105, "nodeType": "InheritanceSpecifier", - "src": "265:14:7" + "src": "265:14:9" } ], "contractDependencies": [ - 1359 + 1619 ], "contractKind": "contract", "documentation": "@title OwnerManager - Manages a set of owners and a threshold to perform actions.\n @author Stefan George - \n @author Richard Meissner - ", "fullyImplemented": true, - "id": 1343, + "id": 1472, "linearizedBaseContracts": [ - 1343, - 1359 + 1472, + 1619 ], "name": "OwnerManager", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, - "id": 981, + "id": 1110, "name": "SENTINEL_OWNERS", "nodeType": "VariableDeclaration", - "scope": 1343, - "src": "287:54:7", + "scope": 1472, + "src": "287:54:9", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -225,10 +225,10 @@ "typeString": "address" }, "typeName": { - "id": 977, + "id": 1106, "name": "address", "nodeType": "ElementaryTypeName", - "src": "287:7:7", + "src": "287:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -240,14 +240,14 @@ { "argumentTypes": null, "hexValue": "307831", - "id": 979, + "id": 1108, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "337:3:7", + "src": "337:3:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -263,20 +263,20 @@ "typeString": "int_const 1" } ], - "id": 978, + "id": 1107, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "329:7:7", + "src": "329:7:9", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 980, + "id": 1109, "isConstant": false, "isLValue": false, "isPure": true, @@ -284,7 +284,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "329:12:7", + "src": "329:12:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -294,11 +294,11 @@ }, { "constant": false, - "id": 985, + "id": 1114, "name": "owners", "nodeType": "VariableDeclaration", - "scope": 1343, - "src": "348:43:7", + "scope": 1472, + "src": "348:43:9", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -306,28 +306,28 @@ "typeString": "mapping(address => address)" }, "typeName": { - "id": 984, + "id": 1113, "keyType": { - "id": 982, + "id": 1111, "name": "address", "nodeType": "ElementaryTypeName", - "src": "356:7:7", + "src": "356:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "348:27:7", + "src": "348:27:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" }, "valueType": { - "id": 983, + "id": 1112, "name": "address", "nodeType": "ElementaryTypeName", - "src": "367:7:7", + "src": "367:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -339,11 +339,11 @@ }, { "constant": false, - "id": 987, + "id": 1116, "name": "ownerCount", "nodeType": "VariableDeclaration", - "scope": 1343, - "src": "397:18:7", + "scope": 1472, + "src": "397:18:9", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -351,10 +351,10 @@ "typeString": "uint256" }, "typeName": { - "id": 986, + "id": 1115, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "397:7:7", + "src": "397:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -365,11 +365,11 @@ }, { "constant": false, - "id": 989, + "id": 1118, "name": "threshold", "nodeType": "VariableDeclaration", - "scope": 1343, - "src": "421:24:7", + "scope": 1472, + "src": "421:24:9", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -377,10 +377,10 @@ "typeString": "uint8" }, "typeName": { - "id": 988, + "id": 1117, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "421:5:7", + "src": "421:5:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -391,9 +391,9 @@ }, { "body": { - "id": 1082, + "id": 1211, "nodeType": "Block", - "src": "720:946:7", + "src": "720:946:9", "statements": [ { "expression": { @@ -405,19 +405,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 1000, + "id": 1129, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 998, + "id": 1127, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 989, - "src": "862:9:7", + "referencedDeclaration": 1118, + "src": "862:9:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -428,14 +428,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 999, + "id": 1128, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "875:1:7", + "src": "875:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -443,7 +443,7 @@ }, "value": "0" }, - "src": "862:14:7", + "src": "862:14:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -457,21 +457,21 @@ "typeString": "bool" } ], - "id": 997, + "id": 1126, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "854:7:7", + "referencedDeclaration": 2601, + "src": "854:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1001, + "id": 1130, "isConstant": false, "isLValue": false, "isPure": false, @@ -479,15 +479,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "854:23:7", + "src": "854:23:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1002, + "id": 1131, "nodeType": "ExpressionStatement", - "src": "854:23:7" + "src": "854:23:9" }, { "expression": { @@ -499,19 +499,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1007, + "id": 1136, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1004, + "id": 1133, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 994, - "src": "970:10:7", + "referencedDeclaration": 1123, + "src": "970:10:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -523,18 +523,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1005, + "id": 1134, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 992, - "src": "984:7:7", + "referencedDeclaration": 1121, + "src": "984:7:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1006, + "id": 1135, "isConstant": false, "isLValue": false, "isPure": false, @@ -542,13 +542,13 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "984:14:7", + "src": "984:14:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "970:28:7", + "src": "970:28:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -562,21 +562,21 @@ "typeString": "bool" } ], - "id": 1003, + "id": 1132, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "962:7:7", + "referencedDeclaration": 2601, + "src": "962:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1008, + "id": 1137, "isConstant": false, "isLValue": false, "isPure": false, @@ -584,15 +584,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "962:37:7", + "src": "962:37:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1009, + "id": 1138, "nodeType": "ExpressionStatement", - "src": "962:37:7" + "src": "962:37:9" }, { "expression": { @@ -604,19 +604,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 1013, + "id": 1142, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1011, + "id": 1140, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 994, - "src": "1069:10:7", + "referencedDeclaration": 1123, + "src": "1069:10:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -627,14 +627,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31", - "id": 1012, + "id": 1141, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1083:1:7", + "src": "1083:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -642,7 +642,7 @@ }, "value": "1" }, - "src": "1069:15:7", + "src": "1069:15:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -656,21 +656,21 @@ "typeString": "bool" } ], - "id": 1010, + "id": 1139, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "1061:7:7", + "referencedDeclaration": 2601, + "src": "1061:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1014, + "id": 1143, "isConstant": false, "isLValue": false, "isPure": false, @@ -678,28 +678,28 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1061:24:7", + "src": "1061:24:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1015, + "id": 1144, "nodeType": "ExpressionStatement", - "src": "1061:24:7" + "src": "1061:24:9" }, { "assignments": [ - 1017 + 1146 ], "declarations": [ { "constant": false, - "id": 1017, + "id": 1146, "name": "currentOwner", "nodeType": "VariableDeclaration", - "scope": 1083, - "src": "1132:20:7", + "scope": 1212, + "src": "1132:20:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -707,10 +707,10 @@ "typeString": "address" }, "typeName": { - "id": 1016, + "id": 1145, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1132:7:7", + "src": "1132:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -720,41 +720,41 @@ "visibility": "internal" } ], - "id": 1019, + "id": 1148, "initialValue": { "argumentTypes": null, - "id": 1018, + "id": 1147, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 981, - "src": "1155:15:7", + "referencedDeclaration": 1110, + "src": "1155:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "1132:38:7" + "src": "1132:38:9" }, { "body": { - "id": 1065, + "id": 1194, "nodeType": "Block", - "src": "1225:318:7", + "src": "1225:318:9", "statements": [ { "assignments": [ - 1032 + 1161 ], "declarations": [ { "constant": false, - "id": 1032, + "id": 1161, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 1083, - "src": "1284:13:7", + "scope": 1212, + "src": "1284:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -762,10 +762,10 @@ "typeString": "address" }, "typeName": { - "id": 1031, + "id": 1160, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1284:7:7", + "src": "1284:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -775,31 +775,31 @@ "visibility": "internal" } ], - "id": 1036, + "id": 1165, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1033, + "id": 1162, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 992, - "src": "1300:7:7", + "referencedDeclaration": 1121, + "src": "1300:7:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1035, + "id": 1164, "indexExpression": { "argumentTypes": null, - "id": 1034, + "id": 1163, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1021, - "src": "1308:1:7", + "referencedDeclaration": 1150, + "src": "1308:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -810,14 +810,14 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1300:10:7", + "src": "1300:10:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "1284:26:7" + "src": "1284:26:9" }, { "expression": { @@ -829,7 +829,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 1044, + "id": 1173, "isConstant": false, "isLValue": false, "isPure": false, @@ -840,19 +840,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1040, + "id": 1169, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1038, + "id": 1167, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1032, - "src": "1332:5:7", + "referencedDeclaration": 1161, + "src": "1332:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -863,14 +863,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1039, + "id": 1168, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1341:1:7", + "src": "1341:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -878,7 +878,7 @@ }, "value": "0" }, - "src": "1332:10:7", + "src": "1332:10:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -892,19 +892,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1043, + "id": 1172, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1041, + "id": 1170, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1032, - "src": "1346:5:7", + "referencedDeclaration": 1161, + "src": "1346:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -914,24 +914,24 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 1042, + "id": 1171, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 981, - "src": "1355:15:7", + "referencedDeclaration": 1110, + "src": "1355:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1346:24:7", + "src": "1346:24:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "1332:38:7", + "src": "1332:38:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -945,21 +945,21 @@ "typeString": "bool" } ], - "id": 1037, + "id": 1166, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "1324:7:7", + "referencedDeclaration": 2601, + "src": "1324:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1045, + "id": 1174, "isConstant": false, "isLValue": false, "isPure": false, @@ -967,15 +967,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1324:47:7", + "src": "1324:47:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1046, + "id": 1175, "nodeType": "ExpressionStatement", - "src": "1324:47:7" + "src": "1324:47:9" }, { "expression": { @@ -987,7 +987,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1052, + "id": 1181, "isConstant": false, "isLValue": false, "isPure": false, @@ -996,26 +996,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1048, + "id": 1177, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "1437:6:7", + "referencedDeclaration": 1114, + "src": "1437:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1050, + "id": 1179, "indexExpression": { "argumentTypes": null, - "id": 1049, + "id": 1178, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1032, - "src": "1444:5:7", + "referencedDeclaration": 1161, + "src": "1444:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1026,7 +1026,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1437:13:7", + "src": "1437:13:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1037,14 +1037,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1051, + "id": 1180, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1454:1:7", + "src": "1454:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1052,7 +1052,7 @@ }, "value": "0" }, - "src": "1437:18:7", + "src": "1437:18:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1066,21 +1066,21 @@ "typeString": "bool" } ], - "id": 1047, + "id": 1176, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "1429:7:7", + "referencedDeclaration": 2601, + "src": "1429:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1053, + "id": 1182, "isConstant": false, "isLValue": false, "isPure": false, @@ -1088,20 +1088,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1429:27:7", + "src": "1429:27:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1054, + "id": 1183, "nodeType": "ExpressionStatement", - "src": "1429:27:7" + "src": "1429:27:9" }, { "expression": { "argumentTypes": null, - "id": 1059, + "id": 1188, "isConstant": false, "isLValue": false, "isPure": false, @@ -1110,26 +1110,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1055, + "id": 1184, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "1470:6:7", + "referencedDeclaration": 1114, + "src": "1470:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1057, + "id": 1186, "indexExpression": { "argumentTypes": null, - "id": 1056, + "id": 1185, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1017, - "src": "1477:12:7", + "referencedDeclaration": 1146, + "src": "1477:12:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1140,7 +1140,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1470:20:7", + "src": "1470:20:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1150,43 +1150,43 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1058, + "id": 1187, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1032, - "src": "1493:5:7", + "referencedDeclaration": 1161, + "src": "1493:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1470:28:7", + "src": "1470:28:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1060, + "id": 1189, "nodeType": "ExpressionStatement", - "src": "1470:28:7" + "src": "1470:28:9" }, { "expression": { "argumentTypes": null, - "id": 1063, + "id": 1192, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1061, + "id": 1190, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1017, - "src": "1512:12:7", + "referencedDeclaration": 1146, + "src": "1512:12:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1196,26 +1196,26 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1062, + "id": 1191, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1032, - "src": "1527:5:7", + "referencedDeclaration": 1161, + "src": "1527:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1512:20:7", + "src": "1512:20:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1064, + "id": 1193, "nodeType": "ExpressionStatement", - "src": "1512:20:7" + "src": "1512:20:9" } ] }, @@ -1225,19 +1225,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1027, + "id": 1156, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1024, + "id": 1153, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1021, - "src": "1200:1:7", + "referencedDeclaration": 1150, + "src": "1200:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1249,18 +1249,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1025, + "id": 1154, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 992, - "src": "1204:7:7", + "referencedDeclaration": 1121, + "src": "1204:7:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1026, + "id": 1155, "isConstant": false, "isLValue": false, "isPure": false, @@ -1268,31 +1268,31 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1204:14:7", + "src": "1204:14:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1200:18:7", + "src": "1200:18:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 1066, + "id": 1195, "initializationExpression": { "assignments": [ - 1021 + 1150 ], "declarations": [ { "constant": false, - "id": 1021, + "id": 1150, "name": "i", "nodeType": "VariableDeclaration", - "scope": 1083, - "src": "1185:9:7", + "scope": 1212, + "src": "1185:9:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1300,10 +1300,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1020, + "id": 1149, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1185:7:7", + "src": "1185:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1313,18 +1313,18 @@ "visibility": "internal" } ], - "id": 1023, + "id": 1152, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 1022, + "id": 1151, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1197:1:7", + "src": "1197:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1333,12 +1333,12 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "1185:13:7" + "src": "1185:13:9" }, "loopExpression": { "expression": { "argumentTypes": null, - "id": 1029, + "id": 1158, "isConstant": false, "isLValue": false, "isPure": false, @@ -1346,15 +1346,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "1220:3:7", + "src": "1220:3:9", "subExpression": { "argumentTypes": null, - "id": 1028, + "id": 1157, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1021, - "src": "1220:1:7", + "referencedDeclaration": 1150, + "src": "1220:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1365,17 +1365,17 @@ "typeString": "uint256" } }, - "id": 1030, + "id": 1159, "nodeType": "ExpressionStatement", - "src": "1220:3:7" + "src": "1220:3:9" }, "nodeType": "ForStatement", - "src": "1180:363:7" + "src": "1180:363:9" }, { "expression": { "argumentTypes": null, - "id": 1071, + "id": 1200, "isConstant": false, "isLValue": false, "isPure": false, @@ -1384,26 +1384,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1067, + "id": 1196, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "1552:6:7", + "referencedDeclaration": 1114, + "src": "1552:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1069, + "id": 1198, "indexExpression": { "argumentTypes": null, - "id": 1068, + "id": 1197, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1017, - "src": "1559:12:7", + "referencedDeclaration": 1146, + "src": "1559:12:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1414,7 +1414,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1552:20:7", + "src": "1552:20:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1424,43 +1424,43 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1070, + "id": 1199, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 981, - "src": "1575:15:7", + "referencedDeclaration": 1110, + "src": "1575:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1552:38:7", + "src": "1552:38:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1072, + "id": 1201, "nodeType": "ExpressionStatement", - "src": "1552:38:7" + "src": "1552:38:9" }, { "expression": { "argumentTypes": null, - "id": 1076, + "id": 1205, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1073, + "id": 1202, "name": "ownerCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 987, - "src": "1600:10:7", + "referencedDeclaration": 1116, + "src": "1600:10:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1472,18 +1472,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1074, + "id": 1203, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 992, - "src": "1613:7:7", + "referencedDeclaration": 1121, + "src": "1613:7:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1075, + "id": 1204, "isConstant": false, "isLValue": false, "isPure": false, @@ -1491,38 +1491,38 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1613:14:7", + "src": "1613:14:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1600:27:7", + "src": "1600:27:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1077, + "id": 1206, "nodeType": "ExpressionStatement", - "src": "1600:27:7" + "src": "1600:27:9" }, { "expression": { "argumentTypes": null, - "id": 1080, + "id": 1209, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1078, + "id": 1207, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 989, - "src": "1637:9:7", + "referencedDeclaration": 1118, + "src": "1637:9:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -1532,31 +1532,31 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1079, + "id": 1208, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 994, - "src": "1649:10:7", + "referencedDeclaration": 1123, + "src": "1649:10:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "1637:22:7", + "src": "1637:22:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "id": 1081, + "id": 1210, "nodeType": "ExpressionStatement", - "src": "1637:22:7" + "src": "1637:22:9" } ] }, "documentation": "@dev Setup function sets initial storage of contract.\n @param _owners List of Safe owners.\n @param _threshold Number of required confirmations for a Safe transaction.", - "id": 1083, + "id": 1212, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -1564,16 +1564,16 @@ "name": "setupOwners", "nodeType": "FunctionDefinition", "parameters": { - "id": 995, + "id": 1124, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 992, + "id": 1121, "name": "_owners", "nodeType": "VariableDeclaration", - "scope": 1083, - "src": "662:17:7", + "scope": 1212, + "src": "662:17:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1582,19 +1582,19 @@ }, "typeName": { "baseType": { - "id": 990, + "id": 1119, "name": "address", "nodeType": "ElementaryTypeName", - "src": "662:7:7", + "src": "662:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 991, + "id": 1120, "length": null, "nodeType": "ArrayTypeName", - "src": "662:9:7", + "src": "662:9:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -1605,11 +1605,11 @@ }, { "constant": false, - "id": 994, + "id": 1123, "name": "_threshold", "nodeType": "VariableDeclaration", - "scope": 1083, - "src": "681:16:7", + "scope": 1212, + "src": "681:16:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1617,10 +1617,10 @@ "typeString": "uint8" }, "typeName": { - "id": 993, + "id": 1122, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "681:5:7", + "src": "681:5:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -1630,26 +1630,26 @@ "visibility": "internal" } ], - "src": "661:37:7" + "src": "661:37:9" }, "payable": false, "returnParameters": { - "id": 996, + "id": 1125, "nodeType": "ParameterList", "parameters": [], - "src": "720:0:7" + "src": "720:0:9" }, - "scope": 1343, - "src": "641:1025:7", + "scope": 1472, + "src": "641:1025:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1135, + "id": 1264, "nodeType": "Block", - "src": "2008:426:7", + "src": "2008:426:9", "statements": [ { "expression": { @@ -1661,7 +1661,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 1099, + "id": 1228, "isConstant": false, "isLValue": false, "isPure": false, @@ -1672,19 +1672,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1095, + "id": 1224, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1093, + "id": 1222, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1085, - "src": "2067:5:7", + "referencedDeclaration": 1214, + "src": "2067:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1695,14 +1695,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1094, + "id": 1223, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2076:1:7", + "src": "2076:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1710,7 +1710,7 @@ }, "value": "0" }, - "src": "2067:10:7", + "src": "2067:10:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1724,19 +1724,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1098, + "id": 1227, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1096, + "id": 1225, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1085, - "src": "2081:5:7", + "referencedDeclaration": 1214, + "src": "2081:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1746,24 +1746,24 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 1097, + "id": 1226, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 981, - "src": "2090:15:7", + "referencedDeclaration": 1110, + "src": "2090:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2081:24:7", + "src": "2081:24:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "2067:38:7", + "src": "2067:38:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1777,21 +1777,21 @@ "typeString": "bool" } ], - "id": 1092, + "id": 1221, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "2059:7:7", + "referencedDeclaration": 2601, + "src": "2059:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1100, + "id": 1229, "isConstant": false, "isLValue": false, "isPure": false, @@ -1799,15 +1799,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2059:47:7", + "src": "2059:47:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1101, + "id": 1230, "nodeType": "ExpressionStatement", - "src": "2059:47:7" + "src": "2059:47:9" }, { "expression": { @@ -1819,7 +1819,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1107, + "id": 1236, "isConstant": false, "isLValue": false, "isPure": false, @@ -1828,26 +1828,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1103, + "id": 1232, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "2164:6:7", + "referencedDeclaration": 1114, + "src": "2164:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1105, + "id": 1234, "indexExpression": { "argumentTypes": null, - "id": 1104, + "id": 1233, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1085, - "src": "2171:5:7", + "referencedDeclaration": 1214, + "src": "2171:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1858,7 +1858,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2164:13:7", + "src": "2164:13:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1869,14 +1869,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1106, + "id": 1235, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2181:1:7", + "src": "2181:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1884,7 +1884,7 @@ }, "value": "0" }, - "src": "2164:18:7", + "src": "2164:18:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1898,21 +1898,21 @@ "typeString": "bool" } ], - "id": 1102, + "id": 1231, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "2156:7:7", + "referencedDeclaration": 2601, + "src": "2156:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1108, + "id": 1237, "isConstant": false, "isLValue": false, "isPure": false, @@ -1920,20 +1920,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2156:27:7", + "src": "2156:27:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1109, + "id": 1238, "nodeType": "ExpressionStatement", - "src": "2156:27:7" + "src": "2156:27:9" }, { "expression": { "argumentTypes": null, - "id": 1116, + "id": 1245, "isConstant": false, "isLValue": false, "isPure": false, @@ -1942,26 +1942,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1110, + "id": 1239, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "2193:6:7", + "referencedDeclaration": 1114, + "src": "2193:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1112, + "id": 1241, "indexExpression": { "argumentTypes": null, - "id": 1111, + "id": 1240, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1085, - "src": "2200:5:7", + "referencedDeclaration": 1214, + "src": "2200:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1972,7 +1972,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2193:13:7", + "src": "2193:13:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1984,26 +1984,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1113, + "id": 1242, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "2209:6:7", + "referencedDeclaration": 1114, + "src": "2209:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1115, + "id": 1244, "indexExpression": { "argumentTypes": null, - "id": 1114, + "id": 1243, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 981, - "src": "2216:15:7", + "referencedDeclaration": 1110, + "src": "2216:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2014,26 +2014,26 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2209:23:7", + "src": "2209:23:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2193:39:7", + "src": "2193:39:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1117, + "id": 1246, "nodeType": "ExpressionStatement", - "src": "2193:39:7" + "src": "2193:39:9" }, { "expression": { "argumentTypes": null, - "id": 1122, + "id": 1251, "isConstant": false, "isLValue": false, "isPure": false, @@ -2042,26 +2042,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1118, + "id": 1247, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "2242:6:7", + "referencedDeclaration": 1114, + "src": "2242:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1120, + "id": 1249, "indexExpression": { "argumentTypes": null, - "id": 1119, + "id": 1248, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 981, - "src": "2249:15:7", + "referencedDeclaration": 1110, + "src": "2249:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2072,7 +2072,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2242:23:7", + "src": "2242:23:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2082,31 +2082,31 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1121, + "id": 1250, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1085, - "src": "2268:5:7", + "referencedDeclaration": 1214, + "src": "2268:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2242:31:7", + "src": "2242:31:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1123, + "id": 1252, "nodeType": "ExpressionStatement", - "src": "2242:31:7" + "src": "2242:31:9" }, { "expression": { "argumentTypes": null, - "id": 1125, + "id": 1254, "isConstant": false, "isLValue": false, "isPure": false, @@ -2114,15 +2114,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "2283:12:7", + "src": "2283:12:9", "subExpression": { "argumentTypes": null, - "id": 1124, + "id": 1253, "name": "ownerCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 987, - "src": "2283:10:7", + "referencedDeclaration": 1116, + "src": "2283:10:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2133,9 +2133,9 @@ "typeString": "uint256" } }, - "id": 1126, + "id": 1255, "nodeType": "ExpressionStatement", - "src": "2283:12:7" + "src": "2283:12:9" }, { "condition": { @@ -2144,19 +2144,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 1129, + "id": 1258, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1127, + "id": 1256, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 989, - "src": "2363:9:7", + "referencedDeclaration": 1118, + "src": "2363:9:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -2166,39 +2166,39 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 1128, + "id": 1257, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1087, - "src": "2376:10:7", + "referencedDeclaration": 1216, + "src": "2376:10:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "2363:23:7", + "src": "2363:23:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 1134, + "id": 1263, "nodeType": "IfStatement", - "src": "2359:68:7", + "src": "2359:68:9", "trueBody": { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 1131, + "id": 1260, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1087, - "src": "2416:10:7", + "referencedDeclaration": 1216, + "src": "2416:10:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -2212,18 +2212,18 @@ "typeString": "uint8" } ], - "id": 1130, + "id": 1259, "name": "changeThreshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1271, - "src": "2400:15:7", + "referencedDeclaration": 1400, + "src": "2400:15:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$returns$__$", "typeString": "function (uint8)" } }, - "id": 1132, + "id": 1261, "isConstant": false, "isLValue": false, "isPure": false, @@ -2231,58 +2231,58 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2400:27:7", + "src": "2400:27:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1133, + "id": 1262, "nodeType": "ExpressionStatement", - "src": "2400:27:7" + "src": "2400:27:9" } } ] }, "documentation": "@dev Allows to add a new owner to the Safe and update the threshold at the same time.\n This can only be done via a Safe transaction.\n @param owner New owner address.\n @param _threshold New threshold.", - "id": 1136, + "id": 1265, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 1090, + "id": 1219, "modifierName": { "argumentTypes": null, - "id": 1089, + "id": 1218, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1358, - "src": "1993:10:7", + "referencedDeclaration": 1618, + "src": "1993:10:9", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1993:10:7" + "src": "1993:10:9" } ], "name": "addOwnerWithThreshold", "nodeType": "FunctionDefinition", "parameters": { - "id": 1088, + "id": 1217, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1085, + "id": 1214, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 1136, - "src": "1937:13:7", + "scope": 1265, + "src": "1937:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2290,10 +2290,10 @@ "typeString": "address" }, "typeName": { - "id": 1084, + "id": 1213, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1937:7:7", + "src": "1937:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2304,11 +2304,11 @@ }, { "constant": false, - "id": 1087, + "id": 1216, "name": "_threshold", "nodeType": "VariableDeclaration", - "scope": 1136, - "src": "1952:16:7", + "scope": 1265, + "src": "1952:16:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2316,10 +2316,10 @@ "typeString": "uint8" }, "typeName": { - "id": 1086, + "id": 1215, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "1952:5:7", + "src": "1952:5:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -2329,26 +2329,26 @@ "visibility": "internal" } ], - "src": "1936:33:7" + "src": "1936:33:9" }, "payable": false, "returnParameters": { - "id": 1091, + "id": 1220, "nodeType": "ParameterList", "parameters": [], - "src": "2008:0:7" + "src": "2008:0:9" }, - "scope": 1343, - "src": "1906:528:7", + "scope": 1472, + "src": "1906:528:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1188, + "id": 1317, "nodeType": "Block", - "src": "2887:462:7", + "src": "2887:462:9", "statements": [ { "expression": { @@ -2360,7 +2360,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1152, + "id": 1281, "isConstant": false, "isLValue": false, "isPure": false, @@ -2371,19 +2371,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1150, + "id": 1279, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1148, + "id": 1277, "name": "ownerCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 987, - "src": "2982:10:7", + "referencedDeclaration": 1116, + "src": "2982:10:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2394,14 +2394,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31", - "id": 1149, + "id": 1278, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2995:1:7", + "src": "2995:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -2409,7 +2409,7 @@ }, "value": "1" }, - "src": "2982:14:7", + "src": "2982:14:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2419,18 +2419,18 @@ "operator": ">=", "rightExpression": { "argumentTypes": null, - "id": 1151, + "id": 1280, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1142, - "src": "3000:10:7", + "referencedDeclaration": 1271, + "src": "3000:10:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "2982:28:7", + "src": "2982:28:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2444,21 +2444,21 @@ "typeString": "bool" } ], - "id": 1147, + "id": 1276, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "2974:7:7", + "referencedDeclaration": 2601, + "src": "2974:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1153, + "id": 1282, "isConstant": false, "isLValue": false, "isPure": false, @@ -2466,15 +2466,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2974:37:7", + "src": "2974:37:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1154, + "id": 1283, "nodeType": "ExpressionStatement", - "src": "2974:37:7" + "src": "2974:37:9" }, { "expression": { @@ -2486,7 +2486,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1160, + "id": 1289, "isConstant": false, "isLValue": false, "isPure": false, @@ -2495,26 +2495,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1156, + "id": 1285, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "3091:6:7", + "referencedDeclaration": 1114, + "src": "3091:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1158, + "id": 1287, "indexExpression": { "argumentTypes": null, - "id": 1157, + "id": 1286, "name": "prevOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1138, - "src": "3098:9:7", + "referencedDeclaration": 1267, + "src": "3098:9:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2525,7 +2525,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3091:17:7", + "src": "3091:17:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2535,18 +2535,18 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 1159, + "id": 1288, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1140, - "src": "3112:5:7", + "referencedDeclaration": 1269, + "src": "3112:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "3091:26:7", + "src": "3091:26:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2560,21 +2560,21 @@ "typeString": "bool" } ], - "id": 1155, + "id": 1284, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "3083:7:7", + "referencedDeclaration": 2601, + "src": "3083:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1161, + "id": 1290, "isConstant": false, "isLValue": false, "isPure": false, @@ -2582,20 +2582,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3083:35:7", + "src": "3083:35:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1162, + "id": 1291, "nodeType": "ExpressionStatement", - "src": "3083:35:7" + "src": "3083:35:9" }, { "expression": { "argumentTypes": null, - "id": 1169, + "id": 1298, "isConstant": false, "isLValue": false, "isPure": false, @@ -2604,26 +2604,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1163, + "id": 1292, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "3128:6:7", + "referencedDeclaration": 1114, + "src": "3128:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1165, + "id": 1294, "indexExpression": { "argumentTypes": null, - "id": 1164, + "id": 1293, "name": "prevOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1138, - "src": "3135:9:7", + "referencedDeclaration": 1267, + "src": "3135:9:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2634,7 +2634,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "3128:17:7", + "src": "3128:17:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2646,26 +2646,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1166, + "id": 1295, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "3148:6:7", + "referencedDeclaration": 1114, + "src": "3148:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1168, + "id": 1297, "indexExpression": { "argumentTypes": null, - "id": 1167, + "id": 1296, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1140, - "src": "3155:5:7", + "referencedDeclaration": 1269, + "src": "3155:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2676,26 +2676,26 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3148:13:7", + "src": "3148:13:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "3128:33:7", + "src": "3128:33:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1170, + "id": 1299, "nodeType": "ExpressionStatement", - "src": "3128:33:7" + "src": "3128:33:9" }, { "expression": { "argumentTypes": null, - "id": 1175, + "id": 1304, "isConstant": false, "isLValue": false, "isPure": false, @@ -2704,26 +2704,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1171, + "id": 1300, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "3171:6:7", + "referencedDeclaration": 1114, + "src": "3171:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1173, + "id": 1302, "indexExpression": { "argumentTypes": null, - "id": 1172, + "id": 1301, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1140, - "src": "3178:5:7", + "referencedDeclaration": 1269, + "src": "3178:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2734,7 +2734,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "3171:13:7", + "src": "3171:13:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2745,14 +2745,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "30", - "id": 1174, + "id": 1303, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3187:1:7", + "src": "3187:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -2760,20 +2760,20 @@ }, "value": "0" }, - "src": "3171:17:7", + "src": "3171:17:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1176, + "id": 1305, "nodeType": "ExpressionStatement", - "src": "3171:17:7" + "src": "3171:17:9" }, { "expression": { "argumentTypes": null, - "id": 1178, + "id": 1307, "isConstant": false, "isLValue": false, "isPure": false, @@ -2781,15 +2781,15 @@ "nodeType": "UnaryOperation", "operator": "--", "prefix": false, - "src": "3198:12:7", + "src": "3198:12:9", "subExpression": { "argumentTypes": null, - "id": 1177, + "id": 1306, "name": "ownerCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 987, - "src": "3198:10:7", + "referencedDeclaration": 1116, + "src": "3198:10:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2800,9 +2800,9 @@ "typeString": "uint256" } }, - "id": 1179, + "id": 1308, "nodeType": "ExpressionStatement", - "src": "3198:12:7" + "src": "3198:12:9" }, { "condition": { @@ -2811,19 +2811,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 1182, + "id": 1311, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1180, + "id": 1309, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 989, - "src": "3278:9:7", + "referencedDeclaration": 1118, + "src": "3278:9:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -2833,39 +2833,39 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 1181, + "id": 1310, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1142, - "src": "3291:10:7", + "referencedDeclaration": 1271, + "src": "3291:10:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "3278:23:7", + "src": "3278:23:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 1187, + "id": 1316, "nodeType": "IfStatement", - "src": "3274:68:7", + "src": "3274:68:9", "trueBody": { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 1184, + "id": 1313, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1142, - "src": "3331:10:7", + "referencedDeclaration": 1271, + "src": "3331:10:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -2879,18 +2879,18 @@ "typeString": "uint8" } ], - "id": 1183, + "id": 1312, "name": "changeThreshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1271, - "src": "3315:15:7", + "referencedDeclaration": 1400, + "src": "3315:15:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$returns$__$", "typeString": "function (uint8)" } }, - "id": 1185, + "id": 1314, "isConstant": false, "isLValue": false, "isPure": false, @@ -2898,58 +2898,58 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3315:27:7", + "src": "3315:27:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1186, + "id": 1315, "nodeType": "ExpressionStatement", - "src": "3315:27:7" + "src": "3315:27:9" } } ] }, "documentation": "@dev Allows to remove an owner from the Safe and update the threshold at the same time.\n This can only be done via a Safe transaction.\n @param prevOwner Owner that pointed to the owner to be removed in the linked list\n @param owner Owner address to be removed.\n @param _threshold New threshold.", - "id": 1189, + "id": 1318, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 1145, + "id": 1274, "modifierName": { "argumentTypes": null, - "id": 1144, + "id": 1273, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1358, - "src": "2872:10:7", + "referencedDeclaration": 1618, + "src": "2872:10:9", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "2872:10:7" + "src": "2872:10:9" } ], "name": "removeOwner", "nodeType": "FunctionDefinition", "parameters": { - "id": 1143, + "id": 1272, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1138, + "id": 1267, "name": "prevOwner", "nodeType": "VariableDeclaration", - "scope": 1189, - "src": "2797:17:7", + "scope": 1318, + "src": "2797:17:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2957,10 +2957,10 @@ "typeString": "address" }, "typeName": { - "id": 1137, + "id": 1266, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2797:7:7", + "src": "2797:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2971,11 +2971,11 @@ }, { "constant": false, - "id": 1140, + "id": 1269, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 1189, - "src": "2816:13:7", + "scope": 1318, + "src": "2816:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2983,10 +2983,10 @@ "typeString": "address" }, "typeName": { - "id": 1139, + "id": 1268, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2816:7:7", + "src": "2816:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2997,11 +2997,11 @@ }, { "constant": false, - "id": 1142, + "id": 1271, "name": "_threshold", "nodeType": "VariableDeclaration", - "scope": 1189, - "src": "2831:16:7", + "scope": 1318, + "src": "2831:16:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3009,10 +3009,10 @@ "typeString": "uint8" }, "typeName": { - "id": 1141, + "id": 1270, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "2831:5:7", + "src": "2831:5:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -3022,26 +3022,26 @@ "visibility": "internal" } ], - "src": "2796:52:7" + "src": "2796:52:9" }, "payable": false, "returnParameters": { - "id": 1146, + "id": 1275, "nodeType": "ParameterList", "parameters": [], - "src": "2887:0:7" + "src": "2887:0:9" }, - "scope": 1343, - "src": "2776:573:7", + "scope": 1472, + "src": "2776:573:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1246, + "id": 1375, "nodeType": "Block", - "src": "3795:414:7", + "src": "3795:414:9", "statements": [ { "expression": { @@ -3053,7 +3053,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 1207, + "id": 1336, "isConstant": false, "isLValue": false, "isPure": false, @@ -3064,19 +3064,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1203, + "id": 1332, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1201, + "id": 1330, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1195, - "src": "3854:8:7", + "referencedDeclaration": 1324, + "src": "3854:8:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3087,14 +3087,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1202, + "id": 1331, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3866:1:7", + "src": "3866:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3102,7 +3102,7 @@ }, "value": "0" }, - "src": "3854:13:7", + "src": "3854:13:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3116,19 +3116,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1206, + "id": 1335, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1204, + "id": 1333, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1195, - "src": "3871:8:7", + "referencedDeclaration": 1324, + "src": "3871:8:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3138,24 +3138,24 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 1205, + "id": 1334, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 981, - "src": "3883:15:7", + "referencedDeclaration": 1110, + "src": "3883:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "3871:27:7", + "src": "3871:27:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "3854:44:7", + "src": "3854:44:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3169,21 +3169,21 @@ "typeString": "bool" } ], - "id": 1200, + "id": 1329, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "3846:7:7", + "referencedDeclaration": 2601, + "src": "3846:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1208, + "id": 1337, "isConstant": false, "isLValue": false, "isPure": false, @@ -3191,15 +3191,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3846:53:7", + "src": "3846:53:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1209, + "id": 1338, "nodeType": "ExpressionStatement", - "src": "3846:53:7" + "src": "3846:53:9" }, { "expression": { @@ -3211,7 +3211,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1215, + "id": 1344, "isConstant": false, "isLValue": false, "isPure": false, @@ -3220,26 +3220,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1211, + "id": 1340, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "3957:6:7", + "referencedDeclaration": 1114, + "src": "3957:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1213, + "id": 1342, "indexExpression": { "argumentTypes": null, - "id": 1212, + "id": 1341, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1195, - "src": "3964:8:7", + "referencedDeclaration": 1324, + "src": "3964:8:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3250,7 +3250,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3957:16:7", + "src": "3957:16:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3261,14 +3261,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1214, + "id": 1343, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3977:1:7", + "src": "3977:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3276,7 +3276,7 @@ }, "value": "0" }, - "src": "3957:21:7", + "src": "3957:21:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3290,21 +3290,21 @@ "typeString": "bool" } ], - "id": 1210, + "id": 1339, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "3949:7:7", + "referencedDeclaration": 2601, + "src": "3949:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1216, + "id": 1345, "isConstant": false, "isLValue": false, "isPure": false, @@ -3312,15 +3312,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3949:30:7", + "src": "3949:30:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1217, + "id": 1346, "nodeType": "ExpressionStatement", - "src": "3949:30:7" + "src": "3949:30:9" }, { "expression": { @@ -3332,7 +3332,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1223, + "id": 1352, "isConstant": false, "isLValue": false, "isPure": false, @@ -3341,26 +3341,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1219, + "id": 1348, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "4059:6:7", + "referencedDeclaration": 1114, + "src": "4059:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1221, + "id": 1350, "indexExpression": { "argumentTypes": null, - "id": 1220, + "id": 1349, "name": "prevOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1191, - "src": "4066:9:7", + "referencedDeclaration": 1320, + "src": "4066:9:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3371,7 +3371,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4059:17:7", + "src": "4059:17:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3381,18 +3381,18 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 1222, + "id": 1351, "name": "oldOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1193, - "src": "4080:8:7", + "referencedDeclaration": 1322, + "src": "4080:8:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4059:29:7", + "src": "4059:29:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3406,21 +3406,21 @@ "typeString": "bool" } ], - "id": 1218, + "id": 1347, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "4051:7:7", + "referencedDeclaration": 2601, + "src": "4051:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1224, + "id": 1353, "isConstant": false, "isLValue": false, "isPure": false, @@ -3428,20 +3428,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4051:38:7", + "src": "4051:38:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1225, + "id": 1354, "nodeType": "ExpressionStatement", - "src": "4051:38:7" + "src": "4051:38:9" }, { "expression": { "argumentTypes": null, - "id": 1232, + "id": 1361, "isConstant": false, "isLValue": false, "isPure": false, @@ -3450,26 +3450,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1226, + "id": 1355, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "4099:6:7", + "referencedDeclaration": 1114, + "src": "4099:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1228, + "id": 1357, "indexExpression": { "argumentTypes": null, - "id": 1227, + "id": 1356, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1195, - "src": "4106:8:7", + "referencedDeclaration": 1324, + "src": "4106:8:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3480,7 +3480,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "4099:16:7", + "src": "4099:16:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3492,26 +3492,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1229, + "id": 1358, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "4118:6:7", + "referencedDeclaration": 1114, + "src": "4118:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1231, + "id": 1360, "indexExpression": { "argumentTypes": null, - "id": 1230, + "id": 1359, "name": "oldOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1193, - "src": "4125:8:7", + "referencedDeclaration": 1322, + "src": "4125:8:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3522,26 +3522,26 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4118:16:7", + "src": "4118:16:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4099:35:7", + "src": "4099:35:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1233, + "id": 1362, "nodeType": "ExpressionStatement", - "src": "4099:35:7" + "src": "4099:35:9" }, { "expression": { "argumentTypes": null, - "id": 1238, + "id": 1367, "isConstant": false, "isLValue": false, "isPure": false, @@ -3550,26 +3550,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1234, + "id": 1363, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "4144:6:7", + "referencedDeclaration": 1114, + "src": "4144:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1236, + "id": 1365, "indexExpression": { "argumentTypes": null, - "id": 1235, + "id": 1364, "name": "prevOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1191, - "src": "4151:9:7", + "referencedDeclaration": 1320, + "src": "4151:9:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3580,7 +3580,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "4144:17:7", + "src": "4144:17:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3590,31 +3590,31 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1237, + "id": 1366, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1195, - "src": "4164:8:7", + "referencedDeclaration": 1324, + "src": "4164:8:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4144:28:7", + "src": "4144:28:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1239, + "id": 1368, "nodeType": "ExpressionStatement", - "src": "4144:28:7" + "src": "4144:28:9" }, { "expression": { "argumentTypes": null, - "id": 1244, + "id": 1373, "isConstant": false, "isLValue": false, "isPure": false, @@ -3623,26 +3623,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1240, + "id": 1369, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "4182:6:7", + "referencedDeclaration": 1114, + "src": "4182:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1242, + "id": 1371, "indexExpression": { "argumentTypes": null, - "id": 1241, + "id": 1370, "name": "oldOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1193, - "src": "4189:8:7", + "referencedDeclaration": 1322, + "src": "4189:8:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3653,7 +3653,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "4182:16:7", + "src": "4182:16:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3664,14 +3664,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "30", - "id": 1243, + "id": 1372, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4201:1:7", + "src": "4201:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3679,57 +3679,57 @@ }, "value": "0" }, - "src": "4182:20:7", + "src": "4182:20:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1245, + "id": 1374, "nodeType": "ExpressionStatement", - "src": "4182:20:7" + "src": "4182:20:9" } ] }, "documentation": "@dev Allows to swap/replace an owner from the Safe with another address.\n This can only be done via a Safe transaction.\n @param prevOwner Owner that pointed to the owner to be replaced in the linked list\n @param oldOwner Owner address to be replaced.\n @param newOwner New owner address.", - "id": 1247, + "id": 1376, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 1198, + "id": 1327, "modifierName": { "argumentTypes": null, - "id": 1197, + "id": 1326, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1358, - "src": "3780:10:7", + "referencedDeclaration": 1618, + "src": "3780:10:9", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "3780:10:7" + "src": "3780:10:9" } ], "name": "swapOwner", "nodeType": "FunctionDefinition", "parameters": { - "id": 1196, + "id": 1325, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1191, + "id": 1320, "name": "prevOwner", "nodeType": "VariableDeclaration", - "scope": 1247, - "src": "3702:17:7", + "scope": 1376, + "src": "3702:17:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3737,10 +3737,10 @@ "typeString": "address" }, "typeName": { - "id": 1190, + "id": 1319, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3702:7:7", + "src": "3702:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3751,11 +3751,11 @@ }, { "constant": false, - "id": 1193, + "id": 1322, "name": "oldOwner", "nodeType": "VariableDeclaration", - "scope": 1247, - "src": "3721:16:7", + "scope": 1376, + "src": "3721:16:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3763,10 +3763,10 @@ "typeString": "address" }, "typeName": { - "id": 1192, + "id": 1321, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3721:7:7", + "src": "3721:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3777,11 +3777,11 @@ }, { "constant": false, - "id": 1195, + "id": 1324, "name": "newOwner", "nodeType": "VariableDeclaration", - "scope": 1247, - "src": "3739:16:7", + "scope": 1376, + "src": "3739:16:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3789,10 +3789,10 @@ "typeString": "address" }, "typeName": { - "id": 1194, + "id": 1323, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3739:7:7", + "src": "3739:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3802,26 +3802,26 @@ "visibility": "internal" } ], - "src": "3701:55:7" + "src": "3701:55:9" }, "payable": false, "returnParameters": { - "id": 1199, + "id": 1328, "nodeType": "ParameterList", "parameters": [], - "src": "3795:0:7" + "src": "3795:0:9" }, - "scope": 1343, - "src": "3683:526:7", + "scope": 1472, + "src": "3683:526:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1270, + "id": 1399, "nodeType": "Block", - "src": "4479:237:7", + "src": "4479:237:9", "statements": [ { "expression": { @@ -3833,19 +3833,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1257, + "id": 1386, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1255, + "id": 1384, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1249, - "src": "4566:10:7", + "referencedDeclaration": 1378, + "src": "4566:10:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -3855,18 +3855,18 @@ "operator": "<=", "rightExpression": { "argumentTypes": null, - "id": 1256, + "id": 1385, "name": "ownerCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 987, - "src": "4580:10:7", + "referencedDeclaration": 1116, + "src": "4580:10:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4566:24:7", + "src": "4566:24:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3880,21 +3880,21 @@ "typeString": "bool" } ], - "id": 1254, + "id": 1383, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "4558:7:7", + "referencedDeclaration": 2601, + "src": "4558:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1258, + "id": 1387, "isConstant": false, "isLValue": false, "isPure": false, @@ -3902,15 +3902,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4558:33:7", + "src": "4558:33:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1259, + "id": 1388, "nodeType": "ExpressionStatement", - "src": "4558:33:7" + "src": "4558:33:9" }, { "expression": { @@ -3922,19 +3922,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 1263, + "id": 1392, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1261, + "id": 1390, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1249, - "src": "4661:10:7", + "referencedDeclaration": 1378, + "src": "4661:10:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -3945,14 +3945,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31", - "id": 1262, + "id": 1391, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4675:1:7", + "src": "4675:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -3960,7 +3960,7 @@ }, "value": "1" }, - "src": "4661:15:7", + "src": "4661:15:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3974,21 +3974,21 @@ "typeString": "bool" } ], - "id": 1260, + "id": 1389, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "4653:7:7", + "referencedDeclaration": 2601, + "src": "4653:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1264, + "id": 1393, "isConstant": false, "isLValue": false, "isPure": false, @@ -3996,32 +3996,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4653:24:7", + "src": "4653:24:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1265, + "id": 1394, "nodeType": "ExpressionStatement", - "src": "4653:24:7" + "src": "4653:24:9" }, { "expression": { "argumentTypes": null, - "id": 1268, + "id": 1397, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1266, + "id": 1395, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 989, - "src": "4687:9:7", + "referencedDeclaration": 1118, + "src": "4687:9:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -4031,68 +4031,68 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1267, + "id": 1396, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1249, - "src": "4699:10:7", + "referencedDeclaration": 1378, + "src": "4699:10:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "4687:22:7", + "src": "4687:22:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "id": 1269, + "id": 1398, "nodeType": "ExpressionStatement", - "src": "4687:22:7" + "src": "4687:22:9" } ] }, "documentation": "@dev Allows to update the number of required confirmations by Safe owners.\n This can only be done via a Safe transaction.\n @param _threshold New threshold.", - "id": 1271, + "id": 1400, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 1252, + "id": 1381, "modifierName": { "argumentTypes": null, - "id": 1251, + "id": 1380, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1358, - "src": "4464:10:7", + "referencedDeclaration": 1618, + "src": "4464:10:9", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "4464:10:7" + "src": "4464:10:9" } ], "name": "changeThreshold", "nodeType": "FunctionDefinition", "parameters": { - "id": 1250, + "id": 1379, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1249, + "id": 1378, "name": "_threshold", "nodeType": "VariableDeclaration", - "scope": 1271, - "src": "4423:16:7", + "scope": 1400, + "src": "4423:16:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4100,10 +4100,10 @@ "typeString": "uint8" }, "typeName": { - "id": 1248, + "id": 1377, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "4423:5:7", + "src": "4423:5:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -4113,50 +4113,50 @@ "visibility": "internal" } ], - "src": "4422:18:7" + "src": "4422:18:9" }, "payable": false, "returnParameters": { - "id": 1253, + "id": 1382, "nodeType": "ParameterList", "parameters": [], - "src": "4479:0:7" + "src": "4479:0:9" }, - "scope": 1343, - "src": "4398:318:7", + "scope": 1472, + "src": "4398:318:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1278, + "id": 1407, "nodeType": "Block", - "src": "4802:33:7", + "src": "4802:33:9", "statements": [ { "expression": { "argumentTypes": null, - "id": 1276, + "id": 1405, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 989, - "src": "4819:9:7", + "referencedDeclaration": 1118, + "src": "4819:9:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "functionReturnParameters": 1275, - "id": 1277, + "functionReturnParameters": 1404, + "id": 1406, "nodeType": "Return", - "src": "4812:16:7" + "src": "4812:16:9" } ] }, "documentation": null, - "id": 1279, + "id": 1408, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -4164,23 +4164,23 @@ "name": "getThreshold", "nodeType": "FunctionDefinition", "parameters": { - "id": 1272, + "id": 1401, "nodeType": "ParameterList", "parameters": [], - "src": "4743:2:7" + "src": "4743:2:9" }, "payable": false, "returnParameters": { - "id": 1275, + "id": 1404, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1274, + "id": 1403, "name": "", "nodeType": "VariableDeclaration", - "scope": 1279, - "src": "4791:5:7", + "scope": 1408, + "src": "4791:5:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4188,10 +4188,10 @@ "typeString": "uint8" }, "typeName": { - "id": 1273, + "id": 1402, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "4791:5:7", + "src": "4791:5:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -4201,19 +4201,19 @@ "visibility": "internal" } ], - "src": "4790:7:7" + "src": "4790:7:9" }, - "scope": 1343, - "src": "4722:113:7", + "scope": 1472, + "src": "4722:113:9", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1292, + "id": 1421, "nodeType": "Block", - "src": "4928:42:7", + "src": "4928:42:9", "statements": [ { "expression": { @@ -4222,7 +4222,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1290, + "id": 1419, "isConstant": false, "isLValue": false, "isPure": false, @@ -4231,26 +4231,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1286, + "id": 1415, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "4945:6:7", + "referencedDeclaration": 1114, + "src": "4945:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1288, + "id": 1417, "indexExpression": { "argumentTypes": null, - "id": 1287, + "id": 1416, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1281, - "src": "4952:5:7", + "referencedDeclaration": 1410, + "src": "4952:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4261,7 +4261,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4945:13:7", + "src": "4945:13:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4272,14 +4272,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1289, + "id": 1418, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4962:1:7", + "src": "4962:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -4287,21 +4287,21 @@ }, "value": "0" }, - "src": "4945:18:7", + "src": "4945:18:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "functionReturnParameters": 1285, - "id": 1291, + "functionReturnParameters": 1414, + "id": 1420, "nodeType": "Return", - "src": "4938:25:7" + "src": "4938:25:9" } ] }, "documentation": null, - "id": 1293, + "id": 1422, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -4309,16 +4309,16 @@ "name": "isOwner", "nodeType": "FunctionDefinition", "parameters": { - "id": 1282, + "id": 1411, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1281, + "id": 1410, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 1293, - "src": "4858:13:7", + "scope": 1422, + "src": "4858:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4326,10 +4326,10 @@ "typeString": "address" }, "typeName": { - "id": 1280, + "id": 1409, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4858:7:7", + "src": "4858:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4339,20 +4339,20 @@ "visibility": "internal" } ], - "src": "4857:15:7" + "src": "4857:15:9" }, "payable": false, "returnParameters": { - "id": 1285, + "id": 1414, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1284, + "id": 1413, "name": "", "nodeType": "VariableDeclaration", - "scope": 1293, - "src": "4918:4:7", + "scope": 1422, + "src": "4918:4:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4360,10 +4360,10 @@ "typeString": "bool" }, "typeName": { - "id": 1283, + "id": 1412, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "4918:4:7", + "src": "4918:4:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4373,32 +4373,32 @@ "visibility": "internal" } ], - "src": "4917:6:7" + "src": "4917:6:9" }, - "scope": 1343, - "src": "4841:129:7", + "scope": 1472, + "src": "4841:129:9", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1341, + "id": 1470, "nodeType": "Block", - "src": "5133:377:7", + "src": "5133:377:9", "statements": [ { "assignments": [ - 1302 + 1431 ], "declarations": [ { "constant": false, - "id": 1302, + "id": 1431, "name": "array", "nodeType": "VariableDeclaration", - "scope": 1342, - "src": "5143:22:7", + "scope": 1471, + "src": "5143:22:9", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -4407,19 +4407,19 @@ }, "typeName": { "baseType": { - "id": 1300, + "id": 1429, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5143:7:7", + "src": "5143:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1301, + "id": 1430, "length": null, "nodeType": "ArrayTypeName", - "src": "5143:9:7", + "src": "5143:9:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -4429,18 +4429,18 @@ "visibility": "internal" } ], - "id": 1308, + "id": 1437, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 1306, + "id": 1435, "name": "ownerCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 987, - "src": "5182:10:7", + "referencedDeclaration": 1116, + "src": "5182:10:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4454,39 +4454,39 @@ "typeString": "uint256" } ], - "id": 1305, + "id": 1434, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", - "src": "5168:13:7", + "src": "5168:13:9", "typeDescriptions": { "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_$", "typeString": "function (uint256) pure returns (address[] memory)" }, "typeName": { "baseType": { - "id": 1303, + "id": 1432, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5172:7:7", + "src": "5172:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1304, + "id": 1433, "length": null, "nodeType": "ArrayTypeName", - "src": "5172:9:7", + "src": "5172:9:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" } } }, - "id": 1307, + "id": 1436, "isConstant": false, "isLValue": false, "isPure": false, @@ -4494,27 +4494,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5168:25:7", + "src": "5168:25:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory", "typeString": "address[] memory" } }, "nodeType": "VariableDeclarationStatement", - "src": "5143:50:7" + "src": "5143:50:9" }, { "assignments": [ - 1310 + 1439 ], "declarations": [ { "constant": false, - "id": 1310, + "id": 1439, "name": "index", "nodeType": "VariableDeclaration", - "scope": 1342, - "src": "5237:13:7", + "scope": 1471, + "src": "5237:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4522,10 +4522,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1309, + "id": 1438, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5237:7:7", + "src": "5237:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4535,18 +4535,18 @@ "visibility": "internal" } ], - "id": 1312, + "id": 1441, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 1311, + "id": 1440, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5253:1:7", + "src": "5253:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -4555,20 +4555,20 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "5237:17:7" + "src": "5237:17:9" }, { "assignments": [ - 1314 + 1443 ], "declarations": [ { "constant": false, - "id": 1314, + "id": 1443, "name": "currentOwner", "nodeType": "VariableDeclaration", - "scope": 1342, - "src": "5264:20:7", + "scope": 1471, + "src": "5264:20:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4576,10 +4576,10 @@ "typeString": "address" }, "typeName": { - "id": 1313, + "id": 1442, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5264:7:7", + "src": "5264:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4589,31 +4589,31 @@ "visibility": "internal" } ], - "id": 1318, + "id": 1447, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1315, + "id": 1444, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "5287:6:7", + "referencedDeclaration": 1114, + "src": "5287:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1317, + "id": 1446, "indexExpression": { "argumentTypes": null, - "id": 1316, + "id": 1445, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 981, - "src": "5294:15:7", + "referencedDeclaration": 1110, + "src": "5294:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4624,25 +4624,25 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "5287:23:7", + "src": "5287:23:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "5264:46:7" + "src": "5264:46:9" }, { "body": { - "id": 1337, + "id": 1466, "nodeType": "Block", - "src": "5359:123:7", + "src": "5359:123:9", "statements": [ { "expression": { "argumentTypes": null, - "id": 1326, + "id": 1455, "isConstant": false, "isLValue": false, "isPure": false, @@ -4651,26 +4651,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1322, + "id": 1451, "name": "array", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1302, - "src": "5373:5:7", + "referencedDeclaration": 1431, + "src": "5373:5:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1324, + "id": 1453, "indexExpression": { "argumentTypes": null, - "id": 1323, + "id": 1452, "name": "index", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1310, - "src": "5379:5:7", + "referencedDeclaration": 1439, + "src": "5379:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4681,7 +4681,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "5373:12:7", + "src": "5373:12:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4691,43 +4691,43 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1325, + "id": 1454, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1314, - "src": "5388:12:7", + "referencedDeclaration": 1443, + "src": "5388:12:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "5373:27:7", + "src": "5373:27:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1327, + "id": 1456, "nodeType": "ExpressionStatement", - "src": "5373:27:7" + "src": "5373:27:9" }, { "expression": { "argumentTypes": null, - "id": 1332, + "id": 1461, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1328, + "id": 1457, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1314, - "src": "5414:12:7", + "referencedDeclaration": 1443, + "src": "5414:12:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4739,26 +4739,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1329, + "id": 1458, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "5429:6:7", + "referencedDeclaration": 1114, + "src": "5429:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1331, + "id": 1460, "indexExpression": { "argumentTypes": null, - "id": 1330, + "id": 1459, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1314, - "src": "5436:12:7", + "referencedDeclaration": 1443, + "src": "5436:12:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4769,26 +4769,26 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "5429:20:7", + "src": "5429:20:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "5414:35:7", + "src": "5414:35:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1333, + "id": 1462, "nodeType": "ExpressionStatement", - "src": "5414:35:7" + "src": "5414:35:9" }, { "expression": { "argumentTypes": null, - "id": 1335, + "id": 1464, "isConstant": false, "isLValue": false, "isPure": false, @@ -4796,15 +4796,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "5463:8:7", + "src": "5463:8:9", "subExpression": { "argumentTypes": null, - "id": 1334, + "id": 1463, "name": "index", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1310, - "src": "5463:5:7", + "referencedDeclaration": 1439, + "src": "5463:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4815,9 +4815,9 @@ "typeString": "uint256" } }, - "id": 1336, + "id": 1465, "nodeType": "ExpressionStatement", - "src": "5463:8:7" + "src": "5463:8:9" } ] }, @@ -4827,19 +4827,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1321, + "id": 1450, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1319, + "id": 1448, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1314, - "src": "5326:12:7", + "referencedDeclaration": 1443, + "src": "5326:12:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4849,50 +4849,50 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 1320, + "id": 1449, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 981, - "src": "5342:15:7", + "referencedDeclaration": 1110, + "src": "5342:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "5326:31:7", + "src": "5326:31:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 1338, + "id": 1467, "nodeType": "WhileStatement", - "src": "5320:162:7" + "src": "5320:162:9" }, { "expression": { "argumentTypes": null, - "id": 1339, + "id": 1468, "name": "array", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1302, - "src": "5498:5:7", + "referencedDeclaration": 1431, + "src": "5498:5:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "functionReturnParameters": 1298, - "id": 1340, + "functionReturnParameters": 1427, + "id": 1469, "nodeType": "Return", - "src": "5491:12:7" + "src": "5491:12:9" } ] }, "documentation": "@dev Returns array of owners.\n @return Array of Safe owners.", - "id": 1342, + "id": 1471, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -4900,23 +4900,23 @@ "name": "getOwners", "nodeType": "FunctionDefinition", "parameters": { - "id": 1294, + "id": 1423, "nodeType": "ParameterList", "parameters": [], - "src": "5070:2:7" + "src": "5070:2:9" }, "payable": false, "returnParameters": { - "id": 1298, + "id": 1427, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1297, + "id": 1426, "name": "", "nodeType": "VariableDeclaration", - "scope": 1342, - "src": "5118:9:7", + "scope": 1471, + "src": "5118:9:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4925,19 +4925,19 @@ }, "typeName": { "baseType": { - "id": 1295, + "id": 1424, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5118:7:7", + "src": "5118:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1296, + "id": 1425, "length": null, "nodeType": "ArrayTypeName", - "src": "5118:9:7", + "src": "5118:9:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -4947,49 +4947,49 @@ "visibility": "internal" } ], - "src": "5117:11:7" + "src": "5117:11:9" }, - "scope": 1343, - "src": "5052:458:7", + "scope": 1472, + "src": "5052:458:9", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 1344, - "src": "240:5272:7" + "scope": 1473, + "src": "240:5272:9" } ], - "src": "0:5513:7" + "src": "0:5513:9" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", "exportedSymbols": { "OwnerManager": [ - 1343 + 1472 ] }, - "id": 1344, + "id": 1473, "nodeType": "SourceUnit", "nodes": [ { - "id": 973, + "id": 1102, "literals": [ "solidity", "0.4", - ".23" + ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:7" + "src": "0:23:9" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/SelfAuthorized.sol", "file": "./SelfAuthorized.sol", - "id": 974, + "id": 1103, "nodeType": "ImportDirective", - "scope": 1344, - "sourceUnit": 1360, - "src": "24:30:7", + "scope": 1473, + "sourceUnit": 1620, + "src": "24:30:9", "symbolAliases": [], "unitAlias": "" }, @@ -4999,42 +4999,42 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 975, + "id": 1104, "name": "SelfAuthorized", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1359, - "src": "265:14:7", + "referencedDeclaration": 1619, + "src": "265:14:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_SelfAuthorized_$1359", + "typeIdentifier": "t_contract$_SelfAuthorized_$1619", "typeString": "contract SelfAuthorized" } }, - "id": 976, + "id": 1105, "nodeType": "InheritanceSpecifier", - "src": "265:14:7" + "src": "265:14:9" } ], "contractDependencies": [ - 1359 + 1619 ], "contractKind": "contract", "documentation": "@title OwnerManager - Manages a set of owners and a threshold to perform actions.\n @author Stefan George - \n @author Richard Meissner - ", "fullyImplemented": true, - "id": 1343, + "id": 1472, "linearizedBaseContracts": [ - 1343, - 1359 + 1472, + 1619 ], "name": "OwnerManager", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, - "id": 981, + "id": 1110, "name": "SENTINEL_OWNERS", "nodeType": "VariableDeclaration", - "scope": 1343, - "src": "287:54:7", + "scope": 1472, + "src": "287:54:9", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -5042,10 +5042,10 @@ "typeString": "address" }, "typeName": { - "id": 977, + "id": 1106, "name": "address", "nodeType": "ElementaryTypeName", - "src": "287:7:7", + "src": "287:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5057,14 +5057,14 @@ { "argumentTypes": null, "hexValue": "307831", - "id": 979, + "id": 1108, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "337:3:7", + "src": "337:3:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -5080,20 +5080,20 @@ "typeString": "int_const 1" } ], - "id": 978, + "id": 1107, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "329:7:7", + "src": "329:7:9", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 980, + "id": 1109, "isConstant": false, "isLValue": false, "isPure": true, @@ -5101,7 +5101,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "329:12:7", + "src": "329:12:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5111,11 +5111,11 @@ }, { "constant": false, - "id": 985, + "id": 1114, "name": "owners", "nodeType": "VariableDeclaration", - "scope": 1343, - "src": "348:43:7", + "scope": 1472, + "src": "348:43:9", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -5123,28 +5123,28 @@ "typeString": "mapping(address => address)" }, "typeName": { - "id": 984, + "id": 1113, "keyType": { - "id": 982, + "id": 1111, "name": "address", "nodeType": "ElementaryTypeName", - "src": "356:7:7", + "src": "356:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "348:27:7", + "src": "348:27:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" }, "valueType": { - "id": 983, + "id": 1112, "name": "address", "nodeType": "ElementaryTypeName", - "src": "367:7:7", + "src": "367:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5156,11 +5156,11 @@ }, { "constant": false, - "id": 987, + "id": 1116, "name": "ownerCount", "nodeType": "VariableDeclaration", - "scope": 1343, - "src": "397:18:7", + "scope": 1472, + "src": "397:18:9", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -5168,10 +5168,10 @@ "typeString": "uint256" }, "typeName": { - "id": 986, + "id": 1115, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "397:7:7", + "src": "397:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5182,11 +5182,11 @@ }, { "constant": false, - "id": 989, + "id": 1118, "name": "threshold", "nodeType": "VariableDeclaration", - "scope": 1343, - "src": "421:24:7", + "scope": 1472, + "src": "421:24:9", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -5194,10 +5194,10 @@ "typeString": "uint8" }, "typeName": { - "id": 988, + "id": 1117, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "421:5:7", + "src": "421:5:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -5208,9 +5208,9 @@ }, { "body": { - "id": 1082, + "id": 1211, "nodeType": "Block", - "src": "720:946:7", + "src": "720:946:9", "statements": [ { "expression": { @@ -5222,19 +5222,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 1000, + "id": 1129, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 998, + "id": 1127, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 989, - "src": "862:9:7", + "referencedDeclaration": 1118, + "src": "862:9:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -5245,14 +5245,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 999, + "id": 1128, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "875:1:7", + "src": "875:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -5260,7 +5260,7 @@ }, "value": "0" }, - "src": "862:14:7", + "src": "862:14:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5274,21 +5274,21 @@ "typeString": "bool" } ], - "id": 997, + "id": 1126, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "854:7:7", + "referencedDeclaration": 2601, + "src": "854:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1001, + "id": 1130, "isConstant": false, "isLValue": false, "isPure": false, @@ -5296,15 +5296,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "854:23:7", + "src": "854:23:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1002, + "id": 1131, "nodeType": "ExpressionStatement", - "src": "854:23:7" + "src": "854:23:9" }, { "expression": { @@ -5316,19 +5316,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1007, + "id": 1136, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1004, + "id": 1133, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 994, - "src": "970:10:7", + "referencedDeclaration": 1123, + "src": "970:10:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -5340,18 +5340,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1005, + "id": 1134, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 992, - "src": "984:7:7", + "referencedDeclaration": 1121, + "src": "984:7:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1006, + "id": 1135, "isConstant": false, "isLValue": false, "isPure": false, @@ -5359,13 +5359,13 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "984:14:7", + "src": "984:14:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "970:28:7", + "src": "970:28:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5379,21 +5379,21 @@ "typeString": "bool" } ], - "id": 1003, + "id": 1132, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "962:7:7", + "referencedDeclaration": 2601, + "src": "962:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1008, + "id": 1137, "isConstant": false, "isLValue": false, "isPure": false, @@ -5401,15 +5401,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "962:37:7", + "src": "962:37:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1009, + "id": 1138, "nodeType": "ExpressionStatement", - "src": "962:37:7" + "src": "962:37:9" }, { "expression": { @@ -5421,19 +5421,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 1013, + "id": 1142, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1011, + "id": 1140, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 994, - "src": "1069:10:7", + "referencedDeclaration": 1123, + "src": "1069:10:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -5444,14 +5444,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31", - "id": 1012, + "id": 1141, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1083:1:7", + "src": "1083:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -5459,7 +5459,7 @@ }, "value": "1" }, - "src": "1069:15:7", + "src": "1069:15:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5473,21 +5473,21 @@ "typeString": "bool" } ], - "id": 1010, + "id": 1139, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "1061:7:7", + "referencedDeclaration": 2601, + "src": "1061:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1014, + "id": 1143, "isConstant": false, "isLValue": false, "isPure": false, @@ -5495,28 +5495,28 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1061:24:7", + "src": "1061:24:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1015, + "id": 1144, "nodeType": "ExpressionStatement", - "src": "1061:24:7" + "src": "1061:24:9" }, { "assignments": [ - 1017 + 1146 ], "declarations": [ { "constant": false, - "id": 1017, + "id": 1146, "name": "currentOwner", "nodeType": "VariableDeclaration", - "scope": 1083, - "src": "1132:20:7", + "scope": 1212, + "src": "1132:20:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5524,10 +5524,10 @@ "typeString": "address" }, "typeName": { - "id": 1016, + "id": 1145, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1132:7:7", + "src": "1132:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5537,41 +5537,41 @@ "visibility": "internal" } ], - "id": 1019, + "id": 1148, "initialValue": { "argumentTypes": null, - "id": 1018, + "id": 1147, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 981, - "src": "1155:15:7", + "referencedDeclaration": 1110, + "src": "1155:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "1132:38:7" + "src": "1132:38:9" }, { "body": { - "id": 1065, + "id": 1194, "nodeType": "Block", - "src": "1225:318:7", + "src": "1225:318:9", "statements": [ { "assignments": [ - 1032 + 1161 ], "declarations": [ { "constant": false, - "id": 1032, + "id": 1161, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 1083, - "src": "1284:13:7", + "scope": 1212, + "src": "1284:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5579,10 +5579,10 @@ "typeString": "address" }, "typeName": { - "id": 1031, + "id": 1160, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1284:7:7", + "src": "1284:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5592,31 +5592,31 @@ "visibility": "internal" } ], - "id": 1036, + "id": 1165, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1033, + "id": 1162, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 992, - "src": "1300:7:7", + "referencedDeclaration": 1121, + "src": "1300:7:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1035, + "id": 1164, "indexExpression": { "argumentTypes": null, - "id": 1034, + "id": 1163, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1021, - "src": "1308:1:7", + "referencedDeclaration": 1150, + "src": "1308:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5627,14 +5627,14 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1300:10:7", + "src": "1300:10:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "1284:26:7" + "src": "1284:26:9" }, { "expression": { @@ -5646,7 +5646,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 1044, + "id": 1173, "isConstant": false, "isLValue": false, "isPure": false, @@ -5657,19 +5657,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1040, + "id": 1169, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1038, + "id": 1167, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1032, - "src": "1332:5:7", + "referencedDeclaration": 1161, + "src": "1332:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5680,14 +5680,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1039, + "id": 1168, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1341:1:7", + "src": "1341:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -5695,7 +5695,7 @@ }, "value": "0" }, - "src": "1332:10:7", + "src": "1332:10:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5709,19 +5709,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1043, + "id": 1172, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1041, + "id": 1170, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1032, - "src": "1346:5:7", + "referencedDeclaration": 1161, + "src": "1346:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5731,24 +5731,24 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 1042, + "id": 1171, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 981, - "src": "1355:15:7", + "referencedDeclaration": 1110, + "src": "1355:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1346:24:7", + "src": "1346:24:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "1332:38:7", + "src": "1332:38:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5762,21 +5762,21 @@ "typeString": "bool" } ], - "id": 1037, + "id": 1166, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "1324:7:7", + "referencedDeclaration": 2601, + "src": "1324:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1045, + "id": 1174, "isConstant": false, "isLValue": false, "isPure": false, @@ -5784,15 +5784,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1324:47:7", + "src": "1324:47:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1046, + "id": 1175, "nodeType": "ExpressionStatement", - "src": "1324:47:7" + "src": "1324:47:9" }, { "expression": { @@ -5804,7 +5804,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1052, + "id": 1181, "isConstant": false, "isLValue": false, "isPure": false, @@ -5813,26 +5813,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1048, + "id": 1177, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "1437:6:7", + "referencedDeclaration": 1114, + "src": "1437:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1050, + "id": 1179, "indexExpression": { "argumentTypes": null, - "id": 1049, + "id": 1178, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1032, - "src": "1444:5:7", + "referencedDeclaration": 1161, + "src": "1444:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5843,7 +5843,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1437:13:7", + "src": "1437:13:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5854,14 +5854,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1051, + "id": 1180, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1454:1:7", + "src": "1454:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -5869,7 +5869,7 @@ }, "value": "0" }, - "src": "1437:18:7", + "src": "1437:18:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5883,21 +5883,21 @@ "typeString": "bool" } ], - "id": 1047, + "id": 1176, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "1429:7:7", + "referencedDeclaration": 2601, + "src": "1429:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1053, + "id": 1182, "isConstant": false, "isLValue": false, "isPure": false, @@ -5905,20 +5905,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1429:27:7", + "src": "1429:27:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1054, + "id": 1183, "nodeType": "ExpressionStatement", - "src": "1429:27:7" + "src": "1429:27:9" }, { "expression": { "argumentTypes": null, - "id": 1059, + "id": 1188, "isConstant": false, "isLValue": false, "isPure": false, @@ -5927,26 +5927,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1055, + "id": 1184, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "1470:6:7", + "referencedDeclaration": 1114, + "src": "1470:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1057, + "id": 1186, "indexExpression": { "argumentTypes": null, - "id": 1056, + "id": 1185, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1017, - "src": "1477:12:7", + "referencedDeclaration": 1146, + "src": "1477:12:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5957,7 +5957,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1470:20:7", + "src": "1470:20:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5967,43 +5967,43 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1058, + "id": 1187, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1032, - "src": "1493:5:7", + "referencedDeclaration": 1161, + "src": "1493:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1470:28:7", + "src": "1470:28:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1060, + "id": 1189, "nodeType": "ExpressionStatement", - "src": "1470:28:7" + "src": "1470:28:9" }, { "expression": { "argumentTypes": null, - "id": 1063, + "id": 1192, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1061, + "id": 1190, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1017, - "src": "1512:12:7", + "referencedDeclaration": 1146, + "src": "1512:12:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6013,26 +6013,26 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1062, + "id": 1191, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1032, - "src": "1527:5:7", + "referencedDeclaration": 1161, + "src": "1527:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1512:20:7", + "src": "1512:20:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1064, + "id": 1193, "nodeType": "ExpressionStatement", - "src": "1512:20:7" + "src": "1512:20:9" } ] }, @@ -6042,19 +6042,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1027, + "id": 1156, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1024, + "id": 1153, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1021, - "src": "1200:1:7", + "referencedDeclaration": 1150, + "src": "1200:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6066,18 +6066,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1025, + "id": 1154, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 992, - "src": "1204:7:7", + "referencedDeclaration": 1121, + "src": "1204:7:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1026, + "id": 1155, "isConstant": false, "isLValue": false, "isPure": false, @@ -6085,31 +6085,31 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1204:14:7", + "src": "1204:14:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1200:18:7", + "src": "1200:18:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 1066, + "id": 1195, "initializationExpression": { "assignments": [ - 1021 + 1150 ], "declarations": [ { "constant": false, - "id": 1021, + "id": 1150, "name": "i", "nodeType": "VariableDeclaration", - "scope": 1083, - "src": "1185:9:7", + "scope": 1212, + "src": "1185:9:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6117,10 +6117,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1020, + "id": 1149, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1185:7:7", + "src": "1185:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6130,18 +6130,18 @@ "visibility": "internal" } ], - "id": 1023, + "id": 1152, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 1022, + "id": 1151, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1197:1:7", + "src": "1197:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -6150,12 +6150,12 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "1185:13:7" + "src": "1185:13:9" }, "loopExpression": { "expression": { "argumentTypes": null, - "id": 1029, + "id": 1158, "isConstant": false, "isLValue": false, "isPure": false, @@ -6163,15 +6163,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "1220:3:7", + "src": "1220:3:9", "subExpression": { "argumentTypes": null, - "id": 1028, + "id": 1157, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1021, - "src": "1220:1:7", + "referencedDeclaration": 1150, + "src": "1220:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6182,17 +6182,17 @@ "typeString": "uint256" } }, - "id": 1030, + "id": 1159, "nodeType": "ExpressionStatement", - "src": "1220:3:7" + "src": "1220:3:9" }, "nodeType": "ForStatement", - "src": "1180:363:7" + "src": "1180:363:9" }, { "expression": { "argumentTypes": null, - "id": 1071, + "id": 1200, "isConstant": false, "isLValue": false, "isPure": false, @@ -6201,26 +6201,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1067, + "id": 1196, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "1552:6:7", + "referencedDeclaration": 1114, + "src": "1552:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1069, + "id": 1198, "indexExpression": { "argumentTypes": null, - "id": 1068, + "id": 1197, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1017, - "src": "1559:12:7", + "referencedDeclaration": 1146, + "src": "1559:12:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6231,7 +6231,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1552:20:7", + "src": "1552:20:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6241,43 +6241,43 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1070, + "id": 1199, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 981, - "src": "1575:15:7", + "referencedDeclaration": 1110, + "src": "1575:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1552:38:7", + "src": "1552:38:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1072, + "id": 1201, "nodeType": "ExpressionStatement", - "src": "1552:38:7" + "src": "1552:38:9" }, { "expression": { "argumentTypes": null, - "id": 1076, + "id": 1205, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1073, + "id": 1202, "name": "ownerCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 987, - "src": "1600:10:7", + "referencedDeclaration": 1116, + "src": "1600:10:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6289,18 +6289,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1074, + "id": 1203, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 992, - "src": "1613:7:7", + "referencedDeclaration": 1121, + "src": "1613:7:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1075, + "id": 1204, "isConstant": false, "isLValue": false, "isPure": false, @@ -6308,38 +6308,38 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1613:14:7", + "src": "1613:14:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1600:27:7", + "src": "1600:27:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1077, + "id": 1206, "nodeType": "ExpressionStatement", - "src": "1600:27:7" + "src": "1600:27:9" }, { "expression": { "argumentTypes": null, - "id": 1080, + "id": 1209, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1078, + "id": 1207, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 989, - "src": "1637:9:7", + "referencedDeclaration": 1118, + "src": "1637:9:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -6349,31 +6349,31 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1079, + "id": 1208, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 994, - "src": "1649:10:7", + "referencedDeclaration": 1123, + "src": "1649:10:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "1637:22:7", + "src": "1637:22:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "id": 1081, + "id": 1210, "nodeType": "ExpressionStatement", - "src": "1637:22:7" + "src": "1637:22:9" } ] }, "documentation": "@dev Setup function sets initial storage of contract.\n @param _owners List of Safe owners.\n @param _threshold Number of required confirmations for a Safe transaction.", - "id": 1083, + "id": 1212, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -6381,16 +6381,16 @@ "name": "setupOwners", "nodeType": "FunctionDefinition", "parameters": { - "id": 995, + "id": 1124, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 992, + "id": 1121, "name": "_owners", "nodeType": "VariableDeclaration", - "scope": 1083, - "src": "662:17:7", + "scope": 1212, + "src": "662:17:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6399,19 +6399,19 @@ }, "typeName": { "baseType": { - "id": 990, + "id": 1119, "name": "address", "nodeType": "ElementaryTypeName", - "src": "662:7:7", + "src": "662:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 991, + "id": 1120, "length": null, "nodeType": "ArrayTypeName", - "src": "662:9:7", + "src": "662:9:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -6422,11 +6422,11 @@ }, { "constant": false, - "id": 994, + "id": 1123, "name": "_threshold", "nodeType": "VariableDeclaration", - "scope": 1083, - "src": "681:16:7", + "scope": 1212, + "src": "681:16:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6434,10 +6434,10 @@ "typeString": "uint8" }, "typeName": { - "id": 993, + "id": 1122, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "681:5:7", + "src": "681:5:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -6447,26 +6447,26 @@ "visibility": "internal" } ], - "src": "661:37:7" + "src": "661:37:9" }, "payable": false, "returnParameters": { - "id": 996, + "id": 1125, "nodeType": "ParameterList", "parameters": [], - "src": "720:0:7" + "src": "720:0:9" }, - "scope": 1343, - "src": "641:1025:7", + "scope": 1472, + "src": "641:1025:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1135, + "id": 1264, "nodeType": "Block", - "src": "2008:426:7", + "src": "2008:426:9", "statements": [ { "expression": { @@ -6478,7 +6478,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 1099, + "id": 1228, "isConstant": false, "isLValue": false, "isPure": false, @@ -6489,19 +6489,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1095, + "id": 1224, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1093, + "id": 1222, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1085, - "src": "2067:5:7", + "referencedDeclaration": 1214, + "src": "2067:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6512,14 +6512,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1094, + "id": 1223, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2076:1:7", + "src": "2076:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -6527,7 +6527,7 @@ }, "value": "0" }, - "src": "2067:10:7", + "src": "2067:10:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6541,19 +6541,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1098, + "id": 1227, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1096, + "id": 1225, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1085, - "src": "2081:5:7", + "referencedDeclaration": 1214, + "src": "2081:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6563,24 +6563,24 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 1097, + "id": 1226, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 981, - "src": "2090:15:7", + "referencedDeclaration": 1110, + "src": "2090:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2081:24:7", + "src": "2081:24:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "2067:38:7", + "src": "2067:38:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6594,21 +6594,21 @@ "typeString": "bool" } ], - "id": 1092, + "id": 1221, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "2059:7:7", + "referencedDeclaration": 2601, + "src": "2059:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1100, + "id": 1229, "isConstant": false, "isLValue": false, "isPure": false, @@ -6616,15 +6616,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2059:47:7", + "src": "2059:47:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1101, + "id": 1230, "nodeType": "ExpressionStatement", - "src": "2059:47:7" + "src": "2059:47:9" }, { "expression": { @@ -6636,7 +6636,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1107, + "id": 1236, "isConstant": false, "isLValue": false, "isPure": false, @@ -6645,26 +6645,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1103, + "id": 1232, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "2164:6:7", + "referencedDeclaration": 1114, + "src": "2164:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1105, + "id": 1234, "indexExpression": { "argumentTypes": null, - "id": 1104, + "id": 1233, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1085, - "src": "2171:5:7", + "referencedDeclaration": 1214, + "src": "2171:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6675,7 +6675,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2164:13:7", + "src": "2164:13:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6686,14 +6686,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1106, + "id": 1235, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2181:1:7", + "src": "2181:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -6701,7 +6701,7 @@ }, "value": "0" }, - "src": "2164:18:7", + "src": "2164:18:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6715,21 +6715,21 @@ "typeString": "bool" } ], - "id": 1102, + "id": 1231, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "2156:7:7", + "referencedDeclaration": 2601, + "src": "2156:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1108, + "id": 1237, "isConstant": false, "isLValue": false, "isPure": false, @@ -6737,20 +6737,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2156:27:7", + "src": "2156:27:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1109, + "id": 1238, "nodeType": "ExpressionStatement", - "src": "2156:27:7" + "src": "2156:27:9" }, { "expression": { "argumentTypes": null, - "id": 1116, + "id": 1245, "isConstant": false, "isLValue": false, "isPure": false, @@ -6759,26 +6759,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1110, + "id": 1239, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "2193:6:7", + "referencedDeclaration": 1114, + "src": "2193:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1112, + "id": 1241, "indexExpression": { "argumentTypes": null, - "id": 1111, + "id": 1240, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1085, - "src": "2200:5:7", + "referencedDeclaration": 1214, + "src": "2200:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6789,7 +6789,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2193:13:7", + "src": "2193:13:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6801,26 +6801,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1113, + "id": 1242, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "2209:6:7", + "referencedDeclaration": 1114, + "src": "2209:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1115, + "id": 1244, "indexExpression": { "argumentTypes": null, - "id": 1114, + "id": 1243, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 981, - "src": "2216:15:7", + "referencedDeclaration": 1110, + "src": "2216:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6831,26 +6831,26 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2209:23:7", + "src": "2209:23:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2193:39:7", + "src": "2193:39:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1117, + "id": 1246, "nodeType": "ExpressionStatement", - "src": "2193:39:7" + "src": "2193:39:9" }, { "expression": { "argumentTypes": null, - "id": 1122, + "id": 1251, "isConstant": false, "isLValue": false, "isPure": false, @@ -6859,26 +6859,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1118, + "id": 1247, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "2242:6:7", + "referencedDeclaration": 1114, + "src": "2242:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1120, + "id": 1249, "indexExpression": { "argumentTypes": null, - "id": 1119, + "id": 1248, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 981, - "src": "2249:15:7", + "referencedDeclaration": 1110, + "src": "2249:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6889,7 +6889,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2242:23:7", + "src": "2242:23:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6899,31 +6899,31 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1121, + "id": 1250, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1085, - "src": "2268:5:7", + "referencedDeclaration": 1214, + "src": "2268:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2242:31:7", + "src": "2242:31:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1123, + "id": 1252, "nodeType": "ExpressionStatement", - "src": "2242:31:7" + "src": "2242:31:9" }, { "expression": { "argumentTypes": null, - "id": 1125, + "id": 1254, "isConstant": false, "isLValue": false, "isPure": false, @@ -6931,15 +6931,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "2283:12:7", + "src": "2283:12:9", "subExpression": { "argumentTypes": null, - "id": 1124, + "id": 1253, "name": "ownerCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 987, - "src": "2283:10:7", + "referencedDeclaration": 1116, + "src": "2283:10:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6950,9 +6950,9 @@ "typeString": "uint256" } }, - "id": 1126, + "id": 1255, "nodeType": "ExpressionStatement", - "src": "2283:12:7" + "src": "2283:12:9" }, { "condition": { @@ -6961,19 +6961,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 1129, + "id": 1258, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1127, + "id": 1256, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 989, - "src": "2363:9:7", + "referencedDeclaration": 1118, + "src": "2363:9:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -6983,39 +6983,39 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 1128, + "id": 1257, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1087, - "src": "2376:10:7", + "referencedDeclaration": 1216, + "src": "2376:10:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "2363:23:7", + "src": "2363:23:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 1134, + "id": 1263, "nodeType": "IfStatement", - "src": "2359:68:7", + "src": "2359:68:9", "trueBody": { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 1131, + "id": 1260, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1087, - "src": "2416:10:7", + "referencedDeclaration": 1216, + "src": "2416:10:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -7029,18 +7029,18 @@ "typeString": "uint8" } ], - "id": 1130, + "id": 1259, "name": "changeThreshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1271, - "src": "2400:15:7", + "referencedDeclaration": 1400, + "src": "2400:15:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$returns$__$", "typeString": "function (uint8)" } }, - "id": 1132, + "id": 1261, "isConstant": false, "isLValue": false, "isPure": false, @@ -7048,58 +7048,58 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2400:27:7", + "src": "2400:27:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1133, + "id": 1262, "nodeType": "ExpressionStatement", - "src": "2400:27:7" + "src": "2400:27:9" } } ] }, "documentation": "@dev Allows to add a new owner to the Safe and update the threshold at the same time.\n This can only be done via a Safe transaction.\n @param owner New owner address.\n @param _threshold New threshold.", - "id": 1136, + "id": 1265, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 1090, + "id": 1219, "modifierName": { "argumentTypes": null, - "id": 1089, + "id": 1218, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1358, - "src": "1993:10:7", + "referencedDeclaration": 1618, + "src": "1993:10:9", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1993:10:7" + "src": "1993:10:9" } ], "name": "addOwnerWithThreshold", "nodeType": "FunctionDefinition", "parameters": { - "id": 1088, + "id": 1217, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1085, + "id": 1214, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 1136, - "src": "1937:13:7", + "scope": 1265, + "src": "1937:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7107,10 +7107,10 @@ "typeString": "address" }, "typeName": { - "id": 1084, + "id": 1213, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1937:7:7", + "src": "1937:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7121,11 +7121,11 @@ }, { "constant": false, - "id": 1087, + "id": 1216, "name": "_threshold", "nodeType": "VariableDeclaration", - "scope": 1136, - "src": "1952:16:7", + "scope": 1265, + "src": "1952:16:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7133,10 +7133,10 @@ "typeString": "uint8" }, "typeName": { - "id": 1086, + "id": 1215, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "1952:5:7", + "src": "1952:5:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -7146,26 +7146,26 @@ "visibility": "internal" } ], - "src": "1936:33:7" + "src": "1936:33:9" }, "payable": false, "returnParameters": { - "id": 1091, + "id": 1220, "nodeType": "ParameterList", "parameters": [], - "src": "2008:0:7" + "src": "2008:0:9" }, - "scope": 1343, - "src": "1906:528:7", + "scope": 1472, + "src": "1906:528:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1188, + "id": 1317, "nodeType": "Block", - "src": "2887:462:7", + "src": "2887:462:9", "statements": [ { "expression": { @@ -7177,7 +7177,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1152, + "id": 1281, "isConstant": false, "isLValue": false, "isPure": false, @@ -7188,19 +7188,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1150, + "id": 1279, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1148, + "id": 1277, "name": "ownerCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 987, - "src": "2982:10:7", + "referencedDeclaration": 1116, + "src": "2982:10:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7211,14 +7211,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31", - "id": 1149, + "id": 1278, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2995:1:7", + "src": "2995:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -7226,7 +7226,7 @@ }, "value": "1" }, - "src": "2982:14:7", + "src": "2982:14:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7236,18 +7236,18 @@ "operator": ">=", "rightExpression": { "argumentTypes": null, - "id": 1151, + "id": 1280, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1142, - "src": "3000:10:7", + "referencedDeclaration": 1271, + "src": "3000:10:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "2982:28:7", + "src": "2982:28:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7261,21 +7261,21 @@ "typeString": "bool" } ], - "id": 1147, + "id": 1276, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "2974:7:7", + "referencedDeclaration": 2601, + "src": "2974:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1153, + "id": 1282, "isConstant": false, "isLValue": false, "isPure": false, @@ -7283,15 +7283,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2974:37:7", + "src": "2974:37:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1154, + "id": 1283, "nodeType": "ExpressionStatement", - "src": "2974:37:7" + "src": "2974:37:9" }, { "expression": { @@ -7303,7 +7303,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1160, + "id": 1289, "isConstant": false, "isLValue": false, "isPure": false, @@ -7312,26 +7312,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1156, + "id": 1285, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "3091:6:7", + "referencedDeclaration": 1114, + "src": "3091:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1158, + "id": 1287, "indexExpression": { "argumentTypes": null, - "id": 1157, + "id": 1286, "name": "prevOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1138, - "src": "3098:9:7", + "referencedDeclaration": 1267, + "src": "3098:9:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7342,7 +7342,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3091:17:7", + "src": "3091:17:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7352,18 +7352,18 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 1159, + "id": 1288, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1140, - "src": "3112:5:7", + "referencedDeclaration": 1269, + "src": "3112:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "3091:26:7", + "src": "3091:26:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7377,21 +7377,21 @@ "typeString": "bool" } ], - "id": 1155, + "id": 1284, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "3083:7:7", + "referencedDeclaration": 2601, + "src": "3083:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1161, + "id": 1290, "isConstant": false, "isLValue": false, "isPure": false, @@ -7399,20 +7399,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3083:35:7", + "src": "3083:35:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1162, + "id": 1291, "nodeType": "ExpressionStatement", - "src": "3083:35:7" + "src": "3083:35:9" }, { "expression": { "argumentTypes": null, - "id": 1169, + "id": 1298, "isConstant": false, "isLValue": false, "isPure": false, @@ -7421,26 +7421,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1163, + "id": 1292, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "3128:6:7", + "referencedDeclaration": 1114, + "src": "3128:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1165, + "id": 1294, "indexExpression": { "argumentTypes": null, - "id": 1164, + "id": 1293, "name": "prevOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1138, - "src": "3135:9:7", + "referencedDeclaration": 1267, + "src": "3135:9:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7451,7 +7451,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "3128:17:7", + "src": "3128:17:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7463,26 +7463,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1166, + "id": 1295, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "3148:6:7", + "referencedDeclaration": 1114, + "src": "3148:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1168, + "id": 1297, "indexExpression": { "argumentTypes": null, - "id": 1167, + "id": 1296, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1140, - "src": "3155:5:7", + "referencedDeclaration": 1269, + "src": "3155:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7493,26 +7493,26 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3148:13:7", + "src": "3148:13:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "3128:33:7", + "src": "3128:33:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1170, + "id": 1299, "nodeType": "ExpressionStatement", - "src": "3128:33:7" + "src": "3128:33:9" }, { "expression": { "argumentTypes": null, - "id": 1175, + "id": 1304, "isConstant": false, "isLValue": false, "isPure": false, @@ -7521,26 +7521,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1171, + "id": 1300, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "3171:6:7", + "referencedDeclaration": 1114, + "src": "3171:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1173, + "id": 1302, "indexExpression": { "argumentTypes": null, - "id": 1172, + "id": 1301, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1140, - "src": "3178:5:7", + "referencedDeclaration": 1269, + "src": "3178:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7551,7 +7551,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "3171:13:7", + "src": "3171:13:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7562,14 +7562,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "30", - "id": 1174, + "id": 1303, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3187:1:7", + "src": "3187:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -7577,20 +7577,20 @@ }, "value": "0" }, - "src": "3171:17:7", + "src": "3171:17:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1176, + "id": 1305, "nodeType": "ExpressionStatement", - "src": "3171:17:7" + "src": "3171:17:9" }, { "expression": { "argumentTypes": null, - "id": 1178, + "id": 1307, "isConstant": false, "isLValue": false, "isPure": false, @@ -7598,15 +7598,15 @@ "nodeType": "UnaryOperation", "operator": "--", "prefix": false, - "src": "3198:12:7", + "src": "3198:12:9", "subExpression": { "argumentTypes": null, - "id": 1177, + "id": 1306, "name": "ownerCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 987, - "src": "3198:10:7", + "referencedDeclaration": 1116, + "src": "3198:10:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7617,9 +7617,9 @@ "typeString": "uint256" } }, - "id": 1179, + "id": 1308, "nodeType": "ExpressionStatement", - "src": "3198:12:7" + "src": "3198:12:9" }, { "condition": { @@ -7628,19 +7628,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 1182, + "id": 1311, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1180, + "id": 1309, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 989, - "src": "3278:9:7", + "referencedDeclaration": 1118, + "src": "3278:9:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -7650,39 +7650,39 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 1181, + "id": 1310, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1142, - "src": "3291:10:7", + "referencedDeclaration": 1271, + "src": "3291:10:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "3278:23:7", + "src": "3278:23:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 1187, + "id": 1316, "nodeType": "IfStatement", - "src": "3274:68:7", + "src": "3274:68:9", "trueBody": { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 1184, + "id": 1313, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1142, - "src": "3331:10:7", + "referencedDeclaration": 1271, + "src": "3331:10:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -7696,18 +7696,18 @@ "typeString": "uint8" } ], - "id": 1183, + "id": 1312, "name": "changeThreshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1271, - "src": "3315:15:7", + "referencedDeclaration": 1400, + "src": "3315:15:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$returns$__$", "typeString": "function (uint8)" } }, - "id": 1185, + "id": 1314, "isConstant": false, "isLValue": false, "isPure": false, @@ -7715,58 +7715,58 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3315:27:7", + "src": "3315:27:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1186, + "id": 1315, "nodeType": "ExpressionStatement", - "src": "3315:27:7" + "src": "3315:27:9" } } ] }, "documentation": "@dev Allows to remove an owner from the Safe and update the threshold at the same time.\n This can only be done via a Safe transaction.\n @param prevOwner Owner that pointed to the owner to be removed in the linked list\n @param owner Owner address to be removed.\n @param _threshold New threshold.", - "id": 1189, + "id": 1318, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 1145, + "id": 1274, "modifierName": { "argumentTypes": null, - "id": 1144, + "id": 1273, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1358, - "src": "2872:10:7", + "referencedDeclaration": 1618, + "src": "2872:10:9", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "2872:10:7" + "src": "2872:10:9" } ], "name": "removeOwner", "nodeType": "FunctionDefinition", "parameters": { - "id": 1143, + "id": 1272, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1138, + "id": 1267, "name": "prevOwner", "nodeType": "VariableDeclaration", - "scope": 1189, - "src": "2797:17:7", + "scope": 1318, + "src": "2797:17:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7774,10 +7774,10 @@ "typeString": "address" }, "typeName": { - "id": 1137, + "id": 1266, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2797:7:7", + "src": "2797:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7788,11 +7788,11 @@ }, { "constant": false, - "id": 1140, + "id": 1269, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 1189, - "src": "2816:13:7", + "scope": 1318, + "src": "2816:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7800,10 +7800,10 @@ "typeString": "address" }, "typeName": { - "id": 1139, + "id": 1268, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2816:7:7", + "src": "2816:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7814,11 +7814,11 @@ }, { "constant": false, - "id": 1142, + "id": 1271, "name": "_threshold", "nodeType": "VariableDeclaration", - "scope": 1189, - "src": "2831:16:7", + "scope": 1318, + "src": "2831:16:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7826,10 +7826,10 @@ "typeString": "uint8" }, "typeName": { - "id": 1141, + "id": 1270, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "2831:5:7", + "src": "2831:5:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -7839,26 +7839,26 @@ "visibility": "internal" } ], - "src": "2796:52:7" + "src": "2796:52:9" }, "payable": false, "returnParameters": { - "id": 1146, + "id": 1275, "nodeType": "ParameterList", "parameters": [], - "src": "2887:0:7" + "src": "2887:0:9" }, - "scope": 1343, - "src": "2776:573:7", + "scope": 1472, + "src": "2776:573:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1246, + "id": 1375, "nodeType": "Block", - "src": "3795:414:7", + "src": "3795:414:9", "statements": [ { "expression": { @@ -7870,7 +7870,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 1207, + "id": 1336, "isConstant": false, "isLValue": false, "isPure": false, @@ -7881,19 +7881,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1203, + "id": 1332, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1201, + "id": 1330, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1195, - "src": "3854:8:7", + "referencedDeclaration": 1324, + "src": "3854:8:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7904,14 +7904,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1202, + "id": 1331, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3866:1:7", + "src": "3866:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -7919,7 +7919,7 @@ }, "value": "0" }, - "src": "3854:13:7", + "src": "3854:13:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7933,19 +7933,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1206, + "id": 1335, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1204, + "id": 1333, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1195, - "src": "3871:8:7", + "referencedDeclaration": 1324, + "src": "3871:8:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7955,24 +7955,24 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 1205, + "id": 1334, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 981, - "src": "3883:15:7", + "referencedDeclaration": 1110, + "src": "3883:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "3871:27:7", + "src": "3871:27:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "3854:44:7", + "src": "3854:44:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7986,21 +7986,21 @@ "typeString": "bool" } ], - "id": 1200, + "id": 1329, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "3846:7:7", + "referencedDeclaration": 2601, + "src": "3846:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1208, + "id": 1337, "isConstant": false, "isLValue": false, "isPure": false, @@ -8008,15 +8008,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3846:53:7", + "src": "3846:53:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1209, + "id": 1338, "nodeType": "ExpressionStatement", - "src": "3846:53:7" + "src": "3846:53:9" }, { "expression": { @@ -8028,7 +8028,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1215, + "id": 1344, "isConstant": false, "isLValue": false, "isPure": false, @@ -8037,26 +8037,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1211, + "id": 1340, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "3957:6:7", + "referencedDeclaration": 1114, + "src": "3957:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1213, + "id": 1342, "indexExpression": { "argumentTypes": null, - "id": 1212, + "id": 1341, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1195, - "src": "3964:8:7", + "referencedDeclaration": 1324, + "src": "3964:8:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8067,7 +8067,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3957:16:7", + "src": "3957:16:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8078,14 +8078,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1214, + "id": 1343, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3977:1:7", + "src": "3977:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -8093,7 +8093,7 @@ }, "value": "0" }, - "src": "3957:21:7", + "src": "3957:21:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8107,21 +8107,21 @@ "typeString": "bool" } ], - "id": 1210, + "id": 1339, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "3949:7:7", + "referencedDeclaration": 2601, + "src": "3949:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1216, + "id": 1345, "isConstant": false, "isLValue": false, "isPure": false, @@ -8129,15 +8129,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3949:30:7", + "src": "3949:30:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1217, + "id": 1346, "nodeType": "ExpressionStatement", - "src": "3949:30:7" + "src": "3949:30:9" }, { "expression": { @@ -8149,7 +8149,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1223, + "id": 1352, "isConstant": false, "isLValue": false, "isPure": false, @@ -8158,26 +8158,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1219, + "id": 1348, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "4059:6:7", + "referencedDeclaration": 1114, + "src": "4059:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1221, + "id": 1350, "indexExpression": { "argumentTypes": null, - "id": 1220, + "id": 1349, "name": "prevOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1191, - "src": "4066:9:7", + "referencedDeclaration": 1320, + "src": "4066:9:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8188,7 +8188,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4059:17:7", + "src": "4059:17:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8198,18 +8198,18 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 1222, + "id": 1351, "name": "oldOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1193, - "src": "4080:8:7", + "referencedDeclaration": 1322, + "src": "4080:8:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4059:29:7", + "src": "4059:29:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8223,21 +8223,21 @@ "typeString": "bool" } ], - "id": 1218, + "id": 1347, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "4051:7:7", + "referencedDeclaration": 2601, + "src": "4051:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1224, + "id": 1353, "isConstant": false, "isLValue": false, "isPure": false, @@ -8245,20 +8245,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4051:38:7", + "src": "4051:38:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1225, + "id": 1354, "nodeType": "ExpressionStatement", - "src": "4051:38:7" + "src": "4051:38:9" }, { "expression": { "argumentTypes": null, - "id": 1232, + "id": 1361, "isConstant": false, "isLValue": false, "isPure": false, @@ -8267,26 +8267,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1226, + "id": 1355, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "4099:6:7", + "referencedDeclaration": 1114, + "src": "4099:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1228, + "id": 1357, "indexExpression": { "argumentTypes": null, - "id": 1227, + "id": 1356, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1195, - "src": "4106:8:7", + "referencedDeclaration": 1324, + "src": "4106:8:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8297,7 +8297,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "4099:16:7", + "src": "4099:16:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8309,26 +8309,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1229, + "id": 1358, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "4118:6:7", + "referencedDeclaration": 1114, + "src": "4118:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1231, + "id": 1360, "indexExpression": { "argumentTypes": null, - "id": 1230, + "id": 1359, "name": "oldOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1193, - "src": "4125:8:7", + "referencedDeclaration": 1322, + "src": "4125:8:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8339,26 +8339,26 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4118:16:7", + "src": "4118:16:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4099:35:7", + "src": "4099:35:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1233, + "id": 1362, "nodeType": "ExpressionStatement", - "src": "4099:35:7" + "src": "4099:35:9" }, { "expression": { "argumentTypes": null, - "id": 1238, + "id": 1367, "isConstant": false, "isLValue": false, "isPure": false, @@ -8367,26 +8367,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1234, + "id": 1363, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "4144:6:7", + "referencedDeclaration": 1114, + "src": "4144:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1236, + "id": 1365, "indexExpression": { "argumentTypes": null, - "id": 1235, + "id": 1364, "name": "prevOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1191, - "src": "4151:9:7", + "referencedDeclaration": 1320, + "src": "4151:9:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8397,7 +8397,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "4144:17:7", + "src": "4144:17:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8407,31 +8407,31 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1237, + "id": 1366, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1195, - "src": "4164:8:7", + "referencedDeclaration": 1324, + "src": "4164:8:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4144:28:7", + "src": "4144:28:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1239, + "id": 1368, "nodeType": "ExpressionStatement", - "src": "4144:28:7" + "src": "4144:28:9" }, { "expression": { "argumentTypes": null, - "id": 1244, + "id": 1373, "isConstant": false, "isLValue": false, "isPure": false, @@ -8440,26 +8440,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1240, + "id": 1369, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "4182:6:7", + "referencedDeclaration": 1114, + "src": "4182:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1242, + "id": 1371, "indexExpression": { "argumentTypes": null, - "id": 1241, + "id": 1370, "name": "oldOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1193, - "src": "4189:8:7", + "referencedDeclaration": 1322, + "src": "4189:8:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8470,7 +8470,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "4182:16:7", + "src": "4182:16:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8481,14 +8481,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "30", - "id": 1243, + "id": 1372, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4201:1:7", + "src": "4201:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -8496,57 +8496,57 @@ }, "value": "0" }, - "src": "4182:20:7", + "src": "4182:20:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1245, + "id": 1374, "nodeType": "ExpressionStatement", - "src": "4182:20:7" + "src": "4182:20:9" } ] }, "documentation": "@dev Allows to swap/replace an owner from the Safe with another address.\n This can only be done via a Safe transaction.\n @param prevOwner Owner that pointed to the owner to be replaced in the linked list\n @param oldOwner Owner address to be replaced.\n @param newOwner New owner address.", - "id": 1247, + "id": 1376, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 1198, + "id": 1327, "modifierName": { "argumentTypes": null, - "id": 1197, + "id": 1326, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1358, - "src": "3780:10:7", + "referencedDeclaration": 1618, + "src": "3780:10:9", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "3780:10:7" + "src": "3780:10:9" } ], "name": "swapOwner", "nodeType": "FunctionDefinition", "parameters": { - "id": 1196, + "id": 1325, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1191, + "id": 1320, "name": "prevOwner", "nodeType": "VariableDeclaration", - "scope": 1247, - "src": "3702:17:7", + "scope": 1376, + "src": "3702:17:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8554,10 +8554,10 @@ "typeString": "address" }, "typeName": { - "id": 1190, + "id": 1319, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3702:7:7", + "src": "3702:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8568,11 +8568,11 @@ }, { "constant": false, - "id": 1193, + "id": 1322, "name": "oldOwner", "nodeType": "VariableDeclaration", - "scope": 1247, - "src": "3721:16:7", + "scope": 1376, + "src": "3721:16:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8580,10 +8580,10 @@ "typeString": "address" }, "typeName": { - "id": 1192, + "id": 1321, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3721:7:7", + "src": "3721:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8594,11 +8594,11 @@ }, { "constant": false, - "id": 1195, + "id": 1324, "name": "newOwner", "nodeType": "VariableDeclaration", - "scope": 1247, - "src": "3739:16:7", + "scope": 1376, + "src": "3739:16:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8606,10 +8606,10 @@ "typeString": "address" }, "typeName": { - "id": 1194, + "id": 1323, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3739:7:7", + "src": "3739:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8619,26 +8619,26 @@ "visibility": "internal" } ], - "src": "3701:55:7" + "src": "3701:55:9" }, "payable": false, "returnParameters": { - "id": 1199, + "id": 1328, "nodeType": "ParameterList", "parameters": [], - "src": "3795:0:7" + "src": "3795:0:9" }, - "scope": 1343, - "src": "3683:526:7", + "scope": 1472, + "src": "3683:526:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1270, + "id": 1399, "nodeType": "Block", - "src": "4479:237:7", + "src": "4479:237:9", "statements": [ { "expression": { @@ -8650,19 +8650,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1257, + "id": 1386, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1255, + "id": 1384, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1249, - "src": "4566:10:7", + "referencedDeclaration": 1378, + "src": "4566:10:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -8672,18 +8672,18 @@ "operator": "<=", "rightExpression": { "argumentTypes": null, - "id": 1256, + "id": 1385, "name": "ownerCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 987, - "src": "4580:10:7", + "referencedDeclaration": 1116, + "src": "4580:10:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4566:24:7", + "src": "4566:24:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8697,21 +8697,21 @@ "typeString": "bool" } ], - "id": 1254, + "id": 1383, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "4558:7:7", + "referencedDeclaration": 2601, + "src": "4558:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1258, + "id": 1387, "isConstant": false, "isLValue": false, "isPure": false, @@ -8719,15 +8719,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4558:33:7", + "src": "4558:33:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1259, + "id": 1388, "nodeType": "ExpressionStatement", - "src": "4558:33:7" + "src": "4558:33:9" }, { "expression": { @@ -8739,19 +8739,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 1263, + "id": 1392, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1261, + "id": 1390, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1249, - "src": "4661:10:7", + "referencedDeclaration": 1378, + "src": "4661:10:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -8762,14 +8762,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31", - "id": 1262, + "id": 1391, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4675:1:7", + "src": "4675:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -8777,7 +8777,7 @@ }, "value": "1" }, - "src": "4661:15:7", + "src": "4661:15:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8791,21 +8791,21 @@ "typeString": "bool" } ], - "id": 1260, + "id": 1389, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "4653:7:7", + "referencedDeclaration": 2601, + "src": "4653:7:9", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1264, + "id": 1393, "isConstant": false, "isLValue": false, "isPure": false, @@ -8813,32 +8813,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4653:24:7", + "src": "4653:24:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1265, + "id": 1394, "nodeType": "ExpressionStatement", - "src": "4653:24:7" + "src": "4653:24:9" }, { "expression": { "argumentTypes": null, - "id": 1268, + "id": 1397, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1266, + "id": 1395, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 989, - "src": "4687:9:7", + "referencedDeclaration": 1118, + "src": "4687:9:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -8848,68 +8848,68 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1267, + "id": 1396, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1249, - "src": "4699:10:7", + "referencedDeclaration": 1378, + "src": "4699:10:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "4687:22:7", + "src": "4687:22:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "id": 1269, + "id": 1398, "nodeType": "ExpressionStatement", - "src": "4687:22:7" + "src": "4687:22:9" } ] }, "documentation": "@dev Allows to update the number of required confirmations by Safe owners.\n This can only be done via a Safe transaction.\n @param _threshold New threshold.", - "id": 1271, + "id": 1400, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 1252, + "id": 1381, "modifierName": { "argumentTypes": null, - "id": 1251, + "id": 1380, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1358, - "src": "4464:10:7", + "referencedDeclaration": 1618, + "src": "4464:10:9", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "4464:10:7" + "src": "4464:10:9" } ], "name": "changeThreshold", "nodeType": "FunctionDefinition", "parameters": { - "id": 1250, + "id": 1379, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1249, + "id": 1378, "name": "_threshold", "nodeType": "VariableDeclaration", - "scope": 1271, - "src": "4423:16:7", + "scope": 1400, + "src": "4423:16:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8917,10 +8917,10 @@ "typeString": "uint8" }, "typeName": { - "id": 1248, + "id": 1377, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "4423:5:7", + "src": "4423:5:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -8930,50 +8930,50 @@ "visibility": "internal" } ], - "src": "4422:18:7" + "src": "4422:18:9" }, "payable": false, "returnParameters": { - "id": 1253, + "id": 1382, "nodeType": "ParameterList", "parameters": [], - "src": "4479:0:7" + "src": "4479:0:9" }, - "scope": 1343, - "src": "4398:318:7", + "scope": 1472, + "src": "4398:318:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1278, + "id": 1407, "nodeType": "Block", - "src": "4802:33:7", + "src": "4802:33:9", "statements": [ { "expression": { "argumentTypes": null, - "id": 1276, + "id": 1405, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 989, - "src": "4819:9:7", + "referencedDeclaration": 1118, + "src": "4819:9:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "functionReturnParameters": 1275, - "id": 1277, + "functionReturnParameters": 1404, + "id": 1406, "nodeType": "Return", - "src": "4812:16:7" + "src": "4812:16:9" } ] }, "documentation": null, - "id": 1279, + "id": 1408, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -8981,23 +8981,23 @@ "name": "getThreshold", "nodeType": "FunctionDefinition", "parameters": { - "id": 1272, + "id": 1401, "nodeType": "ParameterList", "parameters": [], - "src": "4743:2:7" + "src": "4743:2:9" }, "payable": false, "returnParameters": { - "id": 1275, + "id": 1404, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1274, + "id": 1403, "name": "", "nodeType": "VariableDeclaration", - "scope": 1279, - "src": "4791:5:7", + "scope": 1408, + "src": "4791:5:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9005,10 +9005,10 @@ "typeString": "uint8" }, "typeName": { - "id": 1273, + "id": 1402, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "4791:5:7", + "src": "4791:5:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -9018,19 +9018,19 @@ "visibility": "internal" } ], - "src": "4790:7:7" + "src": "4790:7:9" }, - "scope": 1343, - "src": "4722:113:7", + "scope": 1472, + "src": "4722:113:9", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1292, + "id": 1421, "nodeType": "Block", - "src": "4928:42:7", + "src": "4928:42:9", "statements": [ { "expression": { @@ -9039,7 +9039,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1290, + "id": 1419, "isConstant": false, "isLValue": false, "isPure": false, @@ -9048,26 +9048,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1286, + "id": 1415, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "4945:6:7", + "referencedDeclaration": 1114, + "src": "4945:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1288, + "id": 1417, "indexExpression": { "argumentTypes": null, - "id": 1287, + "id": 1416, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1281, - "src": "4952:5:7", + "referencedDeclaration": 1410, + "src": "4952:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9078,7 +9078,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4945:13:7", + "src": "4945:13:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9089,14 +9089,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1289, + "id": 1418, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4962:1:7", + "src": "4962:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -9104,21 +9104,21 @@ }, "value": "0" }, - "src": "4945:18:7", + "src": "4945:18:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "functionReturnParameters": 1285, - "id": 1291, + "functionReturnParameters": 1414, + "id": 1420, "nodeType": "Return", - "src": "4938:25:7" + "src": "4938:25:9" } ] }, "documentation": null, - "id": 1293, + "id": 1422, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -9126,16 +9126,16 @@ "name": "isOwner", "nodeType": "FunctionDefinition", "parameters": { - "id": 1282, + "id": 1411, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1281, + "id": 1410, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 1293, - "src": "4858:13:7", + "scope": 1422, + "src": "4858:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9143,10 +9143,10 @@ "typeString": "address" }, "typeName": { - "id": 1280, + "id": 1409, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4858:7:7", + "src": "4858:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9156,20 +9156,20 @@ "visibility": "internal" } ], - "src": "4857:15:7" + "src": "4857:15:9" }, "payable": false, "returnParameters": { - "id": 1285, + "id": 1414, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1284, + "id": 1413, "name": "", "nodeType": "VariableDeclaration", - "scope": 1293, - "src": "4918:4:7", + "scope": 1422, + "src": "4918:4:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9177,10 +9177,10 @@ "typeString": "bool" }, "typeName": { - "id": 1283, + "id": 1412, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "4918:4:7", + "src": "4918:4:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -9190,32 +9190,32 @@ "visibility": "internal" } ], - "src": "4917:6:7" + "src": "4917:6:9" }, - "scope": 1343, - "src": "4841:129:7", + "scope": 1472, + "src": "4841:129:9", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1341, + "id": 1470, "nodeType": "Block", - "src": "5133:377:7", + "src": "5133:377:9", "statements": [ { "assignments": [ - 1302 + 1431 ], "declarations": [ { "constant": false, - "id": 1302, + "id": 1431, "name": "array", "nodeType": "VariableDeclaration", - "scope": 1342, - "src": "5143:22:7", + "scope": 1471, + "src": "5143:22:9", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -9224,19 +9224,19 @@ }, "typeName": { "baseType": { - "id": 1300, + "id": 1429, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5143:7:7", + "src": "5143:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1301, + "id": 1430, "length": null, "nodeType": "ArrayTypeName", - "src": "5143:9:7", + "src": "5143:9:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -9246,18 +9246,18 @@ "visibility": "internal" } ], - "id": 1308, + "id": 1437, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 1306, + "id": 1435, "name": "ownerCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 987, - "src": "5182:10:7", + "referencedDeclaration": 1116, + "src": "5182:10:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9271,39 +9271,39 @@ "typeString": "uint256" } ], - "id": 1305, + "id": 1434, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", - "src": "5168:13:7", + "src": "5168:13:9", "typeDescriptions": { "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_$", "typeString": "function (uint256) pure returns (address[] memory)" }, "typeName": { "baseType": { - "id": 1303, + "id": 1432, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5172:7:7", + "src": "5172:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1304, + "id": 1433, "length": null, "nodeType": "ArrayTypeName", - "src": "5172:9:7", + "src": "5172:9:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" } } }, - "id": 1307, + "id": 1436, "isConstant": false, "isLValue": false, "isPure": false, @@ -9311,27 +9311,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5168:25:7", + "src": "5168:25:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory", "typeString": "address[] memory" } }, "nodeType": "VariableDeclarationStatement", - "src": "5143:50:7" + "src": "5143:50:9" }, { "assignments": [ - 1310 + 1439 ], "declarations": [ { "constant": false, - "id": 1310, + "id": 1439, "name": "index", "nodeType": "VariableDeclaration", - "scope": 1342, - "src": "5237:13:7", + "scope": 1471, + "src": "5237:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9339,10 +9339,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1309, + "id": 1438, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5237:7:7", + "src": "5237:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9352,18 +9352,18 @@ "visibility": "internal" } ], - "id": 1312, + "id": 1441, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 1311, + "id": 1440, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5253:1:7", + "src": "5253:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -9372,20 +9372,20 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "5237:17:7" + "src": "5237:17:9" }, { "assignments": [ - 1314 + 1443 ], "declarations": [ { "constant": false, - "id": 1314, + "id": 1443, "name": "currentOwner", "nodeType": "VariableDeclaration", - "scope": 1342, - "src": "5264:20:7", + "scope": 1471, + "src": "5264:20:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9393,10 +9393,10 @@ "typeString": "address" }, "typeName": { - "id": 1313, + "id": 1442, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5264:7:7", + "src": "5264:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9406,31 +9406,31 @@ "visibility": "internal" } ], - "id": 1318, + "id": 1447, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1315, + "id": 1444, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "5287:6:7", + "referencedDeclaration": 1114, + "src": "5287:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1317, + "id": 1446, "indexExpression": { "argumentTypes": null, - "id": 1316, + "id": 1445, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 981, - "src": "5294:15:7", + "referencedDeclaration": 1110, + "src": "5294:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9441,25 +9441,25 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "5287:23:7", + "src": "5287:23:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "5264:46:7" + "src": "5264:46:9" }, { "body": { - "id": 1337, + "id": 1466, "nodeType": "Block", - "src": "5359:123:7", + "src": "5359:123:9", "statements": [ { "expression": { "argumentTypes": null, - "id": 1326, + "id": 1455, "isConstant": false, "isLValue": false, "isPure": false, @@ -9468,26 +9468,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1322, + "id": 1451, "name": "array", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1302, - "src": "5373:5:7", + "referencedDeclaration": 1431, + "src": "5373:5:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1324, + "id": 1453, "indexExpression": { "argumentTypes": null, - "id": 1323, + "id": 1452, "name": "index", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1310, - "src": "5379:5:7", + "referencedDeclaration": 1439, + "src": "5379:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9498,7 +9498,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "5373:12:7", + "src": "5373:12:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9508,43 +9508,43 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1325, + "id": 1454, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1314, - "src": "5388:12:7", + "referencedDeclaration": 1443, + "src": "5388:12:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "5373:27:7", + "src": "5373:27:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1327, + "id": 1456, "nodeType": "ExpressionStatement", - "src": "5373:27:7" + "src": "5373:27:9" }, { "expression": { "argumentTypes": null, - "id": 1332, + "id": 1461, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1328, + "id": 1457, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1314, - "src": "5414:12:7", + "referencedDeclaration": 1443, + "src": "5414:12:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9556,26 +9556,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1329, + "id": 1458, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 985, - "src": "5429:6:7", + "referencedDeclaration": 1114, + "src": "5429:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1331, + "id": 1460, "indexExpression": { "argumentTypes": null, - "id": 1330, + "id": 1459, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1314, - "src": "5436:12:7", + "referencedDeclaration": 1443, + "src": "5436:12:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9586,26 +9586,26 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "5429:20:7", + "src": "5429:20:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "5414:35:7", + "src": "5414:35:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1333, + "id": 1462, "nodeType": "ExpressionStatement", - "src": "5414:35:7" + "src": "5414:35:9" }, { "expression": { "argumentTypes": null, - "id": 1335, + "id": 1464, "isConstant": false, "isLValue": false, "isPure": false, @@ -9613,15 +9613,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "5463:8:7", + "src": "5463:8:9", "subExpression": { "argumentTypes": null, - "id": 1334, + "id": 1463, "name": "index", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1310, - "src": "5463:5:7", + "referencedDeclaration": 1439, + "src": "5463:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9632,9 +9632,9 @@ "typeString": "uint256" } }, - "id": 1336, + "id": 1465, "nodeType": "ExpressionStatement", - "src": "5463:8:7" + "src": "5463:8:9" } ] }, @@ -9644,19 +9644,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1321, + "id": 1450, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1319, + "id": 1448, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1314, - "src": "5326:12:7", + "referencedDeclaration": 1443, + "src": "5326:12:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9666,50 +9666,50 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 1320, + "id": 1449, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 981, - "src": "5342:15:7", + "referencedDeclaration": 1110, + "src": "5342:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "5326:31:7", + "src": "5326:31:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 1338, + "id": 1467, "nodeType": "WhileStatement", - "src": "5320:162:7" + "src": "5320:162:9" }, { "expression": { "argumentTypes": null, - "id": 1339, + "id": 1468, "name": "array", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1302, - "src": "5498:5:7", + "referencedDeclaration": 1431, + "src": "5498:5:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "functionReturnParameters": 1298, - "id": 1340, + "functionReturnParameters": 1427, + "id": 1469, "nodeType": "Return", - "src": "5491:12:7" + "src": "5491:12:9" } ] }, "documentation": "@dev Returns array of owners.\n @return Array of Safe owners.", - "id": 1342, + "id": 1471, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -9717,23 +9717,23 @@ "name": "getOwners", "nodeType": "FunctionDefinition", "parameters": { - "id": 1294, + "id": 1423, "nodeType": "ParameterList", "parameters": [], - "src": "5070:2:7" + "src": "5070:2:9" }, "payable": false, "returnParameters": { - "id": 1298, + "id": 1427, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1297, + "id": 1426, "name": "", "nodeType": "VariableDeclaration", - "scope": 1342, - "src": "5118:9:7", + "scope": 1471, + "src": "5118:9:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9742,19 +9742,19 @@ }, "typeName": { "baseType": { - "id": 1295, + "id": 1424, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5118:7:7", + "src": "5118:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1296, + "id": 1425, "length": null, "nodeType": "ArrayTypeName", - "src": "5118:9:7", + "src": "5118:9:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -9764,26 +9764,26 @@ "visibility": "internal" } ], - "src": "5117:11:7" + "src": "5117:11:9" }, - "scope": 1343, - "src": "5052:458:7", + "scope": 1472, + "src": "5052:458:9", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 1344, - "src": "240:5272:7" + "scope": 1473, + "src": "240:5272:9" } ], - "src": "0:5513:7" + "src": "0:5513:9" }, "compiler": { "name": "solc", - "version": "0.4.23+commit.124ca40d.Emscripten.clang" + "version": "0.4.24+commit.e67f0147.Emscripten.clang" }, "networks": {}, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-16T10:51:14.752Z" + "updatedAt": "2018-05-27T11:12:45.581Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/PayingProxy.json b/safe-contracts/build/contracts/PayingProxy.json index 4c74b5b87d..cc23c45941 100644 --- a/safe-contracts/build/contracts/PayingProxy.json +++ b/safe-contracts/build/contracts/PayingProxy.json @@ -44,7 +44,11 @@ "type": "address" }, { - "name": "amount", + "name": "paymentToken", + "type": "address" + }, + { + "name": "payment", "type": "uint256" } ], @@ -58,40 +62,51 @@ "type": "fallback" } ], - "bytecode": "0x608060405234801561001057600080fd5b506040516102d13803806102d18339810180604052810190808051906020019092919080518201929190602001805190602001909291908051906020019092919050505083838160008173ffffffffffffffffffffffffffffffffffffffff161415151561007d57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505060008151111561010a5773ffffffffffffffffffffffffffffffffffffffff60005416600080835160208501846127105a03f46040513d6000823e6000821415610106573d81fd5b5050505b50508173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610152573d6000803e3d6000fd5b505050505061016b806101666000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461008b5780635c60da1b146100b6575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e6000811415610086573d6000fd5b3d6000f35b34801561009757600080fd5b506100a061010d565b6040518082815260200191505060405180910390f35b3480156100c257600080fd5b506100cb610116565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006002905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a723058204a5e06b82db5d9aabe30490b09e6366d2451ec220560baef426b0510057dd99b0029", - "deployedBytecode": "0x60806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461008b5780635c60da1b146100b6575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e6000811415610086573d6000fd5b3d6000f35b34801561009757600080fd5b506100a061010d565b6040518082815260200191505060405180910390f35b3480156100c257600080fd5b506100cb610116565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006002905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a723058204a5e06b82db5d9aabe30490b09e6366d2451ec220560baef426b0510057dd99b0029", - "sourceMap": "414:457:11:-;;;675:194;8:9:-1;5:2;;;30:1;27;20:12;5:2;675:194:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;784:11;797;668::0;593:1:12;578:11;:16;;;;570:25;;;;;;;;618:11;605:10;;:24;;;;;;;;;;;;;;;;;;508:128;735:1:0;714:11;:18;:22;710:519;;;879:42;875:1;869:8;865:57;1043:1;1040;1026:11;1020:18;1013:4;1000:11;996:22;984:10;976:5;971:3;967:15;954:91;1079:4;1073:11;1124:14;1121:1;1116:3;1101:38;1171:1;1162:7;1159:14;1156:2;;;1188:14;1183:3;1176:27;1156:2;829:390;;;;610:625;;839:6:11;:15;;:23;855:6;839:23;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;839:23:11;675:194;;;;414:457;;;;;;", - "deployedSourceMap": "414:457:11:-;;;;;;;;;;;;;;;;;;;;;;;;;;915:42:12;911:1;905:8;901:57;990:14;987:1;984;971:34;1085:1;1082;1066:14;1063:1;1051:10;1046:3;1033:54;1121:16;1118:1;1115;1100:38;1166:1;1157:7;1154:14;1151:2;;;1181:16;1178:1;1171:27;1151:2;1223:16;1220:1;1213:27;1386:104;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1386:104:12;;;;;;;;;;;;;;;;;;;;;;;1262:118;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1262:118:12;;;;;;;;;;;;;;;;;;;;;;;;;;;1386:104;1452:7;1482:1;1475:8;;1386:104;:::o;1262:118::-;1333:7;1363:10;;;;;;;;;;;1356:17;;1262:118;:::o", - "source": "pragma solidity 0.4.23;\nimport \"./DelegateConstructorProxy.sol\";\n\n/// @title Paying Proxy - Generic proxy contract allows to execute all transactions applying the code of a master contract. It is possible to send along initialization data with the constructor. And sends funds after creation to a specified account.\n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract PayingProxy is DelegateConstructorProxy {\n\n /// @dev Constructor function sets address of master copy contract.\n /// @param _masterCopy Master copy address.\n /// @param initializer Data used for a delegate call to initialize the contract.\n constructor(address _masterCopy, bytes initializer, address funder, uint256 amount) DelegateConstructorProxy(_masterCopy, initializer)\n public\n {\n funder.transfer(amount);\n }\n}\n", + "bytecode": "0x608060405234801561001057600080fd5b5060405161040a38038061040a833981018060405281019080805190602001909291908051820192919060200180519060200190929190805190602001909291908051906020019092919050505084848160008173ffffffffffffffffffffffffffffffffffffffff161415151561008757600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506000815111156101145773ffffffffffffffffffffffffffffffffffffffff60005416600080835160208501846127105a03f46040513d6000823e6000821415610110573d81fd5b5050505b5050600081111561028b57600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156101a0578273ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561019a573d6000803e3d6000fd5b5061028a565b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561024357600080fd5b505af1158015610257573d6000803e3d6000fd5b505050506040513d602081101561026d57600080fd5b8101908080519060200190929190505050151561028957600080fd5b5b5b505050505061016b8061029f6000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461008b5780635c60da1b146100b6575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e6000811415610086573d6000fd5b3d6000f35b34801561009757600080fd5b506100a061010d565b6040518082815260200191505060405180910390f35b3480156100c257600080fd5b506100cb610116565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006002905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a72305820c6b5ccee92e07d7ace7597f14eb09050cef9e7752ac4efc079975eb065e226060029", + "deployedBytecode": "0x60806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461008b5780635c60da1b146100b6575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e6000811415610086573d6000fd5b3d6000f35b34801561009757600080fd5b506100a061010d565b6040518082815260200191505060405180910390f35b3480156100c257600080fd5b506100cb610116565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006002905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a72305820c6b5ccee92e07d7ace7597f14eb09050cef9e7752ac4efc079975eb065e226060029", + "sourceMap": "452:905:10:-;;;924:431;8:9:-1;5:2;;;30:1;27;20:12;5:2;924:431:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1065:11;1078;668::0;593:1:11;578:11;:16;;;;570:25;;;;;;;;618:11;605:10;;:24;;;;;;;;;;;;;;;;;;508:128;735:1:0;714:11;:18;:22;710:519;;;879:42;875:1;869:8;865:57;1043:1;1040;1026:11;1020:18;1013:4;1000:11;996:22;984:10;976:5;971:3;967:15;954:91;1079:4;1073:11;1124:14;1121:1;1116:3;1101:38;1171:1;1162:7;1159:14;1156:2;;;1188:14;1183:3;1176:27;1156:2;829:390;;;;610:625;;1134:1:10;1124:7;:11;1120:228;;;1179:1;1155:26;;:12;:26;;;1151:187;;;1201:6;:15;;:24;1217:7;1201:24;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1201:24:10;1151:187;;;1283:12;1272:33;;;1306:6;1314:7;1272:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1272:50:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1272:50:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1272:50:10;;;;;;;;;;;;;;;;1264:59;;;;;;;;1151:187;1120:228;924:431;;;;;452:905;;;;;;", + "deployedSourceMap": "452:905:10:-;;;;;;;;;;;;;;;;;;;;;;;;;;915:42:11;911:1;905:8;901:57;990:14;987:1;984;971:34;1085:1;1082;1066:14;1063:1;1051:10;1046:3;1033:54;1121:16;1118:1;1115;1100:38;1166:1;1157:7;1154:14;1151:2;;;1181:16;1178:1;1171:27;1151:2;1223:16;1220:1;1213:27;1386:104;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1386:104:11;;;;;;;;;;;;;;;;;;;;;;;1262:118;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1262:118:11;;;;;;;;;;;;;;;;;;;;;;;;;;;1386:104;1452:7;1482:1;1475:8;;1386:104;:::o;1262:118::-;1333:7;1363:10;;;;;;;;;;;1356:17;;1262:118;:::o", + "source": "pragma solidity 0.4.24;\nimport \"./DelegateConstructorProxy.sol\";\nimport \"./interfaces/ERC20Token.sol\";\n\n/// @title Paying Proxy - Generic proxy contract allows to execute all transactions applying the code of a master contract. It is possible to send along initialization data with the constructor. And sends funds after creation to a specified account.\n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract PayingProxy is DelegateConstructorProxy {\n\n /// @dev Constructor function sets address of master copy contract.\n /// @param _masterCopy Master copy address.\n /// @param initializer Data used for a delegate call to initialize the contract.\n /// @param funder Address that should be paid for the execution of this call\n /// @param paymentToken Token that should be used for the payment (0 is ETH)\n /// @param payment Value that should be paid\n constructor(address _masterCopy, bytes initializer, address funder, address paymentToken, uint256 payment) \n DelegateConstructorProxy(_masterCopy, initializer)\n public\n {\n if (payment > 0) {\n if (paymentToken == address(0)) {\n funder.transfer(payment);\n } else {\n require(ERC20Token(paymentToken).transfer(funder, payment));\n }\n } \n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/PayingProxy.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/PayingProxy.sol", "exportedSymbols": { "PayingProxy": [ - 1466 + 1526 ] }, - "id": 1467, + "id": 1527, "nodeType": "SourceUnit", "nodes": [ { - "id": 1440, + "id": 1474, "literals": [ "solidity", "0.4", - ".23" + ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:11" + "src": "0:23:10" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/DelegateConstructorProxy.sol", "file": "./DelegateConstructorProxy.sol", - "id": 1441, + "id": 1475, "nodeType": "ImportDirective", - "scope": 1467, + "scope": 1527, "sourceUnit": 24, - "src": "24:40:11", + "src": "24:40:10", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/interfaces/ERC20Token.sol", + "file": "./interfaces/ERC20Token.sol", + "id": 1476, + "nodeType": "ImportDirective", + "scope": 1527, + "sourceUnit": 1686, + "src": "65:37:10", "symbolAliases": [], "unitAlias": "" }, @@ -101,117 +116,449 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 1442, + "id": 1477, "name": "DelegateConstructorProxy", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 23, - "src": "438:24:11", + "src": "476:24:10", "typeDescriptions": { "typeIdentifier": "t_contract$_DelegateConstructorProxy_$23", "typeString": "contract DelegateConstructorProxy" } }, - "id": 1443, + "id": 1478, "nodeType": "InheritanceSpecifier", - "src": "438:24:11" + "src": "476:24:10" } ], "contractDependencies": [ 23, - 1508 + 1568 ], "contractKind": "contract", "documentation": "@title Paying Proxy - Generic proxy contract allows to execute all transactions applying the code of a master contract. It is possible to send along initialization data with the constructor. And sends funds after creation to a specified account.\n @author Stefan George - \n @author Richard Meissner - ", "fullyImplemented": true, - "id": 1466, + "id": 1526, "linearizedBaseContracts": [ - 1466, + 1526, 23, - 1508 + 1568 ], "name": "PayingProxy", "nodeType": "ContractDefinition", "nodes": [ { "body": { - "id": 1464, + "id": 1524, "nodeType": "Block", - "src": "829:40:11", + "src": "1110:245:10", "statements": [ { - "expression": { + "condition": { "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1461, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1451, - "src": "855:6:11", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1497, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1495, + "name": "payment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1488, + "src": "1124:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "id": 1458, - "name": "funder", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1449, - "src": "839:6:11", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 1460, + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1496, "isConstant": false, "isLValue": false, - "isPure": false, + "isPure": true, + "kind": "number", "lValueRequested": false, - "memberName": "transfer", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "839:15:11", + "nodeType": "Literal", + "src": "1134:1:10", + "subdenomination": null, "typeDescriptions": { - "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", - "typeString": "function (uint256)" - } + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" }, - "id": 1462, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "839:23:11", + "src": "1124:11:10", "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - "id": 1463, - "nodeType": "ExpressionStatement", - "src": "839:23:11" + "falseBody": null, + "id": 1523, + "nodeType": "IfStatement", + "src": "1120:228:10", + "trueBody": { + "id": 1522, + "nodeType": "Block", + "src": "1137:211:10", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1502, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1498, + "name": "paymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1486, + "src": "1155:12:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 1500, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1179:1:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1499, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1171:7:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1501, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1171:10:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1155:26:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 1520, + "nodeType": "Block", + "src": "1246:92:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1515, + "name": "funder", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1484, + "src": "1306:6:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1516, + "name": "payment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1488, + "src": "1314:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1512, + "name": "paymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1486, + "src": "1283:12:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1511, + "name": "ERC20Token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1685, + "src": "1272:10:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20Token_$1685_$", + "typeString": "type(contract ERC20Token)" + } + }, + "id": 1513, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1272:24:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Token_$1685", + "typeString": "contract ERC20Token" + } + }, + "id": 1514, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 1639, + "src": "1272:33:10", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 1517, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1272:50:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1510, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2601, + 2602 + ], + "referencedDeclaration": 2601, + "src": "1264:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1518, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1264:59:10", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1519, + "nodeType": "ExpressionStatement", + "src": "1264:59:10" + } + ] + }, + "id": 1521, + "nodeType": "IfStatement", + "src": "1151:187:10", + "trueBody": { + "id": 1509, + "nodeType": "Block", + "src": "1183:57:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1506, + "name": "payment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1488, + "src": "1217:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1503, + "name": "funder", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1484, + "src": "1201:6:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1505, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1201:15:10", + "typeDescriptions": { + "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 1507, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1201:24:10", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1508, + "nodeType": "ExpressionStatement", + "src": "1201:24:10" + } + ] + } + } + ] + } } ] }, - "documentation": "@dev Constructor function sets address of master copy contract.\n @param _masterCopy Master copy address.\n @param initializer Data used for a delegate call to initialize the contract.", - "id": 1465, + "documentation": "@dev Constructor function sets address of master copy contract.\n @param _masterCopy Master copy address.\n @param initializer Data used for a delegate call to initialize the contract.\n @param funder Address that should be paid for the execution of this call\n @param paymentToken Token that should be used for the payment (0 is ETH)\n @param payment Value that should be paid", + "id": 1525, "implemented": true, "isConstructor": true, "isDeclaredConst": false, @@ -220,12 +567,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1454, + "id": 1491, "name": "_masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1445, - "src": "784:11:11", + "referencedDeclaration": 1480, + "src": "1065:11:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -233,49 +580,49 @@ }, { "argumentTypes": null, - "id": 1455, + "id": 1492, "name": "initializer", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1447, - "src": "797:11:11", + "referencedDeclaration": 1482, + "src": "1078:11:10", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } } ], - "id": 1456, + "id": 1493, "modifierName": { "argumentTypes": null, - "id": 1453, + "id": 1490, "name": "DelegateConstructorProxy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 23, - "src": "759:24:11", + "src": "1040:24:10", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_DelegateConstructorProxy_$23_$", "typeString": "type(contract DelegateConstructorProxy)" } }, "nodeType": "ModifierInvocation", - "src": "759:50:11" + "src": "1040:50:10" } ], "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 1452, + "id": 1489, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1445, + "id": 1480, "name": "_masterCopy", "nodeType": "VariableDeclaration", - "scope": 1465, - "src": "687:19:11", + "scope": 1525, + "src": "936:19:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -283,10 +630,10 @@ "typeString": "address" }, "typeName": { - "id": 1444, + "id": 1479, "name": "address", "nodeType": "ElementaryTypeName", - "src": "687:7:11", + "src": "936:7:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -297,11 +644,11 @@ }, { "constant": false, - "id": 1447, + "id": 1482, "name": "initializer", "nodeType": "VariableDeclaration", - "scope": 1465, - "src": "708:17:11", + "scope": 1525, + "src": "957:17:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -309,10 +656,10 @@ "typeString": "bytes" }, "typeName": { - "id": 1446, + "id": 1481, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "708:5:11", + "src": "957:5:10", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -323,11 +670,11 @@ }, { "constant": false, - "id": 1449, + "id": 1484, "name": "funder", "nodeType": "VariableDeclaration", - "scope": 1465, - "src": "727:14:11", + "scope": 1525, + "src": "976:14:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -335,10 +682,10 @@ "typeString": "address" }, "typeName": { - "id": 1448, + "id": 1483, "name": "address", "nodeType": "ElementaryTypeName", - "src": "727:7:11", + "src": "976:7:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -349,11 +696,37 @@ }, { "constant": false, - "id": 1451, - "name": "amount", + "id": 1486, + "name": "paymentToken", "nodeType": "VariableDeclaration", - "scope": 1465, - "src": "743:14:11", + "scope": 1525, + "src": "992:20:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1485, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "992:7:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1488, + "name": "payment", + "nodeType": "VariableDeclaration", + "scope": 1525, + "src": "1014:15:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -361,10 +734,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1450, + "id": 1487, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "743:7:11", + "src": "1014:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -374,56 +747,67 @@ "visibility": "internal" } ], - "src": "686:72:11" + "src": "935:95:10" }, "payable": false, "returnParameters": { - "id": 1457, + "id": 1494, "nodeType": "ParameterList", "parameters": [], - "src": "829:0:11" + "src": "1110:0:10" }, - "scope": 1466, - "src": "675:194:11", + "scope": 1526, + "src": "924:431:10", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 1467, - "src": "414:457:11" + "scope": 1527, + "src": "452:905:10" } ], - "src": "0:872:11" + "src": "0:1358:10" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/PayingProxy.sol", "exportedSymbols": { "PayingProxy": [ - 1466 + 1526 ] }, - "id": 1467, + "id": 1527, "nodeType": "SourceUnit", "nodes": [ { - "id": 1440, + "id": 1474, "literals": [ "solidity", "0.4", - ".23" + ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:11" + "src": "0:23:10" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/DelegateConstructorProxy.sol", "file": "./DelegateConstructorProxy.sol", - "id": 1441, + "id": 1475, "nodeType": "ImportDirective", - "scope": 1467, + "scope": 1527, "sourceUnit": 24, - "src": "24:40:11", + "src": "24:40:10", + "symbolAliases": [], + "unitAlias": "" + }, + { + "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/interfaces/ERC20Token.sol", + "file": "./interfaces/ERC20Token.sol", + "id": 1476, + "nodeType": "ImportDirective", + "scope": 1527, + "sourceUnit": 1686, + "src": "65:37:10", "symbolAliases": [], "unitAlias": "" }, @@ -433,117 +817,449 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 1442, + "id": 1477, "name": "DelegateConstructorProxy", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 23, - "src": "438:24:11", + "src": "476:24:10", "typeDescriptions": { "typeIdentifier": "t_contract$_DelegateConstructorProxy_$23", "typeString": "contract DelegateConstructorProxy" } }, - "id": 1443, + "id": 1478, "nodeType": "InheritanceSpecifier", - "src": "438:24:11" + "src": "476:24:10" } ], "contractDependencies": [ 23, - 1508 + 1568 ], "contractKind": "contract", "documentation": "@title Paying Proxy - Generic proxy contract allows to execute all transactions applying the code of a master contract. It is possible to send along initialization data with the constructor. And sends funds after creation to a specified account.\n @author Stefan George - \n @author Richard Meissner - ", "fullyImplemented": true, - "id": 1466, + "id": 1526, "linearizedBaseContracts": [ - 1466, + 1526, 23, - 1508 + 1568 ], "name": "PayingProxy", "nodeType": "ContractDefinition", "nodes": [ { "body": { - "id": 1464, + "id": 1524, "nodeType": "Block", - "src": "829:40:11", + "src": "1110:245:10", "statements": [ { - "expression": { + "condition": { "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "id": 1461, - "name": "amount", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1451, - "src": "855:6:11", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } + "commonType": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + "id": 1497, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1495, + "name": "payment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1488, + "src": "1124:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - ], - "expression": { - "argumentTypes": null, - "id": 1458, - "name": "funder", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1449, - "src": "839:6:11", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "id": 1460, + }, + "nodeType": "BinaryOperation", + "operator": ">", + "rightExpression": { + "argumentTypes": null, + "hexValue": "30", + "id": 1496, "isConstant": false, "isLValue": false, - "isPure": false, + "isPure": true, + "kind": "number", "lValueRequested": false, - "memberName": "transfer", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "839:15:11", + "nodeType": "Literal", + "src": "1134:1:10", + "subdenomination": null, "typeDescriptions": { - "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", - "typeString": "function (uint256)" - } + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" }, - "id": 1462, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "839:23:11", + "src": "1124:11:10", "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" + "typeIdentifier": "t_bool", + "typeString": "bool" } }, - "id": 1463, - "nodeType": "ExpressionStatement", - "src": "839:23:11" + "falseBody": null, + "id": 1523, + "nodeType": "IfStatement", + "src": "1120:228:10", + "trueBody": { + "id": 1522, + "nodeType": "Block", + "src": "1137:211:10", + "statements": [ + { + "condition": { + "argumentTypes": null, + "commonType": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "id": 1502, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "leftExpression": { + "argumentTypes": null, + "id": 1498, + "name": "paymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1486, + "src": "1155:12:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "nodeType": "BinaryOperation", + "operator": "==", + "rightExpression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 1500, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1179:1:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 1499, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "1171:7:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_address_$", + "typeString": "type(address)" + }, + "typeName": "address" + }, + "id": 1501, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1171:10:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "src": "1155:26:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + }, + "falseBody": { + "id": 1520, + "nodeType": "Block", + "src": "1246:92:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1515, + "name": "funder", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1484, + "src": "1306:6:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 1516, + "name": "payment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1488, + "src": "1314:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1512, + "name": "paymentToken", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1486, + "src": "1283:12:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_address", + "typeString": "address" + } + ], + "id": 1511, + "name": "ERC20Token", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1685, + "src": "1272:10:10", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_contract$_ERC20Token_$1685_$", + "typeString": "type(contract ERC20Token)" + } + }, + "id": 1513, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "typeConversion", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1272:24:10", + "typeDescriptions": { + "typeIdentifier": "t_contract$_ERC20Token_$1685", + "typeString": "contract ERC20Token" + } + }, + "id": 1514, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": 1639, + "src": "1272:33:10", + "typeDescriptions": { + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", + "typeString": "function (address,uint256) external returns (bool)" + } + }, + "id": 1517, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1272:50:10", + "typeDescriptions": { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_bool", + "typeString": "bool" + } + ], + "id": 1510, + "name": "require", + "nodeType": "Identifier", + "overloadedDeclarations": [ + 2601, + 2602 + ], + "referencedDeclaration": 2601, + "src": "1264:7:10", + "typeDescriptions": { + "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", + "typeString": "function (bool) pure" + } + }, + "id": 1518, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1264:59:10", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1519, + "nodeType": "ExpressionStatement", + "src": "1264:59:10" + } + ] + }, + "id": 1521, + "nodeType": "IfStatement", + "src": "1151:187:10", + "trueBody": { + "id": 1509, + "nodeType": "Block", + "src": "1183:57:10", + "statements": [ + { + "expression": { + "argumentTypes": null, + "arguments": [ + { + "argumentTypes": null, + "id": 1506, + "name": "payment", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1488, + "src": "1217:7:10", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + ], + "expression": { + "argumentTypes": null, + "id": 1503, + "name": "funder", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 1484, + "src": "1201:6:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "id": 1505, + "isConstant": false, + "isLValue": false, + "isPure": false, + "lValueRequested": false, + "memberName": "transfer", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "1201:15:10", + "typeDescriptions": { + "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", + "typeString": "function (uint256)" + } + }, + "id": 1507, + "isConstant": false, + "isLValue": false, + "isPure": false, + "kind": "functionCall", + "lValueRequested": false, + "names": [], + "nodeType": "FunctionCall", + "src": "1201:24:10", + "typeDescriptions": { + "typeIdentifier": "t_tuple$__$", + "typeString": "tuple()" + } + }, + "id": 1508, + "nodeType": "ExpressionStatement", + "src": "1201:24:10" + } + ] + } + } + ] + } } ] }, - "documentation": "@dev Constructor function sets address of master copy contract.\n @param _masterCopy Master copy address.\n @param initializer Data used for a delegate call to initialize the contract.", - "id": 1465, + "documentation": "@dev Constructor function sets address of master copy contract.\n @param _masterCopy Master copy address.\n @param initializer Data used for a delegate call to initialize the contract.\n @param funder Address that should be paid for the execution of this call\n @param paymentToken Token that should be used for the payment (0 is ETH)\n @param payment Value that should be paid", + "id": 1525, "implemented": true, "isConstructor": true, "isDeclaredConst": false, @@ -552,12 +1268,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1454, + "id": 1491, "name": "_masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1445, - "src": "784:11:11", + "referencedDeclaration": 1480, + "src": "1065:11:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -565,49 +1281,49 @@ }, { "argumentTypes": null, - "id": 1455, + "id": 1492, "name": "initializer", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1447, - "src": "797:11:11", + "referencedDeclaration": 1482, + "src": "1078:11:10", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } } ], - "id": 1456, + "id": 1493, "modifierName": { "argumentTypes": null, - "id": 1453, + "id": 1490, "name": "DelegateConstructorProxy", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 23, - "src": "759:24:11", + "src": "1040:24:10", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_DelegateConstructorProxy_$23_$", "typeString": "type(contract DelegateConstructorProxy)" } }, "nodeType": "ModifierInvocation", - "src": "759:50:11" + "src": "1040:50:10" } ], "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 1452, + "id": 1489, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1445, + "id": 1480, "name": "_masterCopy", "nodeType": "VariableDeclaration", - "scope": 1465, - "src": "687:19:11", + "scope": 1525, + "src": "936:19:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -615,10 +1331,10 @@ "typeString": "address" }, "typeName": { - "id": 1444, + "id": 1479, "name": "address", "nodeType": "ElementaryTypeName", - "src": "687:7:11", + "src": "936:7:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -629,11 +1345,11 @@ }, { "constant": false, - "id": 1447, + "id": 1482, "name": "initializer", "nodeType": "VariableDeclaration", - "scope": 1465, - "src": "708:17:11", + "scope": 1525, + "src": "957:17:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -641,10 +1357,10 @@ "typeString": "bytes" }, "typeName": { - "id": 1446, + "id": 1481, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "708:5:11", + "src": "957:5:10", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -655,11 +1371,37 @@ }, { "constant": false, - "id": 1449, + "id": 1484, "name": "funder", "nodeType": "VariableDeclaration", - "scope": 1465, - "src": "727:14:11", + "scope": 1525, + "src": "976:14:10", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 1483, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "976:7:10", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 1486, + "name": "paymentToken", + "nodeType": "VariableDeclaration", + "scope": 1525, + "src": "992:20:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -667,10 +1409,10 @@ "typeString": "address" }, "typeName": { - "id": 1448, + "id": 1485, "name": "address", "nodeType": "ElementaryTypeName", - "src": "727:7:11", + "src": "992:7:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -681,11 +1423,11 @@ }, { "constant": false, - "id": 1451, - "name": "amount", + "id": 1488, + "name": "payment", "nodeType": "VariableDeclaration", - "scope": 1465, - "src": "743:14:11", + "scope": 1525, + "src": "1014:15:10", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -693,10 +1435,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1450, + "id": 1487, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "743:7:11", + "src": "1014:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -706,33 +1448,33 @@ "visibility": "internal" } ], - "src": "686:72:11" + "src": "935:95:10" }, "payable": false, "returnParameters": { - "id": 1457, + "id": 1494, "nodeType": "ParameterList", "parameters": [], - "src": "829:0:11" + "src": "1110:0:10" }, - "scope": 1466, - "src": "675:194:11", + "scope": 1526, + "src": "924:431:10", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 1467, - "src": "414:457:11" + "scope": 1527, + "src": "452:905:10" } ], - "src": "0:872:11" + "src": "0:1358:10" }, "compiler": { "name": "solc", - "version": "0.4.23+commit.124ca40d.Emscripten.clang" + "version": "0.4.24+commit.e67f0147.Emscripten.clang" }, "networks": {}, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-10T10:43:07.901Z" + "updatedAt": "2018-05-27T11:12:45.583Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/Proxy.json b/safe-contracts/build/contracts/Proxy.json index 02dd71f4f9..aae27a07b9 100644 --- a/safe-contracts/build/contracts/Proxy.json +++ b/safe-contracts/build/contracts/Proxy.json @@ -46,31 +46,31 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b506040516020806102148339810180604052810190808051906020019092919050505060008173ffffffffffffffffffffffffffffffffffffffff161415151561005957600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505061016b806100a96000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461008b5780635c60da1b146100b6575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e6000811415610086573d6000fd5b3d6000f35b34801561009757600080fd5b506100a061010d565b6040518082815260200191505060405180910390f35b3480156100c257600080fd5b506100cb610116565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006002905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a723058209594d3f13f6fbad0d5e33f423014061ae7898100636a8b854618092ea85c15e90029", - "deployedBytecode": "0x60806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461008b5780635c60da1b146100b6575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e6000811415610086573d6000fd5b3d6000f35b34801561009757600080fd5b506100a061010d565b6040518082815260200191505060405180910390f35b3480156100c257600080fd5b506100cb610116565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006002905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a723058209594d3f13f6fbad0d5e33f423014061ae7898100636a8b854618092ea85c15e90029", - "sourceMap": "190:1302:12:-;;;508:128;8:9:-1;5:2;;;30:1;27;20:12;5:2;508:128:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;593:1;578:11;:16;;;;570:25;;;;;;;;618:11;605:10;;:24;;;;;;;;;;;;;;;;;;508:128;190:1302;;;;;;", - "deployedSourceMap": "190:1302:12:-;;;;;;;;;;;;;;;;;;;;;;;;;;915:42;911:1;905:8;901:57;990:14;987:1;984;971:34;1085:1;1082;1066:14;1063:1;1051:10;1046:3;1033:54;1121:16;1118:1;1115;1100:38;1166:1;1157:7;1154:14;1151:2;;;1181:16;1178:1;1171:27;1151:2;1223:16;1220:1;1213:27;1386:104;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1386:104:12;;;;;;;;;;;;;;;;;;;;;;;1262:118;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1262:118:12;;;;;;;;;;;;;;;;;;;;;;;;;;;1386:104;1452:7;1482:1;1475:8;;1386:104;:::o;1262:118::-;1333:7;1363:10;;;;;;;;;;;1356:17;;1262:118;:::o", - "source": "pragma solidity 0.4.23;\n\n\n/// @title Proxy - Generic proxy contract allows to execute all transactions applying the code of a master contract.\n/// @author Stefan George - \ncontract Proxy {\n\n // masterCopy always needs to be first declared variable, to ensure that it is at the same location in the contracts to which calls are delegated.\n address masterCopy;\n\n /// @dev Constructor function sets address of master copy contract.\n /// @param _masterCopy Master copy address.\n constructor(address _masterCopy)\n public\n {\n require(_masterCopy != 0);\n masterCopy = _masterCopy;\n }\n\n /// @dev Fallback function forwards all transactions and returns all received return data.\n function ()\n external\n payable\n {\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n let masterCopy := and(sload(0), 0xffffffffffffffffffffffffffffffffffffffff)\n calldatacopy(0, 0, calldatasize())\n let success := delegatecall(gas, masterCopy, 0, calldatasize(), 0, 0)\n returndatacopy(0, 0, returndatasize())\n if eq(success, 0) { revert(0, returndatasize()) }\n return(0, returndatasize())\n }\n }\n\n function implementation()\n public\n view\n returns (address)\n {\n return masterCopy;\n }\n\n function proxyType()\n public\n pure\n returns (uint256)\n {\n return 2;\n }\n}\n", + "bytecode": "0x608060405234801561001057600080fd5b506040516020806102148339810180604052810190808051906020019092919050505060008173ffffffffffffffffffffffffffffffffffffffff161415151561005957600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505061016b806100a96000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461008b5780635c60da1b146100b6575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e6000811415610086573d6000fd5b3d6000f35b34801561009757600080fd5b506100a061010d565b6040518082815260200191505060405180910390f35b3480156100c257600080fd5b506100cb610116565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006002905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a72305820cd7d1e9dd84eb221f79b1c8f72a39fad7d9f8ab7239d25c1fc563147abcaf4150029", + "deployedBytecode": "0x60806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461008b5780635c60da1b146100b6575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e6000811415610086573d6000fd5b3d6000f35b34801561009757600080fd5b506100a061010d565b6040518082815260200191505060405180910390f35b3480156100c257600080fd5b506100cb610116565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006002905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a72305820cd7d1e9dd84eb221f79b1c8f72a39fad7d9f8ab7239d25c1fc563147abcaf4150029", + "sourceMap": "190:1302:11:-;;;508:128;8:9:-1;5:2;;;30:1;27;20:12;5:2;508:128:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;593:1;578:11;:16;;;;570:25;;;;;;;;618:11;605:10;;:24;;;;;;;;;;;;;;;;;;508:128;190:1302;;;;;;", + "deployedSourceMap": "190:1302:11:-;;;;;;;;;;;;;;;;;;;;;;;;;;915:42;911:1;905:8;901:57;990:14;987:1;984;971:34;1085:1;1082;1066:14;1063:1;1051:10;1046:3;1033:54;1121:16;1118:1;1115;1100:38;1166:1;1157:7;1154:14;1151:2;;;1181:16;1178:1;1171:27;1151:2;1223:16;1220:1;1213:27;1386:104;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1386:104:11;;;;;;;;;;;;;;;;;;;;;;;1262:118;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1262:118:11;;;;;;;;;;;;;;;;;;;;;;;;;;;1386:104;1452:7;1482:1;1475:8;;1386:104;:::o;1262:118::-;1333:7;1363:10;;;;;;;;;;;1356:17;;1262:118;:::o", + "source": "pragma solidity 0.4.24;\n\n\n/// @title Proxy - Generic proxy contract allows to execute all transactions applying the code of a master contract.\n/// @author Stefan George - \ncontract Proxy {\n\n // masterCopy always needs to be first declared variable, to ensure that it is at the same location in the contracts to which calls are delegated.\n address masterCopy;\n\n /// @dev Constructor function sets address of master copy contract.\n /// @param _masterCopy Master copy address.\n constructor(address _masterCopy)\n public\n {\n require(_masterCopy != 0);\n masterCopy = _masterCopy;\n }\n\n /// @dev Fallback function forwards all transactions and returns all received return data.\n function ()\n external\n payable\n {\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n let masterCopy := and(sload(0), 0xffffffffffffffffffffffffffffffffffffffff)\n calldatacopy(0, 0, calldatasize())\n let success := delegatecall(gas, masterCopy, 0, calldatasize(), 0, 0)\n returndatacopy(0, 0, returndatasize())\n if eq(success, 0) { revert(0, returndatasize()) }\n return(0, returndatasize())\n }\n }\n\n function implementation()\n public\n view\n returns (address)\n {\n return masterCopy;\n }\n\n function proxyType()\n public\n pure\n returns (uint256)\n {\n return 2;\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Proxy.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Proxy.sol", "exportedSymbols": { "Proxy": [ - 1508 + 1568 ] }, - "id": 1509, + "id": 1569, "nodeType": "SourceUnit", "nodes": [ { - "id": 1468, + "id": 1528, "literals": [ "solidity", "0.4", - ".23" + ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:12" + "src": "0:23:11" }, { "baseContracts": [], @@ -78,20 +78,20 @@ "contractKind": "contract", "documentation": "@title Proxy - Generic proxy contract allows to execute all transactions applying the code of a master contract.\n @author Stefan George - ", "fullyImplemented": true, - "id": 1508, + "id": 1568, "linearizedBaseContracts": [ - 1508 + 1568 ], "name": "Proxy", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, - "id": 1470, + "id": 1530, "name": "masterCopy", "nodeType": "VariableDeclaration", - "scope": 1508, - "src": "363:18:12", + "scope": 1568, + "src": "363:18:11", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -99,10 +99,10 @@ "typeString": "address" }, "typeName": { - "id": 1469, + "id": 1529, "name": "address", "nodeType": "ElementaryTypeName", - "src": "363:7:12", + "src": "363:7:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -113,9 +113,9 @@ }, { "body": { - "id": 1485, + "id": 1545, "nodeType": "Block", - "src": "560:76:12", + "src": "560:76:11", "statements": [ { "expression": { @@ -127,19 +127,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1478, + "id": 1538, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1476, + "id": 1536, "name": "_masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1472, - "src": "578:11:12", + "referencedDeclaration": 1532, + "src": "578:11:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -150,14 +150,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1477, + "id": 1537, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "593:1:12", + "src": "593:1:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -165,7 +165,7 @@ }, "value": "0" }, - "src": "578:16:12", + "src": "578:16:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -179,21 +179,21 @@ "typeString": "bool" } ], - "id": 1475, + "id": 1535, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2601, + 2602 ], - "referencedDeclaration": 2468, - "src": "570:7:12", + "referencedDeclaration": 2601, + "src": "570:7:11", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1479, + "id": 1539, "isConstant": false, "isLValue": false, "isPure": false, @@ -201,32 +201,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "570:25:12", + "src": "570:25:11", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1480, + "id": 1540, "nodeType": "ExpressionStatement", - "src": "570:25:12" + "src": "570:25:11" }, { "expression": { "argumentTypes": null, - "id": 1483, + "id": 1543, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1481, + "id": 1541, "name": "masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1470, - "src": "605:10:12", + "referencedDeclaration": 1530, + "src": "605:10:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -236,31 +236,31 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1482, + "id": 1542, "name": "_masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1472, - "src": "618:11:12", + "referencedDeclaration": 1532, + "src": "618:11:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "605:24:12", + "src": "605:24:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1484, + "id": 1544, "nodeType": "ExpressionStatement", - "src": "605:24:12" + "src": "605:24:11" } ] }, "documentation": "@dev Constructor function sets address of master copy contract.\n @param _masterCopy Master copy address.", - "id": 1486, + "id": 1546, "implemented": true, "isConstructor": true, "isDeclaredConst": false, @@ -268,16 +268,16 @@ "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 1473, + "id": 1533, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1472, + "id": 1532, "name": "_masterCopy", "nodeType": "VariableDeclaration", - "scope": 1486, - "src": "520:19:12", + "scope": 1546, + "src": "520:19:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -285,10 +285,10 @@ "typeString": "address" }, "typeName": { - "id": 1471, + "id": 1531, "name": "address", "nodeType": "ElementaryTypeName", - "src": "520:7:12", + "src": "520:7:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -298,38 +298,38 @@ "visibility": "internal" } ], - "src": "519:21:12" + "src": "519:21:11" }, "payable": false, "returnParameters": { - "id": 1474, + "id": 1534, "nodeType": "ParameterList", "parameters": [], - "src": "560:0:12" + "src": "560:0:11" }, - "scope": 1508, - "src": "508:128:12", + "scope": 1568, + "src": "508:128:11", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1490, + "id": 1550, "nodeType": "Block", - "src": "786:470:12", + "src": "786:470:11", "statements": [ { "externalReferences": [], - "id": 1489, + "id": 1549, "nodeType": "InlineAssembly", "operations": "{\n let masterCopy := and(sload(0), 0xffffffffffffffffffffffffffffffffffffffff)\n calldatacopy(0, 0, calldatasize())\n let success := delegatecall(gas(), masterCopy, 0, calldatasize(), 0, 0)\n returndatacopy(0, 0, returndatasize())\n if eq(success, 0)\n {\n revert(0, returndatasize())\n }\n return(0, returndatasize())\n}", - "src": "860:396:12" + "src": "860:396:11" } ] }, "documentation": "@dev Fallback function forwards all transactions and returns all received return data.", - "id": 1491, + "id": 1551, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -337,53 +337,53 @@ "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 1487, + "id": 1547, "nodeType": "ParameterList", "parameters": [], - "src": "746:2:12" + "src": "746:2:11" }, "payable": true, "returnParameters": { - "id": 1488, + "id": 1548, "nodeType": "ParameterList", "parameters": [], - "src": "786:0:12" + "src": "786:0:11" }, - "scope": 1508, - "src": "737:519:12", + "scope": 1568, + "src": "737:519:11", "stateMutability": "payable", "superFunction": null, "visibility": "external" }, { "body": { - "id": 1498, + "id": 1558, "nodeType": "Block", - "src": "1346:34:12", + "src": "1346:34:11", "statements": [ { "expression": { "argumentTypes": null, - "id": 1496, + "id": 1556, "name": "masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1470, - "src": "1363:10:12", + "referencedDeclaration": 1530, + "src": "1363:10:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "functionReturnParameters": 1495, - "id": 1497, + "functionReturnParameters": 1555, + "id": 1557, "nodeType": "Return", - "src": "1356:17:12" + "src": "1356:17:11" } ] }, "documentation": null, - "id": 1499, + "id": 1559, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -391,23 +391,23 @@ "name": "implementation", "nodeType": "FunctionDefinition", "parameters": { - "id": 1492, + "id": 1552, "nodeType": "ParameterList", "parameters": [], - "src": "1285:2:12" + "src": "1285:2:11" }, "payable": false, "returnParameters": { - "id": 1495, + "id": 1555, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1494, + "id": 1554, "name": "", "nodeType": "VariableDeclaration", - "scope": 1499, - "src": "1333:7:12", + "scope": 1559, + "src": "1333:7:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -415,10 +415,10 @@ "typeString": "address" }, "typeName": { - "id": 1493, + "id": 1553, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1333:7:12", + "src": "1333:7:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -428,32 +428,32 @@ "visibility": "internal" } ], - "src": "1332:9:12" + "src": "1332:9:11" }, - "scope": 1508, - "src": "1262:118:12", + "scope": 1568, + "src": "1262:118:11", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1506, + "id": 1566, "nodeType": "Block", - "src": "1465:25:12", + "src": "1465:25:11", "statements": [ { "expression": { "argumentTypes": null, "hexValue": "32", - "id": 1504, + "id": 1564, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1482:1:12", + "src": "1482:1:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", @@ -461,15 +461,15 @@ }, "value": "2" }, - "functionReturnParameters": 1503, - "id": 1505, + "functionReturnParameters": 1563, + "id": 1565, "nodeType": "Return", - "src": "1475:8:12" + "src": "1475:8:11" } ] }, "documentation": null, - "id": 1507, + "id": 1567, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -477,23 +477,23 @@ "name": "proxyType", "nodeType": "FunctionDefinition", "parameters": { - "id": 1500, + "id": 1560, "nodeType": "ParameterList", "parameters": [], - "src": "1404:2:12" + "src": "1404:2:11" }, "payable": false, "returnParameters": { - "id": 1503, + "id": 1563, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1502, + "id": 1562, "name": "", "nodeType": "VariableDeclaration", - "scope": 1507, - "src": "1452:7:12", + "scope": 1567, + "src": "1452:7:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -501,10 +501,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1501, + "id": 1561, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1452:7:12", + "src": "1452:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -514,40 +514,40 @@ "visibility": "internal" } ], - "src": "1451:9:12" + "src": "1451:9:11" }, - "scope": 1508, - "src": "1386:104:12", + "scope": 1568, + "src": "1386:104:11", "stateMutability": "pure", "superFunction": null, "visibility": "public" } ], - "scope": 1509, - "src": "190:1302:12" + "scope": 1569, + "src": "190:1302:11" } ], - "src": "0:1493:12" + "src": "0:1493:11" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Proxy.sol", "exportedSymbols": { "Proxy": [ - 1508 + 1568 ] }, - "id": 1509, + "id": 1569, "nodeType": "SourceUnit", "nodes": [ { - "id": 1468, + "id": 1528, "literals": [ "solidity", "0.4", - ".23" + ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:12" + "src": "0:23:11" }, { "baseContracts": [], @@ -555,20 +555,20 @@ "contractKind": "contract", "documentation": "@title Proxy - Generic proxy contract allows to execute all transactions applying the code of a master contract.\n @author Stefan George - ", "fullyImplemented": true, - "id": 1508, + "id": 1568, "linearizedBaseContracts": [ - 1508 + 1568 ], "name": "Proxy", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, - "id": 1470, + "id": 1530, "name": "masterCopy", "nodeType": "VariableDeclaration", - "scope": 1508, - "src": "363:18:12", + "scope": 1568, + "src": "363:18:11", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -576,10 +576,10 @@ "typeString": "address" }, "typeName": { - "id": 1469, + "id": 1529, "name": "address", "nodeType": "ElementaryTypeName", - "src": "363:7:12", + "src": "363:7:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -590,9 +590,9 @@ }, { "body": { - "id": 1485, + "id": 1545, "nodeType": "Block", - "src": "560:76:12", + "src": "560:76:11", "statements": [ { "expression": { @@ -604,19 +604,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1478, + "id": 1538, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1476, + "id": 1536, "name": "_masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1472, - "src": "578:11:12", + "referencedDeclaration": 1532, + "src": "578:11:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -627,14 +627,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1477, + "id": 1537, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "593:1:12", + "src": "593:1:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -642,7 +642,7 @@ }, "value": "0" }, - "src": "578:16:12", + "src": "578:16:11", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -656,21 +656,21 @@ "typeString": "bool" } ], - "id": 1475, + "id": 1535, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2468, - 2469 + 2601, + 2602 ], - "referencedDeclaration": 2468, - "src": "570:7:12", + "referencedDeclaration": 2601, + "src": "570:7:11", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1479, + "id": 1539, "isConstant": false, "isLValue": false, "isPure": false, @@ -678,32 +678,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "570:25:12", + "src": "570:25:11", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1480, + "id": 1540, "nodeType": "ExpressionStatement", - "src": "570:25:12" + "src": "570:25:11" }, { "expression": { "argumentTypes": null, - "id": 1483, + "id": 1543, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1481, + "id": 1541, "name": "masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1470, - "src": "605:10:12", + "referencedDeclaration": 1530, + "src": "605:10:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -713,31 +713,31 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1482, + "id": 1542, "name": "_masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1472, - "src": "618:11:12", + "referencedDeclaration": 1532, + "src": "618:11:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "605:24:12", + "src": "605:24:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1484, + "id": 1544, "nodeType": "ExpressionStatement", - "src": "605:24:12" + "src": "605:24:11" } ] }, "documentation": "@dev Constructor function sets address of master copy contract.\n @param _masterCopy Master copy address.", - "id": 1486, + "id": 1546, "implemented": true, "isConstructor": true, "isDeclaredConst": false, @@ -745,16 +745,16 @@ "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 1473, + "id": 1533, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1472, + "id": 1532, "name": "_masterCopy", "nodeType": "VariableDeclaration", - "scope": 1486, - "src": "520:19:12", + "scope": 1546, + "src": "520:19:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -762,10 +762,10 @@ "typeString": "address" }, "typeName": { - "id": 1471, + "id": 1531, "name": "address", "nodeType": "ElementaryTypeName", - "src": "520:7:12", + "src": "520:7:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -775,38 +775,38 @@ "visibility": "internal" } ], - "src": "519:21:12" + "src": "519:21:11" }, "payable": false, "returnParameters": { - "id": 1474, + "id": 1534, "nodeType": "ParameterList", "parameters": [], - "src": "560:0:12" + "src": "560:0:11" }, - "scope": 1508, - "src": "508:128:12", + "scope": 1568, + "src": "508:128:11", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1490, + "id": 1550, "nodeType": "Block", - "src": "786:470:12", + "src": "786:470:11", "statements": [ { "externalReferences": [], - "id": 1489, + "id": 1549, "nodeType": "InlineAssembly", "operations": "{\n let masterCopy := and(sload(0), 0xffffffffffffffffffffffffffffffffffffffff)\n calldatacopy(0, 0, calldatasize())\n let success := delegatecall(gas(), masterCopy, 0, calldatasize(), 0, 0)\n returndatacopy(0, 0, returndatasize())\n if eq(success, 0)\n {\n revert(0, returndatasize())\n }\n return(0, returndatasize())\n}", - "src": "860:396:12" + "src": "860:396:11" } ] }, "documentation": "@dev Fallback function forwards all transactions and returns all received return data.", - "id": 1491, + "id": 1551, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -814,53 +814,53 @@ "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 1487, + "id": 1547, "nodeType": "ParameterList", "parameters": [], - "src": "746:2:12" + "src": "746:2:11" }, "payable": true, "returnParameters": { - "id": 1488, + "id": 1548, "nodeType": "ParameterList", "parameters": [], - "src": "786:0:12" + "src": "786:0:11" }, - "scope": 1508, - "src": "737:519:12", + "scope": 1568, + "src": "737:519:11", "stateMutability": "payable", "superFunction": null, "visibility": "external" }, { "body": { - "id": 1498, + "id": 1558, "nodeType": "Block", - "src": "1346:34:12", + "src": "1346:34:11", "statements": [ { "expression": { "argumentTypes": null, - "id": 1496, + "id": 1556, "name": "masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1470, - "src": "1363:10:12", + "referencedDeclaration": 1530, + "src": "1363:10:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "functionReturnParameters": 1495, - "id": 1497, + "functionReturnParameters": 1555, + "id": 1557, "nodeType": "Return", - "src": "1356:17:12" + "src": "1356:17:11" } ] }, "documentation": null, - "id": 1499, + "id": 1559, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -868,23 +868,23 @@ "name": "implementation", "nodeType": "FunctionDefinition", "parameters": { - "id": 1492, + "id": 1552, "nodeType": "ParameterList", "parameters": [], - "src": "1285:2:12" + "src": "1285:2:11" }, "payable": false, "returnParameters": { - "id": 1495, + "id": 1555, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1494, + "id": 1554, "name": "", "nodeType": "VariableDeclaration", - "scope": 1499, - "src": "1333:7:12", + "scope": 1559, + "src": "1333:7:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -892,10 +892,10 @@ "typeString": "address" }, "typeName": { - "id": 1493, + "id": 1553, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1333:7:12", + "src": "1333:7:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -905,32 +905,32 @@ "visibility": "internal" } ], - "src": "1332:9:12" + "src": "1332:9:11" }, - "scope": 1508, - "src": "1262:118:12", + "scope": 1568, + "src": "1262:118:11", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1506, + "id": 1566, "nodeType": "Block", - "src": "1465:25:12", + "src": "1465:25:11", "statements": [ { "expression": { "argumentTypes": null, "hexValue": "32", - "id": 1504, + "id": 1564, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1482:1:12", + "src": "1482:1:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", @@ -938,15 +938,15 @@ }, "value": "2" }, - "functionReturnParameters": 1503, - "id": 1505, + "functionReturnParameters": 1563, + "id": 1565, "nodeType": "Return", - "src": "1475:8:12" + "src": "1475:8:11" } ] }, "documentation": null, - "id": 1507, + "id": 1567, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -954,23 +954,23 @@ "name": "proxyType", "nodeType": "FunctionDefinition", "parameters": { - "id": 1500, + "id": 1560, "nodeType": "ParameterList", "parameters": [], - "src": "1404:2:12" + "src": "1404:2:11" }, "payable": false, "returnParameters": { - "id": 1503, + "id": 1563, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1502, + "id": 1562, "name": "", "nodeType": "VariableDeclaration", - "scope": 1507, - "src": "1452:7:12", + "scope": 1567, + "src": "1452:7:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -978,10 +978,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1501, + "id": 1561, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1452:7:12", + "src": "1452:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -991,26 +991,26 @@ "visibility": "internal" } ], - "src": "1451:9:12" + "src": "1451:9:11" }, - "scope": 1508, - "src": "1386:104:12", + "scope": 1568, + "src": "1386:104:11", "stateMutability": "pure", "superFunction": null, "visibility": "public" } ], - "scope": 1509, - "src": "190:1302:12" + "scope": 1569, + "src": "190:1302:11" } ], - "src": "0:1493:12" + "src": "0:1493:11" }, "compiler": { "name": "solc", - "version": "0.4.23+commit.124ca40d.Emscripten.clang" + "version": "0.4.24+commit.e67f0147.Emscripten.clang" }, "networks": {}, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-10T10:43:07.901Z" + "updatedAt": "2018-05-27T11:12:45.583Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/ProxyFactory.json b/safe-contracts/build/contracts/ProxyFactory.json index c909e2ffe5..faa58fb947 100644 --- a/safe-contracts/build/contracts/ProxyFactory.json +++ b/safe-contracts/build/contracts/ProxyFactory.json @@ -37,54 +37,54 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b5061044e806100206000396000f300608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806361b69abd14610046575b600080fd5b34801561005257600080fd5b506100cd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061010f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008261011a6101fe565b808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f08015801561016c573d6000803e3d6000fd5b5090506000825111156101955760008060008451602086016000865af1141561019457600080fd5b5b7fa38789425dbeee0239e16ff2d2567e31720127fbc6430758c1a4efc6aef29f8081604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a192915050565b6040516102148061020f833901905600608060405234801561001057600080fd5b506040516020806102148339810180604052810190808051906020019092919050505060008173ffffffffffffffffffffffffffffffffffffffff161415151561005957600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505061016b806100a96000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461008b5780635c60da1b146100b6575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e6000811415610086573d6000fd5b3d6000f35b34801561009757600080fd5b506100a061010d565b6040518082815260200191505060405180910390f35b3480156100c257600080fd5b506100cb610116565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006002905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a723058209594d3f13f6fbad0d5e33f423014061ae7898100636a8b854618092ea85c15e90029a165627a7a7230582048e6ac6bd11856ae7c073d3f3d327f3e04a2dff35dfbcf223c8a425cba2fa6a10029", - "deployedBytecode": "0x608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806361b69abd14610046575b600080fd5b34801561005257600080fd5b506100cd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061010f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008261011a6101fe565b808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f08015801561016c573d6000803e3d6000fd5b5090506000825111156101955760008060008451602086016000865af1141561019457600080fd5b5b7fa38789425dbeee0239e16ff2d2567e31720127fbc6430758c1a4efc6aef29f8081604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a192915050565b6040516102148061020f833901905600608060405234801561001057600080fd5b506040516020806102148339810180604052810190808051906020019092919050505060008173ffffffffffffffffffffffffffffffffffffffff161415151561005957600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505061016b806100a96000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461008b5780635c60da1b146100b6575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e6000811415610086573d6000fd5b3d6000f35b34801561009757600080fd5b506100a061010d565b6040518082815260200191505060405180910390f35b3480156100c257600080fd5b506100cb610116565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006002905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a723058209594d3f13f6fbad0d5e33f423014061ae7898100636a8b854618092ea85c15e90029a165627a7a7230582048e6ac6bd11856ae7c073d3f3d327f3e04a2dff35dfbcf223c8a425cba2fa6a10029", - "sourceMap": "225:725:13:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;225:725:13;;;;;;;", - "deployedSourceMap": "225:725:13:-;;;;;;;;;;;;;;;;;;;;;;;;532:416;;8:9:-1;5:2;;;30:1;27;20:12;5:2;532:416:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;617:11;662:10;652:21;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;652:21:13;644:29;;701:1;687:4;:11;:15;683:237;;;874:1;870;867;860:4;854:11;847:4;841;837:15;834:1;827:5;822:3;817:55;814:62;811:2;;;889:1;886;879:12;811:2;793:114;921:20;935:5;921:20;;;;;;;;;;;;;;;;;;;;;;532:416;;;;:::o;225:725::-;;;;;;;;;;:::o", - "source": "pragma solidity 0.4.23;\nimport \"./Proxy.sol\";\n\n\n/// @title Proxy Factory - Allows to create new proxy contact and execute a message call to the new proxy within one transaction.\n/// @author Stefan George - \ncontract ProxyFactory {\n\n event ProxyCreation(Proxy proxy);\n\n /// @dev Allows to create new proxy contact and execute a message call to the new proxy within one transaction.\n /// @param masterCopy Address of master copy.\n /// @param data Payload for message call sent to new proxy contract.\n function createProxy(address masterCopy, bytes data)\n public\n returns (Proxy proxy)\n {\n proxy = new Proxy(masterCopy);\n if (data.length > 0)\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n if eq(call(gas, proxy, 0, add(data, 0x20), mload(data), 0, 0), 0) { revert(0, 0) }\n }\n emit ProxyCreation(proxy);\n }\n}\n", + "bytecode": "0x608060405234801561001057600080fd5b5061044e806100206000396000f300608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806361b69abd14610046575b600080fd5b34801561005257600080fd5b506100cd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061010f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008261011a6101fe565b808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f08015801561016c573d6000803e3d6000fd5b5090506000825111156101955760008060008451602086016000865af1141561019457600080fd5b5b7fa38789425dbeee0239e16ff2d2567e31720127fbc6430758c1a4efc6aef29f8081604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a192915050565b6040516102148061020f833901905600608060405234801561001057600080fd5b506040516020806102148339810180604052810190808051906020019092919050505060008173ffffffffffffffffffffffffffffffffffffffff161415151561005957600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505061016b806100a96000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461008b5780635c60da1b146100b6575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e6000811415610086573d6000fd5b3d6000f35b34801561009757600080fd5b506100a061010d565b6040518082815260200191505060405180910390f35b3480156100c257600080fd5b506100cb610116565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006002905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a72305820cd7d1e9dd84eb221f79b1c8f72a39fad7d9f8ab7239d25c1fc563147abcaf4150029a165627a7a72305820894d1145d2178ea5a3debf7a1ffb29cfdf9100a5997f8e3b2c8640a6db5c5b120029", + "deployedBytecode": "0x608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806361b69abd14610046575b600080fd5b34801561005257600080fd5b506100cd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061010f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008261011a6101fe565b808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f08015801561016c573d6000803e3d6000fd5b5090506000825111156101955760008060008451602086016000865af1141561019457600080fd5b5b7fa38789425dbeee0239e16ff2d2567e31720127fbc6430758c1a4efc6aef29f8081604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a192915050565b6040516102148061020f833901905600608060405234801561001057600080fd5b506040516020806102148339810180604052810190808051906020019092919050505060008173ffffffffffffffffffffffffffffffffffffffff161415151561005957600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505061016b806100a96000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461008b5780635c60da1b146100b6575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e6000811415610086573d6000fd5b3d6000f35b34801561009757600080fd5b506100a061010d565b6040518082815260200191505060405180910390f35b3480156100c257600080fd5b506100cb610116565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006002905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a72305820cd7d1e9dd84eb221f79b1c8f72a39fad7d9f8ab7239d25c1fc563147abcaf4150029a165627a7a72305820894d1145d2178ea5a3debf7a1ffb29cfdf9100a5997f8e3b2c8640a6db5c5b120029", + "sourceMap": "225:725:12:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;225:725:12;;;;;;;", + "deployedSourceMap": "225:725:12:-;;;;;;;;;;;;;;;;;;;;;;;;532:416;;8:9:-1;5:2;;;30:1;27;20:12;5:2;532:416:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;617:11;662:10;652:21;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;652:21:12;644:29;;701:1;687:4;:11;:15;683:237;;;874:1;870;867;860:4;854:11;847:4;841;837:15;834:1;827:5;822:3;817:55;814:62;811:2;;;889:1;886;879:12;811:2;793:114;921:20;935:5;921:20;;;;;;;;;;;;;;;;;;;;;;532:416;;;;:::o;225:725::-;;;;;;;;;;:::o", + "source": "pragma solidity 0.4.24;\nimport \"./Proxy.sol\";\n\n\n/// @title Proxy Factory - Allows to create new proxy contact and execute a message call to the new proxy within one transaction.\n/// @author Stefan George - \ncontract ProxyFactory {\n\n event ProxyCreation(Proxy proxy);\n\n /// @dev Allows to create new proxy contact and execute a message call to the new proxy within one transaction.\n /// @param masterCopy Address of master copy.\n /// @param data Payload for message call sent to new proxy contract.\n function createProxy(address masterCopy, bytes data)\n public\n returns (Proxy proxy)\n {\n proxy = new Proxy(masterCopy);\n if (data.length > 0)\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n if eq(call(gas, proxy, 0, add(data, 0x20), mload(data), 0, 0), 0) { revert(0, 0) }\n }\n emit ProxyCreation(proxy);\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ProxyFactory.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ProxyFactory.sol", "exportedSymbols": { "ProxyFactory": [ - 1543 + 1603 ] }, - "id": 1544, + "id": 1604, "nodeType": "SourceUnit", "nodes": [ { - "id": 1510, + "id": 1570, "literals": [ "solidity", "0.4", - ".23" + ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:13" + "src": "0:23:12" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Proxy.sol", "file": "./Proxy.sol", - "id": 1511, + "id": 1571, "nodeType": "ImportDirective", - "scope": 1544, - "sourceUnit": 1509, - "src": "24:21:13", + "scope": 1604, + "sourceUnit": 1569, + "src": "24:21:12", "symbolAliases": [], "unitAlias": "" }, { "baseContracts": [], "contractDependencies": [ - 1508 + 1568 ], "contractKind": "contract", "documentation": "@title Proxy Factory - Allows to create new proxy contact and execute a message call to the new proxy within one transaction.\n @author Stefan George - ", "fullyImplemented": true, - "id": 1543, + "id": 1603, "linearizedBaseContracts": [ - 1543 + 1603 ], "name": "ProxyFactory", "nodeType": "ContractDefinition", @@ -92,36 +92,36 @@ { "anonymous": false, "documentation": null, - "id": 1515, + "id": 1575, "name": "ProxyCreation", "nodeType": "EventDefinition", "parameters": { - "id": 1514, + "id": 1574, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1513, + "id": 1573, "indexed": false, "name": "proxy", "nodeType": "VariableDeclaration", - "scope": 1515, - "src": "274:11:13", + "scope": 1575, + "src": "274:11:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1508", + "typeIdentifier": "t_contract$_Proxy_$1568", "typeString": "contract Proxy" }, "typeName": { "contractScope": null, - "id": 1512, + "id": 1572, "name": "Proxy", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1508, - "src": "274:5:13", + "referencedDeclaration": 1568, + "src": "274:5:12", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1508", + "typeIdentifier": "t_contract$_Proxy_$1568", "typeString": "contract Proxy" } }, @@ -129,34 +129,34 @@ "visibility": "internal" } ], - "src": "273:13:13" + "src": "273:13:12" }, - "src": "254:33:13" + "src": "254:33:12" }, { "body": { - "id": 1541, + "id": 1601, "nodeType": "Block", - "src": "634:314:13", + "src": "634:314:12", "statements": [ { "expression": { "argumentTypes": null, - "id": 1529, + "id": 1589, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1524, + "id": 1584, "name": "proxy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1522, - "src": "644:5:13", + "referencedDeclaration": 1582, + "src": "644:5:12", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1508", + "typeIdentifier": "t_contract$_Proxy_$1568", "typeString": "contract Proxy" } }, @@ -167,12 +167,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1527, + "id": 1587, "name": "masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1517, - "src": "662:10:13", + "referencedDeclaration": 1577, + "src": "662:10:12", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -186,31 +186,31 @@ "typeString": "address" } ], - "id": 1526, + "id": 1586, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "NewExpression", - "src": "652:9:13", + "src": "652:9:12", "typeDescriptions": { - "typeIdentifier": "t_function_creation_nonpayable$_t_address_$returns$_t_contract$_Proxy_$1508_$", + "typeIdentifier": "t_function_creation_nonpayable$_t_address_$returns$_t_contract$_Proxy_$1568_$", "typeString": "function (address) returns (contract Proxy)" }, "typeName": { "contractScope": null, - "id": 1525, + "id": 1585, "name": "Proxy", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1508, - "src": "656:5:13", + "referencedDeclaration": 1568, + "src": "656:5:12", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1508", + "typeIdentifier": "t_contract$_Proxy_$1568", "typeString": "contract Proxy" } } }, - "id": 1528, + "id": 1588, "isConstant": false, "isLValue": false, "isPure": false, @@ -218,21 +218,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "652:21:13", + "src": "652:21:12", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1508", + "typeIdentifier": "t_contract$_Proxy_$1568", "typeString": "contract Proxy" } }, - "src": "644:29:13", + "src": "644:29:12", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1508", + "typeIdentifier": "t_contract$_Proxy_$1568", "typeString": "contract Proxy" } }, - "id": 1530, + "id": 1590, "nodeType": "ExpressionStatement", - "src": "644:29:13" + "src": "644:29:12" }, { "condition": { @@ -241,7 +241,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1534, + "id": 1594, "isConstant": false, "isLValue": false, "isPure": false, @@ -250,18 +250,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1531, + "id": 1591, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1519, - "src": "687:4:13", + "referencedDeclaration": 1579, + "src": "687:4:12", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, - "id": 1532, + "id": 1592, "isConstant": false, "isLValue": false, "isPure": false, @@ -269,7 +269,7 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "687:11:13", + "src": "687:11:12", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -280,14 +280,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1533, + "id": 1593, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "701:1:13", + "src": "701:1:12", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -295,50 +295,50 @@ }, "value": "0" }, - "src": "687:15:13", + "src": "687:15:12", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 1536, + "id": 1596, "nodeType": "IfStatement", - "src": "683:237:13", + "src": "683:237:12", "trueBody": { "externalReferences": [ { "data": { - "declaration": 1519, + "declaration": 1579, "isOffset": false, "isSlot": false, - "src": "860:4:13", + "src": "860:4:12", "valueSize": 1 } }, { "proxy": { - "declaration": 1522, + "declaration": 1582, "isOffset": false, "isSlot": false, - "src": "827:5:13", + "src": "827:5:12", "valueSize": 1 } }, { "data": { - "declaration": 1519, + "declaration": 1579, "isOffset": false, "isSlot": false, - "src": "841:4:13", + "src": "841:4:12", "valueSize": 1 } } ], - "id": 1535, + "id": 1595, "nodeType": "InlineAssembly", "operations": "{\n if eq(call(gas(), proxy, 0, add(data, 0x20), mload(data), 0, 0), 0)\n {\n revert(0, 0)\n }\n}", - "src": "784:136:13" + "src": "784:136:12" } }, { @@ -347,14 +347,14 @@ "arguments": [ { "argumentTypes": null, - "id": 1538, + "id": 1598, "name": "proxy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1522, - "src": "935:5:13", + "referencedDeclaration": 1582, + "src": "935:5:12", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1508", + "typeIdentifier": "t_contract$_Proxy_$1568", "typeString": "contract Proxy" } } @@ -362,22 +362,22 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_Proxy_$1508", + "typeIdentifier": "t_contract$_Proxy_$1568", "typeString": "contract Proxy" } ], - "id": 1537, + "id": 1597, "name": "ProxyCreation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1515, - "src": "921:13:13", + "referencedDeclaration": 1575, + "src": "921:13:12", "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_contract$_Proxy_$1508_$returns$__$", + "typeIdentifier": "t_function_event_nonpayable$_t_contract$_Proxy_$1568_$returns$__$", "typeString": "function (contract Proxy)" } }, - "id": 1539, + "id": 1599, "isConstant": false, "isLValue": false, "isPure": false, @@ -385,20 +385,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "921:20:13", + "src": "921:20:12", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1540, + "id": 1600, "nodeType": "EmitStatement", - "src": "916:25:13" + "src": "916:25:12" } ] }, "documentation": "@dev Allows to create new proxy contact and execute a message call to the new proxy within one transaction.\n @param masterCopy Address of master copy.\n @param data Payload for message call sent to new proxy contract.", - "id": 1542, + "id": 1602, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -406,16 +406,16 @@ "name": "createProxy", "nodeType": "FunctionDefinition", "parameters": { - "id": 1520, + "id": 1580, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1517, + "id": 1577, "name": "masterCopy", "nodeType": "VariableDeclaration", - "scope": 1542, - "src": "553:18:13", + "scope": 1602, + "src": "553:18:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -423,10 +423,10 @@ "typeString": "address" }, "typeName": { - "id": 1516, + "id": 1576, "name": "address", "nodeType": "ElementaryTypeName", - "src": "553:7:13", + "src": "553:7:12", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -437,11 +437,11 @@ }, { "constant": false, - "id": 1519, + "id": 1579, "name": "data", "nodeType": "VariableDeclaration", - "scope": 1542, - "src": "573:10:13", + "scope": 1602, + "src": "573:10:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -449,10 +449,10 @@ "typeString": "bytes" }, "typeName": { - "id": 1518, + "id": 1578, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "573:5:13", + "src": "573:5:12", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -462,35 +462,35 @@ "visibility": "internal" } ], - "src": "552:32:13" + "src": "552:32:12" }, "payable": false, "returnParameters": { - "id": 1523, + "id": 1583, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1522, + "id": 1582, "name": "proxy", "nodeType": "VariableDeclaration", - "scope": 1542, - "src": "617:11:13", + "scope": 1602, + "src": "617:11:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1508", + "typeIdentifier": "t_contract$_Proxy_$1568", "typeString": "contract Proxy" }, "typeName": { "contractScope": null, - "id": 1521, + "id": 1581, "name": "Proxy", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1508, - "src": "617:5:13", + "referencedDeclaration": 1568, + "src": "617:5:12", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1508", + "typeIdentifier": "t_contract$_Proxy_$1568", "typeString": "contract Proxy" } }, @@ -498,63 +498,63 @@ "visibility": "internal" } ], - "src": "616:13:13" + "src": "616:13:12" }, - "scope": 1543, - "src": "532:416:13", + "scope": 1603, + "src": "532:416:12", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 1544, - "src": "225:725:13" + "scope": 1604, + "src": "225:725:12" } ], - "src": "0:951:13" + "src": "0:951:12" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ProxyFactory.sol", "exportedSymbols": { "ProxyFactory": [ - 1543 + 1603 ] }, - "id": 1544, + "id": 1604, "nodeType": "SourceUnit", "nodes": [ { - "id": 1510, + "id": 1570, "literals": [ "solidity", "0.4", - ".23" + ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:13" + "src": "0:23:12" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Proxy.sol", "file": "./Proxy.sol", - "id": 1511, + "id": 1571, "nodeType": "ImportDirective", - "scope": 1544, - "sourceUnit": 1509, - "src": "24:21:13", + "scope": 1604, + "sourceUnit": 1569, + "src": "24:21:12", "symbolAliases": [], "unitAlias": "" }, { "baseContracts": [], "contractDependencies": [ - 1508 + 1568 ], "contractKind": "contract", "documentation": "@title Proxy Factory - Allows to create new proxy contact and execute a message call to the new proxy within one transaction.\n @author Stefan George - ", "fullyImplemented": true, - "id": 1543, + "id": 1603, "linearizedBaseContracts": [ - 1543 + 1603 ], "name": "ProxyFactory", "nodeType": "ContractDefinition", @@ -562,36 +562,36 @@ { "anonymous": false, "documentation": null, - "id": 1515, + "id": 1575, "name": "ProxyCreation", "nodeType": "EventDefinition", "parameters": { - "id": 1514, + "id": 1574, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1513, + "id": 1573, "indexed": false, "name": "proxy", "nodeType": "VariableDeclaration", - "scope": 1515, - "src": "274:11:13", + "scope": 1575, + "src": "274:11:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1508", + "typeIdentifier": "t_contract$_Proxy_$1568", "typeString": "contract Proxy" }, "typeName": { "contractScope": null, - "id": 1512, + "id": 1572, "name": "Proxy", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1508, - "src": "274:5:13", + "referencedDeclaration": 1568, + "src": "274:5:12", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1508", + "typeIdentifier": "t_contract$_Proxy_$1568", "typeString": "contract Proxy" } }, @@ -599,34 +599,34 @@ "visibility": "internal" } ], - "src": "273:13:13" + "src": "273:13:12" }, - "src": "254:33:13" + "src": "254:33:12" }, { "body": { - "id": 1541, + "id": 1601, "nodeType": "Block", - "src": "634:314:13", + "src": "634:314:12", "statements": [ { "expression": { "argumentTypes": null, - "id": 1529, + "id": 1589, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1524, + "id": 1584, "name": "proxy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1522, - "src": "644:5:13", + "referencedDeclaration": 1582, + "src": "644:5:12", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1508", + "typeIdentifier": "t_contract$_Proxy_$1568", "typeString": "contract Proxy" } }, @@ -637,12 +637,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1527, + "id": 1587, "name": "masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1517, - "src": "662:10:13", + "referencedDeclaration": 1577, + "src": "662:10:12", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -656,31 +656,31 @@ "typeString": "address" } ], - "id": 1526, + "id": 1586, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "NewExpression", - "src": "652:9:13", + "src": "652:9:12", "typeDescriptions": { - "typeIdentifier": "t_function_creation_nonpayable$_t_address_$returns$_t_contract$_Proxy_$1508_$", + "typeIdentifier": "t_function_creation_nonpayable$_t_address_$returns$_t_contract$_Proxy_$1568_$", "typeString": "function (address) returns (contract Proxy)" }, "typeName": { "contractScope": null, - "id": 1525, + "id": 1585, "name": "Proxy", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1508, - "src": "656:5:13", + "referencedDeclaration": 1568, + "src": "656:5:12", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1508", + "typeIdentifier": "t_contract$_Proxy_$1568", "typeString": "contract Proxy" } } }, - "id": 1528, + "id": 1588, "isConstant": false, "isLValue": false, "isPure": false, @@ -688,21 +688,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "652:21:13", + "src": "652:21:12", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1508", + "typeIdentifier": "t_contract$_Proxy_$1568", "typeString": "contract Proxy" } }, - "src": "644:29:13", + "src": "644:29:12", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1508", + "typeIdentifier": "t_contract$_Proxy_$1568", "typeString": "contract Proxy" } }, - "id": 1530, + "id": 1590, "nodeType": "ExpressionStatement", - "src": "644:29:13" + "src": "644:29:12" }, { "condition": { @@ -711,7 +711,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1534, + "id": 1594, "isConstant": false, "isLValue": false, "isPure": false, @@ -720,18 +720,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1531, + "id": 1591, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1519, - "src": "687:4:13", + "referencedDeclaration": 1579, + "src": "687:4:12", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, - "id": 1532, + "id": 1592, "isConstant": false, "isLValue": false, "isPure": false, @@ -739,7 +739,7 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "687:11:13", + "src": "687:11:12", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -750,14 +750,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1533, + "id": 1593, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "701:1:13", + "src": "701:1:12", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -765,50 +765,50 @@ }, "value": "0" }, - "src": "687:15:13", + "src": "687:15:12", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 1536, + "id": 1596, "nodeType": "IfStatement", - "src": "683:237:13", + "src": "683:237:12", "trueBody": { "externalReferences": [ { "data": { - "declaration": 1519, + "declaration": 1579, "isOffset": false, "isSlot": false, - "src": "860:4:13", + "src": "860:4:12", "valueSize": 1 } }, { "proxy": { - "declaration": 1522, + "declaration": 1582, "isOffset": false, "isSlot": false, - "src": "827:5:13", + "src": "827:5:12", "valueSize": 1 } }, { "data": { - "declaration": 1519, + "declaration": 1579, "isOffset": false, "isSlot": false, - "src": "841:4:13", + "src": "841:4:12", "valueSize": 1 } } ], - "id": 1535, + "id": 1595, "nodeType": "InlineAssembly", "operations": "{\n if eq(call(gas(), proxy, 0, add(data, 0x20), mload(data), 0, 0), 0)\n {\n revert(0, 0)\n }\n}", - "src": "784:136:13" + "src": "784:136:12" } }, { @@ -817,14 +817,14 @@ "arguments": [ { "argumentTypes": null, - "id": 1538, + "id": 1598, "name": "proxy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1522, - "src": "935:5:13", + "referencedDeclaration": 1582, + "src": "935:5:12", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1508", + "typeIdentifier": "t_contract$_Proxy_$1568", "typeString": "contract Proxy" } } @@ -832,22 +832,22 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_Proxy_$1508", + "typeIdentifier": "t_contract$_Proxy_$1568", "typeString": "contract Proxy" } ], - "id": 1537, + "id": 1597, "name": "ProxyCreation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1515, - "src": "921:13:13", + "referencedDeclaration": 1575, + "src": "921:13:12", "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_contract$_Proxy_$1508_$returns$__$", + "typeIdentifier": "t_function_event_nonpayable$_t_contract$_Proxy_$1568_$returns$__$", "typeString": "function (contract Proxy)" } }, - "id": 1539, + "id": 1599, "isConstant": false, "isLValue": false, "isPure": false, @@ -855,20 +855,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "921:20:13", + "src": "921:20:12", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1540, + "id": 1600, "nodeType": "EmitStatement", - "src": "916:25:13" + "src": "916:25:12" } ] }, "documentation": "@dev Allows to create new proxy contact and execute a message call to the new proxy within one transaction.\n @param masterCopy Address of master copy.\n @param data Payload for message call sent to new proxy contract.", - "id": 1542, + "id": 1602, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -876,16 +876,16 @@ "name": "createProxy", "nodeType": "FunctionDefinition", "parameters": { - "id": 1520, + "id": 1580, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1517, + "id": 1577, "name": "masterCopy", "nodeType": "VariableDeclaration", - "scope": 1542, - "src": "553:18:13", + "scope": 1602, + "src": "553:18:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -893,10 +893,10 @@ "typeString": "address" }, "typeName": { - "id": 1516, + "id": 1576, "name": "address", "nodeType": "ElementaryTypeName", - "src": "553:7:13", + "src": "553:7:12", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -907,11 +907,11 @@ }, { "constant": false, - "id": 1519, + "id": 1579, "name": "data", "nodeType": "VariableDeclaration", - "scope": 1542, - "src": "573:10:13", + "scope": 1602, + "src": "573:10:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -919,10 +919,10 @@ "typeString": "bytes" }, "typeName": { - "id": 1518, + "id": 1578, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "573:5:13", + "src": "573:5:12", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -932,35 +932,35 @@ "visibility": "internal" } ], - "src": "552:32:13" + "src": "552:32:12" }, "payable": false, "returnParameters": { - "id": 1523, + "id": 1583, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1522, + "id": 1582, "name": "proxy", "nodeType": "VariableDeclaration", - "scope": 1542, - "src": "617:11:13", + "scope": 1602, + "src": "617:11:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1508", + "typeIdentifier": "t_contract$_Proxy_$1568", "typeString": "contract Proxy" }, "typeName": { "contractScope": null, - "id": 1521, + "id": 1581, "name": "Proxy", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1508, - "src": "617:5:13", + "referencedDeclaration": 1568, + "src": "617:5:12", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1508", + "typeIdentifier": "t_contract$_Proxy_$1568", "typeString": "contract Proxy" } }, @@ -968,63 +968,45 @@ "visibility": "internal" } ], - "src": "616:13:13" + "src": "616:13:12" }, - "scope": 1543, - "src": "532:416:13", + "scope": 1603, + "src": "532:416:12", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 1544, - "src": "225:725:13" + "scope": 1604, + "src": "225:725:12" } ], - "src": "0:951:13" + "src": "0:951:12" }, "compiler": { "name": "solc", - "version": "0.4.23+commit.124ca40d.Emscripten.clang" + "version": "0.4.24+commit.e67f0147.Emscripten.clang" }, "networks": { "4": { "events": {}, "links": {}, - "address": "0xf11c9ac85e73435180707156748ecbaf4efc035b", - "transactionHash": "0xf8c48bc1ea023ab15194af47f50d2c8eaeb3d7b9dd13e7325e892e92743c2979" + "address": "0x78b7e500f63afb4c692b9b6a43e092278cbffaa1", + "transactionHash": "0xebf1fca163a66fdf988707624fa744b57d1eeedcc9f7eaee66555d1fc474c01e" }, - "1525950336085": { - "events": {}, - "links": {}, - "address": "0x7686eac12d94e3c0bdfe0a00ec759f89fbd115f7", - "transactionHash": "0x5b47c779cfd719a97f218a56d99b64b2c5b382549f3375822d5afed010cdb9c5" - }, - "1526283540628": { - "events": {}, - "links": {}, - "address": "0x321151783f8dfb4699370d1bd5cee4e82bc3b52a", - "transactionHash": "0x5b47c779cfd719a97f218a56d99b64b2c5b382549f3375822d5afed010cdb9c5" - }, - "1526478212260": { - "events": {}, - "links": {}, - "address": "0xf7f9b14921d4723eae3a8b29784c100301f6d8b8", - "transactionHash": "0x5b47c779cfd719a97f218a56d99b64b2c5b382549f3375822d5afed010cdb9c5" - }, - "1526973574996": { + "1527316019334": { "events": {}, "links": {}, - "address": "0x91cee89bad367a2621a047c77d65e903acfa8a9d", - "transactionHash": "0x5b47c779cfd719a97f218a56d99b64b2c5b382549f3375822d5afed010cdb9c5" + "address": "0x63f96c3c48bf69ce28e8b8be3c092807d9cf75c3", + "transactionHash": "0xbf12ab2315082a4c3e20abe6305376e3669b7cdee1bbfc079934e41aad57f4f3" }, - "1527316019334": { + "1527420696956": { "events": {}, "links": {}, - "address": "0x28ca055db09855f4bfefefd2177e33813f21fd8f", - "transactionHash": "0x5b47c779cfd719a97f218a56d99b64b2c5b382549f3375822d5afed010cdb9c5" + "address": "0x7be7064be7fa89c37e849fe58d68967da7d912b6", + "transactionHash": "0xc64211adf2eafca94ba6fe1b59e2ddd73ab867efd20ed1db80ca6eee90591aaf" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-26T06:28:28.336Z" + "updatedAt": "2018-05-27T11:31:46.235Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/SelfAuthorized.json b/safe-contracts/build/contracts/SelfAuthorized.json index d881ac3444..679b4831de 100644 --- a/safe-contracts/build/contracts/SelfAuthorized.json +++ b/safe-contracts/build/contracts/SelfAuthorized.json @@ -1,31 +1,31 @@ { "contractName": "SelfAuthorized", "abi": [], - "bytecode": "0x6080604052348015600f57600080fd5b50603580601d6000396000f3006080604052600080fd00a165627a7a72305820c359a8a0df732b4d3e100e43277411dee19c572529edb454cbf1fa9ee91508150029", - "deployedBytecode": "0x6080604052600080fd00a165627a7a72305820c359a8a0df732b4d3e100e43277411dee19c572529edb454cbf1fa9ee91508150029", - "sourceMap": "152:118:8:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;152:118:8;;;;;;;", - "deployedSourceMap": "152:118:8:-;;;;;", - "source": "pragma solidity 0.4.23;\n\n\n/// @title SelfAuthorized - authorizes current contract to perform actions\n/// @author Richard Meissner - \ncontract SelfAuthorized {\n modifier authorized() {\n require(msg.sender == address(this));\n _;\n }\n}\n", + "bytecode": "0x6080604052348015600f57600080fd5b50603580601d6000396000f3006080604052600080fd00a165627a7a72305820af9f772ea9919e0b590dbadc1d255c497a0a1031eaf00e4735e7b65b3f2e31520029", + "deployedBytecode": "0x6080604052600080fd00a165627a7a72305820af9f772ea9919e0b590dbadc1d255c497a0a1031eaf00e4735e7b65b3f2e31520029", + "sourceMap": "152:118:13:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;152:118:13;;;;;;;", + "deployedSourceMap": "152:118:13:-;;;;;", + "source": "pragma solidity 0.4.24;\n\n\n/// @title SelfAuthorized - authorizes current contract to perform actions\n/// @author Richard Meissner - \ncontract SelfAuthorized {\n modifier authorized() {\n require(msg.sender == address(this));\n _;\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/SelfAuthorized.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/SelfAuthorized.sol", "exportedSymbols": { "SelfAuthorized": [ - 1359 + 1619 ] }, - "id": 1360, + "id": 1620, "nodeType": "SourceUnit", "nodes": [ { - "id": 1345, + "id": 1605, "literals": [ "solidity", "0.4", - ".23" + ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:8" + "src": "0:23:13" }, { "baseContracts": [], @@ -33,18 +33,18 @@ "contractKind": "contract", "documentation": "@title SelfAuthorized - authorizes current contract to perform actions\n @author Richard Meissner - ", "fullyImplemented": true, - "id": 1359, + "id": 1619, "linearizedBaseContracts": [ - 1359 + 1619 ], "name": "SelfAuthorized", "nodeType": "ContractDefinition", "nodes": [ { "body": { - "id": 1357, + "id": 1617, "nodeType": "Block", - "src": "204:64:8", + "src": "204:64:13", "statements": [ { "expression": { @@ -56,7 +56,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1353, + "id": 1613, "isConstant": false, "isLValue": false, "isPure": false, @@ -65,18 +65,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1348, + "id": 1608, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2396, - "src": "222:3:8", + "referencedDeclaration": 2598, + "src": "222:3:13", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 1349, + "id": 1609, "isConstant": false, "isLValue": false, "isPure": false, @@ -84,7 +84,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "222:10:8", + "src": "222:10:13", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -97,14 +97,14 @@ "arguments": [ { "argumentTypes": null, - "id": 1351, + "id": 1611, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2411, - "src": "244:4:8", + "referencedDeclaration": 2617, + "src": "244:4:13", "typeDescriptions": { - "typeIdentifier": "t_contract$_SelfAuthorized_$1359", + "typeIdentifier": "t_contract$_SelfAuthorized_$1619", "typeString": "contract SelfAuthorized" } } @@ -112,24 +112,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_SelfAuthorized_$1359", + "typeIdentifier": "t_contract$_SelfAuthorized_$1619", "typeString": "contract SelfAuthorized" } ], - "id": 1350, + "id": 1610, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "236:7:8", + "src": "236:7:13", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 1352, + "id": 1612, "isConstant": false, "isLValue": false, "isPure": false, @@ -137,13 +137,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "236:13:8", + "src": "236:13:13", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "222:27:8", + "src": "222:27:13", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -157,21 +157,21 @@ "typeString": "bool" } ], - "id": 1347, + "id": 1607, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "214:7:8", + "referencedDeclaration": 2601, + "src": "214:7:13", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1354, + "id": 1614, "isConstant": false, "isLValue": false, "isPure": false, @@ -179,62 +179,62 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "214:36:8", + "src": "214:36:13", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1355, + "id": 1615, "nodeType": "ExpressionStatement", - "src": "214:36:8" + "src": "214:36:13" }, { - "id": 1356, + "id": 1616, "nodeType": "PlaceholderStatement", - "src": "260:1:8" + "src": "260:1:13" } ] }, "documentation": null, - "id": 1358, + "id": 1618, "name": "authorized", "nodeType": "ModifierDefinition", "parameters": { - "id": 1346, + "id": 1606, "nodeType": "ParameterList", "parameters": [], - "src": "201:2:8" + "src": "201:2:13" }, - "src": "182:86:8", + "src": "182:86:13", "visibility": "internal" } ], - "scope": 1360, - "src": "152:118:8" + "scope": 1620, + "src": "152:118:13" } ], - "src": "0:271:8" + "src": "0:271:13" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/SelfAuthorized.sol", "exportedSymbols": { "SelfAuthorized": [ - 1359 + 1619 ] }, - "id": 1360, + "id": 1620, "nodeType": "SourceUnit", "nodes": [ { - "id": 1345, + "id": 1605, "literals": [ "solidity", "0.4", - ".23" + ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:8" + "src": "0:23:13" }, { "baseContracts": [], @@ -242,18 +242,18 @@ "contractKind": "contract", "documentation": "@title SelfAuthorized - authorizes current contract to perform actions\n @author Richard Meissner - ", "fullyImplemented": true, - "id": 1359, + "id": 1619, "linearizedBaseContracts": [ - 1359 + 1619 ], "name": "SelfAuthorized", "nodeType": "ContractDefinition", "nodes": [ { "body": { - "id": 1357, + "id": 1617, "nodeType": "Block", - "src": "204:64:8", + "src": "204:64:13", "statements": [ { "expression": { @@ -265,7 +265,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1353, + "id": 1613, "isConstant": false, "isLValue": false, "isPure": false, @@ -274,18 +274,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1348, + "id": 1608, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2396, - "src": "222:3:8", + "referencedDeclaration": 2598, + "src": "222:3:13", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 1349, + "id": 1609, "isConstant": false, "isLValue": false, "isPure": false, @@ -293,7 +293,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "222:10:8", + "src": "222:10:13", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -306,14 +306,14 @@ "arguments": [ { "argumentTypes": null, - "id": 1351, + "id": 1611, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2411, - "src": "244:4:8", + "referencedDeclaration": 2617, + "src": "244:4:13", "typeDescriptions": { - "typeIdentifier": "t_contract$_SelfAuthorized_$1359", + "typeIdentifier": "t_contract$_SelfAuthorized_$1619", "typeString": "contract SelfAuthorized" } } @@ -321,24 +321,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_SelfAuthorized_$1359", + "typeIdentifier": "t_contract$_SelfAuthorized_$1619", "typeString": "contract SelfAuthorized" } ], - "id": 1350, + "id": 1610, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "236:7:8", + "src": "236:7:13", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 1352, + "id": 1612, "isConstant": false, "isLValue": false, "isPure": false, @@ -346,13 +346,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "236:13:8", + "src": "236:13:13", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "222:27:8", + "src": "222:27:13", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -366,21 +366,21 @@ "typeString": "bool" } ], - "id": 1347, + "id": 1607, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "214:7:8", + "referencedDeclaration": 2601, + "src": "214:7:13", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1354, + "id": 1614, "isConstant": false, "isLValue": false, "isPure": false, @@ -388,48 +388,48 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "214:36:8", + "src": "214:36:13", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1355, + "id": 1615, "nodeType": "ExpressionStatement", - "src": "214:36:8" + "src": "214:36:13" }, { - "id": 1356, + "id": 1616, "nodeType": "PlaceholderStatement", - "src": "260:1:8" + "src": "260:1:13" } ] }, "documentation": null, - "id": 1358, + "id": 1618, "name": "authorized", "nodeType": "ModifierDefinition", "parameters": { - "id": 1346, + "id": 1606, "nodeType": "ParameterList", "parameters": [], - "src": "201:2:8" + "src": "201:2:13" }, - "src": "182:86:8", + "src": "182:86:13", "visibility": "internal" } ], - "scope": 1360, - "src": "152:118:8" + "scope": 1620, + "src": "152:118:13" } ], - "src": "0:271:8" + "src": "0:271:13" }, "compiler": { "name": "solc", - "version": "0.4.23+commit.124ca40d.Emscripten.clang" + "version": "0.4.24+commit.e67f0147.Emscripten.clang" }, "networks": {}, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-16T10:51:14.750Z" + "updatedAt": "2018-05-27T11:12:45.584Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/SocialRecoveryModule.json b/safe-contracts/build/contracts/SocialRecoveryModule.json index f16deac049..1da04b6326 100644 --- a/safe-contracts/build/contracts/SocialRecoveryModule.json +++ b/safe-contracts/build/contracts/SocialRecoveryModule.json @@ -1,20 +1,6 @@ { "contractName": "SocialRecoveryModule", "abi": [ - { - "constant": true, - "inputs": [], - "name": "REPLACE_OWNER_FUNCTION_IDENTIFIER", - "outputs": [ - { - "name": "", - "type": "bytes4" - } - ], - "payable": false, - "stateMutability": "view", - "type": "function" - }, { "constant": true, "inputs": [], @@ -201,8 +187,16 @@ "constant": false, "inputs": [ { - "name": "data", - "type": "bytes" + "name": "prevOwner", + "type": "address" + }, + { + "name": "oldOwner", + "type": "address" + }, + { + "name": "newOwner", + "type": "address" } ], "name": "recoverAccess", @@ -246,77 +240,77 @@ } ], "payable": false, - "stateMutability": "view", + "stateMutability": "pure", "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b5061113b806100206000396000f3006080604052600436106100db576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806336749c1a146100e05780633cf5b3091461014957806342cde4e8146101bc578063481c6a75146101ed57806368125a1b1461024457806379716e431461029f5780637de7edef146102d05780639ca89d0d14610313578063a3f4df7e1461035c578063ae68b056146103ec578063b79ffaff14610471578063ce146828146104da578063d2740c7614610547578063e52cb36a146105b0578063ffa1ad74146105f9575b600080fd5b3480156100ec57600080fd5b506100f5610689565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b34801561015557600080fd5b506101ba60048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff1690602001909291905050506106ad565b005b3480156101c857600080fd5b506101d1610822565b604051808260ff1660ff16815260200191505060405180910390f35b3480156101f957600080fd5b50610202610835565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561025057600080fd5b50610285600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061085b565b604051808215151515815260200191505060405180910390f35b3480156102ab57600080fd5b506102ce600480360381019080803560001916906020019092919050505061087b565b005b3480156102dc57600080fd5b50610311600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061097c565b005b34801561031f57600080fd5b506103426004803603810190808035600019169060200190929190505050610a41565b604051808215151515815260200191505060405180910390f35b34801561036857600080fd5b50610371610b40565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103b1578082015181840152602081019050610396565b50505050905090810190601f1680156103de5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103f857600080fd5b50610453600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610b79565b60405180826000191660001916815260200191505060405180910390f35b34801561047d57600080fd5b506104c06004803603810190808035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610be5565b604051808215151515815260200191505060405180910390f35b3480156104e657600080fd5b5061050560048036038101908080359060200190929190505050610c14565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561055357600080fd5b506105ae600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610c52565b005b3480156105bc57600080fd5b506105df6004803603810190808035600019169060200190929190505050610f5f565b604051808215151515815260200191505060405180910390f35b34801561060557600080fd5b5061060e610f7f565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561064e578082015181840152602081019050610633565b50505050905090810190601f16801561067b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b7fe318b52b0000000000000000000000000000000000000000000000000000000081565b60008083518360ff16111515156106c357600080fd5b60028360ff16101515156106d657600080fd5b6106de610fb8565b600091505b83518210156107ea5783828151811015156106fa57fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff161415151561072c57600080fd5b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561078557600080fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555081806001019250506106e3565b8360029080519060200190610800929190611042565b5082600160146101000a81548160ff021916908360ff16021790555050505050565b600160149054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60036020528060005260406000206000915054906101000a900460ff1681565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156108d357600080fd5b60046000826000191660001916815260200190815260200160002060009054906101000a900460ff1615151561090857600080fd5b600160056000836000191660001916815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156109d857600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156109fe57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060008090505b600280549050811015610b34576005600085600019166000191681526020019081526020016000206000600283815481101515610a8357fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610b045781806001019250505b600160149054906101000a900460ff1660ff16821415610b275760019250610b39565b8080600101915050610a4a565b600092505b5050919050565b6040805190810160405280601681526020017f536f6369616c205265636f76657279204d6f64756c650000000000000000000081525081565b6000816040518082805190602001908083835b602083101515610bb15780518252602082019150602081019050602083039250610b8c565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209050919050565b60056020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b600281815481101515610c2357fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610cad57600080fd5b602083015191507fe318b52b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141515610d2057600080fd5b610d2983610b79565b905060046000826000191660001916815260200190815260200160002060009054906101000a900460ff16151515610d6057600080fd5b610d6981610a41565b1515610d7457600080fd5b600160046000836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a7600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660008660006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001836002811115610e8557fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b83811015610ec5578082015181840152602081019050610eaa565b50505050905090810190601f168015610ef25780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610f1457600080fd5b505af1158015610f28573d6000803e3d6000fd5b505050506040513d6020811015610f3e57600080fd5b81019080805190602001909291905050501515610f5a57600080fd5b505050565b60046020528060005260406000206000915054906101000a900460ff1681565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610fff57600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b8280548282559060005260206000209081019282156110bb579160200282015b828111156110ba5782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190611062565b5b5090506110c891906110cc565b5090565b61110c91905b8082111561110857600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055506001016110d2565b5090565b905600a165627a7a723058201123dfa8605844d9977e93c4ec8232b4cd0c983832a7164c449e76402ee39bd50029", - "deployedBytecode": "0x6080604052600436106100db576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806336749c1a146100e05780633cf5b3091461014957806342cde4e8146101bc578063481c6a75146101ed57806368125a1b1461024457806379716e431461029f5780637de7edef146102d05780639ca89d0d14610313578063a3f4df7e1461035c578063ae68b056146103ec578063b79ffaff14610471578063ce146828146104da578063d2740c7614610547578063e52cb36a146105b0578063ffa1ad74146105f9575b600080fd5b3480156100ec57600080fd5b506100f5610689565b60405180827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200191505060405180910390f35b34801561015557600080fd5b506101ba60048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff1690602001909291905050506106ad565b005b3480156101c857600080fd5b506101d1610822565b604051808260ff1660ff16815260200191505060405180910390f35b3480156101f957600080fd5b50610202610835565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561025057600080fd5b50610285600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061085b565b604051808215151515815260200191505060405180910390f35b3480156102ab57600080fd5b506102ce600480360381019080803560001916906020019092919050505061087b565b005b3480156102dc57600080fd5b50610311600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061097c565b005b34801561031f57600080fd5b506103426004803603810190808035600019169060200190929190505050610a41565b604051808215151515815260200191505060405180910390f35b34801561036857600080fd5b50610371610b40565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103b1578082015181840152602081019050610396565b50505050905090810190601f1680156103de5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156103f857600080fd5b50610453600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610b79565b60405180826000191660001916815260200191505060405180910390f35b34801561047d57600080fd5b506104c06004803603810190808035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610be5565b604051808215151515815260200191505060405180910390f35b3480156104e657600080fd5b5061050560048036038101908080359060200190929190505050610c14565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561055357600080fd5b506105ae600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610c52565b005b3480156105bc57600080fd5b506105df6004803603810190808035600019169060200190929190505050610f5f565b604051808215151515815260200191505060405180910390f35b34801561060557600080fd5b5061060e610f7f565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561064e578082015181840152602081019050610633565b50505050905090810190601f16801561067b5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b7fe318b52b0000000000000000000000000000000000000000000000000000000081565b60008083518360ff16111515156106c357600080fd5b60028360ff16101515156106d657600080fd5b6106de610fb8565b600091505b83518210156107ea5783828151811015156106fa57fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff161415151561072c57600080fd5b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561078557600080fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555081806001019250506106e3565b8360029080519060200190610800929190611042565b5082600160146101000a81548160ff021916908360ff16021790555050505050565b600160149054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60036020528060005260406000206000915054906101000a900460ff1681565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156108d357600080fd5b60046000826000191660001916815260200190815260200160002060009054906101000a900460ff1615151561090857600080fd5b600160056000836000191660001916815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156109d857600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156109fe57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060008090505b600280549050811015610b34576005600085600019166000191681526020019081526020016000206000600283815481101515610a8357fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610b045781806001019250505b600160149054906101000a900460ff1660ff16821415610b275760019250610b39565b8080600101915050610a4a565b600092505b5050919050565b6040805190810160405280601681526020017f536f6369616c205265636f76657279204d6f64756c650000000000000000000081525081565b6000816040518082805190602001908083835b602083101515610bb15780518252602082019150602081019050602083039250610b8c565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209050919050565b60056020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b600281815481101515610c2357fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610cad57600080fd5b602083015191507fe318b52b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141515610d2057600080fd5b610d2983610b79565b905060046000826000191660001916815260200190815260200160002060009054906101000a900460ff16151515610d6057600080fd5b610d6981610a41565b1515610d7457600080fd5b600160046000836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a7600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660008660006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001836002811115610e8557fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b83811015610ec5578082015181840152602081019050610eaa565b50505050905090810190601f168015610ef25780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610f1457600080fd5b505af1158015610f28573d6000803e3d6000fd5b505050506040513d6020811015610f3e57600080fd5b81019080805190602001909291905050501515610f5a57600080fd5b505050565b60046020528060005260406000206000915054906101000a900460ff1681565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610fff57600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b8280548282559060005260206000209081019282156110bb579160200282015b828111156110ba5782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190611062565b5b5090506110c891906110cc565b5090565b61110c91905b8082111561110857600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055506001016110d2565b5090565b905600a165627a7a723058201123dfa8605844d9977e93c4ec8232b4cd0c983832a7164c449e76402ee39bd50029", - "sourceMap": "306:3542:12:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;306:3542:12;;;;;;;", - "deployedSourceMap": "306:3542:12:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;459:72;;8:9:-1;5:2;;;30:1;27;20:12;5:2;459:72:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1253:494;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1253:494:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;538:22;;8:9:-1;5:2;;;30:1;27;20:12;5:2;538:22:12;;;;;;;;;;;;;;;;;;;;;;;;;;;262:28:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;262:28:5;;;;;;;;;;;;;;;;;;;;;;;;;;;661:41:12;;8:9:-1;5:2;;;30:1;27;20:12;5:2;661:41:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1860:181;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1860:181:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;626:208:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:208:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;3182:405:12;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3182:405:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;353:54;;8:9:-1;5:2;;;30:1;27;20:12;5:2;353:54:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;353:54:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3716:130;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3716:130:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;905:65;;8:9:-1;5:2;;;30:1;27;20:12;5:2;905:65:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;566:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;566:24:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2245:776;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2245:776:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;770:43;;8:9:-1;5:2;;;30:1;27;20:12;5:2;770:43:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;413:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;413:40:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;413:40:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;459:72;;;:::o;1253:494::-;1476:9;1531:14;1357:8;:15;1343:10;:29;;;;1335:38;;;;;;;;1405:1;1391:10;:15;;;;1383:24;;;;;;;;1417:12;:10;:12::i;:::-;1488:1;1476:13;;1471:210;1495:8;:15;1491:1;:19;1471:210;;;1548:8;1557:1;1548:11;;;;;;;;;;;;;;;;;;1531:28;;1591:1;1581:6;:11;;;;1573:20;;;;;;;;1616:8;:16;1625:6;1616:16;;;;;;;;;;;;;;;;;;;;;;;;;1615:17;1607:26;;;;;;;;1666:4;1647:8;:16;1656:6;1647:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;1512:3;;;;;;;1471:210;;;1700:8;1690:7;:18;;;;;;;;;;;;:::i;:::-;;1730:10;1718:9;;:22;;;;;;;;;;;;;;;;;;1253:494;;;;:::o;538:22::-;;;;;;;;;;;;;:::o;262:28:5:-;;;;;;;;;;;;;:::o;661:41:12:-;;;;;;;;;;;;;;;;;;;;;;:::o;1860:181::-;1017:8;:20;1026:10;1017:20;;;;;;;;;;;;;;;;;;;;;;;;;1009:29;;;;;;;;1963:10;:20;1974:8;1963:20;;;;;;;;;;;;;;;;;;;;;;;;;;;1962:21;1954:30;;;;;;;;2030:4;1994:11;:21;2006:8;1994:21;;;;;;;;;;;;;;;;;:33;2016:10;1994:33;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;1860:181;:::o;626:208:4:-;359:7:5;;;;;;;;;;;337:30;;:10;:30;;;329:39;;;;;;;;791:1:4;776:11;:16;;;;768:25;;;;;;;;816:11;803:10;;:24;;;;;;;;;;;;;;;;;;626:208;:::o;3182:405:12:-;3283:4;3303:25;3343:9;3355:1;3343:13;;3338:221;3362:7;:14;;;;3358:1;:18;3338:221;;;3401:11;:21;3413:8;3401:21;;;;;;;;;;;;;;;;;:33;3423:7;3431:1;3423:10;;;;;;;;;;;;;;;;;;;;;;;;;;;3401:33;;;;;;;;;;;;;;;;;;;;;;;;;3397:74;;;3452:19;;;;;;;3397:74;3510:9;;;;;;;;;;;3489:30;;:17;:30;3485:63;;;3544:4;3537:11;;;;3485:63;3378:3;;;;;;;3338:221;;;3575:5;3568:12;;3182:405;;;;;;:::o;353:54::-;;;;;;;;;;;;;;;;;;;;:::o;3716:130::-;3794:7;3834:4;3824:15;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;3824:15:12;;;;;;;;;;;;;;;;3817:22;;3716:130;;;:::o;905:65::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;566:24::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2245:776::-;2485:25;2744:16;2381:8;:20;2390:10;2381:20;;;;;;;;;;;;;;;;;;;;;;;;;2373:29;;;;;;;;2645:4;2639;2635:15;2629:22;2607:44;;2700:33;2678:55;;;:18;:55;;;;2670:64;;;;;;;;2763:17;2775:4;2763:11;:17::i;:::-;2744:36;;2799:10;:20;2810:8;2799:20;;;;;;;;;;;;;;;;;;;;;;;;;;;2798:21;2790:30;;;;;;;;2838:38;2867:8;2838:28;:38::i;:::-;2830:47;;;;;;;;2910:4;2887:10;:20;2898:8;2887:20;;;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;2932:7;;;;;;;;;;;:33;;;2974:7;;;;;;;;;;;2984:1;2987:4;2993:19;2932:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;2932:81:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2932:81:12;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2932:81:12;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2932:81:12;;;;;;;;;;;;;;;;2924:90;;;;;;;;2245:776;;;:::o;770:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;413:40::-;;;;;;;;;;;;;;;;;;;;:::o;392:268:5:-;606:1;594:7;;;;;;;;;;;586:21;;;578:30;;;;;;;;642:10;618:7;;:35;;;;;;;;;;;;;;;;;;392:268::o;306:3542:12:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", - "source": "pragma solidity 0.4.23;\nimport \"../Enum.sol\";\nimport \"../Module.sol\";\nimport \"../ModuleManager.sol\";\nimport \"../OwnerManager.sol\";\n\n\n/// @title Social Recovery Module - Allows to replace an owner without Safe confirmations if friends approve the replacement.\n/// @author Stefan George - \ncontract SocialRecoveryModule is Module {\n\n string public constant NAME = \"Social Recovery Module\";\n string public constant VERSION = \"0.0.1\";\n bytes4 public constant REPLACE_OWNER_FUNCTION_IDENTIFIER = hex\"e318b52b\";\n\n uint8 public threshold;\n address[] public friends;\n\n // isFriend mapping maps friend's address to friend status.\n mapping (address => bool) public isFriend;\n // isExecuted mapping maps data hash to execution status.\n mapping (bytes32 => bool) public isExecuted;\n // isConfirmed mapping maps data hash to friend's address to confirmation status.\n mapping (bytes32 => mapping (address => bool)) public isConfirmed;\n\n modifier onlyFriend() {\n require(isFriend[msg.sender]);\n _;\n }\n\n /// @dev Setup function sets initial storage of contract.\n /// @param _friends List of friends' addresses.\n /// @param _threshold Required number of friends to confirm replacement.\n function setup(address[] _friends, uint8 _threshold)\n public\n {\n require(_threshold <= _friends.length);\n require(_threshold >= 2);\n setManager();\n // Set allowed friends.\n for (uint256 i = 0; i < _friends.length; i++) {\n address friend = _friends[i];\n require(friend != 0);\n require(!isFriend[friend]);\n isFriend[friend] = true;\n }\n friends = _friends;\n threshold = _threshold;\n }\n\n /// @dev Allows a friend to confirm a Safe transaction.\n /// @param dataHash Safe transaction hash.\n function confirmTransaction(bytes32 dataHash)\n public\n onlyFriend\n {\n require(!isExecuted[dataHash]);\n isConfirmed[dataHash][msg.sender] = true;\n }\n\n /// @dev Returns if Safe transaction is a valid owner replacement transaction.\n /// @param data Encoded owner replacement transaction.\n /// @return Returns if transaction can be executed.\n function recoverAccess(bytes data)\n public\n {\n // Only friends are allowed to execute the replacement.\n require(isFriend[msg.sender]);\n // Validate that transaction is a owner replacement transaction.\n bytes4 functionIdentifier;\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n functionIdentifier := mload(add(data, 0x20))\n }\n require(functionIdentifier == REPLACE_OWNER_FUNCTION_IDENTIFIER);\n bytes32 dataHash = getDataHash(data);\n require(!isExecuted[dataHash]);\n require(isConfirmedByRequiredFriends(dataHash));\n isExecuted[dataHash] = true;\n require(manager.execTransactionFromModule(address(manager), 0, data, Enum.Operation.Call));\n }\n\n /// @dev Returns if Safe transaction is a valid owner replacement transaction.\n /// @param dataHash Data hash.\n /// @return Confirmation status.\n function isConfirmedByRequiredFriends(bytes32 dataHash)\n public\n view\n returns (bool)\n {\n uint256 confirmationCount;\n for (uint256 i = 0; i < friends.length; i++) {\n if (isConfirmed[dataHash][friends[i]])\n confirmationCount++;\n if (confirmationCount == threshold)\n return true;\n }\n return false;\n }\n\n /// @dev Returns hash of data encoding owner replacement.\n /// @param data Data payload.\n /// @return Data hash.\n function getDataHash(bytes data)\n public\n view\n returns (bytes32)\n {\n return keccak256(data);\n }\n}\n", + "bytecode": "0x608060405234801561001057600080fd5b50611171806100206000396000f3006080604052600436106100d0576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680633cf5b309146100d557806342cde4e814610148578063481c6a751461017957806368125a1b146101d057806377231eaa1461022b57806379716e43146102ae5780637de7edef146102df5780639ca89d0d14610322578063a3f4df7e1461036b578063ae68b056146103fb578063b79ffaff14610480578063ce146828146104e9578063e52cb36a14610556578063ffa1ad741461059f575b600080fd5b3480156100e157600080fd5b5061014660048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff16906020019092919050505061062f565b005b34801561015457600080fd5b5061015d6107a4565b604051808260ff1660ff16815260200191505060405180910390f35b34801561018557600080fd5b5061018e6107b7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101dc57600080fd5b50610211600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107dd565b604051808215151515815260200191505060405180910390f35b34801561023757600080fd5b506102ac600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107fd565b005b3480156102ba57600080fd5b506102dd6004803603810190808035600019169060200190929190505050610bbe565b005b3480156102eb57600080fd5b50610320600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610cbf565b005b34801561032e57600080fd5b506103516004803603810190808035600019169060200190929190505050610d84565b604051808215151515815260200191505060405180910390f35b34801561037757600080fd5b50610380610e83565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103c05780820151818401526020810190506103a5565b50505050905090810190601f1680156103ed5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561040757600080fd5b50610462600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610ebc565b60405180826000191660001916815260200191505060405180910390f35b34801561048c57600080fd5b506104cf6004803603810190808035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f28565b604051808215151515815260200191505060405180910390f35b3480156104f557600080fd5b5061051460048036038101908080359060200190929190505050610f57565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561056257600080fd5b506105856004803603810190808035600019169060200190929190505050610f95565b604051808215151515815260200191505060405180910390f35b3480156105ab57600080fd5b506105b4610fb5565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105f45780820151818401526020810190506105d9565b50505050905090810190601f1680156106215780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60008083518360ff161115151561064557600080fd5b60028360ff161015151561065857600080fd5b610660610fee565b600091505b835182101561076c57838281518110151561067c57fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff16141515156106ae57600080fd5b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561070757600080fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508180600101925050610665565b8360029080519060200190610782929190611078565b5082600160146101000a81548160ff021916908360ff16021790555050505050565b600160149054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60036020528060005260406000206000915054906101000a900460ff1681565b60606000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561085957600080fd5b848484604051602401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200193505050506040516020818303038152906040527fe318b52b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050915061098682610ebc565b905060046000826000191660001916815260200190815260200160002060009054906101000a900460ff161515156109bd57600080fd5b6109c681610d84565b15156109d157600080fd5b600160046000836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a7600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660008560006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001836002811115610ae257fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b83811015610b22578082015181840152602081019050610b07565b50505050905090810190601f168015610b4f5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610b7157600080fd5b505af1158015610b85573d6000803e3d6000fd5b505050506040513d6020811015610b9b57600080fd5b81019080805190602001909291905050501515610bb757600080fd5b5050505050565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610c1657600080fd5b60046000826000191660001916815260200190815260200160002060009054906101000a900460ff16151515610c4b57600080fd5b600160056000836000191660001916815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610d1b57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610d4157600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060008090505b600280549050811015610e77576005600085600019166000191681526020019081526020016000206000600283815481101515610dc657fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610e475781806001019250505b600160149054906101000a900460ff1660ff16821415610e6a5760019250610e7c565b8080600101915050610d8d565b600092505b5050919050565b6040805190810160405280601681526020017f536f6369616c205265636f76657279204d6f64756c650000000000000000000081525081565b6000816040518082805190602001908083835b602083101515610ef45780518252602082019150602081019050602083039250610ecf565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209050919050565b60056020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b600281815481101515610f6657fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60046020528060005260406000206000915054906101000a900460ff1681565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561103557600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b8280548282559060005260206000209081019282156110f1579160200282015b828111156110f05782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190611098565b5b5090506110fe9190611102565b5090565b61114291905b8082111561113e57600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101611108565b5090565b905600a165627a7a7230582016bbe219e7ccae5c600c8f48a1fc8b74cff478e1cbbcf8be80a150f855d6eb800029", + "deployedBytecode": "0x6080604052600436106100d0576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680633cf5b309146100d557806342cde4e814610148578063481c6a751461017957806368125a1b146101d057806377231eaa1461022b57806379716e43146102ae5780637de7edef146102df5780639ca89d0d14610322578063a3f4df7e1461036b578063ae68b056146103fb578063b79ffaff14610480578063ce146828146104e9578063e52cb36a14610556578063ffa1ad741461059f575b600080fd5b3480156100e157600080fd5b5061014660048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff16906020019092919050505061062f565b005b34801561015457600080fd5b5061015d6107a4565b604051808260ff1660ff16815260200191505060405180910390f35b34801561018557600080fd5b5061018e6107b7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101dc57600080fd5b50610211600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107dd565b604051808215151515815260200191505060405180910390f35b34801561023757600080fd5b506102ac600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107fd565b005b3480156102ba57600080fd5b506102dd6004803603810190808035600019169060200190929190505050610bbe565b005b3480156102eb57600080fd5b50610320600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610cbf565b005b34801561032e57600080fd5b506103516004803603810190808035600019169060200190929190505050610d84565b604051808215151515815260200191505060405180910390f35b34801561037757600080fd5b50610380610e83565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103c05780820151818401526020810190506103a5565b50505050905090810190601f1680156103ed5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561040757600080fd5b50610462600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610ebc565b60405180826000191660001916815260200191505060405180910390f35b34801561048c57600080fd5b506104cf6004803603810190808035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f28565b604051808215151515815260200191505060405180910390f35b3480156104f557600080fd5b5061051460048036038101908080359060200190929190505050610f57565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561056257600080fd5b506105856004803603810190808035600019169060200190929190505050610f95565b604051808215151515815260200191505060405180910390f35b3480156105ab57600080fd5b506105b4610fb5565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105f45780820151818401526020810190506105d9565b50505050905090810190601f1680156106215780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60008083518360ff161115151561064557600080fd5b60028360ff161015151561065857600080fd5b610660610fee565b600091505b835182101561076c57838281518110151561067c57fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff16141515156106ae57600080fd5b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561070757600080fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508180600101925050610665565b8360029080519060200190610782929190611078565b5082600160146101000a81548160ff021916908360ff16021790555050505050565b600160149054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60036020528060005260406000206000915054906101000a900460ff1681565b60606000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561085957600080fd5b848484604051602401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200193505050506040516020818303038152906040527fe318b52b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050915061098682610ebc565b905060046000826000191660001916815260200190815260200160002060009054906101000a900460ff161515156109bd57600080fd5b6109c681610d84565b15156109d157600080fd5b600160046000836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a7600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660008560006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001836002811115610ae257fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b83811015610b22578082015181840152602081019050610b07565b50505050905090810190601f168015610b4f5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610b7157600080fd5b505af1158015610b85573d6000803e3d6000fd5b505050506040513d6020811015610b9b57600080fd5b81019080805190602001909291905050501515610bb757600080fd5b5050505050565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610c1657600080fd5b60046000826000191660001916815260200190815260200160002060009054906101000a900460ff16151515610c4b57600080fd5b600160056000836000191660001916815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610d1b57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610d4157600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060008090505b600280549050811015610e77576005600085600019166000191681526020019081526020016000206000600283815481101515610dc657fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610e475781806001019250505b600160149054906101000a900460ff1660ff16821415610e6a5760019250610e7c565b8080600101915050610d8d565b600092505b5050919050565b6040805190810160405280601681526020017f536f6369616c205265636f76657279204d6f64756c650000000000000000000081525081565b6000816040518082805190602001908083835b602083101515610ef45780518252602082019150602081019050602083039250610ecf565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209050919050565b60056020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b600281815481101515610f6657fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60046020528060005260406000206000915054906101000a900460ff1681565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561103557600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b8280548282559060005260206000209081019282156110f1579160200282015b828111156110f05782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190611098565b5b5090506110fe9190611102565b5090565b61114291905b8082111561113e57600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101611108565b5090565b905600a165627a7a7230582016bbe219e7ccae5c600c8f48a1fc8b74cff478e1cbbcf8be80a150f855d6eb800029", + "sourceMap": "306:3426:18:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;306:3426:18;;;;;;;", + "deployedSourceMap": "306:3426:18:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1175:494;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1175:494:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;460:22;;8:9:-1;5:2;;;30:1;27;20:12;5:2;460:22:18;;;;;;;;;;;;;;;;;;;;;;;;;;;262:28:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;262:28:7;;;;;;;;;;;;;;;;;;;;;;;;;;;583:41:18;;8:9:-1;5:2;;;30:1;27;20:12;5:2;583:41:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2296:609;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2296:609:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1782:181;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1782:181:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;626:208:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:208:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;3066:405:18;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3066:405:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;353:54;;8:9:-1;5:2;;;30:1;27;20:12;5:2;353:54:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;353:54:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3600:130;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3600:130:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;827:65;;8:9:-1;5:2;;;30:1;27;20:12;5:2;827:65:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;488:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;488:24:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;692:43;;8:9:-1;5:2;;;30:1;27;20:12;5:2;692:43:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;413:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;413:40:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;413:40:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1175:494;1398:9;1453:14;1279:8;:15;1265:10;:29;;;;1257:38;;;;;;;;1327:1;1313:10;:15;;;;1305:24;;;;;;;;1339:12;:10;:12::i;:::-;1410:1;1398:13;;1393:210;1417:8;:15;1413:1;:19;1393:210;;;1470:8;1479:1;1470:11;;;;;;;;;;;;;;;;;;1453:28;;1513:1;1503:6;:11;;;;1495:20;;;;;;;;1538:8;:16;1547:6;1538:16;;;;;;;;;;;;;;;;;;;;;;;;;1537:17;1529:26;;;;;;;;1588:4;1569:8;:16;1578:6;1569:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;1434:3;;;;;;;1393:210;;;1622:8;1612:7;:18;;;;;;;;;;;;:::i;:::-;;1652:10;1640:9;;:22;;;;;;;;;;;;;;;;;;1175:494;;;;:::o;460:22::-;;;;;;;;;;;;;:::o;262:28:7:-;;;;;;;;;;;;;:::o;583:41:18:-;;;;;;;;;;;;;;;;;;;;;;:::o;2296:609::-;2506:17;2628:16;2475:8;:20;2484:10;2475:20;;;;;;;;;;;;;;;;;;;;;;;;;2467:29;;;;;;;;2588:9;2599:8;2609;2526:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2526:92:18;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;2526:92:18;2506:112;;2647:17;2659:4;2647:11;:17::i;:::-;2628:36;;2683:10;:20;2694:8;2683:20;;;;;;;;;;;;;;;;;;;;;;;;;;;2682:21;2674:30;;;;;;;;2722:38;2751:8;2722:28;:38::i;:::-;2714:47;;;;;;;;2794:4;2771:10;:20;2782:8;2771:20;;;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;2816:7;;;;;;;;;;;:33;;;2858:7;;;;;;;;;;;2868:1;2871:4;2877:19;2816:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;2816:81:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2816:81:18;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2816:81:18;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2816:81:18;;;;;;;;;;;;;;;;2808:90;;;;;;;;2296:609;;;;;:::o;1782:181::-;939:8;:20;948:10;939:20;;;;;;;;;;;;;;;;;;;;;;;;;931:29;;;;;;;;1885:10;:20;1896:8;1885:20;;;;;;;;;;;;;;;;;;;;;;;;;;;1884:21;1876:30;;;;;;;;1952:4;1916:11;:21;1928:8;1916:21;;;;;;;;;;;;;;;;;:33;1938:10;1916:33;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;1782:181;:::o;626:208:5:-;359:7:7;;;;;;;;;;;337:30;;:10;:30;;;329:39;;;;;;;;791:1:5;776:11;:16;;;;768:25;;;;;;;;816:11;803:10;;:24;;;;;;;;;;;;;;;;;;626:208;:::o;3066:405:18:-;3167:4;3187:25;3227:9;3239:1;3227:13;;3222:221;3246:7;:14;;;;3242:1;:18;3222:221;;;3285:11;:21;3297:8;3285:21;;;;;;;;;;;;;;;;;:33;3307:7;3315:1;3307:10;;;;;;;;;;;;;;;;;;;;;;;;;;;3285:33;;;;;;;;;;;;;;;;;;;;;;;;;3281:74;;;3336:19;;;;;;;3281:74;3394:9;;;;;;;;;;;3373:30;;:17;:30;3369:63;;;3428:4;3421:11;;;;3369:63;3262:3;;;;;;;3222:221;;;3459:5;3452:12;;3066:405;;;;;;:::o;353:54::-;;;;;;;;;;;;;;;;;;;;:::o;3600:130::-;3678:7;3718:4;3708:15;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;3708:15:18;;;;;;;;;;;;;;;;3701:22;;3600:130;;;:::o;827:65::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;488:24::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;692:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;413:40::-;;;;;;;;;;;;;;;;;;;;:::o;392:268:7:-;606:1;594:7;;;;;;;;;;;586:21;;;578:30;;;;;;;;642:10;618:7;;:35;;;;;;;;;;;;;;;;;;392:268::o;306:3426:18:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", + "source": "pragma solidity 0.4.24;\nimport \"../Enum.sol\";\nimport \"../Module.sol\";\nimport \"../ModuleManager.sol\";\nimport \"../OwnerManager.sol\";\n\n\n/// @title Social Recovery Module - Allows to replace an owner without Safe confirmations if friends approve the replacement.\n/// @author Stefan George - \ncontract SocialRecoveryModule is Module {\n\n string public constant NAME = \"Social Recovery Module\";\n string public constant VERSION = \"0.0.1\";\n\n uint8 public threshold;\n address[] public friends;\n\n // isFriend mapping maps friend's address to friend status.\n mapping (address => bool) public isFriend;\n // isExecuted mapping maps data hash to execution status.\n mapping (bytes32 => bool) public isExecuted;\n // isConfirmed mapping maps data hash to friend's address to confirmation status.\n mapping (bytes32 => mapping (address => bool)) public isConfirmed;\n\n modifier onlyFriend() {\n require(isFriend[msg.sender]);\n _;\n }\n\n /// @dev Setup function sets initial storage of contract.\n /// @param _friends List of friends' addresses.\n /// @param _threshold Required number of friends to confirm replacement.\n function setup(address[] _friends, uint8 _threshold)\n public\n {\n require(_threshold <= _friends.length);\n require(_threshold >= 2);\n setManager();\n // Set allowed friends.\n for (uint256 i = 0; i < _friends.length; i++) {\n address friend = _friends[i];\n require(friend != 0);\n require(!isFriend[friend]);\n isFriend[friend] = true;\n }\n friends = _friends;\n threshold = _threshold;\n }\n\n /// @dev Allows a friend to confirm a Safe transaction.\n /// @param dataHash Safe transaction hash.\n function confirmTransaction(bytes32 dataHash)\n public\n onlyFriend\n {\n require(!isExecuted[dataHash]);\n isConfirmed[dataHash][msg.sender] = true;\n }\n\n /// @dev Returns if Safe transaction is a valid owner replacement transaction.\n /// @param prevOwner Owner that pointed to the owner to be replaced in the linked list\n /// @param oldOwner Owner address to be replaced.\n /// @param newOwner New owner address.\n /// @return Returns if transaction can be executed.\n function recoverAccess(address prevOwner, address oldOwner, address newOwner)\n public\n {\n // Only friends are allowed to execute the replacement.\n require(isFriend[msg.sender]);\n bytes memory data = abi.encodeWithSignature(\"swapOwner(address,address,address)\", prevOwner, oldOwner, newOwner);\n bytes32 dataHash = getDataHash(data);\n require(!isExecuted[dataHash]);\n require(isConfirmedByRequiredFriends(dataHash));\n isExecuted[dataHash] = true;\n require(manager.execTransactionFromModule(address(manager), 0, data, Enum.Operation.Call));\n }\n\n /// @dev Returns if Safe transaction is a valid owner replacement transaction.\n /// @param dataHash Data hash.\n /// @return Confirmation status.\n function isConfirmedByRequiredFriends(bytes32 dataHash)\n public\n view\n returns (bool)\n {\n uint256 confirmationCount;\n for (uint256 i = 0; i < friends.length; i++) {\n if (isConfirmed[dataHash][friends[i]])\n confirmationCount++;\n if (confirmationCount == threshold)\n return true;\n }\n return false;\n }\n\n /// @dev Returns hash of data encoding owner replacement.\n /// @param data Data payload.\n /// @return Data hash.\n function getDataHash(bytes data)\n public\n pure\n returns (bytes32)\n {\n return keccak256(data);\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/SocialRecoveryModule.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/SocialRecoveryModule.sol", "exportedSymbols": { "SocialRecoveryModule": [ - 2035 + 2234 ] }, - "id": 2036, + "id": 2235, "nodeType": "SourceUnit", "nodes": [ { - "id": 1777, + "id": 1975, "literals": [ "solidity", "0.4", - ".23" + ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:12" + "src": "0:23:18" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Enum.sol", "file": "../Enum.sol", - "id": 1778, + "id": 1976, "nodeType": "ImportDirective", - "scope": 2036, - "sourceUnit": 7, - "src": "24:21:12", + "scope": 2235, + "sourceUnit": 31, + "src": "24:21:18", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "file": "../Module.sol", - "id": 1779, + "id": 1977, "nodeType": "ImportDirective", - "scope": 2036, - "sourceUnit": 622, - "src": "46:23:12", + "scope": 2235, + "sourceUnit": 751, + "src": "46:23:18", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ModuleManager.sol", "file": "../ModuleManager.sol", - "id": 1780, + "id": 1978, "nodeType": "ImportDirective", - "scope": 2036, - "sourceUnit": 972, - "src": "70:30:12", + "scope": 2235, + "sourceUnit": 1101, + "src": "70:30:18", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", "file": "../OwnerManager.sol", - "id": 1781, + "id": 1979, "nodeType": "ImportDirective", - "scope": 2036, - "sourceUnit": 1344, - "src": "101:29:12", + "scope": 2235, + "sourceUnit": 1473, + "src": "101:29:18", "symbolAliases": [], "unitAlias": "" }, @@ -326,46 +320,46 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 1782, + "id": 1980, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 621, - "src": "339:6:12", + "referencedDeclaration": 750, + "src": "339:6:18", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } }, - "id": 1783, + "id": 1981, "nodeType": "InheritanceSpecifier", - "src": "339:6:12" + "src": "339:6:18" } ], "contractDependencies": [ - 580, - 621, - 1359 + 652, + 750, + 1619 ], "contractKind": "contract", "documentation": "@title Social Recovery Module - Allows to replace an owner without Safe confirmations if friends approve the replacement.\n @author Stefan George - ", "fullyImplemented": true, - "id": 2035, + "id": 2234, "linearizedBaseContracts": [ - 2035, - 621, - 580, - 1359 + 2234, + 750, + 652, + 1619 ], "name": "SocialRecoveryModule", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, - "id": 1786, + "id": 1984, "name": "NAME", "nodeType": "VariableDeclaration", - "scope": 2035, - "src": "353:54:12", + "scope": 2234, + "src": "353:54:18", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -373,10 +367,10 @@ "typeString": "string" }, "typeName": { - "id": 1784, + "id": 1982, "name": "string", "nodeType": "ElementaryTypeName", - "src": "353:6:12", + "src": "353:6:18", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -385,14 +379,14 @@ "value": { "argumentTypes": null, "hexValue": "536f6369616c205265636f76657279204d6f64756c65", - "id": 1785, + "id": 1983, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "383:24:12", + "src": "383:24:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_8f499aea563eae5544b16c9123d6c7c8537a7d9dd86296aa60c65de194207230", @@ -404,11 +398,11 @@ }, { "constant": true, - "id": 1789, + "id": 1987, "name": "VERSION", "nodeType": "VariableDeclaration", - "scope": 2035, - "src": "413:40:12", + "scope": 2234, + "src": "413:40:18", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -416,10 +410,10 @@ "typeString": "string" }, "typeName": { - "id": 1787, + "id": 1985, "name": "string", "nodeType": "ElementaryTypeName", - "src": "413:6:12", + "src": "413:6:18", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -428,14 +422,14 @@ "value": { "argumentTypes": null, "hexValue": "302e302e31", - "id": 1788, + "id": 1986, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "446:7:12", + "src": "446:7:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", @@ -445,56 +439,13 @@ }, "visibility": "public" }, - { - "constant": true, - "id": 1792, - "name": "REPLACE_OWNER_FUNCTION_IDENTIFIER", - "nodeType": "VariableDeclaration", - "scope": 2035, - "src": "459:72:12", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - "typeName": { - "id": 1790, - "name": "bytes4", - "nodeType": "ElementaryTypeName", - "src": "459:6:12", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "value": { - "argumentTypes": null, - "hexValue": "e318b52b", - "id": 1791, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "518:13:12", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_df42753442dae44b262788763363a184bfb8d0df593d5073d67844ce4b3a2d8b", - "typeString": "literal_string (contains invalid UTF-8 sequence at position 2)" - }, - "value": null - }, - "visibility": "public" - }, { "constant": false, - "id": 1794, + "id": 1989, "name": "threshold", "nodeType": "VariableDeclaration", - "scope": 2035, - "src": "538:22:12", + "scope": 2234, + "src": "460:22:18", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -502,10 +453,10 @@ "typeString": "uint8" }, "typeName": { - "id": 1793, + "id": 1988, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "538:5:12", + "src": "460:5:18", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -516,11 +467,11 @@ }, { "constant": false, - "id": 1797, + "id": 1992, "name": "friends", "nodeType": "VariableDeclaration", - "scope": 2035, - "src": "566:24:12", + "scope": 2234, + "src": "488:24:18", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -529,19 +480,19 @@ }, "typeName": { "baseType": { - "id": 1795, + "id": 1990, "name": "address", "nodeType": "ElementaryTypeName", - "src": "566:7:12", + "src": "488:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1796, + "id": 1991, "length": null, "nodeType": "ArrayTypeName", - "src": "566:9:12", + "src": "488:9:18", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -552,11 +503,11 @@ }, { "constant": false, - "id": 1801, + "id": 1996, "name": "isFriend", "nodeType": "VariableDeclaration", - "scope": 2035, - "src": "661:41:12", + "scope": 2234, + "src": "583:41:18", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -564,28 +515,28 @@ "typeString": "mapping(address => bool)" }, "typeName": { - "id": 1800, + "id": 1995, "keyType": { - "id": 1798, + "id": 1993, "name": "address", "nodeType": "ElementaryTypeName", - "src": "670:7:12", + "src": "592:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "661:25:12", + "src": "583:25:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" }, "valueType": { - "id": 1799, + "id": 1994, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "681:4:12", + "src": "603:4:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -597,11 +548,11 @@ }, { "constant": false, - "id": 1805, + "id": 2000, "name": "isExecuted", "nodeType": "VariableDeclaration", - "scope": 2035, - "src": "770:43:12", + "scope": 2234, + "src": "692:43:18", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -609,28 +560,28 @@ "typeString": "mapping(bytes32 => bool)" }, "typeName": { - "id": 1804, + "id": 1999, "keyType": { - "id": 1802, + "id": 1997, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "779:7:12", + "src": "701:7:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "Mapping", - "src": "770:25:12", + "src": "692:25:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" }, "valueType": { - "id": 1803, + "id": 1998, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "790:4:12", + "src": "712:4:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -642,11 +593,11 @@ }, { "constant": false, - "id": 1811, + "id": 2006, "name": "isConfirmed", "nodeType": "VariableDeclaration", - "scope": 2035, - "src": "905:65:12", + "scope": 2234, + "src": "827:65:18", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -654,46 +605,46 @@ "typeString": "mapping(bytes32 => mapping(address => bool))" }, "typeName": { - "id": 1810, + "id": 2005, "keyType": { - "id": 1806, + "id": 2001, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "914:7:12", + "src": "836:7:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "Mapping", - "src": "905:46:12", + "src": "827:46:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(bytes32 => mapping(address => bool))" }, "valueType": { - "id": 1809, + "id": 2004, "keyType": { - "id": 1807, + "id": 2002, "name": "address", "nodeType": "ElementaryTypeName", - "src": "934:7:12", + "src": "856:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "925:25:12", + "src": "847:25:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" }, "valueType": { - "id": 1808, + "id": 2003, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "945:4:12", + "src": "867:4:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -706,9 +657,9 @@ }, { "body": { - "id": 1821, + "id": 2016, "nodeType": "Block", - "src": "999:57:12", + "src": "921:57:18", "statements": [ { "expression": { @@ -718,34 +669,34 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1814, + "id": 2009, "name": "isFriend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1801, - "src": "1017:8:12", + "referencedDeclaration": 1996, + "src": "939:8:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 1817, + "id": 2012, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1815, + "id": 2010, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2396, - "src": "1026:3:12", + "referencedDeclaration": 2598, + "src": "948:3:18", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 1816, + "id": 2011, "isConstant": false, "isLValue": false, "isPure": false, @@ -753,7 +704,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1026:10:12", + "src": "948:10:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -764,7 +715,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1017:20:12", + "src": "939:20:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -778,21 +729,21 @@ "typeString": "bool" } ], - "id": 1813, + "id": 2008, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "1009:7:12", + "referencedDeclaration": 2601, + "src": "931:7:18", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1818, + "id": 2013, "isConstant": false, "isLValue": false, "isPure": false, @@ -800,41 +751,41 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1009:29:12", + "src": "931:29:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1819, + "id": 2014, "nodeType": "ExpressionStatement", - "src": "1009:29:12" + "src": "931:29:18" }, { - "id": 1820, + "id": 2015, "nodeType": "PlaceholderStatement", - "src": "1048:1:12" + "src": "970:1:18" } ] }, "documentation": null, - "id": 1822, + "id": 2017, "name": "onlyFriend", "nodeType": "ModifierDefinition", "parameters": { - "id": 1812, + "id": 2007, "nodeType": "ParameterList", "parameters": [], - "src": "996:2:12" + "src": "918:2:18" }, - "src": "977:79:12", + "src": "899:79:18", "visibility": "internal" }, { "body": { - "id": 1892, + "id": 2087, "nodeType": "Block", - "src": "1325:422:12", + "src": "1247:422:18", "statements": [ { "expression": { @@ -846,19 +797,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1834, + "id": 2029, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1831, + "id": 2026, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1827, - "src": "1343:10:12", + "referencedDeclaration": 2022, + "src": "1265:10:18", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -870,18 +821,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1832, + "id": 2027, "name": "_friends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1825, - "src": "1357:8:12", + "referencedDeclaration": 2020, + "src": "1279:8:18", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1833, + "id": 2028, "isConstant": false, "isLValue": false, "isPure": false, @@ -889,13 +840,13 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1357:15:12", + "src": "1279:15:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1343:29:12", + "src": "1265:29:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -909,21 +860,21 @@ "typeString": "bool" } ], - "id": 1830, + "id": 2025, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "1335:7:12", + "referencedDeclaration": 2601, + "src": "1257:7:18", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1835, + "id": 2030, "isConstant": false, "isLValue": false, "isPure": false, @@ -931,15 +882,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1335:38:12", + "src": "1257:38:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1836, + "id": 2031, "nodeType": "ExpressionStatement", - "src": "1335:38:12" + "src": "1257:38:18" }, { "expression": { @@ -951,19 +902,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 1840, + "id": 2035, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1838, + "id": 2033, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1827, - "src": "1391:10:12", + "referencedDeclaration": 2022, + "src": "1313:10:18", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -974,14 +925,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "32", - "id": 1839, + "id": 2034, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1405:1:12", + "src": "1327:1:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", @@ -989,7 +940,7 @@ }, "value": "2" }, - "src": "1391:15:12", + "src": "1313:15:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1003,21 +954,21 @@ "typeString": "bool" } ], - "id": 1837, + "id": 2032, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "1383:7:12", + "referencedDeclaration": 2601, + "src": "1305:7:18", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1841, + "id": 2036, "isConstant": false, "isLValue": false, "isPure": false, @@ -1025,15 +976,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1383:24:12", + "src": "1305:24:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1842, + "id": 2037, "nodeType": "ExpressionStatement", - "src": "1383:24:12" + "src": "1305:24:18" }, { "expression": { @@ -1041,18 +992,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 1843, + "id": 2038, "name": "setManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 620, - "src": "1417:10:12", + "referencedDeclaration": 749, + "src": "1339:10:18", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 1844, + "id": 2039, "isConstant": false, "isLValue": false, "isPure": false, @@ -1060,34 +1011,34 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1417:12:12", + "src": "1339:12:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1845, + "id": 2040, "nodeType": "ExpressionStatement", - "src": "1417:12:12" + "src": "1339:12:18" }, { "body": { - "id": 1882, + "id": 2077, "nodeType": "Block", - "src": "1517:164:12", + "src": "1439:164:18", "statements": [ { "assignments": [ - 1858 + 2053 ], "declarations": [ { "constant": false, - "id": 1858, + "id": 2053, "name": "friend", "nodeType": "VariableDeclaration", - "scope": 1893, - "src": "1531:14:12", + "scope": 2088, + "src": "1453:14:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1095,10 +1046,10 @@ "typeString": "address" }, "typeName": { - "id": 1857, + "id": 2052, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1531:7:12", + "src": "1453:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1108,31 +1059,31 @@ "visibility": "internal" } ], - "id": 1862, + "id": 2057, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1859, + "id": 2054, "name": "_friends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1825, - "src": "1548:8:12", + "referencedDeclaration": 2020, + "src": "1470:8:18", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1861, + "id": 2056, "indexExpression": { "argumentTypes": null, - "id": 1860, + "id": 2055, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1847, - "src": "1557:1:12", + "referencedDeclaration": 2042, + "src": "1479:1:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1143,14 +1094,14 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1548:11:12", + "src": "1470:11:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "1531:28:12" + "src": "1453:28:18" }, { "expression": { @@ -1162,19 +1113,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1866, + "id": 2061, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1864, + "id": 2059, "name": "friend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1858, - "src": "1581:6:12", + "referencedDeclaration": 2053, + "src": "1503:6:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1185,14 +1136,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1865, + "id": 2060, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1591:1:12", + "src": "1513:1:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1200,7 +1151,7 @@ }, "value": "0" }, - "src": "1581:11:12", + "src": "1503:11:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1214,21 +1165,21 @@ "typeString": "bool" } ], - "id": 1863, + "id": 2058, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "1573:7:12", + "referencedDeclaration": 2601, + "src": "1495:7:18", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1867, + "id": 2062, "isConstant": false, "isLValue": false, "isPure": false, @@ -1236,15 +1187,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1573:20:12", + "src": "1495:20:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1868, + "id": 2063, "nodeType": "ExpressionStatement", - "src": "1573:20:12" + "src": "1495:20:18" }, { "expression": { @@ -1252,7 +1203,7 @@ "arguments": [ { "argumentTypes": null, - "id": 1873, + "id": 2068, "isConstant": false, "isLValue": false, "isPure": false, @@ -1260,31 +1211,31 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "1615:17:12", + "src": "1537:17:18", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1870, + "id": 2065, "name": "isFriend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1801, - "src": "1616:8:12", + "referencedDeclaration": 1996, + "src": "1538:8:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 1872, + "id": 2067, "indexExpression": { "argumentTypes": null, - "id": 1871, + "id": 2066, "name": "friend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1858, - "src": "1625:6:12", + "referencedDeclaration": 2053, + "src": "1547:6:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1295,7 +1246,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1616:16:12", + "src": "1538:16:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1314,21 +1265,21 @@ "typeString": "bool" } ], - "id": 1869, + "id": 2064, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "1607:7:12", + "referencedDeclaration": 2601, + "src": "1529:7:18", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1874, + "id": 2069, "isConstant": false, "isLValue": false, "isPure": false, @@ -1336,20 +1287,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1607:26:12", + "src": "1529:26:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1875, + "id": 2070, "nodeType": "ExpressionStatement", - "src": "1607:26:12" + "src": "1529:26:18" }, { "expression": { "argumentTypes": null, - "id": 1880, + "id": 2075, "isConstant": false, "isLValue": false, "isPure": false, @@ -1358,26 +1309,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1876, + "id": 2071, "name": "isFriend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1801, - "src": "1647:8:12", + "referencedDeclaration": 1996, + "src": "1569:8:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 1878, + "id": 2073, "indexExpression": { "argumentTypes": null, - "id": 1877, + "id": 2072, "name": "friend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1858, - "src": "1656:6:12", + "referencedDeclaration": 2053, + "src": "1578:6:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1388,7 +1339,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1647:16:12", + "src": "1569:16:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1399,14 +1350,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 1879, + "id": 2074, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "1666:4:12", + "src": "1588:4:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -1414,15 +1365,15 @@ }, "value": "true" }, - "src": "1647:23:12", + "src": "1569:23:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 1881, + "id": 2076, "nodeType": "ExpressionStatement", - "src": "1647:23:12" + "src": "1569:23:18" } ] }, @@ -1432,19 +1383,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1853, + "id": 2048, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1850, + "id": 2045, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1847, - "src": "1491:1:12", + "referencedDeclaration": 2042, + "src": "1413:1:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1456,18 +1407,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1851, + "id": 2046, "name": "_friends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1825, - "src": "1495:8:12", + "referencedDeclaration": 2020, + "src": "1417:8:18", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1852, + "id": 2047, "isConstant": false, "isLValue": false, "isPure": false, @@ -1475,31 +1426,31 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1495:15:12", + "src": "1417:15:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1491:19:12", + "src": "1413:19:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 1883, + "id": 2078, "initializationExpression": { "assignments": [ - 1847 + 2042 ], "declarations": [ { "constant": false, - "id": 1847, + "id": 2042, "name": "i", "nodeType": "VariableDeclaration", - "scope": 1893, - "src": "1476:9:12", + "scope": 2088, + "src": "1398:9:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1507,10 +1458,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1846, + "id": 2041, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1476:7:12", + "src": "1398:7:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1520,18 +1471,18 @@ "visibility": "internal" } ], - "id": 1849, + "id": 2044, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 1848, + "id": 2043, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1488:1:12", + "src": "1410:1:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1540,12 +1491,12 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "1476:13:12" + "src": "1398:13:18" }, "loopExpression": { "expression": { "argumentTypes": null, - "id": 1855, + "id": 2050, "isConstant": false, "isLValue": false, "isPure": false, @@ -1553,15 +1504,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "1512:3:12", + "src": "1434:3:18", "subExpression": { "argumentTypes": null, - "id": 1854, + "id": 2049, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1847, - "src": "1512:1:12", + "referencedDeclaration": 2042, + "src": "1434:1:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1572,29 +1523,29 @@ "typeString": "uint256" } }, - "id": 1856, + "id": 2051, "nodeType": "ExpressionStatement", - "src": "1512:3:12" + "src": "1434:3:18" }, "nodeType": "ForStatement", - "src": "1471:210:12" + "src": "1393:210:18" }, { "expression": { "argumentTypes": null, - "id": 1886, + "id": 2081, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1884, + "id": 2079, "name": "friends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1797, - "src": "1690:7:12", + "referencedDeclaration": 1992, + "src": "1612:7:18", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" @@ -1604,43 +1555,43 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1885, + "id": 2080, "name": "_friends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1825, - "src": "1700:8:12", + "referencedDeclaration": 2020, + "src": "1622:8:18", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "src": "1690:18:12", + "src": "1612:18:18", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 1887, + "id": 2082, "nodeType": "ExpressionStatement", - "src": "1690:18:12" + "src": "1612:18:18" }, { "expression": { "argumentTypes": null, - "id": 1890, + "id": 2085, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1888, + "id": 2083, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1794, - "src": "1718:9:12", + "referencedDeclaration": 1989, + "src": "1640:9:18", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -1650,31 +1601,31 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1889, + "id": 2084, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1827, - "src": "1730:10:12", + "referencedDeclaration": 2022, + "src": "1652:10:18", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "1718:22:12", + "src": "1640:22:18", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "id": 1891, + "id": 2086, "nodeType": "ExpressionStatement", - "src": "1718:22:12" + "src": "1640:22:18" } ] }, "documentation": "@dev Setup function sets initial storage of contract.\n @param _friends List of friends' addresses.\n @param _threshold Required number of friends to confirm replacement.", - "id": 1893, + "id": 2088, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -1682,16 +1633,16 @@ "name": "setup", "nodeType": "FunctionDefinition", "parameters": { - "id": 1828, + "id": 2023, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1825, + "id": 2020, "name": "_friends", "nodeType": "VariableDeclaration", - "scope": 1893, - "src": "1268:18:12", + "scope": 2088, + "src": "1190:18:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1700,19 +1651,19 @@ }, "typeName": { "baseType": { - "id": 1823, + "id": 2018, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1268:7:12", + "src": "1190:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1824, + "id": 2019, "length": null, "nodeType": "ArrayTypeName", - "src": "1268:9:12", + "src": "1190:9:18", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -1723,11 +1674,11 @@ }, { "constant": false, - "id": 1827, + "id": 2022, "name": "_threshold", "nodeType": "VariableDeclaration", - "scope": 1893, - "src": "1288:16:12", + "scope": 2088, + "src": "1210:16:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1735,10 +1686,10 @@ "typeString": "uint8" }, "typeName": { - "id": 1826, + "id": 2021, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "1288:5:12", + "src": "1210:5:18", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -1748,26 +1699,26 @@ "visibility": "internal" } ], - "src": "1267:38:12" + "src": "1189:38:18" }, "payable": false, "returnParameters": { - "id": 1829, + "id": 2024, "nodeType": "ParameterList", "parameters": [], - "src": "1325:0:12" + "src": "1247:0:18" }, - "scope": 2035, - "src": "1253:494:12", + "scope": 2234, + "src": "1175:494:18", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1916, + "id": 2111, "nodeType": "Block", - "src": "1944:97:12", + "src": "1866:97:18", "statements": [ { "expression": { @@ -1775,7 +1726,7 @@ "arguments": [ { "argumentTypes": null, - "id": 1904, + "id": 2099, "isConstant": false, "isLValue": false, "isPure": false, @@ -1783,31 +1734,31 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "1962:21:12", + "src": "1884:21:18", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1901, + "id": 2096, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1805, - "src": "1963:10:12", + "referencedDeclaration": 2000, + "src": "1885:10:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 1903, + "id": 2098, "indexExpression": { "argumentTypes": null, - "id": 1902, + "id": 2097, "name": "dataHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1895, - "src": "1974:8:12", + "referencedDeclaration": 2090, + "src": "1896:8:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1818,7 +1769,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1963:20:12", + "src": "1885:20:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1837,21 +1788,21 @@ "typeString": "bool" } ], - "id": 1900, + "id": 2095, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "1954:7:12", + "referencedDeclaration": 2601, + "src": "1876:7:18", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1905, + "id": 2100, "isConstant": false, "isLValue": false, "isPure": false, @@ -1859,20 +1810,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1954:30:12", + "src": "1876:30:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1906, + "id": 2101, "nodeType": "ExpressionStatement", - "src": "1954:30:12" + "src": "1876:30:18" }, { "expression": { "argumentTypes": null, - "id": 1914, + "id": 2109, "isConstant": false, "isLValue": false, "isPure": false, @@ -1883,26 +1834,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1907, + "id": 2102, "name": "isConfirmed", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1811, - "src": "1994:11:12", + "referencedDeclaration": 2006, + "src": "1916:11:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(bytes32 => mapping(address => bool))" } }, - "id": 1911, + "id": 2106, "indexExpression": { "argumentTypes": null, - "id": 1908, + "id": 2103, "name": "dataHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1895, - "src": "2006:8:12", + "referencedDeclaration": 2090, + "src": "1928:8:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1913,29 +1864,29 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1994:21:12", + "src": "1916:21:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 1912, + "id": 2107, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1909, + "id": 2104, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2396, - "src": "2016:3:12", + "referencedDeclaration": 2598, + "src": "1938:3:18", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 1910, + "id": 2105, "isConstant": false, "isLValue": false, "isPure": false, @@ -1943,7 +1894,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2016:10:12", + "src": "1938:10:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1954,7 +1905,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1994:33:12", + "src": "1916:33:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1965,14 +1916,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 1913, + "id": 2108, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "2030:4:12", + "src": "1952:4:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -1980,57 +1931,57 @@ }, "value": "true" }, - "src": "1994:40:12", + "src": "1916:40:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 1915, + "id": 2110, "nodeType": "ExpressionStatement", - "src": "1994:40:12" + "src": "1916:40:18" } ] }, "documentation": "@dev Allows a friend to confirm a Safe transaction.\n @param dataHash Safe transaction hash.", - "id": 1917, + "id": 2112, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 1898, + "id": 2093, "modifierName": { "argumentTypes": null, - "id": 1897, + "id": 2092, "name": "onlyFriend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1822, - "src": "1929:10:12", + "referencedDeclaration": 2017, + "src": "1851:10:18", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1929:10:12" + "src": "1851:10:18" } ], "name": "confirmTransaction", "nodeType": "FunctionDefinition", "parameters": { - "id": 1896, + "id": 2091, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1895, + "id": 2090, "name": "dataHash", "nodeType": "VariableDeclaration", - "scope": 1917, - "src": "1888:16:12", + "scope": 2112, + "src": "1810:16:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2038,10 +1989,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 1894, + "id": 2089, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1888:7:12", + "src": "1810:7:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2051,26 +2002,26 @@ "visibility": "internal" } ], - "src": "1887:18:12" + "src": "1809:18:18" }, "payable": false, "returnParameters": { - "id": 1899, + "id": 2094, "nodeType": "ParameterList", "parameters": [], - "src": "1944:0:12" + "src": "1866:0:18" }, - "scope": 2035, - "src": "1860:181:12", + "scope": 2234, + "src": "1782:181:18", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1978, + "id": 2177, "nodeType": "Block", - "src": "2299:722:12", + "src": "2393:512:18", "statements": [ { "expression": { @@ -2080,34 +2031,34 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1923, + "id": 2122, "name": "isFriend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1801, - "src": "2381:8:12", + "referencedDeclaration": 1996, + "src": "2475:8:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 1926, + "id": 2125, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1924, + "id": 2123, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2396, - "src": "2390:3:12", + "referencedDeclaration": 2598, + "src": "2484:3:18", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 1925, + "id": 2124, "isConstant": false, "isLValue": false, "isPure": false, @@ -2115,7 +2066,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2390:10:12", + "src": "2484:10:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2126,7 +2077,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2381:20:12", + "src": "2475:20:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2140,21 +2091,21 @@ "typeString": "bool" } ], - "id": 1922, + "id": 2121, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "2373:7:12", + "referencedDeclaration": 2601, + "src": "2467:7:18", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1927, + "id": 2126, "isConstant": false, "isLValue": false, "isPure": false, @@ -2162,149 +2113,157 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2373:29:12", + "src": "2467:29:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1928, + "id": 2127, "nodeType": "ExpressionStatement", - "src": "2373:29:12" + "src": "2467:29:18" }, { - "assignments": [], + "assignments": [ + 2129 + ], "declarations": [ { "constant": false, - "id": 1930, - "name": "functionIdentifier", + "id": 2129, + "name": "data", "nodeType": "VariableDeclaration", - "scope": 1979, - "src": "2485:25:12", + "scope": 2178, + "src": "2506:17:18", "stateVariable": false, - "storageLocation": "default", + "storageLocation": "memory", "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" }, "typeName": { - "id": 1929, - "name": "bytes4", + "id": 2128, + "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "2485:6:12", + "src": "2506:5:18", "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" } }, "value": null, "visibility": "internal" } ], - "id": 1931, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "2485:25:12" - }, - { - "externalReferences": [ - { - "functionIdentifier": { - "declaration": 1930, - "isOffset": false, - "isSlot": false, - "src": "2607:18:12", - "valueSize": 1 - } - }, - { - "data": { - "declaration": 1919, - "isOffset": false, - "isSlot": false, - "src": "2639:4:12", - "valueSize": 1 - } - } - ], - "id": 1932, - "nodeType": "InlineAssembly", - "operations": "{\n functionIdentifier := mload(add(data, 0x20))\n}", - "src": "2584:93:12" - }, - { - "expression": { + "id": 2137, + "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - "id": 1936, + "hexValue": "737761704f776e657228616464726573732c616464726573732c6164647265737329", + "id": 2132, "isConstant": false, "isLValue": false, - "isPure": false, + "isPure": true, + "kind": "string", "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1934, - "name": "functionIdentifier", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1930, - "src": "2678:18:12", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 1935, - "name": "REPLACE_OWNER_FUNCTION_IDENTIFIER", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1792, - "src": "2700:33:12", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } + "nodeType": "Literal", + "src": "2550:36:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e318b52b9bee2870ac7ee0af86866eb2e8f9569b34de6028eb487e7983ba6df8", + "typeString": "literal_string \"swapOwner(address,address,address)\"" }, - "src": "2678:55:12", + "value": "swapOwner(address,address,address)" + }, + { + "argumentTypes": null, + "id": 2133, + "name": "prevOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2114, + "src": "2588:9:18", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2134, + "name": "oldOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2116, + "src": "2599:8:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2135, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2118, + "src": "2609:8:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } } ], "expression": { "argumentTypes": [ { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_stringliteral_e318b52b9bee2870ac7ee0af86866eb2e8f9569b34de6028eb487e7983ba6df8", + "typeString": "literal_string \"swapOwner(address,address,address)\"" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" } ], - "id": 1933, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 2399, - 2400 - ], - "referencedDeclaration": 2399, - "src": "2670:7:12", + "expression": { + "argumentTypes": null, + "id": 2130, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2585, + "src": "2526:3:18", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 2131, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodeWithSignature", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2526:23:18", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (string memory) pure returns (bytes memory)" } }, - "id": 1937, + "id": 2136, "isConstant": false, "isLValue": false, "isPure": false, @@ -2312,28 +2271,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2670:64:12", + "src": "2526:92:18", "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" } }, - "id": 1938, - "nodeType": "ExpressionStatement", - "src": "2670:64:12" + "nodeType": "VariableDeclarationStatement", + "src": "2506:112:18" }, { "assignments": [ - 1940 + 2139 ], "declarations": [ { "constant": false, - "id": 1940, + "id": 2139, "name": "dataHash", "nodeType": "VariableDeclaration", - "scope": 1979, - "src": "2744:16:12", + "scope": 2178, + "src": "2628:16:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2341,10 +2299,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 1939, + "id": 2138, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "2744:7:12", + "src": "2628:7:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2354,18 +2312,18 @@ "visibility": "internal" } ], - "id": 1944, + "id": 2143, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 1942, + "id": 2141, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1919, - "src": "2775:4:12", + "referencedDeclaration": 2129, + "src": "2659:4:18", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -2379,18 +2337,18 @@ "typeString": "bytes memory" } ], - "id": 1941, + "id": 2140, "name": "getDataHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2034, - "src": "2763:11:12", + "referencedDeclaration": 2233, + "src": "2647:11:18", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$_t_bytes32_$", - "typeString": "function (bytes memory) view returns (bytes32)" + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" } }, - "id": 1943, + "id": 2142, "isConstant": false, "isLValue": false, "isPure": false, @@ -2398,14 +2356,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2763:17:12", + "src": "2647:17:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "VariableDeclarationStatement", - "src": "2744:36:12" + "src": "2628:36:18" }, { "expression": { @@ -2413,7 +2371,7 @@ "arguments": [ { "argumentTypes": null, - "id": 1949, + "id": 2148, "isConstant": false, "isLValue": false, "isPure": false, @@ -2421,31 +2379,31 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "2798:21:12", + "src": "2682:21:18", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1946, + "id": 2145, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1805, - "src": "2799:10:12", + "referencedDeclaration": 2000, + "src": "2683:10:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 1948, + "id": 2147, "indexExpression": { "argumentTypes": null, - "id": 1947, + "id": 2146, "name": "dataHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1940, - "src": "2810:8:12", + "referencedDeclaration": 2139, + "src": "2694:8:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2456,7 +2414,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2799:20:12", + "src": "2683:20:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2475,21 +2433,21 @@ "typeString": "bool" } ], - "id": 1945, + "id": 2144, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "2790:7:12", + "referencedDeclaration": 2601, + "src": "2674:7:18", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1950, + "id": 2149, "isConstant": false, "isLValue": false, "isPure": false, @@ -2497,15 +2455,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2790:30:12", + "src": "2674:30:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1951, + "id": 2150, "nodeType": "ExpressionStatement", - "src": "2790:30:12" + "src": "2674:30:18" }, { "expression": { @@ -2516,12 +2474,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1954, + "id": 2153, "name": "dataHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1940, - "src": "2867:8:12", + "referencedDeclaration": 2139, + "src": "2751:8:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2535,18 +2493,18 @@ "typeString": "bytes32" } ], - "id": 1953, + "id": 2152, "name": "isConfirmedByRequiredFriends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2022, - "src": "2838:28:12", + "referencedDeclaration": 2221, + "src": "2722:28:18", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$", "typeString": "function (bytes32) view returns (bool)" } }, - "id": 1955, + "id": 2154, "isConstant": false, "isLValue": false, "isPure": false, @@ -2554,7 +2512,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2838:38:12", + "src": "2722:38:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2568,21 +2526,21 @@ "typeString": "bool" } ], - "id": 1952, + "id": 2151, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "2830:7:12", + "referencedDeclaration": 2601, + "src": "2714:7:18", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1956, + "id": 2155, "isConstant": false, "isLValue": false, "isPure": false, @@ -2590,20 +2548,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2830:47:12", + "src": "2714:47:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1957, + "id": 2156, "nodeType": "ExpressionStatement", - "src": "2830:47:12" + "src": "2714:47:18" }, { "expression": { "argumentTypes": null, - "id": 1962, + "id": 2161, "isConstant": false, "isLValue": false, "isPure": false, @@ -2612,26 +2570,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1958, + "id": 2157, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1805, - "src": "2887:10:12", + "referencedDeclaration": 2000, + "src": "2771:10:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 1960, + "id": 2159, "indexExpression": { "argumentTypes": null, - "id": 1959, + "id": 2158, "name": "dataHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1940, - "src": "2898:8:12", + "referencedDeclaration": 2139, + "src": "2782:8:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2642,7 +2600,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2887:20:12", + "src": "2771:20:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2653,14 +2611,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 1961, + "id": 2160, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "2910:4:12", + "src": "2794:4:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -2668,15 +2626,15 @@ }, "value": "true" }, - "src": "2887:27:12", + "src": "2771:27:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 1963, + "id": 2162, "nodeType": "ExpressionStatement", - "src": "2887:27:12" + "src": "2771:27:18" }, { "expression": { @@ -2690,14 +2648,14 @@ "arguments": [ { "argumentTypes": null, - "id": 1968, + "id": 2167, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 588, - "src": "2974:7:12", + "referencedDeclaration": 717, + "src": "2858:7:18", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" } } @@ -2705,24 +2663,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" } ], - "id": 1967, + "id": 2166, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2966:7:12", + "src": "2850:7:18", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 1969, + "id": 2168, "isConstant": false, "isLValue": false, "isPure": false, @@ -2730,7 +2688,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2966:16:12", + "src": "2850:16:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2739,14 +2697,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 1970, + "id": 2169, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2984:1:12", + "src": "2868:1:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -2756,12 +2714,12 @@ }, { "argumentTypes": null, - "id": 1971, + "id": 2170, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1919, - "src": "2987:4:12", + "referencedDeclaration": 2129, + "src": "2871:4:18", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -2773,32 +2731,32 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1972, + "id": 2171, "name": "Enum", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6, - "src": "2993:4:12", + "referencedDeclaration": 30, + "src": "2877:4:18", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Enum_$6_$", + "typeIdentifier": "t_type$_t_contract$_Enum_$30_$", "typeString": "type(contract Enum)" } }, - "id": 1973, + "id": 2172, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "Operation", "nodeType": "MemberAccess", - "referencedDeclaration": 5, - "src": "2993:14:12", + "referencedDeclaration": 29, + "src": "2877:14:18", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_Operation_$5_$", + "typeIdentifier": "t_type$_t_enum$_Operation_$29_$", "typeString": "type(enum Enum.Operation)" } }, - "id": 1974, + "id": 2173, "isConstant": false, "isLValue": false, "isPure": true, @@ -2806,9 +2764,9 @@ "memberName": "Call", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2993:19:12", + "src": "2877:19:18", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } } @@ -2828,38 +2786,38 @@ "typeString": "bytes memory" }, { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } ], "expression": { "argumentTypes": null, - "id": 1965, + "id": 2164, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 588, - "src": "2932:7:12", + "referencedDeclaration": 717, + "src": "2816:7:18", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" } }, - "id": 1966, + "id": 2165, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "execTransactionFromModule", "nodeType": "MemberAccess", - "referencedDeclaration": 798, - "src": "2932:33:12", + "referencedDeclaration": 927, + "src": "2816:33:18", "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$returns$_t_bool_$", + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation) external returns (bool)" } }, - "id": 1975, + "id": 2174, "isConstant": false, "isLValue": false, "isPure": false, @@ -2867,7 +2825,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2932:81:12", + "src": "2816:81:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2881,21 +2839,21 @@ "typeString": "bool" } ], - "id": 1964, + "id": 2163, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "2924:7:12", + "referencedDeclaration": 2601, + "src": "2808:7:18", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1976, + "id": 2175, "isConstant": false, "isLValue": false, "isPure": false, @@ -2903,20 +2861,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2924:90:12", + "src": "2808:90:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1977, + "id": 2176, "nodeType": "ExpressionStatement", - "src": "2924:90:12" + "src": "2808:90:18" } ] }, - "documentation": "@dev Returns if Safe transaction is a valid owner replacement transaction.\n @param data Encoded owner replacement transaction.\n @return Returns if transaction can be executed.", - "id": 1979, + "documentation": "@dev Returns if Safe transaction is a valid owner replacement transaction.\n @param prevOwner Owner that pointed to the owner to be replaced in the linked list\n @param oldOwner Owner address to be replaced.\n @param newOwner New owner address.\n @return Returns if transaction can be executed.", + "id": 2178, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -2924,67 +2882,119 @@ "name": "recoverAccess", "nodeType": "FunctionDefinition", "parameters": { - "id": 1920, + "id": 2119, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1919, - "name": "data", + "id": 2114, + "name": "prevOwner", "nodeType": "VariableDeclaration", - "scope": 1979, - "src": "2268:10:12", + "scope": 2178, + "src": "2319:17:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" + "typeIdentifier": "t_address", + "typeString": "address" }, "typeName": { - "id": 1918, - "name": "bytes", + "id": 2113, + "name": "address", "nodeType": "ElementaryTypeName", - "src": "2268:5:12", + "src": "2319:7:18", "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2116, + "name": "oldOwner", + "nodeType": "VariableDeclaration", + "scope": 2178, + "src": "2338:16:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2115, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2338:7:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2118, + "name": "newOwner", + "nodeType": "VariableDeclaration", + "scope": 2178, + "src": "2356:16:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2117, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2356:7:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, "value": null, "visibility": "internal" } ], - "src": "2267:12:12" + "src": "2318:55:18" }, "payable": false, "returnParameters": { - "id": 1921, + "id": 2120, "nodeType": "ParameterList", "parameters": [], - "src": "2299:0:12" + "src": "2393:0:18" }, - "scope": 2035, - "src": "2245:776:12", + "scope": 2234, + "src": "2296:609:18", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2021, + "id": 2220, "nodeType": "Block", - "src": "3293:294:12", + "src": "3177:294:18", "statements": [ { "assignments": [], "declarations": [ { "constant": false, - "id": 1987, + "id": 2186, "name": "confirmationCount", "nodeType": "VariableDeclaration", - "scope": 2022, - "src": "3303:25:12", + "scope": 2221, + "src": "3187:25:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2992,10 +3002,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1986, + "id": 2185, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3303:7:12", + "src": "3187:7:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3005,16 +3015,16 @@ "visibility": "internal" } ], - "id": 1988, + "id": 2187, "initialValue": null, "nodeType": "VariableDeclarationStatement", - "src": "3303:25:12" + "src": "3187:25:18" }, { "body": { - "id": 2017, + "id": 2216, "nodeType": "Block", - "src": "3383:176:12", + "src": "3267:176:18", "statements": [ { "condition": { @@ -3023,26 +3033,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2000, + "id": 2199, "name": "isConfirmed", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1811, - "src": "3401:11:12", + "referencedDeclaration": 2006, + "src": "3285:11:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(bytes32 => mapping(address => bool))" } }, - "id": 2002, + "id": 2201, "indexExpression": { "argumentTypes": null, - "id": 2001, + "id": 2200, "name": "dataHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1981, - "src": "3413:8:12", + "referencedDeclaration": 2180, + "src": "3297:8:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3053,37 +3063,37 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3401:21:12", + "src": "3285:21:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2006, + "id": 2205, "indexExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2003, + "id": 2202, "name": "friends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1797, - "src": "3423:7:12", + "referencedDeclaration": 1992, + "src": "3307:7:18", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 2005, + "id": 2204, "indexExpression": { "argumentTypes": null, - "id": 2004, + "id": 2203, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1990, - "src": "3431:1:12", + "referencedDeclaration": 2189, + "src": "3315:1:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3094,7 +3104,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3423:10:12", + "src": "3307:10:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3105,20 +3115,20 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3401:33:12", + "src": "3285:33:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 2010, + "id": 2209, "nodeType": "IfStatement", - "src": "3397:74:12", + "src": "3281:74:18", "trueBody": { "expression": { "argumentTypes": null, - "id": 2008, + "id": 2207, "isConstant": false, "isLValue": false, "isPure": false, @@ -3126,15 +3136,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "3452:19:12", + "src": "3336:19:18", "subExpression": { "argumentTypes": null, - "id": 2007, + "id": 2206, "name": "confirmationCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1987, - "src": "3452:17:12", + "referencedDeclaration": 2186, + "src": "3336:17:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3145,9 +3155,9 @@ "typeString": "uint256" } }, - "id": 2009, + "id": 2208, "nodeType": "ExpressionStatement", - "src": "3452:19:12" + "src": "3336:19:18" } }, { @@ -3157,19 +3167,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 2013, + "id": 2212, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2011, + "id": 2210, "name": "confirmationCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1987, - "src": "3489:17:12", + "referencedDeclaration": 2186, + "src": "3373:17:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3179,39 +3189,39 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 2012, + "id": 2211, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1794, - "src": "3510:9:12", + "referencedDeclaration": 1989, + "src": "3394:9:18", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "3489:30:12", + "src": "3373:30:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 2016, + "id": 2215, "nodeType": "IfStatement", - "src": "3485:63:12", + "src": "3369:63:18", "trueBody": { "expression": { "argumentTypes": null, "hexValue": "74727565", - "id": 2014, + "id": 2213, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "3544:4:12", + "src": "3428:4:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -3219,10 +3229,10 @@ }, "value": "true" }, - "functionReturnParameters": 1985, - "id": 2015, + "functionReturnParameters": 2184, + "id": 2214, "nodeType": "Return", - "src": "3537:11:12" + "src": "3421:11:18" } } ] @@ -3233,19 +3243,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1996, + "id": 2195, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1993, + "id": 2192, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1990, - "src": "3358:1:12", + "referencedDeclaration": 2189, + "src": "3242:1:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3257,18 +3267,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1994, + "id": 2193, "name": "friends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1797, - "src": "3362:7:12", + "referencedDeclaration": 1992, + "src": "3246:7:18", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 1995, + "id": 2194, "isConstant": false, "isLValue": true, "isPure": false, @@ -3276,31 +3286,31 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3362:14:12", + "src": "3246:14:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3358:18:12", + "src": "3242:18:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2018, + "id": 2217, "initializationExpression": { "assignments": [ - 1990 + 2189 ], "declarations": [ { "constant": false, - "id": 1990, + "id": 2189, "name": "i", "nodeType": "VariableDeclaration", - "scope": 2022, - "src": "3343:9:12", + "scope": 2221, + "src": "3227:9:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3308,10 +3318,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1989, + "id": 2188, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3343:7:12", + "src": "3227:7:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3321,18 +3331,18 @@ "visibility": "internal" } ], - "id": 1992, + "id": 2191, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 1991, + "id": 2190, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3355:1:12", + "src": "3239:1:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3341,12 +3351,12 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "3343:13:12" + "src": "3227:13:18" }, "loopExpression": { "expression": { "argumentTypes": null, - "id": 1998, + "id": 2197, "isConstant": false, "isLValue": false, "isPure": false, @@ -3354,15 +3364,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "3378:3:12", + "src": "3262:3:18", "subExpression": { "argumentTypes": null, - "id": 1997, + "id": 2196, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1990, - "src": "3378:1:12", + "referencedDeclaration": 2189, + "src": "3262:1:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3373,25 +3383,25 @@ "typeString": "uint256" } }, - "id": 1999, + "id": 2198, "nodeType": "ExpressionStatement", - "src": "3378:3:12" + "src": "3262:3:18" }, "nodeType": "ForStatement", - "src": "3338:221:12" + "src": "3222:221:18" }, { "expression": { "argumentTypes": null, "hexValue": "66616c7365", - "id": 2019, + "id": 2218, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "3575:5:12", + "src": "3459:5:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -3399,15 +3409,15 @@ }, "value": "false" }, - "functionReturnParameters": 1985, - "id": 2020, + "functionReturnParameters": 2184, + "id": 2219, "nodeType": "Return", - "src": "3568:12:12" + "src": "3452:12:18" } ] }, "documentation": "@dev Returns if Safe transaction is a valid owner replacement transaction.\n @param dataHash Data hash.\n @return Confirmation status.", - "id": 2022, + "id": 2221, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -3415,16 +3425,16 @@ "name": "isConfirmedByRequiredFriends", "nodeType": "FunctionDefinition", "parameters": { - "id": 1982, + "id": 2181, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1981, + "id": 2180, "name": "dataHash", "nodeType": "VariableDeclaration", - "scope": 2022, - "src": "3220:16:12", + "scope": 2221, + "src": "3104:16:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3432,10 +3442,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 1980, + "id": 2179, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "3220:7:12", + "src": "3104:7:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3445,20 +3455,20 @@ "visibility": "internal" } ], - "src": "3219:18:12" + "src": "3103:18:18" }, "payable": false, "returnParameters": { - "id": 1985, + "id": 2184, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1984, + "id": 2183, "name": "", "nodeType": "VariableDeclaration", - "scope": 2022, - "src": "3283:4:12", + "scope": 2221, + "src": "3167:4:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3466,10 +3476,10 @@ "typeString": "bool" }, "typeName": { - "id": 1983, + "id": 2182, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "3283:4:12", + "src": "3167:4:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3479,19 +3489,19 @@ "visibility": "internal" } ], - "src": "3282:6:12" + "src": "3166:6:18" }, - "scope": 2035, - "src": "3182:405:12", + "scope": 2234, + "src": "3066:405:18", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2033, + "id": 2232, "nodeType": "Block", - "src": "3807:39:12", + "src": "3691:39:18", "statements": [ { "expression": { @@ -3499,12 +3509,12 @@ "arguments": [ { "argumentTypes": null, - "id": 2030, + "id": 2229, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2024, - "src": "3834:4:12", + "referencedDeclaration": 2223, + "src": "3718:4:18", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -3518,18 +3528,18 @@ "typeString": "bytes memory" } ], - "id": 2029, + "id": 2228, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2390, - "src": "3824:9:12", + "referencedDeclaration": 2592, + "src": "3708:9:18", "typeDescriptions": { "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", "typeString": "function () pure returns (bytes32)" } }, - "id": 2031, + "id": 2230, "isConstant": false, "isLValue": false, "isPure": false, @@ -3537,21 +3547,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3824:15:12", + "src": "3708:15:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "functionReturnParameters": 2028, - "id": 2032, + "functionReturnParameters": 2227, + "id": 2231, "nodeType": "Return", - "src": "3817:22:12" + "src": "3701:22:18" } ] }, "documentation": "@dev Returns hash of data encoding owner replacement.\n @param data Data payload.\n @return Data hash.", - "id": 2034, + "id": 2233, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -3559,16 +3569,16 @@ "name": "getDataHash", "nodeType": "FunctionDefinition", "parameters": { - "id": 2025, + "id": 2224, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2024, + "id": 2223, "name": "data", "nodeType": "VariableDeclaration", - "scope": 2034, - "src": "3737:10:12", + "scope": 2233, + "src": "3621:10:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3576,10 +3586,10 @@ "typeString": "bytes" }, "typeName": { - "id": 2023, + "id": 2222, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "3737:5:12", + "src": "3621:5:18", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -3589,20 +3599,20 @@ "visibility": "internal" } ], - "src": "3736:12:12" + "src": "3620:12:18" }, "payable": false, "returnParameters": { - "id": 2028, + "id": 2227, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2027, + "id": 2226, "name": "", "nodeType": "VariableDeclaration", - "scope": 2034, - "src": "3794:7:12", + "scope": 2233, + "src": "3678:7:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3610,10 +3620,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 2026, + "id": 2225, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "3794:7:12", + "src": "3678:7:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3623,82 +3633,82 @@ "visibility": "internal" } ], - "src": "3793:9:12" + "src": "3677:9:18" }, - "scope": 2035, - "src": "3716:130:12", - "stateMutability": "view", + "scope": 2234, + "src": "3600:130:18", + "stateMutability": "pure", "superFunction": null, "visibility": "public" } ], - "scope": 2036, - "src": "306:3542:12" + "scope": 2235, + "src": "306:3426:18" } ], - "src": "0:3849:12" + "src": "0:3733:18" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/SocialRecoveryModule.sol", "exportedSymbols": { "SocialRecoveryModule": [ - 2035 + 2234 ] }, - "id": 2036, + "id": 2235, "nodeType": "SourceUnit", "nodes": [ { - "id": 1777, + "id": 1975, "literals": [ "solidity", "0.4", - ".23" + ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:12" + "src": "0:23:18" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Enum.sol", "file": "../Enum.sol", - "id": 1778, + "id": 1976, "nodeType": "ImportDirective", - "scope": 2036, - "sourceUnit": 7, - "src": "24:21:12", + "scope": 2235, + "sourceUnit": 31, + "src": "24:21:18", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "file": "../Module.sol", - "id": 1779, + "id": 1977, "nodeType": "ImportDirective", - "scope": 2036, - "sourceUnit": 622, - "src": "46:23:12", + "scope": 2235, + "sourceUnit": 751, + "src": "46:23:18", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ModuleManager.sol", "file": "../ModuleManager.sol", - "id": 1780, + "id": 1978, "nodeType": "ImportDirective", - "scope": 2036, - "sourceUnit": 972, - "src": "70:30:12", + "scope": 2235, + "sourceUnit": 1101, + "src": "70:30:18", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", "file": "../OwnerManager.sol", - "id": 1781, + "id": 1979, "nodeType": "ImportDirective", - "scope": 2036, - "sourceUnit": 1344, - "src": "101:29:12", + "scope": 2235, + "sourceUnit": 1473, + "src": "101:29:18", "symbolAliases": [], "unitAlias": "" }, @@ -3708,46 +3718,46 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 1782, + "id": 1980, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 621, - "src": "339:6:12", + "referencedDeclaration": 750, + "src": "339:6:18", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } }, - "id": 1783, + "id": 1981, "nodeType": "InheritanceSpecifier", - "src": "339:6:12" + "src": "339:6:18" } ], "contractDependencies": [ - 580, - 621, - 1359 + 652, + 750, + 1619 ], "contractKind": "contract", "documentation": "@title Social Recovery Module - Allows to replace an owner without Safe confirmations if friends approve the replacement.\n @author Stefan George - ", "fullyImplemented": true, - "id": 2035, + "id": 2234, "linearizedBaseContracts": [ - 2035, - 621, - 580, - 1359 + 2234, + 750, + 652, + 1619 ], "name": "SocialRecoveryModule", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, - "id": 1786, + "id": 1984, "name": "NAME", "nodeType": "VariableDeclaration", - "scope": 2035, - "src": "353:54:12", + "scope": 2234, + "src": "353:54:18", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -3755,10 +3765,10 @@ "typeString": "string" }, "typeName": { - "id": 1784, + "id": 1982, "name": "string", "nodeType": "ElementaryTypeName", - "src": "353:6:12", + "src": "353:6:18", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -3767,14 +3777,14 @@ "value": { "argumentTypes": null, "hexValue": "536f6369616c205265636f76657279204d6f64756c65", - "id": 1785, + "id": 1983, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "383:24:12", + "src": "383:24:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_8f499aea563eae5544b16c9123d6c7c8537a7d9dd86296aa60c65de194207230", @@ -3786,11 +3796,11 @@ }, { "constant": true, - "id": 1789, + "id": 1987, "name": "VERSION", "nodeType": "VariableDeclaration", - "scope": 2035, - "src": "413:40:12", + "scope": 2234, + "src": "413:40:18", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -3798,10 +3808,10 @@ "typeString": "string" }, "typeName": { - "id": 1787, + "id": 1985, "name": "string", "nodeType": "ElementaryTypeName", - "src": "413:6:12", + "src": "413:6:18", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -3810,14 +3820,14 @@ "value": { "argumentTypes": null, "hexValue": "302e302e31", - "id": 1788, + "id": 1986, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "446:7:12", + "src": "446:7:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", @@ -3827,56 +3837,13 @@ }, "visibility": "public" }, - { - "constant": true, - "id": 1792, - "name": "REPLACE_OWNER_FUNCTION_IDENTIFIER", - "nodeType": "VariableDeclaration", - "scope": 2035, - "src": "459:72:12", - "stateVariable": true, - "storageLocation": "default", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - "typeName": { - "id": 1790, - "name": "bytes4", - "nodeType": "ElementaryTypeName", - "src": "459:6:12", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "value": { - "argumentTypes": null, - "hexValue": "e318b52b", - "id": 1791, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "string", - "lValueRequested": false, - "nodeType": "Literal", - "src": "518:13:12", - "subdenomination": null, - "typeDescriptions": { - "typeIdentifier": "t_stringliteral_df42753442dae44b262788763363a184bfb8d0df593d5073d67844ce4b3a2d8b", - "typeString": "literal_string (contains invalid UTF-8 sequence at position 2)" - }, - "value": null - }, - "visibility": "public" - }, { "constant": false, - "id": 1794, + "id": 1989, "name": "threshold", "nodeType": "VariableDeclaration", - "scope": 2035, - "src": "538:22:12", + "scope": 2234, + "src": "460:22:18", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -3884,10 +3851,10 @@ "typeString": "uint8" }, "typeName": { - "id": 1793, + "id": 1988, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "538:5:12", + "src": "460:5:18", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -3898,11 +3865,11 @@ }, { "constant": false, - "id": 1797, + "id": 1992, "name": "friends", "nodeType": "VariableDeclaration", - "scope": 2035, - "src": "566:24:12", + "scope": 2234, + "src": "488:24:18", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -3911,19 +3878,19 @@ }, "typeName": { "baseType": { - "id": 1795, + "id": 1990, "name": "address", "nodeType": "ElementaryTypeName", - "src": "566:7:12", + "src": "488:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1796, + "id": 1991, "length": null, "nodeType": "ArrayTypeName", - "src": "566:9:12", + "src": "488:9:18", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -3934,11 +3901,11 @@ }, { "constant": false, - "id": 1801, + "id": 1996, "name": "isFriend", "nodeType": "VariableDeclaration", - "scope": 2035, - "src": "661:41:12", + "scope": 2234, + "src": "583:41:18", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -3946,28 +3913,28 @@ "typeString": "mapping(address => bool)" }, "typeName": { - "id": 1800, + "id": 1995, "keyType": { - "id": 1798, + "id": 1993, "name": "address", "nodeType": "ElementaryTypeName", - "src": "670:7:12", + "src": "592:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "661:25:12", + "src": "583:25:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" }, "valueType": { - "id": 1799, + "id": 1994, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "681:4:12", + "src": "603:4:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3979,11 +3946,11 @@ }, { "constant": false, - "id": 1805, + "id": 2000, "name": "isExecuted", "nodeType": "VariableDeclaration", - "scope": 2035, - "src": "770:43:12", + "scope": 2234, + "src": "692:43:18", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -3991,28 +3958,28 @@ "typeString": "mapping(bytes32 => bool)" }, "typeName": { - "id": 1804, + "id": 1999, "keyType": { - "id": 1802, + "id": 1997, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "779:7:12", + "src": "701:7:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "Mapping", - "src": "770:25:12", + "src": "692:25:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" }, "valueType": { - "id": 1803, + "id": 1998, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "790:4:12", + "src": "712:4:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4024,11 +3991,11 @@ }, { "constant": false, - "id": 1811, + "id": 2006, "name": "isConfirmed", "nodeType": "VariableDeclaration", - "scope": 2035, - "src": "905:65:12", + "scope": 2234, + "src": "827:65:18", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -4036,46 +4003,46 @@ "typeString": "mapping(bytes32 => mapping(address => bool))" }, "typeName": { - "id": 1810, + "id": 2005, "keyType": { - "id": 1806, + "id": 2001, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "914:7:12", + "src": "836:7:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "Mapping", - "src": "905:46:12", + "src": "827:46:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(bytes32 => mapping(address => bool))" }, "valueType": { - "id": 1809, + "id": 2004, "keyType": { - "id": 1807, + "id": 2002, "name": "address", "nodeType": "ElementaryTypeName", - "src": "934:7:12", + "src": "856:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "925:25:12", + "src": "847:25:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" }, "valueType": { - "id": 1808, + "id": 2003, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "945:4:12", + "src": "867:4:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4088,9 +4055,9 @@ }, { "body": { - "id": 1821, + "id": 2016, "nodeType": "Block", - "src": "999:57:12", + "src": "921:57:18", "statements": [ { "expression": { @@ -4100,34 +4067,34 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1814, + "id": 2009, "name": "isFriend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1801, - "src": "1017:8:12", + "referencedDeclaration": 1996, + "src": "939:8:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 1817, + "id": 2012, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1815, + "id": 2010, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2396, - "src": "1026:3:12", + "referencedDeclaration": 2598, + "src": "948:3:18", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 1816, + "id": 2011, "isConstant": false, "isLValue": false, "isPure": false, @@ -4135,7 +4102,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1026:10:12", + "src": "948:10:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4146,7 +4113,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1017:20:12", + "src": "939:20:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4160,21 +4127,21 @@ "typeString": "bool" } ], - "id": 1813, + "id": 2008, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "1009:7:12", + "referencedDeclaration": 2601, + "src": "931:7:18", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1818, + "id": 2013, "isConstant": false, "isLValue": false, "isPure": false, @@ -4182,41 +4149,41 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1009:29:12", + "src": "931:29:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1819, + "id": 2014, "nodeType": "ExpressionStatement", - "src": "1009:29:12" + "src": "931:29:18" }, { - "id": 1820, + "id": 2015, "nodeType": "PlaceholderStatement", - "src": "1048:1:12" + "src": "970:1:18" } ] }, "documentation": null, - "id": 1822, + "id": 2017, "name": "onlyFriend", "nodeType": "ModifierDefinition", "parameters": { - "id": 1812, + "id": 2007, "nodeType": "ParameterList", "parameters": [], - "src": "996:2:12" + "src": "918:2:18" }, - "src": "977:79:12", + "src": "899:79:18", "visibility": "internal" }, { "body": { - "id": 1892, + "id": 2087, "nodeType": "Block", - "src": "1325:422:12", + "src": "1247:422:18", "statements": [ { "expression": { @@ -4228,19 +4195,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1834, + "id": 2029, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1831, + "id": 2026, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1827, - "src": "1343:10:12", + "referencedDeclaration": 2022, + "src": "1265:10:18", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -4252,18 +4219,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1832, + "id": 2027, "name": "_friends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1825, - "src": "1357:8:12", + "referencedDeclaration": 2020, + "src": "1279:8:18", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1833, + "id": 2028, "isConstant": false, "isLValue": false, "isPure": false, @@ -4271,13 +4238,13 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1357:15:12", + "src": "1279:15:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1343:29:12", + "src": "1265:29:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4291,21 +4258,21 @@ "typeString": "bool" } ], - "id": 1830, + "id": 2025, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "1335:7:12", + "referencedDeclaration": 2601, + "src": "1257:7:18", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1835, + "id": 2030, "isConstant": false, "isLValue": false, "isPure": false, @@ -4313,15 +4280,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1335:38:12", + "src": "1257:38:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1836, + "id": 2031, "nodeType": "ExpressionStatement", - "src": "1335:38:12" + "src": "1257:38:18" }, { "expression": { @@ -4333,19 +4300,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 1840, + "id": 2035, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1838, + "id": 2033, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1827, - "src": "1391:10:12", + "referencedDeclaration": 2022, + "src": "1313:10:18", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -4356,14 +4323,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "32", - "id": 1839, + "id": 2034, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1405:1:12", + "src": "1327:1:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", @@ -4371,7 +4338,7 @@ }, "value": "2" }, - "src": "1391:15:12", + "src": "1313:15:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4385,21 +4352,21 @@ "typeString": "bool" } ], - "id": 1837, + "id": 2032, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "1383:7:12", + "referencedDeclaration": 2601, + "src": "1305:7:18", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1841, + "id": 2036, "isConstant": false, "isLValue": false, "isPure": false, @@ -4407,15 +4374,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1383:24:12", + "src": "1305:24:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1842, + "id": 2037, "nodeType": "ExpressionStatement", - "src": "1383:24:12" + "src": "1305:24:18" }, { "expression": { @@ -4423,18 +4390,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 1843, + "id": 2038, "name": "setManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 620, - "src": "1417:10:12", + "referencedDeclaration": 749, + "src": "1339:10:18", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 1844, + "id": 2039, "isConstant": false, "isLValue": false, "isPure": false, @@ -4442,34 +4409,34 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1417:12:12", + "src": "1339:12:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1845, + "id": 2040, "nodeType": "ExpressionStatement", - "src": "1417:12:12" + "src": "1339:12:18" }, { "body": { - "id": 1882, + "id": 2077, "nodeType": "Block", - "src": "1517:164:12", + "src": "1439:164:18", "statements": [ { "assignments": [ - 1858 + 2053 ], "declarations": [ { "constant": false, - "id": 1858, + "id": 2053, "name": "friend", "nodeType": "VariableDeclaration", - "scope": 1893, - "src": "1531:14:12", + "scope": 2088, + "src": "1453:14:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4477,10 +4444,10 @@ "typeString": "address" }, "typeName": { - "id": 1857, + "id": 2052, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1531:7:12", + "src": "1453:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4490,31 +4457,31 @@ "visibility": "internal" } ], - "id": 1862, + "id": 2057, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1859, + "id": 2054, "name": "_friends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1825, - "src": "1548:8:12", + "referencedDeclaration": 2020, + "src": "1470:8:18", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1861, + "id": 2056, "indexExpression": { "argumentTypes": null, - "id": 1860, + "id": 2055, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1847, - "src": "1557:1:12", + "referencedDeclaration": 2042, + "src": "1479:1:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4525,14 +4492,14 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1548:11:12", + "src": "1470:11:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "1531:28:12" + "src": "1453:28:18" }, { "expression": { @@ -4544,19 +4511,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1866, + "id": 2061, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1864, + "id": 2059, "name": "friend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1858, - "src": "1581:6:12", + "referencedDeclaration": 2053, + "src": "1503:6:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4567,14 +4534,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1865, + "id": 2060, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1591:1:12", + "src": "1513:1:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -4582,7 +4549,7 @@ }, "value": "0" }, - "src": "1581:11:12", + "src": "1503:11:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4596,21 +4563,21 @@ "typeString": "bool" } ], - "id": 1863, + "id": 2058, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "1573:7:12", + "referencedDeclaration": 2601, + "src": "1495:7:18", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1867, + "id": 2062, "isConstant": false, "isLValue": false, "isPure": false, @@ -4618,15 +4585,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1573:20:12", + "src": "1495:20:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1868, + "id": 2063, "nodeType": "ExpressionStatement", - "src": "1573:20:12" + "src": "1495:20:18" }, { "expression": { @@ -4634,7 +4601,7 @@ "arguments": [ { "argumentTypes": null, - "id": 1873, + "id": 2068, "isConstant": false, "isLValue": false, "isPure": false, @@ -4642,31 +4609,31 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "1615:17:12", + "src": "1537:17:18", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1870, + "id": 2065, "name": "isFriend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1801, - "src": "1616:8:12", + "referencedDeclaration": 1996, + "src": "1538:8:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 1872, + "id": 2067, "indexExpression": { "argumentTypes": null, - "id": 1871, + "id": 2066, "name": "friend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1858, - "src": "1625:6:12", + "referencedDeclaration": 2053, + "src": "1547:6:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4677,7 +4644,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1616:16:12", + "src": "1538:16:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4696,21 +4663,21 @@ "typeString": "bool" } ], - "id": 1869, + "id": 2064, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "1607:7:12", + "referencedDeclaration": 2601, + "src": "1529:7:18", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1874, + "id": 2069, "isConstant": false, "isLValue": false, "isPure": false, @@ -4718,20 +4685,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1607:26:12", + "src": "1529:26:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1875, + "id": 2070, "nodeType": "ExpressionStatement", - "src": "1607:26:12" + "src": "1529:26:18" }, { "expression": { "argumentTypes": null, - "id": 1880, + "id": 2075, "isConstant": false, "isLValue": false, "isPure": false, @@ -4740,26 +4707,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1876, + "id": 2071, "name": "isFriend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1801, - "src": "1647:8:12", + "referencedDeclaration": 1996, + "src": "1569:8:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 1878, + "id": 2073, "indexExpression": { "argumentTypes": null, - "id": 1877, + "id": 2072, "name": "friend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1858, - "src": "1656:6:12", + "referencedDeclaration": 2053, + "src": "1578:6:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4770,7 +4737,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1647:16:12", + "src": "1569:16:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4781,14 +4748,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 1879, + "id": 2074, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "1666:4:12", + "src": "1588:4:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -4796,15 +4763,15 @@ }, "value": "true" }, - "src": "1647:23:12", + "src": "1569:23:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 1881, + "id": 2076, "nodeType": "ExpressionStatement", - "src": "1647:23:12" + "src": "1569:23:18" } ] }, @@ -4814,19 +4781,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1853, + "id": 2048, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1850, + "id": 2045, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1847, - "src": "1491:1:12", + "referencedDeclaration": 2042, + "src": "1413:1:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4838,18 +4805,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1851, + "id": 2046, "name": "_friends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1825, - "src": "1495:8:12", + "referencedDeclaration": 2020, + "src": "1417:8:18", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1852, + "id": 2047, "isConstant": false, "isLValue": false, "isPure": false, @@ -4857,31 +4824,31 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1495:15:12", + "src": "1417:15:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1491:19:12", + "src": "1413:19:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 1883, + "id": 2078, "initializationExpression": { "assignments": [ - 1847 + 2042 ], "declarations": [ { "constant": false, - "id": 1847, + "id": 2042, "name": "i", "nodeType": "VariableDeclaration", - "scope": 1893, - "src": "1476:9:12", + "scope": 2088, + "src": "1398:9:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4889,10 +4856,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1846, + "id": 2041, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1476:7:12", + "src": "1398:7:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4902,18 +4869,18 @@ "visibility": "internal" } ], - "id": 1849, + "id": 2044, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 1848, + "id": 2043, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1488:1:12", + "src": "1410:1:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -4922,12 +4889,12 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "1476:13:12" + "src": "1398:13:18" }, "loopExpression": { "expression": { "argumentTypes": null, - "id": 1855, + "id": 2050, "isConstant": false, "isLValue": false, "isPure": false, @@ -4935,15 +4902,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "1512:3:12", + "src": "1434:3:18", "subExpression": { "argumentTypes": null, - "id": 1854, + "id": 2049, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1847, - "src": "1512:1:12", + "referencedDeclaration": 2042, + "src": "1434:1:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4954,29 +4921,29 @@ "typeString": "uint256" } }, - "id": 1856, + "id": 2051, "nodeType": "ExpressionStatement", - "src": "1512:3:12" + "src": "1434:3:18" }, "nodeType": "ForStatement", - "src": "1471:210:12" + "src": "1393:210:18" }, { "expression": { "argumentTypes": null, - "id": 1886, + "id": 2081, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1884, + "id": 2079, "name": "friends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1797, - "src": "1690:7:12", + "referencedDeclaration": 1992, + "src": "1612:7:18", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" @@ -4986,43 +4953,43 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1885, + "id": 2080, "name": "_friends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1825, - "src": "1700:8:12", + "referencedDeclaration": 2020, + "src": "1622:8:18", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "src": "1690:18:12", + "src": "1612:18:18", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 1887, + "id": 2082, "nodeType": "ExpressionStatement", - "src": "1690:18:12" + "src": "1612:18:18" }, { "expression": { "argumentTypes": null, - "id": 1890, + "id": 2085, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1888, + "id": 2083, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1794, - "src": "1718:9:12", + "referencedDeclaration": 1989, + "src": "1640:9:18", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -5032,31 +4999,31 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1889, + "id": 2084, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1827, - "src": "1730:10:12", + "referencedDeclaration": 2022, + "src": "1652:10:18", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "1718:22:12", + "src": "1640:22:18", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "id": 1891, + "id": 2086, "nodeType": "ExpressionStatement", - "src": "1718:22:12" + "src": "1640:22:18" } ] }, "documentation": "@dev Setup function sets initial storage of contract.\n @param _friends List of friends' addresses.\n @param _threshold Required number of friends to confirm replacement.", - "id": 1893, + "id": 2088, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -5064,16 +5031,16 @@ "name": "setup", "nodeType": "FunctionDefinition", "parameters": { - "id": 1828, + "id": 2023, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1825, + "id": 2020, "name": "_friends", "nodeType": "VariableDeclaration", - "scope": 1893, - "src": "1268:18:12", + "scope": 2088, + "src": "1190:18:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5082,19 +5049,19 @@ }, "typeName": { "baseType": { - "id": 1823, + "id": 2018, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1268:7:12", + "src": "1190:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1824, + "id": 2019, "length": null, "nodeType": "ArrayTypeName", - "src": "1268:9:12", + "src": "1190:9:18", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -5105,11 +5072,11 @@ }, { "constant": false, - "id": 1827, + "id": 2022, "name": "_threshold", "nodeType": "VariableDeclaration", - "scope": 1893, - "src": "1288:16:12", + "scope": 2088, + "src": "1210:16:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5117,10 +5084,10 @@ "typeString": "uint8" }, "typeName": { - "id": 1826, + "id": 2021, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "1288:5:12", + "src": "1210:5:18", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -5130,26 +5097,26 @@ "visibility": "internal" } ], - "src": "1267:38:12" + "src": "1189:38:18" }, "payable": false, "returnParameters": { - "id": 1829, + "id": 2024, "nodeType": "ParameterList", "parameters": [], - "src": "1325:0:12" + "src": "1247:0:18" }, - "scope": 2035, - "src": "1253:494:12", + "scope": 2234, + "src": "1175:494:18", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1916, + "id": 2111, "nodeType": "Block", - "src": "1944:97:12", + "src": "1866:97:18", "statements": [ { "expression": { @@ -5157,7 +5124,7 @@ "arguments": [ { "argumentTypes": null, - "id": 1904, + "id": 2099, "isConstant": false, "isLValue": false, "isPure": false, @@ -5165,31 +5132,31 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "1962:21:12", + "src": "1884:21:18", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1901, + "id": 2096, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1805, - "src": "1963:10:12", + "referencedDeclaration": 2000, + "src": "1885:10:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 1903, + "id": 2098, "indexExpression": { "argumentTypes": null, - "id": 1902, + "id": 2097, "name": "dataHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1895, - "src": "1974:8:12", + "referencedDeclaration": 2090, + "src": "1896:8:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -5200,7 +5167,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1963:20:12", + "src": "1885:20:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5219,21 +5186,21 @@ "typeString": "bool" } ], - "id": 1900, + "id": 2095, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "1954:7:12", + "referencedDeclaration": 2601, + "src": "1876:7:18", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1905, + "id": 2100, "isConstant": false, "isLValue": false, "isPure": false, @@ -5241,20 +5208,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1954:30:12", + "src": "1876:30:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1906, + "id": 2101, "nodeType": "ExpressionStatement", - "src": "1954:30:12" + "src": "1876:30:18" }, { "expression": { "argumentTypes": null, - "id": 1914, + "id": 2109, "isConstant": false, "isLValue": false, "isPure": false, @@ -5265,26 +5232,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1907, + "id": 2102, "name": "isConfirmed", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1811, - "src": "1994:11:12", + "referencedDeclaration": 2006, + "src": "1916:11:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(bytes32 => mapping(address => bool))" } }, - "id": 1911, + "id": 2106, "indexExpression": { "argumentTypes": null, - "id": 1908, + "id": 2103, "name": "dataHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1895, - "src": "2006:8:12", + "referencedDeclaration": 2090, + "src": "1928:8:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -5295,29 +5262,29 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1994:21:12", + "src": "1916:21:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 1912, + "id": 2107, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1909, + "id": 2104, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2396, - "src": "2016:3:12", + "referencedDeclaration": 2598, + "src": "1938:3:18", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 1910, + "id": 2105, "isConstant": false, "isLValue": false, "isPure": false, @@ -5325,7 +5292,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2016:10:12", + "src": "1938:10:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5336,7 +5303,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1994:33:12", + "src": "1916:33:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5347,14 +5314,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 1913, + "id": 2108, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "2030:4:12", + "src": "1952:4:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -5362,57 +5329,57 @@ }, "value": "true" }, - "src": "1994:40:12", + "src": "1916:40:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 1915, + "id": 2110, "nodeType": "ExpressionStatement", - "src": "1994:40:12" + "src": "1916:40:18" } ] }, "documentation": "@dev Allows a friend to confirm a Safe transaction.\n @param dataHash Safe transaction hash.", - "id": 1917, + "id": 2112, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 1898, + "id": 2093, "modifierName": { "argumentTypes": null, - "id": 1897, + "id": 2092, "name": "onlyFriend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1822, - "src": "1929:10:12", + "referencedDeclaration": 2017, + "src": "1851:10:18", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1929:10:12" + "src": "1851:10:18" } ], "name": "confirmTransaction", "nodeType": "FunctionDefinition", "parameters": { - "id": 1896, + "id": 2091, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1895, + "id": 2090, "name": "dataHash", "nodeType": "VariableDeclaration", - "scope": 1917, - "src": "1888:16:12", + "scope": 2112, + "src": "1810:16:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5420,10 +5387,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 1894, + "id": 2089, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1888:7:12", + "src": "1810:7:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -5433,26 +5400,26 @@ "visibility": "internal" } ], - "src": "1887:18:12" + "src": "1809:18:18" }, "payable": false, "returnParameters": { - "id": 1899, + "id": 2094, "nodeType": "ParameterList", "parameters": [], - "src": "1944:0:12" + "src": "1866:0:18" }, - "scope": 2035, - "src": "1860:181:12", + "scope": 2234, + "src": "1782:181:18", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1978, + "id": 2177, "nodeType": "Block", - "src": "2299:722:12", + "src": "2393:512:18", "statements": [ { "expression": { @@ -5462,34 +5429,34 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1923, + "id": 2122, "name": "isFriend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1801, - "src": "2381:8:12", + "referencedDeclaration": 1996, + "src": "2475:8:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 1926, + "id": 2125, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1924, + "id": 2123, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2396, - "src": "2390:3:12", + "referencedDeclaration": 2598, + "src": "2484:3:18", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 1925, + "id": 2124, "isConstant": false, "isLValue": false, "isPure": false, @@ -5497,7 +5464,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2390:10:12", + "src": "2484:10:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5508,7 +5475,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2381:20:12", + "src": "2475:20:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5522,21 +5489,21 @@ "typeString": "bool" } ], - "id": 1922, + "id": 2121, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "2373:7:12", + "referencedDeclaration": 2601, + "src": "2467:7:18", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1927, + "id": 2126, "isConstant": false, "isLValue": false, "isPure": false, @@ -5544,149 +5511,157 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2373:29:12", + "src": "2467:29:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1928, + "id": 2127, "nodeType": "ExpressionStatement", - "src": "2373:29:12" + "src": "2467:29:18" }, { - "assignments": [], + "assignments": [ + 2129 + ], "declarations": [ { "constant": false, - "id": 1930, - "name": "functionIdentifier", + "id": 2129, + "name": "data", "nodeType": "VariableDeclaration", - "scope": 1979, - "src": "2485:25:12", + "scope": 2178, + "src": "2506:17:18", "stateVariable": false, - "storageLocation": "default", + "storageLocation": "memory", "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes" }, "typeName": { - "id": 1929, - "name": "bytes4", + "id": 2128, + "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "2485:6:12", + "src": "2506:5:18", "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" + "typeIdentifier": "t_bytes_storage_ptr", + "typeString": "bytes" } }, "value": null, "visibility": "internal" } ], - "id": 1931, - "initialValue": null, - "nodeType": "VariableDeclarationStatement", - "src": "2485:25:12" - }, - { - "externalReferences": [ - { - "functionIdentifier": { - "declaration": 1930, - "isOffset": false, - "isSlot": false, - "src": "2607:18:12", - "valueSize": 1 - } - }, - { - "data": { - "declaration": 1919, - "isOffset": false, - "isSlot": false, - "src": "2639:4:12", - "valueSize": 1 - } - } - ], - "id": 1932, - "nodeType": "InlineAssembly", - "operations": "{\n functionIdentifier := mload(add(data, 0x20))\n}", - "src": "2584:93:12" - }, - { - "expression": { + "id": 2137, + "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "commonType": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - }, - "id": 1936, + "hexValue": "737761704f776e657228616464726573732c616464726573732c6164647265737329", + "id": 2132, "isConstant": false, "isLValue": false, - "isPure": false, + "isPure": true, + "kind": "string", "lValueRequested": false, - "leftExpression": { - "argumentTypes": null, - "id": 1934, - "name": "functionIdentifier", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1930, - "src": "2678:18:12", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } - }, - "nodeType": "BinaryOperation", - "operator": "==", - "rightExpression": { - "argumentTypes": null, - "id": 1935, - "name": "REPLACE_OWNER_FUNCTION_IDENTIFIER", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1792, - "src": "2700:33:12", - "typeDescriptions": { - "typeIdentifier": "t_bytes4", - "typeString": "bytes4" - } + "nodeType": "Literal", + "src": "2550:36:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e318b52b9bee2870ac7ee0af86866eb2e8f9569b34de6028eb487e7983ba6df8", + "typeString": "literal_string \"swapOwner(address,address,address)\"" }, - "src": "2678:55:12", + "value": "swapOwner(address,address,address)" + }, + { + "argumentTypes": null, + "id": 2133, + "name": "prevOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2114, + "src": "2588:9:18", "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2134, + "name": "oldOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2116, + "src": "2599:8:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2135, + "name": "newOwner", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2118, + "src": "2609:8:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } } ], "expression": { "argumentTypes": [ { - "typeIdentifier": "t_bool", - "typeString": "bool" + "typeIdentifier": "t_stringliteral_e318b52b9bee2870ac7ee0af86866eb2e8f9569b34de6028eb487e7983ba6df8", + "typeString": "literal_string \"swapOwner(address,address,address)\"" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" } ], - "id": 1933, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 2399, - 2400 - ], - "referencedDeclaration": 2399, - "src": "2670:7:12", + "expression": { + "argumentTypes": null, + "id": 2130, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2585, + "src": "2526:3:18", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 2131, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "memberName": "encodeWithSignature", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "2526:23:18", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", + "typeString": "function (string memory) pure returns (bytes memory)" } }, - "id": 1937, + "id": 2136, "isConstant": false, "isLValue": false, "isPure": false, @@ -5694,28 +5669,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2670:64:12", + "src": "2526:92:18", "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" } }, - "id": 1938, - "nodeType": "ExpressionStatement", - "src": "2670:64:12" + "nodeType": "VariableDeclarationStatement", + "src": "2506:112:18" }, { "assignments": [ - 1940 + 2139 ], "declarations": [ { "constant": false, - "id": 1940, + "id": 2139, "name": "dataHash", "nodeType": "VariableDeclaration", - "scope": 1979, - "src": "2744:16:12", + "scope": 2178, + "src": "2628:16:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5723,10 +5697,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 1939, + "id": 2138, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "2744:7:12", + "src": "2628:7:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -5736,18 +5710,18 @@ "visibility": "internal" } ], - "id": 1944, + "id": 2143, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 1942, + "id": 2141, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1919, - "src": "2775:4:12", + "referencedDeclaration": 2129, + "src": "2659:4:18", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -5761,18 +5735,18 @@ "typeString": "bytes memory" } ], - "id": 1941, + "id": 2140, "name": "getDataHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2034, - "src": "2763:11:12", + "referencedDeclaration": 2233, + "src": "2647:11:18", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_bytes_memory_ptr_$returns$_t_bytes32_$", - "typeString": "function (bytes memory) view returns (bytes32)" + "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", + "typeString": "function (bytes memory) pure returns (bytes32)" } }, - "id": 1943, + "id": 2142, "isConstant": false, "isLValue": false, "isPure": false, @@ -5780,14 +5754,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2763:17:12", + "src": "2647:17:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "VariableDeclarationStatement", - "src": "2744:36:12" + "src": "2628:36:18" }, { "expression": { @@ -5795,7 +5769,7 @@ "arguments": [ { "argumentTypes": null, - "id": 1949, + "id": 2148, "isConstant": false, "isLValue": false, "isPure": false, @@ -5803,31 +5777,31 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "2798:21:12", + "src": "2682:21:18", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1946, + "id": 2145, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1805, - "src": "2799:10:12", + "referencedDeclaration": 2000, + "src": "2683:10:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 1948, + "id": 2147, "indexExpression": { "argumentTypes": null, - "id": 1947, + "id": 2146, "name": "dataHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1940, - "src": "2810:8:12", + "referencedDeclaration": 2139, + "src": "2694:8:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -5838,7 +5812,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2799:20:12", + "src": "2683:20:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5857,21 +5831,21 @@ "typeString": "bool" } ], - "id": 1945, + "id": 2144, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "2790:7:12", + "referencedDeclaration": 2601, + "src": "2674:7:18", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1950, + "id": 2149, "isConstant": false, "isLValue": false, "isPure": false, @@ -5879,15 +5853,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2790:30:12", + "src": "2674:30:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1951, + "id": 2150, "nodeType": "ExpressionStatement", - "src": "2790:30:12" + "src": "2674:30:18" }, { "expression": { @@ -5898,12 +5872,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1954, + "id": 2153, "name": "dataHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1940, - "src": "2867:8:12", + "referencedDeclaration": 2139, + "src": "2751:8:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -5917,18 +5891,18 @@ "typeString": "bytes32" } ], - "id": 1953, + "id": 2152, "name": "isConfirmedByRequiredFriends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2022, - "src": "2838:28:12", + "referencedDeclaration": 2221, + "src": "2722:28:18", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$", "typeString": "function (bytes32) view returns (bool)" } }, - "id": 1955, + "id": 2154, "isConstant": false, "isLValue": false, "isPure": false, @@ -5936,7 +5910,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2838:38:12", + "src": "2722:38:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5950,21 +5924,21 @@ "typeString": "bool" } ], - "id": 1952, + "id": 2151, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "2830:7:12", + "referencedDeclaration": 2601, + "src": "2714:7:18", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1956, + "id": 2155, "isConstant": false, "isLValue": false, "isPure": false, @@ -5972,20 +5946,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2830:47:12", + "src": "2714:47:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1957, + "id": 2156, "nodeType": "ExpressionStatement", - "src": "2830:47:12" + "src": "2714:47:18" }, { "expression": { "argumentTypes": null, - "id": 1962, + "id": 2161, "isConstant": false, "isLValue": false, "isPure": false, @@ -5994,26 +5968,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1958, + "id": 2157, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1805, - "src": "2887:10:12", + "referencedDeclaration": 2000, + "src": "2771:10:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 1960, + "id": 2159, "indexExpression": { "argumentTypes": null, - "id": 1959, + "id": 2158, "name": "dataHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1940, - "src": "2898:8:12", + "referencedDeclaration": 2139, + "src": "2782:8:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -6024,7 +5998,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2887:20:12", + "src": "2771:20:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6035,14 +6009,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 1961, + "id": 2160, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "2910:4:12", + "src": "2794:4:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -6050,15 +6024,15 @@ }, "value": "true" }, - "src": "2887:27:12", + "src": "2771:27:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 1963, + "id": 2162, "nodeType": "ExpressionStatement", - "src": "2887:27:12" + "src": "2771:27:18" }, { "expression": { @@ -6072,14 +6046,14 @@ "arguments": [ { "argumentTypes": null, - "id": 1968, + "id": 2167, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 588, - "src": "2974:7:12", + "referencedDeclaration": 717, + "src": "2858:7:18", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" } } @@ -6087,24 +6061,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" } ], - "id": 1967, + "id": 2166, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2966:7:12", + "src": "2850:7:18", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 1969, + "id": 2168, "isConstant": false, "isLValue": false, "isPure": false, @@ -6112,7 +6086,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2966:16:12", + "src": "2850:16:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6121,14 +6095,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 1970, + "id": 2169, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2984:1:12", + "src": "2868:1:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -6138,12 +6112,12 @@ }, { "argumentTypes": null, - "id": 1971, + "id": 2170, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1919, - "src": "2987:4:12", + "referencedDeclaration": 2129, + "src": "2871:4:18", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -6155,32 +6129,32 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1972, + "id": 2171, "name": "Enum", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6, - "src": "2993:4:12", + "referencedDeclaration": 30, + "src": "2877:4:18", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Enum_$6_$", + "typeIdentifier": "t_type$_t_contract$_Enum_$30_$", "typeString": "type(contract Enum)" } }, - "id": 1973, + "id": 2172, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "Operation", "nodeType": "MemberAccess", - "referencedDeclaration": 5, - "src": "2993:14:12", + "referencedDeclaration": 29, + "src": "2877:14:18", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_Operation_$5_$", + "typeIdentifier": "t_type$_t_enum$_Operation_$29_$", "typeString": "type(enum Enum.Operation)" } }, - "id": 1974, + "id": 2173, "isConstant": false, "isLValue": false, "isPure": true, @@ -6188,9 +6162,9 @@ "memberName": "Call", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2993:19:12", + "src": "2877:19:18", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } } @@ -6210,38 +6184,38 @@ "typeString": "bytes memory" }, { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } ], "expression": { "argumentTypes": null, - "id": 1965, + "id": 2164, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 588, - "src": "2932:7:12", + "referencedDeclaration": 717, + "src": "2816:7:18", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" } }, - "id": 1966, + "id": 2165, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "execTransactionFromModule", "nodeType": "MemberAccess", - "referencedDeclaration": 798, - "src": "2932:33:12", + "referencedDeclaration": 927, + "src": "2816:33:18", "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$returns$_t_bool_$", + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation) external returns (bool)" } }, - "id": 1975, + "id": 2174, "isConstant": false, "isLValue": false, "isPure": false, @@ -6249,7 +6223,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2932:81:12", + "src": "2816:81:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6263,21 +6237,21 @@ "typeString": "bool" } ], - "id": 1964, + "id": 2163, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "2924:7:12", + "referencedDeclaration": 2601, + "src": "2808:7:18", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 1976, + "id": 2175, "isConstant": false, "isLValue": false, "isPure": false, @@ -6285,20 +6259,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2924:90:12", + "src": "2808:90:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1977, + "id": 2176, "nodeType": "ExpressionStatement", - "src": "2924:90:12" + "src": "2808:90:18" } ] }, - "documentation": "@dev Returns if Safe transaction is a valid owner replacement transaction.\n @param data Encoded owner replacement transaction.\n @return Returns if transaction can be executed.", - "id": 1979, + "documentation": "@dev Returns if Safe transaction is a valid owner replacement transaction.\n @param prevOwner Owner that pointed to the owner to be replaced in the linked list\n @param oldOwner Owner address to be replaced.\n @param newOwner New owner address.\n @return Returns if transaction can be executed.", + "id": 2178, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -6306,67 +6280,119 @@ "name": "recoverAccess", "nodeType": "FunctionDefinition", "parameters": { - "id": 1920, + "id": 2119, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1919, - "name": "data", + "id": 2114, + "name": "prevOwner", "nodeType": "VariableDeclaration", - "scope": 1979, - "src": "2268:10:12", + "scope": 2178, + "src": "2319:17:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_bytes_memory_ptr", - "typeString": "bytes" + "typeIdentifier": "t_address", + "typeString": "address" }, "typeName": { - "id": 1918, - "name": "bytes", + "id": 2113, + "name": "address", "nodeType": "ElementaryTypeName", - "src": "2268:5:12", + "src": "2319:7:18", "typeDescriptions": { - "typeIdentifier": "t_bytes_storage_ptr", - "typeString": "bytes" + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2116, + "name": "oldOwner", + "nodeType": "VariableDeclaration", + "scope": 2178, + "src": "2338:16:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2115, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2338:7:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + "value": null, + "visibility": "internal" + }, + { + "constant": false, + "id": 2118, + "name": "newOwner", + "nodeType": "VariableDeclaration", + "scope": 2178, + "src": "2356:16:18", + "stateVariable": false, + "storageLocation": "default", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + }, + "typeName": { + "id": 2117, + "name": "address", + "nodeType": "ElementaryTypeName", + "src": "2356:7:18", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" } }, "value": null, "visibility": "internal" } ], - "src": "2267:12:12" + "src": "2318:55:18" }, "payable": false, "returnParameters": { - "id": 1921, + "id": 2120, "nodeType": "ParameterList", "parameters": [], - "src": "2299:0:12" + "src": "2393:0:18" }, - "scope": 2035, - "src": "2245:776:12", + "scope": 2234, + "src": "2296:609:18", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2021, + "id": 2220, "nodeType": "Block", - "src": "3293:294:12", + "src": "3177:294:18", "statements": [ { "assignments": [], "declarations": [ { "constant": false, - "id": 1987, + "id": 2186, "name": "confirmationCount", "nodeType": "VariableDeclaration", - "scope": 2022, - "src": "3303:25:12", + "scope": 2221, + "src": "3187:25:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6374,10 +6400,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1986, + "id": 2185, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3303:7:12", + "src": "3187:7:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6387,16 +6413,16 @@ "visibility": "internal" } ], - "id": 1988, + "id": 2187, "initialValue": null, "nodeType": "VariableDeclarationStatement", - "src": "3303:25:12" + "src": "3187:25:18" }, { "body": { - "id": 2017, + "id": 2216, "nodeType": "Block", - "src": "3383:176:12", + "src": "3267:176:18", "statements": [ { "condition": { @@ -6405,26 +6431,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2000, + "id": 2199, "name": "isConfirmed", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1811, - "src": "3401:11:12", + "referencedDeclaration": 2006, + "src": "3285:11:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(bytes32 => mapping(address => bool))" } }, - "id": 2002, + "id": 2201, "indexExpression": { "argumentTypes": null, - "id": 2001, + "id": 2200, "name": "dataHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1981, - "src": "3413:8:12", + "referencedDeclaration": 2180, + "src": "3297:8:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -6435,37 +6461,37 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3401:21:12", + "src": "3285:21:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2006, + "id": 2205, "indexExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2003, + "id": 2202, "name": "friends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1797, - "src": "3423:7:12", + "referencedDeclaration": 1992, + "src": "3307:7:18", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 2005, + "id": 2204, "indexExpression": { "argumentTypes": null, - "id": 2004, + "id": 2203, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1990, - "src": "3431:1:12", + "referencedDeclaration": 2189, + "src": "3315:1:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6476,7 +6502,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3423:10:12", + "src": "3307:10:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6487,20 +6513,20 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3401:33:12", + "src": "3285:33:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 2010, + "id": 2209, "nodeType": "IfStatement", - "src": "3397:74:12", + "src": "3281:74:18", "trueBody": { "expression": { "argumentTypes": null, - "id": 2008, + "id": 2207, "isConstant": false, "isLValue": false, "isPure": false, @@ -6508,15 +6534,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "3452:19:12", + "src": "3336:19:18", "subExpression": { "argumentTypes": null, - "id": 2007, + "id": 2206, "name": "confirmationCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1987, - "src": "3452:17:12", + "referencedDeclaration": 2186, + "src": "3336:17:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6527,9 +6553,9 @@ "typeString": "uint256" } }, - "id": 2009, + "id": 2208, "nodeType": "ExpressionStatement", - "src": "3452:19:12" + "src": "3336:19:18" } }, { @@ -6539,19 +6565,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 2013, + "id": 2212, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2011, + "id": 2210, "name": "confirmationCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1987, - "src": "3489:17:12", + "referencedDeclaration": 2186, + "src": "3373:17:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6561,39 +6587,39 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 2012, + "id": 2211, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1794, - "src": "3510:9:12", + "referencedDeclaration": 1989, + "src": "3394:9:18", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "3489:30:12", + "src": "3373:30:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 2016, + "id": 2215, "nodeType": "IfStatement", - "src": "3485:63:12", + "src": "3369:63:18", "trueBody": { "expression": { "argumentTypes": null, "hexValue": "74727565", - "id": 2014, + "id": 2213, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "3544:4:12", + "src": "3428:4:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -6601,10 +6627,10 @@ }, "value": "true" }, - "functionReturnParameters": 1985, - "id": 2015, + "functionReturnParameters": 2184, + "id": 2214, "nodeType": "Return", - "src": "3537:11:12" + "src": "3421:11:18" } } ] @@ -6615,19 +6641,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1996, + "id": 2195, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1993, + "id": 2192, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1990, - "src": "3358:1:12", + "referencedDeclaration": 2189, + "src": "3242:1:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6639,18 +6665,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1994, + "id": 2193, "name": "friends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1797, - "src": "3362:7:12", + "referencedDeclaration": 1992, + "src": "3246:7:18", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 1995, + "id": 2194, "isConstant": false, "isLValue": true, "isPure": false, @@ -6658,31 +6684,31 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3362:14:12", + "src": "3246:14:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3358:18:12", + "src": "3242:18:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2018, + "id": 2217, "initializationExpression": { "assignments": [ - 1990 + 2189 ], "declarations": [ { "constant": false, - "id": 1990, + "id": 2189, "name": "i", "nodeType": "VariableDeclaration", - "scope": 2022, - "src": "3343:9:12", + "scope": 2221, + "src": "3227:9:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6690,10 +6716,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1989, + "id": 2188, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3343:7:12", + "src": "3227:7:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6703,18 +6729,18 @@ "visibility": "internal" } ], - "id": 1992, + "id": 2191, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 1991, + "id": 2190, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3355:1:12", + "src": "3239:1:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -6723,12 +6749,12 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "3343:13:12" + "src": "3227:13:18" }, "loopExpression": { "expression": { "argumentTypes": null, - "id": 1998, + "id": 2197, "isConstant": false, "isLValue": false, "isPure": false, @@ -6736,15 +6762,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "3378:3:12", + "src": "3262:3:18", "subExpression": { "argumentTypes": null, - "id": 1997, + "id": 2196, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1990, - "src": "3378:1:12", + "referencedDeclaration": 2189, + "src": "3262:1:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6755,25 +6781,25 @@ "typeString": "uint256" } }, - "id": 1999, + "id": 2198, "nodeType": "ExpressionStatement", - "src": "3378:3:12" + "src": "3262:3:18" }, "nodeType": "ForStatement", - "src": "3338:221:12" + "src": "3222:221:18" }, { "expression": { "argumentTypes": null, "hexValue": "66616c7365", - "id": 2019, + "id": 2218, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "3575:5:12", + "src": "3459:5:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -6781,15 +6807,15 @@ }, "value": "false" }, - "functionReturnParameters": 1985, - "id": 2020, + "functionReturnParameters": 2184, + "id": 2219, "nodeType": "Return", - "src": "3568:12:12" + "src": "3452:12:18" } ] }, "documentation": "@dev Returns if Safe transaction is a valid owner replacement transaction.\n @param dataHash Data hash.\n @return Confirmation status.", - "id": 2022, + "id": 2221, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -6797,16 +6823,16 @@ "name": "isConfirmedByRequiredFriends", "nodeType": "FunctionDefinition", "parameters": { - "id": 1982, + "id": 2181, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1981, + "id": 2180, "name": "dataHash", "nodeType": "VariableDeclaration", - "scope": 2022, - "src": "3220:16:12", + "scope": 2221, + "src": "3104:16:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6814,10 +6840,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 1980, + "id": 2179, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "3220:7:12", + "src": "3104:7:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -6827,20 +6853,20 @@ "visibility": "internal" } ], - "src": "3219:18:12" + "src": "3103:18:18" }, "payable": false, "returnParameters": { - "id": 1985, + "id": 2184, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1984, + "id": 2183, "name": "", "nodeType": "VariableDeclaration", - "scope": 2022, - "src": "3283:4:12", + "scope": 2221, + "src": "3167:4:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6848,10 +6874,10 @@ "typeString": "bool" }, "typeName": { - "id": 1983, + "id": 2182, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "3283:4:12", + "src": "3167:4:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6861,19 +6887,19 @@ "visibility": "internal" } ], - "src": "3282:6:12" + "src": "3166:6:18" }, - "scope": 2035, - "src": "3182:405:12", + "scope": 2234, + "src": "3066:405:18", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2033, + "id": 2232, "nodeType": "Block", - "src": "3807:39:12", + "src": "3691:39:18", "statements": [ { "expression": { @@ -6881,12 +6907,12 @@ "arguments": [ { "argumentTypes": null, - "id": 2030, + "id": 2229, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2024, - "src": "3834:4:12", + "referencedDeclaration": 2223, + "src": "3718:4:18", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -6900,18 +6926,18 @@ "typeString": "bytes memory" } ], - "id": 2029, + "id": 2228, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2390, - "src": "3824:9:12", + "referencedDeclaration": 2592, + "src": "3708:9:18", "typeDescriptions": { "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", "typeString": "function () pure returns (bytes32)" } }, - "id": 2031, + "id": 2230, "isConstant": false, "isLValue": false, "isPure": false, @@ -6919,21 +6945,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3824:15:12", + "src": "3708:15:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "functionReturnParameters": 2028, - "id": 2032, + "functionReturnParameters": 2227, + "id": 2231, "nodeType": "Return", - "src": "3817:22:12" + "src": "3701:22:18" } ] }, "documentation": "@dev Returns hash of data encoding owner replacement.\n @param data Data payload.\n @return Data hash.", - "id": 2034, + "id": 2233, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -6941,16 +6967,16 @@ "name": "getDataHash", "nodeType": "FunctionDefinition", "parameters": { - "id": 2025, + "id": 2224, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2024, + "id": 2223, "name": "data", "nodeType": "VariableDeclaration", - "scope": 2034, - "src": "3737:10:12", + "scope": 2233, + "src": "3621:10:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6958,10 +6984,10 @@ "typeString": "bytes" }, "typeName": { - "id": 2023, + "id": 2222, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "3737:5:12", + "src": "3621:5:18", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -6971,20 +6997,20 @@ "visibility": "internal" } ], - "src": "3736:12:12" + "src": "3620:12:18" }, "payable": false, "returnParameters": { - "id": 2028, + "id": 2227, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2027, + "id": 2226, "name": "", "nodeType": "VariableDeclaration", - "scope": 2034, - "src": "3794:7:12", + "scope": 2233, + "src": "3678:7:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6992,10 +7018,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 2026, + "id": 2225, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "3794:7:12", + "src": "3678:7:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -7005,63 +7031,45 @@ "visibility": "internal" } ], - "src": "3793:9:12" + "src": "3677:9:18" }, - "scope": 2035, - "src": "3716:130:12", - "stateMutability": "view", + "scope": 2234, + "src": "3600:130:18", + "stateMutability": "pure", "superFunction": null, "visibility": "public" } ], - "scope": 2036, - "src": "306:3542:12" + "scope": 2235, + "src": "306:3426:18" } ], - "src": "0:3849:12" + "src": "0:3733:18" }, "compiler": { "name": "solc", - "version": "0.4.23+commit.124ca40d.Emscripten.clang" + "version": "0.4.24+commit.e67f0147.Emscripten.clang" }, "networks": { "4": { "events": {}, "links": {}, - "address": "0x1d851ebb3a205deb27104b7bef2a5633fba06154", - "transactionHash": "0xf2590f3fc263b11656e7dbcce8d8f02605b6856cade967e1720cc0c5dd2608d5" - }, - "1525950336085": { - "events": {}, - "links": {}, - "address": "0xfe2114e016fa8d92959754f25d4f63f155ad1a6a", - "transactionHash": "0xa514f0c5c6fcab99a16bba503b6ed893935cedfafe2e5c8c825dfc117e1e266d" - }, - "1526283540628": { - "events": {}, - "links": {}, - "address": "0x12fb2fe4f6d4c08b14c694e163b9bee65697e708", - "transactionHash": "0xa514f0c5c6fcab99a16bba503b6ed893935cedfafe2e5c8c825dfc117e1e266d" - }, - "1526478212260": { - "events": {}, - "links": {}, - "address": "0x1a92687d3982d12a985c4c35447673ff1fd312d1", - "transactionHash": "0x44896356866fb32a30fe5b74e2e5b2ce3383ffef7f3190f5f10a98b5fa4406de" + "address": "0xf1f0987c2fb0a6fc7ca75465e34318ff64fb24c6", + "transactionHash": "0x9a1262d8d385b0ec7979a9141249dc703f74e98cf9c9f4060ad16ecd92f67dad" }, - "1526973574996": { + "1527316019334": { "events": {}, "links": {}, - "address": "0xadaea58298d3f8087ac9a8d9c70ed90bb47719c3", - "transactionHash": "0x44896356866fb32a30fe5b74e2e5b2ce3383ffef7f3190f5f10a98b5fa4406de" + "address": "0x268518ad20d3faa34e233e8685d726ad2ec10b4b", + "transactionHash": "0x3b404f9bf2e58e33eeaba336d431c1d819a719b0765dfe2a33831b97d9036a2e" }, - "1527316019334": { + "1527420696956": { "events": {}, "links": {}, - "address": "0x2ee2d6323f9595963caece8280b6e6a81d4f9d49", - "transactionHash": "0x44896356866fb32a30fe5b74e2e5b2ce3383ffef7f3190f5f10a98b5fa4406de" + "address": "0x99d67fc14c6d86cf065a844515916bfbb3ec764d", + "transactionHash": "0x05db0b84de2c38f22917f5a5372ee159959c99ae966e9b07fb99c11a3e099d4d" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-26T06:28:28.363Z" + "updatedAt": "2018-05-27T11:31:46.341Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/StateChannelModule.json b/safe-contracts/build/contracts/StateChannelModule.json index 860bda1bf1..04194abeb5 100644 --- a/safe-contracts/build/contracts/StateChannelModule.json +++ b/safe-contracts/build/contracts/StateChannelModule.json @@ -163,51 +163,51 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50610e5a806100206000396000f30060806040526004361061008e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806319604647146100935780632b50004114610206578063481c6a75146102cc5780637de7edef14610323578063a3f4df7e14610366578063ba0bba40146103f6578063e52cb36a1461040d578063ffa1ad7414610456575b600080fd5b34801561009f57600080fd5b50610204600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190803590602001909291908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192905050506104e6565b005b34801561021257600080fd5b506102ae600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050610705565b60405180826000191660001916815260200191505060405180910390f35b3480156102d857600080fd5b506102e1610921565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561032f57600080fd5b50610364600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610947565b005b34801561037257600080fd5b5061037b610a0c565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103bb5780820151818401526020810190506103a0565b50505050905090810190601f1680156103e85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561040257600080fd5b5061040b610a45565b005b34801561041957600080fd5b5061043c6004803603810190808035600019169060200190929190505050610a4f565b604051808215151515815260200191505060405180910390f35b34801561046257600080fd5b5061046b610a6f565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104ab578082015181840152602081019050610490565b50505050905090810190601f1680156104d85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60006104f58989898989610705565b905060026000826000191660001916815260200190815260200160002060009054906101000a900460ff1615151561052c57600080fd5b61053881858585610aa8565b600160026000836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a78a8a8a8a6040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200183600281111561062557fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b8381101561066557808201518184015260208101905061064a565b50505050905090810190601f1680156106925780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b1580156106b457600080fd5b505af11580156106c8573d6000803e3d6000fd5b505050506040513d60208110156106de57600080fd5b810190808051906020019092919050505015156106fa57600080fd5b505050505050505050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f01000000000000000000000000000000000000000000000000000000000000000230888888888860405180897effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083835b6020831015156108a65780518252602082019150602081019050602083039250610881565b6001836020036101000a0380198251168184511680821785525050505050509050018360028111156108d457fe5b60ff167f0100000000000000000000000000000000000000000000000000000000000000028152600101828152602001985050505050505050506040518091039020905095945050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156109a357600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156109c957600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6040805190810160405280601481526020017f5374617465204368616e6e656c204d6f64756c6500000000000000000000000081525081565b610a4d610da4565b565b60026020528060005260406000206000915054906101000a900460ff1681565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b60008060008060009350600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e75235b86040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015610b3857600080fd5b505af1158015610b4c573d6000803e3d6000fd5b505050506040513d6020811015610b6257600080fd5b81019080805190602001909291905050509050600091505b8060ff16821015610d9a576001888884815181101515610b9657fe5b906020019060200201518885815181101515610bae57fe5b906020019060200201518886815181101515610bc657fe5b90602001906020020151604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af1158015610c41573d6000803e3d6000fd5b505050602060405103519250600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e846040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015610d0a57600080fd5b505af1158015610d1e573d6000803e3d6000fd5b505050506040513d6020811015610d3457600080fd5b81019080805190602001909291905050501515610d5057600080fd5b8373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16111515610d8a57600080fd5b8293508180600101925050610b7a565b5050505050505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610deb57600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505600a165627a7a72305820a4183092cbe869320dacc60413aa4faaa13aa1779d1603c8db847137fdfc7df10029", - "deployedBytecode": "0x60806040526004361061008e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806319604647146100935780632b50004114610206578063481c6a75146102cc5780637de7edef14610323578063a3f4df7e14610366578063ba0bba40146103f6578063e52cb36a1461040d578063ffa1ad7414610456575b600080fd5b34801561009f57600080fd5b50610204600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190803590602001909291908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192905050506104e6565b005b34801561021257600080fd5b506102ae600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050610705565b60405180826000191660001916815260200191505060405180910390f35b3480156102d857600080fd5b506102e1610921565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561032f57600080fd5b50610364600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610947565b005b34801561037257600080fd5b5061037b610a0c565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103bb5780820151818401526020810190506103a0565b50505050905090810190601f1680156103e85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561040257600080fd5b5061040b610a45565b005b34801561041957600080fd5b5061043c6004803603810190808035600019169060200190929190505050610a4f565b604051808215151515815260200191505060405180910390f35b34801561046257600080fd5b5061046b610a6f565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104ab578082015181840152602081019050610490565b50505050905090810190601f1680156104d85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60006104f58989898989610705565b905060026000826000191660001916815260200190815260200160002060009054906101000a900460ff1615151561052c57600080fd5b61053881858585610aa8565b600160026000836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a78a8a8a8a6040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200183600281111561062557fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b8381101561066557808201518184015260208101905061064a565b50505050905090810190601f1680156106925780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b1580156106b457600080fd5b505af11580156106c8573d6000803e3d6000fd5b505050506040513d60208110156106de57600080fd5b810190808051906020019092919050505015156106fa57600080fd5b505050505050505050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f01000000000000000000000000000000000000000000000000000000000000000230888888888860405180897effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083835b6020831015156108a65780518252602082019150602081019050602083039250610881565b6001836020036101000a0380198251168184511680821785525050505050509050018360028111156108d457fe5b60ff167f0100000000000000000000000000000000000000000000000000000000000000028152600101828152602001985050505050505050506040518091039020905095945050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156109a357600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156109c957600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6040805190810160405280601481526020017f5374617465204368616e6e656c204d6f64756c6500000000000000000000000081525081565b610a4d610da4565b565b60026020528060005260406000206000915054906101000a900460ff1681565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b60008060008060009350600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e75235b86040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015610b3857600080fd5b505af1158015610b4c573d6000803e3d6000fd5b505050506040513d6020811015610b6257600080fd5b81019080805190602001909291905050509050600091505b8060ff16821015610d9a576001888884815181101515610b9657fe5b906020019060200201518885815181101515610bae57fe5b906020019060200201518886815181101515610bc657fe5b90602001906020020151604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af1158015610c41573d6000803e3d6000fd5b505050602060405103519250600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e846040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015610d0a57600080fd5b505af1158015610d1e573d6000803e3d6000fd5b505050506040513d6020811015610d3457600080fd5b81019080805190602001909291905050501515610d5057600080fd5b8373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16111515610d8a57600080fd5b8293508180600101925050610b7a565b5050505050505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610deb57600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505600a165627a7a72305820a4183092cbe869320dacc60413aa4faaa13aa1779d1603c8db847137fdfc7df10029", - "sourceMap": "269:2840:13:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;269:2840:13;;;;;;;", - "deployedSourceMap": "269:2840:13:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1265:602;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1265:602:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2796:311;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2796:311:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;262:28:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;262:28:5;;;;;;;;;;;;;;;;;;;;;;;;;;;626:208:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:208:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;314:52:13;;8:9:-1;5:2;;;30:1;27;20:12;5:2;314:52:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;314:52:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;601:65;;8:9:-1;5:2;;;30:1;27;20:12;5:2;601:65:13;;;;;;510:43;;8:9:-1;5:2;;;30:1;27;20:12;5:2;510:43:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;372:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;372:40:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;372:40:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1265:602;1512:23;1538:53;1557:2;1561:5;1568:4;1574:9;1585:5;1538:18;:53::i;:::-;1512:79;;1610:10;:27;1621:15;1610:27;;;;;;;;;;;;;;;;;;;;;;;;;;;1609:28;1601:37;;;;;;;;1648:35;1658:15;1675:1;1678;1681;1648:9;:35::i;:::-;1776:4;1746:10;:27;1757:15;1746:27;;;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;1798:7;;;;;;;;;;;:33;;;1832:2;1836:5;1843:4;1849:9;1798:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;1798:61:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1798:61:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1798:61:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1798:61:13;;;;;;;;;;;;;;;;1790:70;;;;;;;;1265:602;;;;;;;;;:::o;2796:311::-;2999:7;3044:4;3039:10;;3056:1;3051:7;;3060:4;3066:2;3070:5;3077:4;3083:9;3094:5;3029:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;3029:71:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3022:78;;2796:311;;;;;;;:::o;262:28:5:-;;;;;;;;;;;;;:::o;626:208:4:-;359:7:5;;;;;;;;;;;337:30;;:10;:30;;;329:39;;;;;;;;791:1:4;776:11;:16;;;;768:25;;;;;;;;816:11;803:10;;:24;;;;;;;;;;;;;;;;;;626:208;:::o;314:52:13:-;;;;;;;;;;;;;;;;;;;;:::o;601:65::-;647:12;:10;:12::i;:::-;601:65::o;510:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;372:40::-;;;;;;;;;;;;;;;;;;;;:::o;1873:645::-;2050:17;2090:20;2120:9;2139:15;2078:1;2050:30;;2170:7;;;;;;;;;;;2157:34;;;:36;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2157:36:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2157:36:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2157:36:13;;;;;;;;;;;;;;;;2139:54;;2254:1;2250:5;;2245:267;2261:9;2257:13;;:1;:13;2245:267;;;2306:44;2316:15;2333:1;2335;2333:4;;;;;;;;;;;;;;;;;;2339:1;2341;2339:4;;;;;;;;;;;;;;;;;;2345:1;2347;2345:4;;;;;;;;;;;;;;;;;;2306:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2306:44:13;;;;;;;;2291:59;;2385:7;;;;;;;;;;;2372:29;;;2402:12;2372:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2372:43:13;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2372:43:13;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2372:43:13;;;;;;;;;;;;;;;;2364:52;;;;;;;;2453:9;2438:24;;:12;:24;;;2430:33;;;;;;;;2489:12;2477:24;;2272:3;;;;;;;2245:267;;;1873:645;;;;;;;;:::o;392:268:5:-;606:1;594:7;;;;;;;;;;;586:21;;;578:30;;;;;;;;642:10;618:7;;:35;;;;;;;;;;;;;;;;;;392:268::o", - "source": "pragma solidity 0.4.23;\nimport \"../Module.sol\";\nimport \"../OwnerManager.sol\";\n\n\n/// @title Gnosis Safe State Module - A module that allows interaction with statechannels.\n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract StateChannelModule is Module {\n\n string public constant NAME = \"State Channel Module\";\n string public constant VERSION = \"0.0.1\";\n\n // isExecuted mapping allows to check if a transaction (by hash) was already executed.\n mapping (bytes32 => bool) public isExecuted;\n\n /// @dev Setup function sets manager\n function setup()\n public\n {\n setManager();\n }\n\n /// @dev Allows to execute a Safe transaction confirmed by required number of owners.\n /// @param to Destination address of Safe transaction.\n /// @param value Ether value of Safe transaction.\n /// @param data Data payload of Safe transaction.\n /// @param operation Operation type of Safe transaction.\n /// @param nonce Nonce used for this Safe transaction.\n /// @param v Array of signature V values sorted by owner addresses.\n /// @param r Array of signature R values sorted by owner addresses.\n /// @param s Array of signature S values sorted by owner addresses.\n function execTransaction(\n address to, \n uint256 value, \n bytes data, \n Enum.Operation operation, \n uint256 nonce,\n uint8[] v, \n bytes32[] r, \n bytes32[] s\n )\n public\n {\n bytes32 transactionHash = getTransactionHash(to, value, data, operation, nonce);\n require(!isExecuted[transactionHash]);\n checkHash(transactionHash, v, r, s);\n // Mark as executed and execute transaction.\n isExecuted[transactionHash] = true;\n require(manager.execTransactionFromModule(to, value, data, operation));\n }\n\n function checkHash(bytes32 transactionHash, uint8[] v, bytes32[] r, bytes32[] s)\n internal\n view\n {\n // There cannot be an owner with address 0.\n address lastOwner = address(0);\n address currentOwner;\n uint256 i;\n uint8 threshold = OwnerManager(manager).getThreshold();\n // Validate threshold is reached.\n for (i = 0; i < threshold; i++) {\n currentOwner = ecrecover(transactionHash, v[i], r[i], s[i]);\n require(OwnerManager(manager).isOwner(currentOwner));\n require(currentOwner > lastOwner);\n lastOwner = currentOwner;\n }\n }\n\n /// @dev Returns hash to be signed by owners.\n /// @param to Destination address.\n /// @param value Ether value.\n /// @param data Data payload.\n /// @param operation Operation type.\n /// @param nonce Transaction nonce.\n /// @return Transaction hash.\n function getTransactionHash(\n address to, \n uint256 value, \n bytes data, \n Enum.Operation operation, \n uint256 nonce\n )\n public\n view\n returns (bytes32)\n {\n return keccak256(byte(0x19), byte(0), this, to, value, data, operation, nonce);\n }\n}\n", + "bytecode": "0x608060405234801561001057600080fd5b50610ec6806100206000396000f30060806040526004361061008e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806319604647146100935780632b50004114610206578063481c6a75146102cc5780637de7edef14610323578063a3f4df7e14610366578063ba0bba40146103f6578063e52cb36a1461040d578063ffa1ad7414610456575b600080fd5b34801561009f57600080fd5b50610204600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190803590602001909291908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192905050506104e6565b005b34801561021257600080fd5b506102ae600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050610705565b60405180826000191660001916815260200191505060405180910390f35b3480156102d857600080fd5b506102e161098d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561032f57600080fd5b50610364600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109b3565b005b34801561037257600080fd5b5061037b610a78565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103bb5780820151818401526020810190506103a0565b50505050905090810190601f1680156103e85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561040257600080fd5b5061040b610ab1565b005b34801561041957600080fd5b5061043c6004803603810190808035600019169060200190929190505050610abb565b604051808215151515815260200191505060405180910390f35b34801561046257600080fd5b5061046b610adb565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104ab578082015181840152602081019050610490565b50505050905090810190601f1680156104d85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60006104f58989898989610705565b905060026000826000191660001916815260200190815260200160002060009054906101000a900460ff1615151561052c57600080fd5b61053881858585610b14565b600160026000836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a78a8a8a8a6040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200183600281111561062557fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b8381101561066557808201518184015260208101905061064a565b50505050905090810190601f1680156106925780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b1580156106b457600080fd5b505af11580156106c8573d6000803e3d6000fd5b505050506040513d60208110156106de57600080fd5b810190808051906020019092919050505015156106fa57600080fd5b505050505050505050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f01000000000000000000000000000000000000000000000000000000000000000230888888888860405160200180897effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083835b6020831015156108a95780518252602082019150602081019050602083039250610884565b6001836020036101000a0380198251168184511680821785525050505050509050018360028111156108d757fe5b60ff167f0100000000000000000000000000000000000000000000000000000000000000028152600101828152602001985050505050505050506040516020818303038152906040526040518082805190602001908083835b6020831015156109555780518252602082019150602081019050602083039250610930565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020905095945050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610a0f57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610a3557600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6040805190810160405280601481526020017f5374617465204368616e6e656c204d6f64756c6500000000000000000000000081525081565b610ab9610e10565b565b60026020528060005260406000206000915054906101000a900460ff1681565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b60008060008060009350600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e75235b86040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015610ba457600080fd5b505af1158015610bb8573d6000803e3d6000fd5b505050506040513d6020811015610bce57600080fd5b81019080805190602001909291905050509050600091505b8060ff16821015610e06576001888884815181101515610c0257fe5b906020019060200201518885815181101515610c1a57fe5b906020019060200201518886815181101515610c3257fe5b90602001906020020151604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af1158015610cad573d6000803e3d6000fd5b505050602060405103519250600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e846040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015610d7657600080fd5b505af1158015610d8a573d6000803e3d6000fd5b505050506040513d6020811015610da057600080fd5b81019080805190602001909291905050501515610dbc57600080fd5b8373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16111515610df657600080fd5b8293508180600101925050610be6565b5050505050505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610e5757600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505600a165627a7a72305820453c6630df1510723e7c76ad0ed06d384408c3c25066f1e25e55db38ef5842e90029", + "deployedBytecode": "0x60806040526004361061008e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806319604647146100935780632b50004114610206578063481c6a75146102cc5780637de7edef14610323578063a3f4df7e14610366578063ba0bba40146103f6578063e52cb36a1461040d578063ffa1ad7414610456575b600080fd5b34801561009f57600080fd5b50610204600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190803590602001909291908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192905050506104e6565b005b34801561021257600080fd5b506102ae600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050610705565b60405180826000191660001916815260200191505060405180910390f35b3480156102d857600080fd5b506102e161098d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561032f57600080fd5b50610364600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109b3565b005b34801561037257600080fd5b5061037b610a78565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103bb5780820151818401526020810190506103a0565b50505050905090810190601f1680156103e85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561040257600080fd5b5061040b610ab1565b005b34801561041957600080fd5b5061043c6004803603810190808035600019169060200190929190505050610abb565b604051808215151515815260200191505060405180910390f35b34801561046257600080fd5b5061046b610adb565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104ab578082015181840152602081019050610490565b50505050905090810190601f1680156104d85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60006104f58989898989610705565b905060026000826000191660001916815260200190815260200160002060009054906101000a900460ff1615151561052c57600080fd5b61053881858585610b14565b600160026000836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a78a8a8a8a6040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200183600281111561062557fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b8381101561066557808201518184015260208101905061064a565b50505050905090810190601f1680156106925780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b1580156106b457600080fd5b505af11580156106c8573d6000803e3d6000fd5b505050506040513d60208110156106de57600080fd5b810190808051906020019092919050505015156106fa57600080fd5b505050505050505050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f01000000000000000000000000000000000000000000000000000000000000000230888888888860405160200180897effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083835b6020831015156108a95780518252602082019150602081019050602083039250610884565b6001836020036101000a0380198251168184511680821785525050505050509050018360028111156108d757fe5b60ff167f0100000000000000000000000000000000000000000000000000000000000000028152600101828152602001985050505050505050506040516020818303038152906040526040518082805190602001908083835b6020831015156109555780518252602082019150602081019050602083039250610930565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020905095945050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610a0f57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610a3557600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6040805190810160405280601481526020017f5374617465204368616e6e656c204d6f64756c6500000000000000000000000081525081565b610ab9610e10565b565b60026020528060005260406000206000915054906101000a900460ff1681565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b60008060008060009350600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e75235b86040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015610ba457600080fd5b505af1158015610bb8573d6000803e3d6000fd5b505050506040513d6020811015610bce57600080fd5b81019080805190602001909291905050509050600091505b8060ff16821015610e06576001888884815181101515610c0257fe5b906020019060200201518885815181101515610c1a57fe5b906020019060200201518886815181101515610c3257fe5b90602001906020020151604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af1158015610cad573d6000803e3d6000fd5b505050602060405103519250600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e846040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015610d7657600080fd5b505af1158015610d8a573d6000803e3d6000fd5b505050506040513d6020811015610da057600080fd5b81019080805190602001909291905050501515610dbc57600080fd5b8373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16111515610df657600080fd5b8293508180600101925050610be6565b5050505050505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610e5757600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505600a165627a7a72305820453c6630df1510723e7c76ad0ed06d384408c3c25066f1e25e55db38ef5842e90029", + "sourceMap": "269:2858:19:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;269:2858:19;;;;;;;", + "deployedSourceMap": "269:2858:19:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1265:602;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1265:602:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2796:329;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2796:329:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;262:28:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;262:28:7;;;;;;;;;;;;;;;;;;;;;;;;;;;626:208:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:208:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;314:52:19;;8:9:-1;5:2;;;30:1;27;20:12;5:2;314:52:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;314:52:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;601:65;;8:9:-1;5:2;;;30:1;27;20:12;5:2;601:65:19;;;;;;510:43;;8:9:-1;5:2;;;30:1;27;20:12;5:2;510:43:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;372:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;372:40:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;372:40:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1265:602;1512:23;1538:53;1557:2;1561:5;1568:4;1574:9;1585:5;1538:18;:53::i;:::-;1512:79;;1610:10;:27;1621:15;1610:27;;;;;;;;;;;;;;;;;;;;;;;;;;;1609:28;1601:37;;;;;;;;1648:35;1658:15;1675:1;1678;1681;1648:9;:35::i;:::-;1776:4;1746:10;:27;1757:15;1746:27;;;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;1798:7;;;;;;;;;;;:33;;;1832:2;1836:5;1843:4;1849:9;1798:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;1798:61:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1798:61:19;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1798:61:19;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1798:61:19;;;;;;;;;;;;;;;;1790:70;;;;;;;;1265:602;;;;;;;;;:::o;2796:329::-;2999:7;3061:4;3056:10;;3073:1;3068:7;;3077:4;3083:2;3087:5;3094:4;3100:9;3111:5;3039:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;3039:78:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3039:78:19;;;3029:89;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;3029:89:19;;;;;;;;;;;;;;;;3022:96;;2796:329;;;;;;;:::o;262:28:7:-;;;;;;;;;;;;;:::o;626:208:5:-;359:7:7;;;;;;;;;;;337:30;;:10;:30;;;329:39;;;;;;;;791:1:5;776:11;:16;;;;768:25;;;;;;;;816:11;803:10;;:24;;;;;;;;;;;;;;;;;;626:208;:::o;314:52:19:-;;;;;;;;;;;;;;;;;;;;:::o;601:65::-;647:12;:10;:12::i;:::-;601:65::o;510:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;372:40::-;;;;;;;;;;;;;;;;;;;;:::o;1873:645::-;2050:17;2090:20;2120:9;2139:15;2078:1;2050:30;;2170:7;;;;;;;;;;;2157:34;;;:36;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2157:36:19;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2157:36:19;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2157:36:19;;;;;;;;;;;;;;;;2139:54;;2254:1;2250:5;;2245:267;2261:9;2257:13;;:1;:13;2245:267;;;2306:44;2316:15;2333:1;2335;2333:4;;;;;;;;;;;;;;;;;;2339:1;2341;2339:4;;;;;;;;;;;;;;;;;;2345:1;2347;2345:4;;;;;;;;;;;;;;;;;;2306:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2306:44:19;;;;;;;;2291:59;;2385:7;;;;;;;;;;;2372:29;;;2402:12;2372:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2372:43:19;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2372:43:19;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2372:43:19;;;;;;;;;;;;;;;;2364:52;;;;;;;;2453:9;2438:24;;:12;:24;;;2430:33;;;;;;;;2489:12;2477:24;;2272:3;;;;;;;2245:267;;;1873:645;;;;;;;;:::o;392:268:7:-;606:1;594:7;;;;;;;;;;;586:21;;;578:30;;;;;;;;642:10;618:7;;:35;;;;;;;;;;;;;;;;;;392:268::o", + "source": "pragma solidity 0.4.24;\nimport \"../Module.sol\";\nimport \"../OwnerManager.sol\";\n\n\n/// @title Gnosis Safe State Module - A module that allows interaction with statechannels.\n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract StateChannelModule is Module {\n\n string public constant NAME = \"State Channel Module\";\n string public constant VERSION = \"0.0.1\";\n\n // isExecuted mapping allows to check if a transaction (by hash) was already executed.\n mapping (bytes32 => bool) public isExecuted;\n\n /// @dev Setup function sets manager\n function setup()\n public\n {\n setManager();\n }\n\n /// @dev Allows to execute a Safe transaction confirmed by required number of owners.\n /// @param to Destination address of Safe transaction.\n /// @param value Ether value of Safe transaction.\n /// @param data Data payload of Safe transaction.\n /// @param operation Operation type of Safe transaction.\n /// @param nonce Nonce used for this Safe transaction.\n /// @param v Array of signature V values sorted by owner addresses.\n /// @param r Array of signature R values sorted by owner addresses.\n /// @param s Array of signature S values sorted by owner addresses.\n function execTransaction(\n address to, \n uint256 value, \n bytes data, \n Enum.Operation operation, \n uint256 nonce,\n uint8[] v, \n bytes32[] r, \n bytes32[] s\n )\n public\n {\n bytes32 transactionHash = getTransactionHash(to, value, data, operation, nonce);\n require(!isExecuted[transactionHash]);\n checkHash(transactionHash, v, r, s);\n // Mark as executed and execute transaction.\n isExecuted[transactionHash] = true;\n require(manager.execTransactionFromModule(to, value, data, operation));\n }\n\n function checkHash(bytes32 transactionHash, uint8[] v, bytes32[] r, bytes32[] s)\n internal\n view\n {\n // There cannot be an owner with address 0.\n address lastOwner = address(0);\n address currentOwner;\n uint256 i;\n uint8 threshold = OwnerManager(manager).getThreshold();\n // Validate threshold is reached.\n for (i = 0; i < threshold; i++) {\n currentOwner = ecrecover(transactionHash, v[i], r[i], s[i]);\n require(OwnerManager(manager).isOwner(currentOwner));\n require(currentOwner > lastOwner);\n lastOwner = currentOwner;\n }\n }\n\n /// @dev Returns hash to be signed by owners.\n /// @param to Destination address.\n /// @param value Ether value.\n /// @param data Data payload.\n /// @param operation Operation type.\n /// @param nonce Transaction nonce.\n /// @return Transaction hash.\n function getTransactionHash(\n address to, \n uint256 value, \n bytes data, \n Enum.Operation operation, \n uint256 nonce\n )\n public\n view\n returns (bytes32)\n {\n return keccak256(abi.encodePacked(byte(0x19), byte(0), this, to, value, data, operation, nonce));\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/StateChannelModule.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/StateChannelModule.sol", "exportedSymbols": { "StateChannelModule": [ - 2234 + 2436 ] }, - "id": 2235, + "id": 2437, "nodeType": "SourceUnit", "nodes": [ { - "id": 2037, + "id": 2236, "literals": [ "solidity", "0.4", - ".23" + ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:13" + "src": "0:23:19" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "file": "../Module.sol", - "id": 2038, + "id": 2237, "nodeType": "ImportDirective", - "scope": 2235, - "sourceUnit": 622, - "src": "24:23:13", + "scope": 2437, + "sourceUnit": 751, + "src": "24:23:19", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", "file": "../OwnerManager.sol", - "id": 2039, + "id": 2238, "nodeType": "ImportDirective", - "scope": 2235, - "sourceUnit": 1344, - "src": "48:29:13", + "scope": 2437, + "sourceUnit": 1473, + "src": "48:29:19", "symbolAliases": [], "unitAlias": "" }, @@ -217,46 +217,46 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 2040, + "id": 2239, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 621, - "src": "300:6:13", + "referencedDeclaration": 750, + "src": "300:6:19", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } }, - "id": 2041, + "id": 2240, "nodeType": "InheritanceSpecifier", - "src": "300:6:13" + "src": "300:6:19" } ], "contractDependencies": [ - 580, - 621, - 1359 + 652, + 750, + 1619 ], "contractKind": "contract", "documentation": "@title Gnosis Safe State Module - A module that allows interaction with statechannels.\n @author Stefan George - \n @author Richard Meissner - ", "fullyImplemented": true, - "id": 2234, + "id": 2436, "linearizedBaseContracts": [ - 2234, - 621, - 580, - 1359 + 2436, + 750, + 652, + 1619 ], "name": "StateChannelModule", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, - "id": 2044, + "id": 2243, "name": "NAME", "nodeType": "VariableDeclaration", - "scope": 2234, - "src": "314:52:13", + "scope": 2436, + "src": "314:52:19", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -264,10 +264,10 @@ "typeString": "string" }, "typeName": { - "id": 2042, + "id": 2241, "name": "string", "nodeType": "ElementaryTypeName", - "src": "314:6:13", + "src": "314:6:19", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -276,14 +276,14 @@ "value": { "argumentTypes": null, "hexValue": "5374617465204368616e6e656c204d6f64756c65", - "id": 2043, + "id": 2242, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "344:22:13", + "src": "344:22:19", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_e66fa361bdba11103aaf2321b03707a79b393abf1f410f3f609398777fd3a713", @@ -295,11 +295,11 @@ }, { "constant": true, - "id": 2047, + "id": 2246, "name": "VERSION", "nodeType": "VariableDeclaration", - "scope": 2234, - "src": "372:40:13", + "scope": 2436, + "src": "372:40:19", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -307,10 +307,10 @@ "typeString": "string" }, "typeName": { - "id": 2045, + "id": 2244, "name": "string", "nodeType": "ElementaryTypeName", - "src": "372:6:13", + "src": "372:6:19", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -319,14 +319,14 @@ "value": { "argumentTypes": null, "hexValue": "302e302e31", - "id": 2046, + "id": 2245, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "405:7:13", + "src": "405:7:19", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", @@ -338,11 +338,11 @@ }, { "constant": false, - "id": 2051, + "id": 2250, "name": "isExecuted", "nodeType": "VariableDeclaration", - "scope": 2234, - "src": "510:43:13", + "scope": 2436, + "src": "510:43:19", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -350,28 +350,28 @@ "typeString": "mapping(bytes32 => bool)" }, "typeName": { - "id": 2050, + "id": 2249, "keyType": { - "id": 2048, + "id": 2247, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "519:7:13", + "src": "519:7:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "Mapping", - "src": "510:25:13", + "src": "510:25:19", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" }, "valueType": { - "id": 2049, + "id": 2248, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "530:4:13", + "src": "530:4:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -383,9 +383,9 @@ }, { "body": { - "id": 2057, + "id": 2256, "nodeType": "Block", - "src": "637:29:13", + "src": "637:29:19", "statements": [ { "expression": { @@ -393,18 +393,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 2054, + "id": 2253, "name": "setManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 620, - "src": "647:10:13", + "referencedDeclaration": 749, + "src": "647:10:19", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 2055, + "id": 2254, "isConstant": false, "isLValue": false, "isPure": false, @@ -412,20 +412,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "647:12:13", + "src": "647:12:19", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2056, + "id": 2255, "nodeType": "ExpressionStatement", - "src": "647:12:13" + "src": "647:12:19" } ] }, "documentation": "@dev Setup function sets manager", - "id": 2058, + "id": 2257, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -433,42 +433,42 @@ "name": "setup", "nodeType": "FunctionDefinition", "parameters": { - "id": 2052, + "id": 2251, "nodeType": "ParameterList", "parameters": [], - "src": "615:2:13" + "src": "615:2:19" }, "payable": false, "returnParameters": { - "id": 2053, + "id": 2252, "nodeType": "ParameterList", "parameters": [], - "src": "637:0:13" + "src": "637:0:19" }, - "scope": 2234, - "src": "601:65:13", + "scope": 2436, + "src": "601:65:19", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2120, + "id": 2319, "nodeType": "Block", - "src": "1502:365:13", + "src": "1502:365:19", "statements": [ { "assignments": [ - 2081 + 2280 ], "declarations": [ { "constant": false, - "id": 2081, + "id": 2280, "name": "transactionHash", "nodeType": "VariableDeclaration", - "scope": 2121, - "src": "1512:23:13", + "scope": 2320, + "src": "1512:23:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -476,10 +476,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 2080, + "id": 2279, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1512:7:13", + "src": "1512:7:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -489,18 +489,18 @@ "visibility": "internal" } ], - "id": 2089, + "id": 2288, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 2083, + "id": 2282, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2060, - "src": "1557:2:13", + "referencedDeclaration": 2259, + "src": "1557:2:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -508,12 +508,12 @@ }, { "argumentTypes": null, - "id": 2084, + "id": 2283, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2062, - "src": "1561:5:13", + "referencedDeclaration": 2261, + "src": "1561:5:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -521,12 +521,12 @@ }, { "argumentTypes": null, - "id": 2085, + "id": 2284, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2064, - "src": "1568:4:13", + "referencedDeclaration": 2263, + "src": "1568:4:19", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -534,25 +534,25 @@ }, { "argumentTypes": null, - "id": 2086, + "id": 2285, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2066, - "src": "1574:9:13", + "referencedDeclaration": 2265, + "src": "1574:9:19", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, { "argumentTypes": null, - "id": 2087, + "id": 2286, "name": "nonce", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2068, - "src": "1585:5:13", + "referencedDeclaration": 2267, + "src": "1585:5:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -574,7 +574,7 @@ "typeString": "bytes memory" }, { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, { @@ -582,18 +582,18 @@ "typeString": "uint256" } ], - "id": 2082, + "id": 2281, "name": "getTransactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2233, - "src": "1538:18:13", + "referencedDeclaration": 2435, + "src": "1538:18:19", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$_t_uint256_$returns$_t_bytes32_$", + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bytes32_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) view returns (bytes32)" } }, - "id": 2088, + "id": 2287, "isConstant": false, "isLValue": false, "isPure": false, @@ -601,14 +601,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1538:53:13", + "src": "1538:53:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "VariableDeclarationStatement", - "src": "1512:79:13" + "src": "1512:79:19" }, { "expression": { @@ -616,7 +616,7 @@ "arguments": [ { "argumentTypes": null, - "id": 2094, + "id": 2293, "isConstant": false, "isLValue": false, "isPure": false, @@ -624,31 +624,31 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "1609:28:13", + "src": "1609:28:19", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2091, + "id": 2290, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2051, - "src": "1610:10:13", + "referencedDeclaration": 2250, + "src": "1610:10:19", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 2093, + "id": 2292, "indexExpression": { "argumentTypes": null, - "id": 2092, + "id": 2291, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2081, - "src": "1621:15:13", + "referencedDeclaration": 2280, + "src": "1621:15:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -659,7 +659,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1610:27:13", + "src": "1610:27:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -678,21 +678,21 @@ "typeString": "bool" } ], - "id": 2090, + "id": 2289, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "1601:7:13", + "referencedDeclaration": 2601, + "src": "1601:7:19", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 2095, + "id": 2294, "isConstant": false, "isLValue": false, "isPure": false, @@ -700,15 +700,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1601:37:13", + "src": "1601:37:19", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2096, + "id": 2295, "nodeType": "ExpressionStatement", - "src": "1601:37:13" + "src": "1601:37:19" }, { "expression": { @@ -716,12 +716,12 @@ "arguments": [ { "argumentTypes": null, - "id": 2098, + "id": 2297, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2081, - "src": "1658:15:13", + "referencedDeclaration": 2280, + "src": "1658:15:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -729,12 +729,12 @@ }, { "argumentTypes": null, - "id": 2099, + "id": 2298, "name": "v", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2071, - "src": "1675:1:13", + "referencedDeclaration": 2270, + "src": "1675:1:19", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", "typeString": "uint8[] memory" @@ -742,12 +742,12 @@ }, { "argumentTypes": null, - "id": 2100, + "id": 2299, "name": "r", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2074, - "src": "1678:1:13", + "referencedDeclaration": 2273, + "src": "1678:1:19", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", "typeString": "bytes32[] memory" @@ -755,12 +755,12 @@ }, { "argumentTypes": null, - "id": 2101, + "id": 2300, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2077, - "src": "1681:1:13", + "referencedDeclaration": 2276, + "src": "1681:1:19", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", "typeString": "bytes32[] memory" @@ -786,18 +786,18 @@ "typeString": "bytes32[] memory" } ], - "id": 2097, + "id": 2296, "name": "checkHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2202, - "src": "1648:9:13", + "referencedDeclaration": 2401, + "src": "1648:9:19", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_array$_t_uint8_$dyn_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$returns$__$", "typeString": "function (bytes32,uint8[] memory,bytes32[] memory,bytes32[] memory) view" } }, - "id": 2102, + "id": 2301, "isConstant": false, "isLValue": false, "isPure": false, @@ -805,20 +805,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1648:35:13", + "src": "1648:35:19", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2103, + "id": 2302, "nodeType": "ExpressionStatement", - "src": "1648:35:13" + "src": "1648:35:19" }, { "expression": { "argumentTypes": null, - "id": 2108, + "id": 2307, "isConstant": false, "isLValue": false, "isPure": false, @@ -827,26 +827,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2104, + "id": 2303, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2051, - "src": "1746:10:13", + "referencedDeclaration": 2250, + "src": "1746:10:19", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 2106, + "id": 2305, "indexExpression": { "argumentTypes": null, - "id": 2105, + "id": 2304, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2081, - "src": "1757:15:13", + "referencedDeclaration": 2280, + "src": "1757:15:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -857,7 +857,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1746:27:13", + "src": "1746:27:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -868,14 +868,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 2107, + "id": 2306, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "1776:4:13", + "src": "1776:4:19", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -883,15 +883,15 @@ }, "value": "true" }, - "src": "1746:34:13", + "src": "1746:34:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2109, + "id": 2308, "nodeType": "ExpressionStatement", - "src": "1746:34:13" + "src": "1746:34:19" }, { "expression": { @@ -902,12 +902,12 @@ "arguments": [ { "argumentTypes": null, - "id": 2113, + "id": 2312, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2060, - "src": "1832:2:13", + "referencedDeclaration": 2259, + "src": "1832:2:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -915,12 +915,12 @@ }, { "argumentTypes": null, - "id": 2114, + "id": 2313, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2062, - "src": "1836:5:13", + "referencedDeclaration": 2261, + "src": "1836:5:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -928,12 +928,12 @@ }, { "argumentTypes": null, - "id": 2115, + "id": 2314, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2064, - "src": "1843:4:13", + "referencedDeclaration": 2263, + "src": "1843:4:19", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -941,14 +941,14 @@ }, { "argumentTypes": null, - "id": 2116, + "id": 2315, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2066, - "src": "1849:9:13", + "referencedDeclaration": 2265, + "src": "1849:9:19", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } } @@ -968,38 +968,38 @@ "typeString": "bytes memory" }, { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } ], "expression": { "argumentTypes": null, - "id": 2111, + "id": 2310, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 588, - "src": "1798:7:13", + "referencedDeclaration": 717, + "src": "1798:7:19", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" } }, - "id": 2112, + "id": 2311, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "execTransactionFromModule", "nodeType": "MemberAccess", - "referencedDeclaration": 798, - "src": "1798:33:13", + "referencedDeclaration": 927, + "src": "1798:33:19", "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$returns$_t_bool_$", + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation) external returns (bool)" } }, - "id": 2117, + "id": 2316, "isConstant": false, "isLValue": false, "isPure": false, @@ -1007,7 +1007,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1798:61:13", + "src": "1798:61:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1021,21 +1021,21 @@ "typeString": "bool" } ], - "id": 2110, + "id": 2309, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "1790:7:13", + "referencedDeclaration": 2601, + "src": "1790:7:19", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 2118, + "id": 2317, "isConstant": false, "isLValue": false, "isPure": false, @@ -1043,20 +1043,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1790:70:13", + "src": "1790:70:19", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2119, + "id": 2318, "nodeType": "ExpressionStatement", - "src": "1790:70:13" + "src": "1790:70:19" } ] }, "documentation": "@dev Allows to execute a Safe transaction confirmed by required number of owners.\n @param to Destination address of Safe transaction.\n @param value Ether value of Safe transaction.\n @param data Data payload of Safe transaction.\n @param operation Operation type of Safe transaction.\n @param nonce Nonce used for this Safe transaction.\n @param v Array of signature V values sorted by owner addresses.\n @param r Array of signature R values sorted by owner addresses.\n @param s Array of signature S values sorted by owner addresses.", - "id": 2121, + "id": 2320, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -1064,16 +1064,16 @@ "name": "execTransaction", "nodeType": "FunctionDefinition", "parameters": { - "id": 2078, + "id": 2277, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2060, + "id": 2259, "name": "to", "nodeType": "VariableDeclaration", - "scope": 2121, - "src": "1299:10:13", + "scope": 2320, + "src": "1299:10:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1081,10 +1081,10 @@ "typeString": "address" }, "typeName": { - "id": 2059, + "id": 2258, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1299:7:13", + "src": "1299:7:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1095,11 +1095,11 @@ }, { "constant": false, - "id": 2062, + "id": 2261, "name": "value", "nodeType": "VariableDeclaration", - "scope": 2121, - "src": "1320:13:13", + "scope": 2320, + "src": "1320:13:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1107,10 +1107,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2061, + "id": 2260, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1320:7:13", + "src": "1320:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1121,11 +1121,11 @@ }, { "constant": false, - "id": 2064, + "id": 2263, "name": "data", "nodeType": "VariableDeclaration", - "scope": 2121, - "src": "1344:10:13", + "scope": 2320, + "src": "1344:10:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1133,10 +1133,10 @@ "typeString": "bytes" }, "typeName": { - "id": 2063, + "id": 2262, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "1344:5:13", + "src": "1344:5:19", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -1147,26 +1147,26 @@ }, { "constant": false, - "id": 2066, + "id": 2265, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 2121, - "src": "1365:24:13", + "scope": 2320, + "src": "1365:24:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, "typeName": { "contractScope": null, - "id": 2065, + "id": 2264, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 5, - "src": "1365:14:13", + "referencedDeclaration": 29, + "src": "1365:14:19", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, @@ -1175,11 +1175,11 @@ }, { "constant": false, - "id": 2068, + "id": 2267, "name": "nonce", "nodeType": "VariableDeclaration", - "scope": 2121, - "src": "1400:13:13", + "scope": 2320, + "src": "1400:13:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1187,10 +1187,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2067, + "id": 2266, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1400:7:13", + "src": "1400:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1201,11 +1201,11 @@ }, { "constant": false, - "id": 2071, + "id": 2270, "name": "v", "nodeType": "VariableDeclaration", - "scope": 2121, - "src": "1423:9:13", + "scope": 2320, + "src": "1423:9:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1214,19 +1214,19 @@ }, "typeName": { "baseType": { - "id": 2069, + "id": 2268, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "1423:5:13", + "src": "1423:5:19", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "id": 2070, + "id": 2269, "length": null, "nodeType": "ArrayTypeName", - "src": "1423:7:13", + "src": "1423:7:19", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr", "typeString": "uint8[]" @@ -1237,11 +1237,11 @@ }, { "constant": false, - "id": 2074, + "id": 2273, "name": "r", "nodeType": "VariableDeclaration", - "scope": 2121, - "src": "1443:11:13", + "scope": 2320, + "src": "1443:11:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1250,19 +1250,19 @@ }, "typeName": { "baseType": { - "id": 2072, + "id": 2271, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1443:7:13", + "src": "1443:7:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "id": 2073, + "id": 2272, "length": null, "nodeType": "ArrayTypeName", - "src": "1443:9:13", + "src": "1443:9:19", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", "typeString": "bytes32[]" @@ -1273,11 +1273,11 @@ }, { "constant": false, - "id": 2077, + "id": 2276, "name": "s", "nodeType": "VariableDeclaration", - "scope": 2121, - "src": "1465:11:13", + "scope": 2320, + "src": "1465:11:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1286,19 +1286,19 @@ }, "typeName": { "baseType": { - "id": 2075, + "id": 2274, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1465:7:13", + "src": "1465:7:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "id": 2076, + "id": 2275, "length": null, "nodeType": "ArrayTypeName", - "src": "1465:9:13", + "src": "1465:9:19", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", "typeString": "bytes32[]" @@ -1308,39 +1308,39 @@ "visibility": "internal" } ], - "src": "1289:193:13" + "src": "1289:193:19" }, "payable": false, "returnParameters": { - "id": 2079, + "id": 2278, "nodeType": "ParameterList", "parameters": [], - "src": "1502:0:13" + "src": "1502:0:19" }, - "scope": 2234, - "src": "1265:602:13", + "scope": 2436, + "src": "1265:602:19", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2201, + "id": 2400, "nodeType": "Block", - "src": "1988:530:13", + "src": "1988:530:19", "statements": [ { "assignments": [ - 2136 + 2335 ], "declarations": [ { "constant": false, - "id": 2136, + "id": 2335, "name": "lastOwner", "nodeType": "VariableDeclaration", - "scope": 2202, - "src": "2050:17:13", + "scope": 2401, + "src": "2050:17:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1348,10 +1348,10 @@ "typeString": "address" }, "typeName": { - "id": 2135, + "id": 2334, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2050:7:13", + "src": "2050:7:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1361,21 +1361,21 @@ "visibility": "internal" } ], - "id": 2140, + "id": 2339, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", - "id": 2138, + "id": 2337, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2078:1:13", + "src": "2078:1:19", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1391,20 +1391,20 @@ "typeString": "int_const 0" } ], - "id": 2137, + "id": 2336, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2070:7:13", + "src": "2070:7:19", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 2139, + "id": 2338, "isConstant": false, "isLValue": false, "isPure": true, @@ -1412,25 +1412,25 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2070:10:13", + "src": "2070:10:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "2050:30:13" + "src": "2050:30:19" }, { "assignments": [], "declarations": [ { "constant": false, - "id": 2142, + "id": 2341, "name": "currentOwner", "nodeType": "VariableDeclaration", - "scope": 2202, - "src": "2090:20:13", + "scope": 2401, + "src": "2090:20:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1438,10 +1438,10 @@ "typeString": "address" }, "typeName": { - "id": 2141, + "id": 2340, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2090:7:13", + "src": "2090:7:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1451,21 +1451,21 @@ "visibility": "internal" } ], - "id": 2143, + "id": 2342, "initialValue": null, "nodeType": "VariableDeclarationStatement", - "src": "2090:20:13" + "src": "2090:20:19" }, { "assignments": [], "declarations": [ { "constant": false, - "id": 2145, + "id": 2344, "name": "i", "nodeType": "VariableDeclaration", - "scope": 2202, - "src": "2120:9:13", + "scope": 2401, + "src": "2120:9:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1473,10 +1473,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2144, + "id": 2343, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2120:7:13", + "src": "2120:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1486,23 +1486,23 @@ "visibility": "internal" } ], - "id": 2146, + "id": 2345, "initialValue": null, "nodeType": "VariableDeclarationStatement", - "src": "2120:9:13" + "src": "2120:9:19" }, { "assignments": [ - 2148 + 2347 ], "declarations": [ { "constant": false, - "id": 2148, + "id": 2347, "name": "threshold", "nodeType": "VariableDeclaration", - "scope": 2202, - "src": "2139:15:13", + "scope": 2401, + "src": "2139:15:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1510,10 +1510,10 @@ "typeString": "uint8" }, "typeName": { - "id": 2147, + "id": 2346, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "2139:5:13", + "src": "2139:5:19", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -1523,7 +1523,7 @@ "visibility": "internal" } ], - "id": 2154, + "id": 2353, "initialValue": { "argumentTypes": null, "arguments": [], @@ -1534,14 +1534,14 @@ "arguments": [ { "argumentTypes": null, - "id": 2150, + "id": 2349, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 588, - "src": "2170:7:13", + "referencedDeclaration": 717, + "src": "2170:7:19", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" } } @@ -1549,22 +1549,22 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" } ], - "id": 2149, + "id": 2348, "name": "OwnerManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1343, - "src": "2157:12:13", + "referencedDeclaration": 1472, + "src": "2157:12:19", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1343_$", + "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1472_$", "typeString": "type(contract OwnerManager)" } }, - "id": 2151, + "id": 2350, "isConstant": false, "isLValue": false, "isPure": false, @@ -1572,27 +1572,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2157:21:13", + "src": "2157:21:19", "typeDescriptions": { - "typeIdentifier": "t_contract$_OwnerManager_$1343", + "typeIdentifier": "t_contract$_OwnerManager_$1472", "typeString": "contract OwnerManager" } }, - "id": 2152, + "id": 2351, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "getThreshold", "nodeType": "MemberAccess", - "referencedDeclaration": 1279, - "src": "2157:34:13", + "referencedDeclaration": 1408, + "src": "2157:34:19", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$", "typeString": "function () view external returns (uint8)" } }, - "id": 2153, + "id": 2352, "isConstant": false, "isLValue": false, "isPure": false, @@ -1600,37 +1600,37 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2157:36:13", + "src": "2157:36:19", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "VariableDeclarationStatement", - "src": "2139:54:13" + "src": "2139:54:19" }, { "body": { - "id": 2199, + "id": 2398, "nodeType": "Block", - "src": "2277:235:13", + "src": "2277:235:19", "statements": [ { "expression": { "argumentTypes": null, - "id": 2178, + "id": 2377, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 2165, + "id": 2364, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2142, - "src": "2291:12:13", + "referencedDeclaration": 2341, + "src": "2291:12:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1643,12 +1643,12 @@ "arguments": [ { "argumentTypes": null, - "id": 2167, + "id": 2366, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2123, - "src": "2316:15:13", + "referencedDeclaration": 2322, + "src": "2316:15:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1658,26 +1658,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2168, + "id": 2367, "name": "v", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2126, - "src": "2333:1:13", + "referencedDeclaration": 2325, + "src": "2333:1:19", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", "typeString": "uint8[] memory" } }, - "id": 2170, + "id": 2369, "indexExpression": { "argumentTypes": null, - "id": 2169, + "id": 2368, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2145, - "src": "2335:1:13", + "referencedDeclaration": 2344, + "src": "2335:1:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1688,7 +1688,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2333:4:13", + "src": "2333:4:19", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -1698,26 +1698,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2171, + "id": 2370, "name": "r", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2129, - "src": "2339:1:13", + "referencedDeclaration": 2328, + "src": "2339:1:19", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", "typeString": "bytes32[] memory" } }, - "id": 2173, + "id": 2372, "indexExpression": { "argumentTypes": null, - "id": 2172, + "id": 2371, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2145, - "src": "2341:1:13", + "referencedDeclaration": 2344, + "src": "2341:1:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1728,7 +1728,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2339:4:13", + "src": "2339:4:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1738,26 +1738,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2174, + "id": 2373, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2132, - "src": "2345:1:13", + "referencedDeclaration": 2331, + "src": "2345:1:19", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", "typeString": "bytes32[] memory" } }, - "id": 2176, + "id": 2375, "indexExpression": { "argumentTypes": null, - "id": 2175, + "id": 2374, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2145, - "src": "2347:1:13", + "referencedDeclaration": 2344, + "src": "2347:1:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1768,7 +1768,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2345:4:13", + "src": "2345:4:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1794,18 +1794,18 @@ "typeString": "bytes32" } ], - "id": 2166, + "id": 2365, "name": "ecrecover", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2388, - "src": "2306:9:13", + "referencedDeclaration": 2590, + "src": "2306:9:19", "typeDescriptions": { "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)" } }, - "id": 2177, + "id": 2376, "isConstant": false, "isLValue": false, "isPure": false, @@ -1813,21 +1813,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2306:44:13", + "src": "2306:44:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2291:59:13", + "src": "2291:59:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 2179, + "id": 2378, "nodeType": "ExpressionStatement", - "src": "2291:59:13" + "src": "2291:59:19" }, { "expression": { @@ -1838,12 +1838,12 @@ "arguments": [ { "argumentTypes": null, - "id": 2185, + "id": 2384, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2142, - "src": "2402:12:13", + "referencedDeclaration": 2341, + "src": "2402:12:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1862,14 +1862,14 @@ "arguments": [ { "argumentTypes": null, - "id": 2182, + "id": 2381, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 588, - "src": "2385:7:13", + "referencedDeclaration": 717, + "src": "2385:7:19", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" } } @@ -1877,22 +1877,22 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" } ], - "id": 2181, + "id": 2380, "name": "OwnerManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1343, - "src": "2372:12:13", + "referencedDeclaration": 1472, + "src": "2372:12:19", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1343_$", + "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1472_$", "typeString": "type(contract OwnerManager)" } }, - "id": 2183, + "id": 2382, "isConstant": false, "isLValue": false, "isPure": false, @@ -1900,27 +1900,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2372:21:13", + "src": "2372:21:19", "typeDescriptions": { - "typeIdentifier": "t_contract$_OwnerManager_$1343", + "typeIdentifier": "t_contract$_OwnerManager_$1472", "typeString": "contract OwnerManager" } }, - "id": 2184, + "id": 2383, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "isOwner", "nodeType": "MemberAccess", - "referencedDeclaration": 1293, - "src": "2372:29:13", + "referencedDeclaration": 1422, + "src": "2372:29:19", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view external returns (bool)" } }, - "id": 2186, + "id": 2385, "isConstant": false, "isLValue": false, "isPure": false, @@ -1928,7 +1928,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2372:43:13", + "src": "2372:43:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1942,21 +1942,21 @@ "typeString": "bool" } ], - "id": 2180, + "id": 2379, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "2364:7:13", + "referencedDeclaration": 2601, + "src": "2364:7:19", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 2187, + "id": 2386, "isConstant": false, "isLValue": false, "isPure": false, @@ -1964,15 +1964,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2364:52:13", + "src": "2364:52:19", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2188, + "id": 2387, "nodeType": "ExpressionStatement", - "src": "2364:52:13" + "src": "2364:52:19" }, { "expression": { @@ -1984,19 +1984,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 2192, + "id": 2391, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2190, + "id": 2389, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2142, - "src": "2438:12:13", + "referencedDeclaration": 2341, + "src": "2438:12:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2006,18 +2006,18 @@ "operator": ">", "rightExpression": { "argumentTypes": null, - "id": 2191, + "id": 2390, "name": "lastOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2136, - "src": "2453:9:13", + "referencedDeclaration": 2335, + "src": "2453:9:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2438:24:13", + "src": "2438:24:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2031,21 +2031,21 @@ "typeString": "bool" } ], - "id": 2189, + "id": 2388, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "2430:7:13", + "referencedDeclaration": 2601, + "src": "2430:7:19", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 2193, + "id": 2392, "isConstant": false, "isLValue": false, "isPure": false, @@ -2053,32 +2053,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2430:33:13", + "src": "2430:33:19", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2194, + "id": 2393, "nodeType": "ExpressionStatement", - "src": "2430:33:13" + "src": "2430:33:19" }, { "expression": { "argumentTypes": null, - "id": 2197, + "id": 2396, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 2195, + "id": 2394, "name": "lastOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2136, - "src": "2477:9:13", + "referencedDeclaration": 2335, + "src": "2477:9:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2088,26 +2088,26 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 2196, + "id": 2395, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2142, - "src": "2489:12:13", + "referencedDeclaration": 2341, + "src": "2489:12:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2477:24:13", + "src": "2477:24:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 2198, + "id": 2397, "nodeType": "ExpressionStatement", - "src": "2477:24:13" + "src": "2477:24:19" } ] }, @@ -2117,19 +2117,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 2161, + "id": 2360, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2159, + "id": 2358, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2145, - "src": "2257:1:13", + "referencedDeclaration": 2344, + "src": "2257:1:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2139,40 +2139,40 @@ "operator": "<", "rightExpression": { "argumentTypes": null, - "id": 2160, + "id": 2359, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2148, - "src": "2261:9:13", + "referencedDeclaration": 2347, + "src": "2261:9:19", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "2257:13:13", + "src": "2257:13:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2200, + "id": 2399, "initializationExpression": { "expression": { "argumentTypes": null, - "id": 2157, + "id": 2356, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 2155, + "id": 2354, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2145, - "src": "2250:1:13", + "referencedDeclaration": 2344, + "src": "2250:1:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2183,14 +2183,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "30", - "id": 2156, + "id": 2355, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2254:1:13", + "src": "2254:1:19", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -2198,20 +2198,20 @@ }, "value": "0" }, - "src": "2250:5:13", + "src": "2250:5:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 2158, + "id": 2357, "nodeType": "ExpressionStatement", - "src": "2250:5:13" + "src": "2250:5:19" }, "loopExpression": { "expression": { "argumentTypes": null, - "id": 2163, + "id": 2362, "isConstant": false, "isLValue": false, "isPure": false, @@ -2219,15 +2219,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "2272:3:13", + "src": "2272:3:19", "subExpression": { "argumentTypes": null, - "id": 2162, + "id": 2361, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2145, - "src": "2272:1:13", + "referencedDeclaration": 2344, + "src": "2272:1:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2238,17 +2238,17 @@ "typeString": "uint256" } }, - "id": 2164, + "id": 2363, "nodeType": "ExpressionStatement", - "src": "2272:3:13" + "src": "2272:3:19" }, "nodeType": "ForStatement", - "src": "2245:267:13" + "src": "2245:267:19" } ] }, "documentation": null, - "id": 2202, + "id": 2401, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -2256,16 +2256,16 @@ "name": "checkHash", "nodeType": "FunctionDefinition", "parameters": { - "id": 2133, + "id": 2332, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2123, + "id": 2322, "name": "transactionHash", "nodeType": "VariableDeclaration", - "scope": 2202, - "src": "1892:23:13", + "scope": 2401, + "src": "1892:23:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2273,10 +2273,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 2122, + "id": 2321, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1892:7:13", + "src": "1892:7:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2287,11 +2287,11 @@ }, { "constant": false, - "id": 2126, + "id": 2325, "name": "v", "nodeType": "VariableDeclaration", - "scope": 2202, - "src": "1917:9:13", + "scope": 2401, + "src": "1917:9:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2300,19 +2300,19 @@ }, "typeName": { "baseType": { - "id": 2124, + "id": 2323, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "1917:5:13", + "src": "1917:5:19", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "id": 2125, + "id": 2324, "length": null, "nodeType": "ArrayTypeName", - "src": "1917:7:13", + "src": "1917:7:19", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr", "typeString": "uint8[]" @@ -2323,11 +2323,11 @@ }, { "constant": false, - "id": 2129, + "id": 2328, "name": "r", "nodeType": "VariableDeclaration", - "scope": 2202, - "src": "1928:11:13", + "scope": 2401, + "src": "1928:11:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2336,19 +2336,19 @@ }, "typeName": { "baseType": { - "id": 2127, + "id": 2326, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1928:7:13", + "src": "1928:7:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "id": 2128, + "id": 2327, "length": null, "nodeType": "ArrayTypeName", - "src": "1928:9:13", + "src": "1928:9:19", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", "typeString": "bytes32[]" @@ -2359,11 +2359,11 @@ }, { "constant": false, - "id": 2132, + "id": 2331, "name": "s", "nodeType": "VariableDeclaration", - "scope": 2202, - "src": "1941:11:13", + "scope": 2401, + "src": "1941:11:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2372,19 +2372,19 @@ }, "typeName": { "baseType": { - "id": 2130, + "id": 2329, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1941:7:13", + "src": "1941:7:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "id": 2131, + "id": 2330, "length": null, "nodeType": "ArrayTypeName", - "src": "1941:9:13", + "src": "1941:9:19", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", "typeString": "bytes32[]" @@ -2394,26 +2394,26 @@ "visibility": "internal" } ], - "src": "1891:62:13" + "src": "1891:62:19" }, "payable": false, "returnParameters": { - "id": 2134, + "id": 2333, "nodeType": "ParameterList", "parameters": [], - "src": "1988:0:13" + "src": "1988:0:19" }, - "scope": 2234, - "src": "1873:645:13", + "scope": 2436, + "src": "1873:645:19", "stateMutability": "view", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 2232, + "id": 2434, "nodeType": "Block", - "src": "3012:95:13", + "src": "3012:113:19", "statements": [ { "expression": { @@ -2424,239 +2424,291 @@ "arguments": [ { "argumentTypes": null, - "hexValue": "30783139", - "id": 2219, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30783139", + "id": 2420, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3061:4:19", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_25_by_1", + "typeString": "int_const 25" + }, + "value": "0x19" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_25_by_1", + "typeString": "int_const 25" + } + ], + "id": 2419, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3056:4:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes1_$", + "typeString": "type(bytes1)" + }, + "typeName": "byte" + }, + "id": 2421, "isConstant": false, "isLValue": false, "isPure": true, - "kind": "number", + "kind": "typeConversion", "lValueRequested": false, - "nodeType": "Literal", - "src": "3044:4:13", - "subdenomination": null, + "names": [], + "nodeType": "FunctionCall", + "src": "3056:10:19", "typeDescriptions": { - "typeIdentifier": "t_rational_25_by_1", - "typeString": "int_const 25" - }, - "value": "0x19" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_25_by_1", - "typeString": "int_const 25" + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" } - ], - "id": 2218, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "3039:4:13", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes1_$", - "typeString": "type(bytes1)" }, - "typeName": "byte" - }, - "id": 2220, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3039:10:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - } - }, - { - "argumentTypes": null, - "arguments": [ { "argumentTypes": null, - "hexValue": "30", - "id": 2222, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 2423, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3073:1:19", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 2422, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3068:4:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes1_$", + "typeString": "type(bytes1)" + }, + "typeName": "byte" + }, + "id": 2424, "isConstant": false, "isLValue": false, "isPure": true, - "kind": "number", + "kind": "typeConversion", "lValueRequested": false, - "nodeType": "Literal", - "src": "3056:1:13", - "subdenomination": null, + "names": [], + "nodeType": "FunctionCall", + "src": "3068:7:19", "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + { + "argumentTypes": null, + "id": 2425, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2649, + "src": "3077:4:19", + "typeDescriptions": { + "typeIdentifier": "t_contract$_StateChannelModule_$2436", + "typeString": "contract StateChannelModule" + } + }, + { + "argumentTypes": null, + "id": 2426, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2403, + "src": "3083:2:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2427, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2405, + "src": "3087:5:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2428, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2407, + "src": "3094:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 2429, + "name": "operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2409, + "src": "3100:9:19", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + }, + { + "argumentTypes": null, + "id": 2430, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2411, + "src": "3111:5:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } } ], "expression": { "argumentTypes": [ { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + { + "typeIdentifier": "t_contract$_StateChannelModule_$2436", + "typeString": "contract StateChannelModule" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } ], - "id": 2221, + "expression": { + "argumentTypes": null, + "id": 2417, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2585, + "src": "3039:3:19", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 2418, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "3051:4:13", + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3039:16:19", "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes1_$", - "typeString": "type(bytes1)" - }, - "typeName": "byte" + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } }, - "id": 2223, + "id": 2431, "isConstant": false, "isLValue": false, - "isPure": true, - "kind": "typeConversion", + "isPure": false, + "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3051:7:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - } - }, - { - "argumentTypes": null, - "id": 2224, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2435, - "src": "3060:4:13", - "typeDescriptions": { - "typeIdentifier": "t_contract$_StateChannelModule_$2234", - "typeString": "contract StateChannelModule" - } - }, - { - "argumentTypes": null, - "id": 2225, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2204, - "src": "3066:2:13", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 2226, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2206, - "src": "3070:5:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 2227, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2208, - "src": "3077:4:13", + "src": "3039:78:19", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } - }, - { - "argumentTypes": null, - "id": 2228, - "name": "operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2210, - "src": "3083:9:13", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", - "typeString": "enum Enum.Operation" - } - }, - { - "argumentTypes": null, - "id": 2229, - "name": "nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2212, - "src": "3094:5:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } } ], "expression": { "argumentTypes": [ - { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - }, - { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - }, - { - "typeIdentifier": "t_contract$_StateChannelModule_$2234", - "typeString": "contract StateChannelModule" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_enum$_Operation_$5", - "typeString": "enum Enum.Operation" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" } ], - "id": 2217, + "id": 2416, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2390, - "src": "3029:9:13", + "referencedDeclaration": 2592, + "src": "3029:9:19", "typeDescriptions": { "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", "typeString": "function () pure returns (bytes32)" } }, - "id": 2230, + "id": 2432, "isConstant": false, "isLValue": false, "isPure": false, @@ -2664,21 +2716,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3029:71:13", + "src": "3029:89:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "functionReturnParameters": 2216, - "id": 2231, + "functionReturnParameters": 2415, + "id": 2433, "nodeType": "Return", - "src": "3022:78:13" + "src": "3022:96:19" } ] }, "documentation": "@dev Returns hash to be signed by owners.\n @param to Destination address.\n @param value Ether value.\n @param data Data payload.\n @param operation Operation type.\n @param nonce Transaction nonce.\n @return Transaction hash.", - "id": 2233, + "id": 2435, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -2686,16 +2738,16 @@ "name": "getTransactionHash", "nodeType": "FunctionDefinition", "parameters": { - "id": 2213, + "id": 2412, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2204, + "id": 2403, "name": "to", "nodeType": "VariableDeclaration", - "scope": 2233, - "src": "2833:10:13", + "scope": 2435, + "src": "2833:10:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2703,10 +2755,10 @@ "typeString": "address" }, "typeName": { - "id": 2203, + "id": 2402, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2833:7:13", + "src": "2833:7:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2717,11 +2769,11 @@ }, { "constant": false, - "id": 2206, + "id": 2405, "name": "value", "nodeType": "VariableDeclaration", - "scope": 2233, - "src": "2854:13:13", + "scope": 2435, + "src": "2854:13:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2729,10 +2781,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2205, + "id": 2404, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2854:7:13", + "src": "2854:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2743,11 +2795,11 @@ }, { "constant": false, - "id": 2208, + "id": 2407, "name": "data", "nodeType": "VariableDeclaration", - "scope": 2233, - "src": "2878:10:13", + "scope": 2435, + "src": "2878:10:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2755,10 +2807,10 @@ "typeString": "bytes" }, "typeName": { - "id": 2207, + "id": 2406, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "2878:5:13", + "src": "2878:5:19", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -2769,26 +2821,26 @@ }, { "constant": false, - "id": 2210, + "id": 2409, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 2233, - "src": "2899:24:13", + "scope": 2435, + "src": "2899:24:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, "typeName": { "contractScope": null, - "id": 2209, + "id": 2408, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 5, - "src": "2899:14:13", + "referencedDeclaration": 29, + "src": "2899:14:19", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, @@ -2797,11 +2849,11 @@ }, { "constant": false, - "id": 2212, + "id": 2411, "name": "nonce", "nodeType": "VariableDeclaration", - "scope": 2233, - "src": "2934:13:13", + "scope": 2435, + "src": "2934:13:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2809,10 +2861,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2211, + "id": 2410, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2934:7:13", + "src": "2934:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2822,20 +2874,20 @@ "visibility": "internal" } ], - "src": "2823:130:13" + "src": "2823:130:19" }, "payable": false, "returnParameters": { - "id": 2216, + "id": 2415, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2215, + "id": 2414, "name": "", "nodeType": "VariableDeclaration", - "scope": 2233, - "src": "2999:7:13", + "scope": 2435, + "src": "2999:7:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2843,10 +2895,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 2214, + "id": 2413, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "2999:7:13", + "src": "2999:7:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2856,60 +2908,60 @@ "visibility": "internal" } ], - "src": "2998:9:13" + "src": "2998:9:19" }, - "scope": 2234, - "src": "2796:311:13", + "scope": 2436, + "src": "2796:329:19", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 2235, - "src": "269:2840:13" + "scope": 2437, + "src": "269:2858:19" } ], - "src": "0:3110:13" + "src": "0:3128:19" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/StateChannelModule.sol", "exportedSymbols": { "StateChannelModule": [ - 2234 + 2436 ] }, - "id": 2235, + "id": 2437, "nodeType": "SourceUnit", "nodes": [ { - "id": 2037, + "id": 2236, "literals": [ "solidity", "0.4", - ".23" + ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:13" + "src": "0:23:19" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "file": "../Module.sol", - "id": 2038, + "id": 2237, "nodeType": "ImportDirective", - "scope": 2235, - "sourceUnit": 622, - "src": "24:23:13", + "scope": 2437, + "sourceUnit": 751, + "src": "24:23:19", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", "file": "../OwnerManager.sol", - "id": 2039, + "id": 2238, "nodeType": "ImportDirective", - "scope": 2235, - "sourceUnit": 1344, - "src": "48:29:13", + "scope": 2437, + "sourceUnit": 1473, + "src": "48:29:19", "symbolAliases": [], "unitAlias": "" }, @@ -2919,46 +2971,46 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 2040, + "id": 2239, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 621, - "src": "300:6:13", + "referencedDeclaration": 750, + "src": "300:6:19", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } }, - "id": 2041, + "id": 2240, "nodeType": "InheritanceSpecifier", - "src": "300:6:13" + "src": "300:6:19" } ], "contractDependencies": [ - 580, - 621, - 1359 + 652, + 750, + 1619 ], "contractKind": "contract", "documentation": "@title Gnosis Safe State Module - A module that allows interaction with statechannels.\n @author Stefan George - \n @author Richard Meissner - ", "fullyImplemented": true, - "id": 2234, + "id": 2436, "linearizedBaseContracts": [ - 2234, - 621, - 580, - 1359 + 2436, + 750, + 652, + 1619 ], "name": "StateChannelModule", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, - "id": 2044, + "id": 2243, "name": "NAME", "nodeType": "VariableDeclaration", - "scope": 2234, - "src": "314:52:13", + "scope": 2436, + "src": "314:52:19", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2966,10 +3018,10 @@ "typeString": "string" }, "typeName": { - "id": 2042, + "id": 2241, "name": "string", "nodeType": "ElementaryTypeName", - "src": "314:6:13", + "src": "314:6:19", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -2978,14 +3030,14 @@ "value": { "argumentTypes": null, "hexValue": "5374617465204368616e6e656c204d6f64756c65", - "id": 2043, + "id": 2242, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "344:22:13", + "src": "344:22:19", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_e66fa361bdba11103aaf2321b03707a79b393abf1f410f3f609398777fd3a713", @@ -2997,11 +3049,11 @@ }, { "constant": true, - "id": 2047, + "id": 2246, "name": "VERSION", "nodeType": "VariableDeclaration", - "scope": 2234, - "src": "372:40:13", + "scope": 2436, + "src": "372:40:19", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -3009,10 +3061,10 @@ "typeString": "string" }, "typeName": { - "id": 2045, + "id": 2244, "name": "string", "nodeType": "ElementaryTypeName", - "src": "372:6:13", + "src": "372:6:19", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -3021,14 +3073,14 @@ "value": { "argumentTypes": null, "hexValue": "302e302e31", - "id": 2046, + "id": 2245, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "405:7:13", + "src": "405:7:19", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", @@ -3040,11 +3092,11 @@ }, { "constant": false, - "id": 2051, + "id": 2250, "name": "isExecuted", "nodeType": "VariableDeclaration", - "scope": 2234, - "src": "510:43:13", + "scope": 2436, + "src": "510:43:19", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -3052,28 +3104,28 @@ "typeString": "mapping(bytes32 => bool)" }, "typeName": { - "id": 2050, + "id": 2249, "keyType": { - "id": 2048, + "id": 2247, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "519:7:13", + "src": "519:7:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "Mapping", - "src": "510:25:13", + "src": "510:25:19", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" }, "valueType": { - "id": 2049, + "id": 2248, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "530:4:13", + "src": "530:4:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3085,9 +3137,9 @@ }, { "body": { - "id": 2057, + "id": 2256, "nodeType": "Block", - "src": "637:29:13", + "src": "637:29:19", "statements": [ { "expression": { @@ -3095,18 +3147,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 2054, + "id": 2253, "name": "setManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 620, - "src": "647:10:13", + "referencedDeclaration": 749, + "src": "647:10:19", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 2055, + "id": 2254, "isConstant": false, "isLValue": false, "isPure": false, @@ -3114,20 +3166,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "647:12:13", + "src": "647:12:19", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2056, + "id": 2255, "nodeType": "ExpressionStatement", - "src": "647:12:13" + "src": "647:12:19" } ] }, "documentation": "@dev Setup function sets manager", - "id": 2058, + "id": 2257, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -3135,42 +3187,42 @@ "name": "setup", "nodeType": "FunctionDefinition", "parameters": { - "id": 2052, + "id": 2251, "nodeType": "ParameterList", "parameters": [], - "src": "615:2:13" + "src": "615:2:19" }, "payable": false, "returnParameters": { - "id": 2053, + "id": 2252, "nodeType": "ParameterList", "parameters": [], - "src": "637:0:13" + "src": "637:0:19" }, - "scope": 2234, - "src": "601:65:13", + "scope": 2436, + "src": "601:65:19", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2120, + "id": 2319, "nodeType": "Block", - "src": "1502:365:13", + "src": "1502:365:19", "statements": [ { "assignments": [ - 2081 + 2280 ], "declarations": [ { "constant": false, - "id": 2081, + "id": 2280, "name": "transactionHash", "nodeType": "VariableDeclaration", - "scope": 2121, - "src": "1512:23:13", + "scope": 2320, + "src": "1512:23:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3178,10 +3230,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 2080, + "id": 2279, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1512:7:13", + "src": "1512:7:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3191,18 +3243,18 @@ "visibility": "internal" } ], - "id": 2089, + "id": 2288, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 2083, + "id": 2282, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2060, - "src": "1557:2:13", + "referencedDeclaration": 2259, + "src": "1557:2:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3210,12 +3262,12 @@ }, { "argumentTypes": null, - "id": 2084, + "id": 2283, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2062, - "src": "1561:5:13", + "referencedDeclaration": 2261, + "src": "1561:5:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3223,12 +3275,12 @@ }, { "argumentTypes": null, - "id": 2085, + "id": 2284, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2064, - "src": "1568:4:13", + "referencedDeclaration": 2263, + "src": "1568:4:19", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -3236,25 +3288,25 @@ }, { "argumentTypes": null, - "id": 2086, + "id": 2285, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2066, - "src": "1574:9:13", + "referencedDeclaration": 2265, + "src": "1574:9:19", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, { "argumentTypes": null, - "id": 2087, + "id": 2286, "name": "nonce", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2068, - "src": "1585:5:13", + "referencedDeclaration": 2267, + "src": "1585:5:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3276,7 +3328,7 @@ "typeString": "bytes memory" }, { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, { @@ -3284,18 +3336,18 @@ "typeString": "uint256" } ], - "id": 2082, + "id": 2281, "name": "getTransactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2233, - "src": "1538:18:13", + "referencedDeclaration": 2435, + "src": "1538:18:19", "typeDescriptions": { - "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$_t_uint256_$returns$_t_bytes32_$", + "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bytes32_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) view returns (bytes32)" } }, - "id": 2088, + "id": 2287, "isConstant": false, "isLValue": false, "isPure": false, @@ -3303,14 +3355,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1538:53:13", + "src": "1538:53:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "VariableDeclarationStatement", - "src": "1512:79:13" + "src": "1512:79:19" }, { "expression": { @@ -3318,7 +3370,7 @@ "arguments": [ { "argumentTypes": null, - "id": 2094, + "id": 2293, "isConstant": false, "isLValue": false, "isPure": false, @@ -3326,31 +3378,31 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "1609:28:13", + "src": "1609:28:19", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2091, + "id": 2290, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2051, - "src": "1610:10:13", + "referencedDeclaration": 2250, + "src": "1610:10:19", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 2093, + "id": 2292, "indexExpression": { "argumentTypes": null, - "id": 2092, + "id": 2291, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2081, - "src": "1621:15:13", + "referencedDeclaration": 2280, + "src": "1621:15:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3361,7 +3413,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1610:27:13", + "src": "1610:27:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3380,21 +3432,21 @@ "typeString": "bool" } ], - "id": 2090, + "id": 2289, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "1601:7:13", + "referencedDeclaration": 2601, + "src": "1601:7:19", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 2095, + "id": 2294, "isConstant": false, "isLValue": false, "isPure": false, @@ -3402,15 +3454,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1601:37:13", + "src": "1601:37:19", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2096, + "id": 2295, "nodeType": "ExpressionStatement", - "src": "1601:37:13" + "src": "1601:37:19" }, { "expression": { @@ -3418,12 +3470,12 @@ "arguments": [ { "argumentTypes": null, - "id": 2098, + "id": 2297, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2081, - "src": "1658:15:13", + "referencedDeclaration": 2280, + "src": "1658:15:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3431,12 +3483,12 @@ }, { "argumentTypes": null, - "id": 2099, + "id": 2298, "name": "v", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2071, - "src": "1675:1:13", + "referencedDeclaration": 2270, + "src": "1675:1:19", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", "typeString": "uint8[] memory" @@ -3444,12 +3496,12 @@ }, { "argumentTypes": null, - "id": 2100, + "id": 2299, "name": "r", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2074, - "src": "1678:1:13", + "referencedDeclaration": 2273, + "src": "1678:1:19", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", "typeString": "bytes32[] memory" @@ -3457,12 +3509,12 @@ }, { "argumentTypes": null, - "id": 2101, + "id": 2300, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2077, - "src": "1681:1:13", + "referencedDeclaration": 2276, + "src": "1681:1:19", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", "typeString": "bytes32[] memory" @@ -3488,18 +3540,18 @@ "typeString": "bytes32[] memory" } ], - "id": 2097, + "id": 2296, "name": "checkHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2202, - "src": "1648:9:13", + "referencedDeclaration": 2401, + "src": "1648:9:19", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_array$_t_uint8_$dyn_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$returns$__$", "typeString": "function (bytes32,uint8[] memory,bytes32[] memory,bytes32[] memory) view" } }, - "id": 2102, + "id": 2301, "isConstant": false, "isLValue": false, "isPure": false, @@ -3507,20 +3559,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1648:35:13", + "src": "1648:35:19", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2103, + "id": 2302, "nodeType": "ExpressionStatement", - "src": "1648:35:13" + "src": "1648:35:19" }, { "expression": { "argumentTypes": null, - "id": 2108, + "id": 2307, "isConstant": false, "isLValue": false, "isPure": false, @@ -3529,26 +3581,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2104, + "id": 2303, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2051, - "src": "1746:10:13", + "referencedDeclaration": 2250, + "src": "1746:10:19", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 2106, + "id": 2305, "indexExpression": { "argumentTypes": null, - "id": 2105, + "id": 2304, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2081, - "src": "1757:15:13", + "referencedDeclaration": 2280, + "src": "1757:15:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3559,7 +3611,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1746:27:13", + "src": "1746:27:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3570,14 +3622,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 2107, + "id": 2306, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "1776:4:13", + "src": "1776:4:19", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -3585,15 +3637,15 @@ }, "value": "true" }, - "src": "1746:34:13", + "src": "1746:34:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2109, + "id": 2308, "nodeType": "ExpressionStatement", - "src": "1746:34:13" + "src": "1746:34:19" }, { "expression": { @@ -3604,12 +3656,12 @@ "arguments": [ { "argumentTypes": null, - "id": 2113, + "id": 2312, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2060, - "src": "1832:2:13", + "referencedDeclaration": 2259, + "src": "1832:2:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3617,12 +3669,12 @@ }, { "argumentTypes": null, - "id": 2114, + "id": 2313, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2062, - "src": "1836:5:13", + "referencedDeclaration": 2261, + "src": "1836:5:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3630,12 +3682,12 @@ }, { "argumentTypes": null, - "id": 2115, + "id": 2314, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2064, - "src": "1843:4:13", + "referencedDeclaration": 2263, + "src": "1843:4:19", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -3643,14 +3695,14 @@ }, { "argumentTypes": null, - "id": 2116, + "id": 2315, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2066, - "src": "1849:9:13", + "referencedDeclaration": 2265, + "src": "1849:9:19", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } } @@ -3670,38 +3722,38 @@ "typeString": "bytes memory" }, { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } ], "expression": { "argumentTypes": null, - "id": 2111, + "id": 2310, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 588, - "src": "1798:7:13", + "referencedDeclaration": 717, + "src": "1798:7:19", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" } }, - "id": 2112, + "id": 2311, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "execTransactionFromModule", "nodeType": "MemberAccess", - "referencedDeclaration": 798, - "src": "1798:33:13", + "referencedDeclaration": 927, + "src": "1798:33:19", "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$returns$_t_bool_$", + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation) external returns (bool)" } }, - "id": 2117, + "id": 2316, "isConstant": false, "isLValue": false, "isPure": false, @@ -3709,7 +3761,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1798:61:13", + "src": "1798:61:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3723,21 +3775,21 @@ "typeString": "bool" } ], - "id": 2110, + "id": 2309, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "1790:7:13", + "referencedDeclaration": 2601, + "src": "1790:7:19", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 2118, + "id": 2317, "isConstant": false, "isLValue": false, "isPure": false, @@ -3745,20 +3797,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1790:70:13", + "src": "1790:70:19", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2119, + "id": 2318, "nodeType": "ExpressionStatement", - "src": "1790:70:13" + "src": "1790:70:19" } ] }, "documentation": "@dev Allows to execute a Safe transaction confirmed by required number of owners.\n @param to Destination address of Safe transaction.\n @param value Ether value of Safe transaction.\n @param data Data payload of Safe transaction.\n @param operation Operation type of Safe transaction.\n @param nonce Nonce used for this Safe transaction.\n @param v Array of signature V values sorted by owner addresses.\n @param r Array of signature R values sorted by owner addresses.\n @param s Array of signature S values sorted by owner addresses.", - "id": 2121, + "id": 2320, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -3766,16 +3818,16 @@ "name": "execTransaction", "nodeType": "FunctionDefinition", "parameters": { - "id": 2078, + "id": 2277, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2060, + "id": 2259, "name": "to", "nodeType": "VariableDeclaration", - "scope": 2121, - "src": "1299:10:13", + "scope": 2320, + "src": "1299:10:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3783,10 +3835,10 @@ "typeString": "address" }, "typeName": { - "id": 2059, + "id": 2258, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1299:7:13", + "src": "1299:7:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3797,11 +3849,11 @@ }, { "constant": false, - "id": 2062, + "id": 2261, "name": "value", "nodeType": "VariableDeclaration", - "scope": 2121, - "src": "1320:13:13", + "scope": 2320, + "src": "1320:13:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3809,10 +3861,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2061, + "id": 2260, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1320:7:13", + "src": "1320:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3823,11 +3875,11 @@ }, { "constant": false, - "id": 2064, + "id": 2263, "name": "data", "nodeType": "VariableDeclaration", - "scope": 2121, - "src": "1344:10:13", + "scope": 2320, + "src": "1344:10:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3835,10 +3887,10 @@ "typeString": "bytes" }, "typeName": { - "id": 2063, + "id": 2262, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "1344:5:13", + "src": "1344:5:19", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -3849,26 +3901,26 @@ }, { "constant": false, - "id": 2066, + "id": 2265, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 2121, - "src": "1365:24:13", + "scope": 2320, + "src": "1365:24:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, "typeName": { "contractScope": null, - "id": 2065, + "id": 2264, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 5, - "src": "1365:14:13", + "referencedDeclaration": 29, + "src": "1365:14:19", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, @@ -3877,11 +3929,11 @@ }, { "constant": false, - "id": 2068, + "id": 2267, "name": "nonce", "nodeType": "VariableDeclaration", - "scope": 2121, - "src": "1400:13:13", + "scope": 2320, + "src": "1400:13:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3889,10 +3941,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2067, + "id": 2266, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1400:7:13", + "src": "1400:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3903,11 +3955,11 @@ }, { "constant": false, - "id": 2071, + "id": 2270, "name": "v", "nodeType": "VariableDeclaration", - "scope": 2121, - "src": "1423:9:13", + "scope": 2320, + "src": "1423:9:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3916,19 +3968,19 @@ }, "typeName": { "baseType": { - "id": 2069, + "id": 2268, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "1423:5:13", + "src": "1423:5:19", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "id": 2070, + "id": 2269, "length": null, "nodeType": "ArrayTypeName", - "src": "1423:7:13", + "src": "1423:7:19", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr", "typeString": "uint8[]" @@ -3939,11 +3991,11 @@ }, { "constant": false, - "id": 2074, + "id": 2273, "name": "r", "nodeType": "VariableDeclaration", - "scope": 2121, - "src": "1443:11:13", + "scope": 2320, + "src": "1443:11:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3952,19 +4004,19 @@ }, "typeName": { "baseType": { - "id": 2072, + "id": 2271, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1443:7:13", + "src": "1443:7:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "id": 2073, + "id": 2272, "length": null, "nodeType": "ArrayTypeName", - "src": "1443:9:13", + "src": "1443:9:19", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", "typeString": "bytes32[]" @@ -3975,11 +4027,11 @@ }, { "constant": false, - "id": 2077, + "id": 2276, "name": "s", "nodeType": "VariableDeclaration", - "scope": 2121, - "src": "1465:11:13", + "scope": 2320, + "src": "1465:11:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3988,19 +4040,19 @@ }, "typeName": { "baseType": { - "id": 2075, + "id": 2274, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1465:7:13", + "src": "1465:7:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "id": 2076, + "id": 2275, "length": null, "nodeType": "ArrayTypeName", - "src": "1465:9:13", + "src": "1465:9:19", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", "typeString": "bytes32[]" @@ -4010,39 +4062,39 @@ "visibility": "internal" } ], - "src": "1289:193:13" + "src": "1289:193:19" }, "payable": false, "returnParameters": { - "id": 2079, + "id": 2278, "nodeType": "ParameterList", "parameters": [], - "src": "1502:0:13" + "src": "1502:0:19" }, - "scope": 2234, - "src": "1265:602:13", + "scope": 2436, + "src": "1265:602:19", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2201, + "id": 2400, "nodeType": "Block", - "src": "1988:530:13", + "src": "1988:530:19", "statements": [ { "assignments": [ - 2136 + 2335 ], "declarations": [ { "constant": false, - "id": 2136, + "id": 2335, "name": "lastOwner", "nodeType": "VariableDeclaration", - "scope": 2202, - "src": "2050:17:13", + "scope": 2401, + "src": "2050:17:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4050,10 +4102,10 @@ "typeString": "address" }, "typeName": { - "id": 2135, + "id": 2334, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2050:7:13", + "src": "2050:7:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4063,21 +4115,21 @@ "visibility": "internal" } ], - "id": 2140, + "id": 2339, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", - "id": 2138, + "id": 2337, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2078:1:13", + "src": "2078:1:19", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -4093,20 +4145,20 @@ "typeString": "int_const 0" } ], - "id": 2137, + "id": 2336, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2070:7:13", + "src": "2070:7:19", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 2139, + "id": 2338, "isConstant": false, "isLValue": false, "isPure": true, @@ -4114,25 +4166,25 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2070:10:13", + "src": "2070:10:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "2050:30:13" + "src": "2050:30:19" }, { "assignments": [], "declarations": [ { "constant": false, - "id": 2142, + "id": 2341, "name": "currentOwner", "nodeType": "VariableDeclaration", - "scope": 2202, - "src": "2090:20:13", + "scope": 2401, + "src": "2090:20:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4140,10 +4192,10 @@ "typeString": "address" }, "typeName": { - "id": 2141, + "id": 2340, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2090:7:13", + "src": "2090:7:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4153,21 +4205,21 @@ "visibility": "internal" } ], - "id": 2143, + "id": 2342, "initialValue": null, "nodeType": "VariableDeclarationStatement", - "src": "2090:20:13" + "src": "2090:20:19" }, { "assignments": [], "declarations": [ { "constant": false, - "id": 2145, + "id": 2344, "name": "i", "nodeType": "VariableDeclaration", - "scope": 2202, - "src": "2120:9:13", + "scope": 2401, + "src": "2120:9:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4175,10 +4227,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2144, + "id": 2343, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2120:7:13", + "src": "2120:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4188,23 +4240,23 @@ "visibility": "internal" } ], - "id": 2146, + "id": 2345, "initialValue": null, "nodeType": "VariableDeclarationStatement", - "src": "2120:9:13" + "src": "2120:9:19" }, { "assignments": [ - 2148 + 2347 ], "declarations": [ { "constant": false, - "id": 2148, + "id": 2347, "name": "threshold", "nodeType": "VariableDeclaration", - "scope": 2202, - "src": "2139:15:13", + "scope": 2401, + "src": "2139:15:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4212,10 +4264,10 @@ "typeString": "uint8" }, "typeName": { - "id": 2147, + "id": 2346, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "2139:5:13", + "src": "2139:5:19", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -4225,7 +4277,7 @@ "visibility": "internal" } ], - "id": 2154, + "id": 2353, "initialValue": { "argumentTypes": null, "arguments": [], @@ -4236,14 +4288,14 @@ "arguments": [ { "argumentTypes": null, - "id": 2150, + "id": 2349, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 588, - "src": "2170:7:13", + "referencedDeclaration": 717, + "src": "2170:7:19", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" } } @@ -4251,22 +4303,22 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" } ], - "id": 2149, + "id": 2348, "name": "OwnerManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1343, - "src": "2157:12:13", + "referencedDeclaration": 1472, + "src": "2157:12:19", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1343_$", + "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1472_$", "typeString": "type(contract OwnerManager)" } }, - "id": 2151, + "id": 2350, "isConstant": false, "isLValue": false, "isPure": false, @@ -4274,27 +4326,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2157:21:13", + "src": "2157:21:19", "typeDescriptions": { - "typeIdentifier": "t_contract$_OwnerManager_$1343", + "typeIdentifier": "t_contract$_OwnerManager_$1472", "typeString": "contract OwnerManager" } }, - "id": 2152, + "id": 2351, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "getThreshold", "nodeType": "MemberAccess", - "referencedDeclaration": 1279, - "src": "2157:34:13", + "referencedDeclaration": 1408, + "src": "2157:34:19", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$", "typeString": "function () view external returns (uint8)" } }, - "id": 2153, + "id": 2352, "isConstant": false, "isLValue": false, "isPure": false, @@ -4302,37 +4354,37 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2157:36:13", + "src": "2157:36:19", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "VariableDeclarationStatement", - "src": "2139:54:13" + "src": "2139:54:19" }, { "body": { - "id": 2199, + "id": 2398, "nodeType": "Block", - "src": "2277:235:13", + "src": "2277:235:19", "statements": [ { "expression": { "argumentTypes": null, - "id": 2178, + "id": 2377, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 2165, + "id": 2364, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2142, - "src": "2291:12:13", + "referencedDeclaration": 2341, + "src": "2291:12:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4345,12 +4397,12 @@ "arguments": [ { "argumentTypes": null, - "id": 2167, + "id": 2366, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2123, - "src": "2316:15:13", + "referencedDeclaration": 2322, + "src": "2316:15:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -4360,26 +4412,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2168, + "id": 2367, "name": "v", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2126, - "src": "2333:1:13", + "referencedDeclaration": 2325, + "src": "2333:1:19", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", "typeString": "uint8[] memory" } }, - "id": 2170, + "id": 2369, "indexExpression": { "argumentTypes": null, - "id": 2169, + "id": 2368, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2145, - "src": "2335:1:13", + "referencedDeclaration": 2344, + "src": "2335:1:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4390,7 +4442,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2333:4:13", + "src": "2333:4:19", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -4400,26 +4452,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2171, + "id": 2370, "name": "r", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2129, - "src": "2339:1:13", + "referencedDeclaration": 2328, + "src": "2339:1:19", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", "typeString": "bytes32[] memory" } }, - "id": 2173, + "id": 2372, "indexExpression": { "argumentTypes": null, - "id": 2172, + "id": 2371, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2145, - "src": "2341:1:13", + "referencedDeclaration": 2344, + "src": "2341:1:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4430,7 +4482,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2339:4:13", + "src": "2339:4:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -4440,26 +4492,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2174, + "id": 2373, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2132, - "src": "2345:1:13", + "referencedDeclaration": 2331, + "src": "2345:1:19", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", "typeString": "bytes32[] memory" } }, - "id": 2176, + "id": 2375, "indexExpression": { "argumentTypes": null, - "id": 2175, + "id": 2374, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2145, - "src": "2347:1:13", + "referencedDeclaration": 2344, + "src": "2347:1:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4470,7 +4522,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2345:4:13", + "src": "2345:4:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -4496,18 +4548,18 @@ "typeString": "bytes32" } ], - "id": 2166, + "id": 2365, "name": "ecrecover", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2388, - "src": "2306:9:13", + "referencedDeclaration": 2590, + "src": "2306:9:19", "typeDescriptions": { "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)" } }, - "id": 2177, + "id": 2376, "isConstant": false, "isLValue": false, "isPure": false, @@ -4515,21 +4567,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2306:44:13", + "src": "2306:44:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2291:59:13", + "src": "2291:59:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 2179, + "id": 2378, "nodeType": "ExpressionStatement", - "src": "2291:59:13" + "src": "2291:59:19" }, { "expression": { @@ -4540,12 +4592,12 @@ "arguments": [ { "argumentTypes": null, - "id": 2185, + "id": 2384, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2142, - "src": "2402:12:13", + "referencedDeclaration": 2341, + "src": "2402:12:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4564,14 +4616,14 @@ "arguments": [ { "argumentTypes": null, - "id": 2182, + "id": 2381, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 588, - "src": "2385:7:13", + "referencedDeclaration": 717, + "src": "2385:7:19", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" } } @@ -4579,22 +4631,22 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" } ], - "id": 2181, + "id": 2380, "name": "OwnerManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1343, - "src": "2372:12:13", + "referencedDeclaration": 1472, + "src": "2372:12:19", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1343_$", + "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1472_$", "typeString": "type(contract OwnerManager)" } }, - "id": 2183, + "id": 2382, "isConstant": false, "isLValue": false, "isPure": false, @@ -4602,27 +4654,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2372:21:13", + "src": "2372:21:19", "typeDescriptions": { - "typeIdentifier": "t_contract$_OwnerManager_$1343", + "typeIdentifier": "t_contract$_OwnerManager_$1472", "typeString": "contract OwnerManager" } }, - "id": 2184, + "id": 2383, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "isOwner", "nodeType": "MemberAccess", - "referencedDeclaration": 1293, - "src": "2372:29:13", + "referencedDeclaration": 1422, + "src": "2372:29:19", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view external returns (bool)" } }, - "id": 2186, + "id": 2385, "isConstant": false, "isLValue": false, "isPure": false, @@ -4630,7 +4682,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2372:43:13", + "src": "2372:43:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4644,21 +4696,21 @@ "typeString": "bool" } ], - "id": 2180, + "id": 2379, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "2364:7:13", + "referencedDeclaration": 2601, + "src": "2364:7:19", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 2187, + "id": 2386, "isConstant": false, "isLValue": false, "isPure": false, @@ -4666,15 +4718,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2364:52:13", + "src": "2364:52:19", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2188, + "id": 2387, "nodeType": "ExpressionStatement", - "src": "2364:52:13" + "src": "2364:52:19" }, { "expression": { @@ -4686,19 +4738,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 2192, + "id": 2391, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2190, + "id": 2389, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2142, - "src": "2438:12:13", + "referencedDeclaration": 2341, + "src": "2438:12:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4708,18 +4760,18 @@ "operator": ">", "rightExpression": { "argumentTypes": null, - "id": 2191, + "id": 2390, "name": "lastOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2136, - "src": "2453:9:13", + "referencedDeclaration": 2335, + "src": "2453:9:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2438:24:13", + "src": "2438:24:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4733,21 +4785,21 @@ "typeString": "bool" } ], - "id": 2189, + "id": 2388, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "2430:7:13", + "referencedDeclaration": 2601, + "src": "2430:7:19", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 2193, + "id": 2392, "isConstant": false, "isLValue": false, "isPure": false, @@ -4755,32 +4807,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2430:33:13", + "src": "2430:33:19", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2194, + "id": 2393, "nodeType": "ExpressionStatement", - "src": "2430:33:13" + "src": "2430:33:19" }, { "expression": { "argumentTypes": null, - "id": 2197, + "id": 2396, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 2195, + "id": 2394, "name": "lastOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2136, - "src": "2477:9:13", + "referencedDeclaration": 2335, + "src": "2477:9:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4790,26 +4842,26 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 2196, + "id": 2395, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2142, - "src": "2489:12:13", + "referencedDeclaration": 2341, + "src": "2489:12:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2477:24:13", + "src": "2477:24:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 2198, + "id": 2397, "nodeType": "ExpressionStatement", - "src": "2477:24:13" + "src": "2477:24:19" } ] }, @@ -4819,19 +4871,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 2161, + "id": 2360, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2159, + "id": 2358, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2145, - "src": "2257:1:13", + "referencedDeclaration": 2344, + "src": "2257:1:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4841,40 +4893,40 @@ "operator": "<", "rightExpression": { "argumentTypes": null, - "id": 2160, + "id": 2359, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2148, - "src": "2261:9:13", + "referencedDeclaration": 2347, + "src": "2261:9:19", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "2257:13:13", + "src": "2257:13:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2200, + "id": 2399, "initializationExpression": { "expression": { "argumentTypes": null, - "id": 2157, + "id": 2356, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 2155, + "id": 2354, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2145, - "src": "2250:1:13", + "referencedDeclaration": 2344, + "src": "2250:1:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4885,14 +4937,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "30", - "id": 2156, + "id": 2355, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2254:1:13", + "src": "2254:1:19", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -4900,20 +4952,20 @@ }, "value": "0" }, - "src": "2250:5:13", + "src": "2250:5:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 2158, + "id": 2357, "nodeType": "ExpressionStatement", - "src": "2250:5:13" + "src": "2250:5:19" }, "loopExpression": { "expression": { "argumentTypes": null, - "id": 2163, + "id": 2362, "isConstant": false, "isLValue": false, "isPure": false, @@ -4921,15 +4973,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "2272:3:13", + "src": "2272:3:19", "subExpression": { "argumentTypes": null, - "id": 2162, + "id": 2361, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2145, - "src": "2272:1:13", + "referencedDeclaration": 2344, + "src": "2272:1:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4940,17 +4992,17 @@ "typeString": "uint256" } }, - "id": 2164, + "id": 2363, "nodeType": "ExpressionStatement", - "src": "2272:3:13" + "src": "2272:3:19" }, "nodeType": "ForStatement", - "src": "2245:267:13" + "src": "2245:267:19" } ] }, "documentation": null, - "id": 2202, + "id": 2401, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -4958,16 +5010,16 @@ "name": "checkHash", "nodeType": "FunctionDefinition", "parameters": { - "id": 2133, + "id": 2332, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2123, + "id": 2322, "name": "transactionHash", "nodeType": "VariableDeclaration", - "scope": 2202, - "src": "1892:23:13", + "scope": 2401, + "src": "1892:23:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4975,10 +5027,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 2122, + "id": 2321, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1892:7:13", + "src": "1892:7:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -4989,11 +5041,11 @@ }, { "constant": false, - "id": 2126, + "id": 2325, "name": "v", "nodeType": "VariableDeclaration", - "scope": 2202, - "src": "1917:9:13", + "scope": 2401, + "src": "1917:9:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5002,19 +5054,19 @@ }, "typeName": { "baseType": { - "id": 2124, + "id": 2323, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "1917:5:13", + "src": "1917:5:19", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "id": 2125, + "id": 2324, "length": null, "nodeType": "ArrayTypeName", - "src": "1917:7:13", + "src": "1917:7:19", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr", "typeString": "uint8[]" @@ -5025,11 +5077,11 @@ }, { "constant": false, - "id": 2129, + "id": 2328, "name": "r", "nodeType": "VariableDeclaration", - "scope": 2202, - "src": "1928:11:13", + "scope": 2401, + "src": "1928:11:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5038,19 +5090,19 @@ }, "typeName": { "baseType": { - "id": 2127, + "id": 2326, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1928:7:13", + "src": "1928:7:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "id": 2128, + "id": 2327, "length": null, "nodeType": "ArrayTypeName", - "src": "1928:9:13", + "src": "1928:9:19", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", "typeString": "bytes32[]" @@ -5061,11 +5113,11 @@ }, { "constant": false, - "id": 2132, + "id": 2331, "name": "s", "nodeType": "VariableDeclaration", - "scope": 2202, - "src": "1941:11:13", + "scope": 2401, + "src": "1941:11:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5074,19 +5126,19 @@ }, "typeName": { "baseType": { - "id": 2130, + "id": 2329, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1941:7:13", + "src": "1941:7:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "id": 2131, + "id": 2330, "length": null, "nodeType": "ArrayTypeName", - "src": "1941:9:13", + "src": "1941:9:19", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", "typeString": "bytes32[]" @@ -5096,26 +5148,26 @@ "visibility": "internal" } ], - "src": "1891:62:13" + "src": "1891:62:19" }, "payable": false, "returnParameters": { - "id": 2134, + "id": 2333, "nodeType": "ParameterList", "parameters": [], - "src": "1988:0:13" + "src": "1988:0:19" }, - "scope": 2234, - "src": "1873:645:13", + "scope": 2436, + "src": "1873:645:19", "stateMutability": "view", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 2232, + "id": 2434, "nodeType": "Block", - "src": "3012:95:13", + "src": "3012:113:19", "statements": [ { "expression": { @@ -5126,239 +5178,291 @@ "arguments": [ { "argumentTypes": null, - "hexValue": "30783139", - "id": 2219, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30783139", + "id": 2420, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3061:4:19", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_25_by_1", + "typeString": "int_const 25" + }, + "value": "0x19" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_25_by_1", + "typeString": "int_const 25" + } + ], + "id": 2419, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3056:4:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes1_$", + "typeString": "type(bytes1)" + }, + "typeName": "byte" + }, + "id": 2421, "isConstant": false, "isLValue": false, "isPure": true, - "kind": "number", + "kind": "typeConversion", "lValueRequested": false, - "nodeType": "Literal", - "src": "3044:4:13", - "subdenomination": null, + "names": [], + "nodeType": "FunctionCall", + "src": "3056:10:19", "typeDescriptions": { - "typeIdentifier": "t_rational_25_by_1", - "typeString": "int_const 25" - }, - "value": "0x19" - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_rational_25_by_1", - "typeString": "int_const 25" + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" } - ], - "id": 2218, - "isConstant": false, - "isLValue": false, - "isPure": true, - "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "3039:4:13", - "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes1_$", - "typeString": "type(bytes1)" }, - "typeName": "byte" - }, - "id": 2220, - "isConstant": false, - "isLValue": false, - "isPure": true, - "kind": "typeConversion", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "3039:10:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - } - }, - { - "argumentTypes": null, - "arguments": [ { "argumentTypes": null, - "hexValue": "30", - "id": 2222, + "arguments": [ + { + "argumentTypes": null, + "hexValue": "30", + "id": 2423, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "number", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3073:1:19", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + }, + "value": "0" + } + ], + "expression": { + "argumentTypes": [ + { + "typeIdentifier": "t_rational_0_by_1", + "typeString": "int_const 0" + } + ], + "id": 2422, + "isConstant": false, + "isLValue": false, + "isPure": true, + "lValueRequested": false, + "nodeType": "ElementaryTypeNameExpression", + "src": "3068:4:19", + "typeDescriptions": { + "typeIdentifier": "t_type$_t_bytes1_$", + "typeString": "type(bytes1)" + }, + "typeName": "byte" + }, + "id": 2424, "isConstant": false, "isLValue": false, "isPure": true, - "kind": "number", + "kind": "typeConversion", "lValueRequested": false, - "nodeType": "Literal", - "src": "3056:1:13", - "subdenomination": null, + "names": [], + "nodeType": "FunctionCall", + "src": "3068:7:19", "typeDescriptions": { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" - }, - "value": "0" + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + } + }, + { + "argumentTypes": null, + "id": 2425, + "name": "this", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2649, + "src": "3077:4:19", + "typeDescriptions": { + "typeIdentifier": "t_contract$_StateChannelModule_$2436", + "typeString": "contract StateChannelModule" + } + }, + { + "argumentTypes": null, + "id": 2426, + "name": "to", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2403, + "src": "3083:2:19", + "typeDescriptions": { + "typeIdentifier": "t_address", + "typeString": "address" + } + }, + { + "argumentTypes": null, + "id": 2427, + "name": "value", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2405, + "src": "3087:5:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } + }, + { + "argumentTypes": null, + "id": 2428, + "name": "data", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2407, + "src": "3094:4:19", + "typeDescriptions": { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + } + }, + { + "argumentTypes": null, + "id": 2429, + "name": "operation", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2409, + "src": "3100:9:19", + "typeDescriptions": { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + } + }, + { + "argumentTypes": null, + "id": 2430, + "name": "nonce", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2411, + "src": "3111:5:19", + "typeDescriptions": { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + } } ], "expression": { "argumentTypes": [ { - "typeIdentifier": "t_rational_0_by_1", - "typeString": "int_const 0" + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + { + "typeIdentifier": "t_bytes1", + "typeString": "bytes1" + }, + { + "typeIdentifier": "t_contract$_StateChannelModule_$2436", + "typeString": "contract StateChannelModule" + }, + { + "typeIdentifier": "t_address", + "typeString": "address" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" + }, + { + "typeIdentifier": "t_bytes_memory_ptr", + "typeString": "bytes memory" + }, + { + "typeIdentifier": "t_enum$_Operation_$29", + "typeString": "enum Enum.Operation" + }, + { + "typeIdentifier": "t_uint256", + "typeString": "uint256" } ], - "id": 2221, + "expression": { + "argumentTypes": null, + "id": 2417, + "name": "abi", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2585, + "src": "3039:3:19", + "typeDescriptions": { + "typeIdentifier": "t_magic_abi", + "typeString": "abi" + } + }, + "id": 2418, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, - "nodeType": "ElementaryTypeNameExpression", - "src": "3051:4:13", + "memberName": "encodePacked", + "nodeType": "MemberAccess", + "referencedDeclaration": null, + "src": "3039:16:19", "typeDescriptions": { - "typeIdentifier": "t_type$_t_bytes1_$", - "typeString": "type(bytes1)" - }, - "typeName": "byte" + "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", + "typeString": "function () pure returns (bytes memory)" + } }, - "id": 2223, + "id": 2431, "isConstant": false, "isLValue": false, - "isPure": true, - "kind": "typeConversion", + "isPure": false, + "kind": "functionCall", "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3051:7:13", - "typeDescriptions": { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - } - }, - { - "argumentTypes": null, - "id": 2224, - "name": "this", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2435, - "src": "3060:4:13", - "typeDescriptions": { - "typeIdentifier": "t_contract$_StateChannelModule_$2234", - "typeString": "contract StateChannelModule" - } - }, - { - "argumentTypes": null, - "id": 2225, - "name": "to", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2204, - "src": "3066:2:13", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - { - "argumentTypes": null, - "id": 2226, - "name": "value", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2206, - "src": "3070:5:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } - }, - { - "argumentTypes": null, - "id": 2227, - "name": "data", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2208, - "src": "3077:4:13", + "src": "3039:78:19", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } - }, - { - "argumentTypes": null, - "id": 2228, - "name": "operation", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2210, - "src": "3083:9:13", - "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", - "typeString": "enum Enum.Operation" - } - }, - { - "argumentTypes": null, - "id": 2229, - "name": "nonce", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2212, - "src": "3094:5:13", - "typeDescriptions": { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - } } ], "expression": { "argumentTypes": [ - { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - }, - { - "typeIdentifier": "t_bytes1", - "typeString": "bytes1" - }, - { - "typeIdentifier": "t_contract$_StateChannelModule_$2234", - "typeString": "contract StateChannelModule" - }, - { - "typeIdentifier": "t_address", - "typeString": "address" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" - }, { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" - }, - { - "typeIdentifier": "t_enum$_Operation_$5", - "typeString": "enum Enum.Operation" - }, - { - "typeIdentifier": "t_uint256", - "typeString": "uint256" } ], - "id": 2217, + "id": 2416, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2390, - "src": "3029:9:13", + "referencedDeclaration": 2592, + "src": "3029:9:19", "typeDescriptions": { "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", "typeString": "function () pure returns (bytes32)" } }, - "id": 2230, + "id": 2432, "isConstant": false, "isLValue": false, "isPure": false, @@ -5366,21 +5470,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3029:71:13", + "src": "3029:89:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "functionReturnParameters": 2216, - "id": 2231, + "functionReturnParameters": 2415, + "id": 2433, "nodeType": "Return", - "src": "3022:78:13" + "src": "3022:96:19" } ] }, "documentation": "@dev Returns hash to be signed by owners.\n @param to Destination address.\n @param value Ether value.\n @param data Data payload.\n @param operation Operation type.\n @param nonce Transaction nonce.\n @return Transaction hash.", - "id": 2233, + "id": 2435, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -5388,16 +5492,16 @@ "name": "getTransactionHash", "nodeType": "FunctionDefinition", "parameters": { - "id": 2213, + "id": 2412, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2204, + "id": 2403, "name": "to", "nodeType": "VariableDeclaration", - "scope": 2233, - "src": "2833:10:13", + "scope": 2435, + "src": "2833:10:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5405,10 +5509,10 @@ "typeString": "address" }, "typeName": { - "id": 2203, + "id": 2402, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2833:7:13", + "src": "2833:7:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5419,11 +5523,11 @@ }, { "constant": false, - "id": 2206, + "id": 2405, "name": "value", "nodeType": "VariableDeclaration", - "scope": 2233, - "src": "2854:13:13", + "scope": 2435, + "src": "2854:13:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5431,10 +5535,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2205, + "id": 2404, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2854:7:13", + "src": "2854:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5445,11 +5549,11 @@ }, { "constant": false, - "id": 2208, + "id": 2407, "name": "data", "nodeType": "VariableDeclaration", - "scope": 2233, - "src": "2878:10:13", + "scope": 2435, + "src": "2878:10:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5457,10 +5561,10 @@ "typeString": "bytes" }, "typeName": { - "id": 2207, + "id": 2406, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "2878:5:13", + "src": "2878:5:19", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -5471,26 +5575,26 @@ }, { "constant": false, - "id": 2210, + "id": 2409, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 2233, - "src": "2899:24:13", + "scope": 2435, + "src": "2899:24:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, "typeName": { "contractScope": null, - "id": 2209, + "id": 2408, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 5, - "src": "2899:14:13", + "referencedDeclaration": 29, + "src": "2899:14:19", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, @@ -5499,11 +5603,11 @@ }, { "constant": false, - "id": 2212, + "id": 2411, "name": "nonce", "nodeType": "VariableDeclaration", - "scope": 2233, - "src": "2934:13:13", + "scope": 2435, + "src": "2934:13:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5511,10 +5615,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2211, + "id": 2410, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2934:7:13", + "src": "2934:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5524,20 +5628,20 @@ "visibility": "internal" } ], - "src": "2823:130:13" + "src": "2823:130:19" }, "payable": false, "returnParameters": { - "id": 2216, + "id": 2415, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2215, + "id": 2414, "name": "", "nodeType": "VariableDeclaration", - "scope": 2233, - "src": "2999:7:13", + "scope": 2435, + "src": "2999:7:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5545,10 +5649,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 2214, + "id": 2413, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "2999:7:13", + "src": "2999:7:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -5558,51 +5662,45 @@ "visibility": "internal" } ], - "src": "2998:9:13" + "src": "2998:9:19" }, - "scope": 2234, - "src": "2796:311:13", + "scope": 2436, + "src": "2796:329:19", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 2235, - "src": "269:2840:13" + "scope": 2437, + "src": "269:2858:19" } ], - "src": "0:3110:13" + "src": "0:3128:19" }, "compiler": { "name": "solc", - "version": "0.4.23+commit.124ca40d.Emscripten.clang" + "version": "0.4.24+commit.e67f0147.Emscripten.clang" }, "networks": { "4": { "events": {}, "links": {}, - "address": "0xe8ebcab56a44488742278fe3e5ed241b6b786032", - "transactionHash": "0x8285395632164bd2429394e47473065a620bcea7c066595b3b4e2eb1c8457d17" + "address": "0x8790f40ca24d228e6b81870eea3a67f4dc607035", + "transactionHash": "0x6ddc49abc9c794831925c1069990a2074a9700e60084596eef8e43a16c226be2" }, - "1526478212260": { - "events": {}, - "links": {}, - "address": "0xb9597dbd8ed0c4c481d1677b3200b8c4d342750c", - "transactionHash": "0x7f1b3b4ba4694670b29675af571cb4a96b1c2d78d09d210e27482419aa6fff79" - }, - "1526973574996": { + "1527316019334": { "events": {}, "links": {}, - "address": "0x79933939f70a2707380e371524050ecf6477da74", - "transactionHash": "0x7f1b3b4ba4694670b29675af571cb4a96b1c2d78d09d210e27482419aa6fff79" + "address": "0x529daa14f15a5933ca1eccb5ddc077bb4c5c3e1e", + "transactionHash": "0x22f672e547fdb05f8c0c62f8f442864b8f3b650302c22409a90cb7f64adb6fd6" }, - "1527316019334": { + "1527420696956": { "events": {}, "links": {}, - "address": "0x07ef92f7b5ff64dc4d0757790281c23d54871b9a", - "transactionHash": "0x7f1b3b4ba4694670b29675af571cb4a96b1c2d78d09d210e27482419aa6fff79" + "address": "0xef54fbda842be606286a8cfa51632312bc605b7d", + "transactionHash": "0x7f30a995aef0c0cf18b0ec902dde55e53b6ffd35610b06b23136ca628e430373" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-26T06:28:28.355Z" + "updatedAt": "2018-05-27T11:31:46.242Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/WhitelistModule.json b/safe-contracts/build/contracts/WhitelistModule.json index 9efae338b8..dc00657600 100644 --- a/safe-contracts/build/contracts/WhitelistModule.json +++ b/safe-contracts/build/contracts/WhitelistModule.json @@ -146,73 +146,73 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50610c78806100206000396000f300608060405260043610610099576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632f2f3be11461009e5780633af32abf14610149578063481c6a75146101a45780637de7edef146101fb5780638ab1d6811461023e578063a3f4df7e14610281578063bd5b853b14610311578063e43252d714610377578063ffa1ad74146103ba575b600080fd5b3480156100aa57600080fd5b5061012f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061044a565b604051808215151515815260200191505060405180910390f35b34801561015557600080fd5b5061018a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061073d565b604051808215151515815260200191505060405180910390f35b3480156101b057600080fd5b506101b961075d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561020757600080fd5b5061023c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610783565b005b34801561024a57600080fd5b5061027f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610848565b005b34801561028d57600080fd5b50610296610957565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102d65780820151818401526020810190506102bb565b50505050905090810190601f1680156103035780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561031d57600080fd5b5061037560048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050610990565b005b34801561038357600080fd5b506103b8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a53565b005b3480156103c657600080fd5b506103cf610b89565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561040f5780820151818401526020810190506103f4565b50505050905090810190601f16801561043c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561050957600080fd5b505af115801561051d573d6000803e3d6000fd5b505050506040513d602081101561053357600080fd5b8101908080519060200190929190505050151561054f57600080fd5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156105a757600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a785858560006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200183600281111561066157fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b838110156106a1578082015181840152602081019050610686565b50505050905090810190601f1680156106ce5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b1580156106f057600080fd5b505af1158015610704573d6000803e3d6000fd5b505050506040513d602081101561071a57600080fd5b8101908080519060200190929190505050151561073657600080fd5b9392505050565b60026020528060005260406000206000915054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156107df57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561080557600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156108a457600080fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156108fc57600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6040805190810160405280601081526020017f57686974656c697374204d6f64756c650000000000000000000000000000000081525081565b60008061099b610bc2565b600091505b8251821015610a4e5782828151811015156109b757fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff16141515156109e957600080fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555081806001019250506109a0565b505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610aaf57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610ad557600080fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610b2e57600080fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610c0957600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505600a165627a7a723058202f15d7927e2ed3723a36804ee24b65ed4b34edcd2b65d7a7a11d8729219f6a9e0029", - "deployedBytecode": "0x608060405260043610610099576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632f2f3be11461009e5780633af32abf14610149578063481c6a75146101a45780637de7edef146101fb5780638ab1d6811461023e578063a3f4df7e14610281578063bd5b853b14610311578063e43252d714610377578063ffa1ad74146103ba575b600080fd5b3480156100aa57600080fd5b5061012f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061044a565b604051808215151515815260200191505060405180910390f35b34801561015557600080fd5b5061018a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061073d565b604051808215151515815260200191505060405180910390f35b3480156101b057600080fd5b506101b961075d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561020757600080fd5b5061023c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610783565b005b34801561024a57600080fd5b5061027f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610848565b005b34801561028d57600080fd5b50610296610957565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102d65780820151818401526020810190506102bb565b50505050905090810190601f1680156103035780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561031d57600080fd5b5061037560048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050610990565b005b34801561038357600080fd5b506103b8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a53565b005b3480156103c657600080fd5b506103cf610b89565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561040f5780820151818401526020810190506103f4565b50505050905090810190601f16801561043c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561050957600080fd5b505af115801561051d573d6000803e3d6000fd5b505050506040513d602081101561053357600080fd5b8101908080519060200190929190505050151561054f57600080fd5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156105a757600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a785858560006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200183600281111561066157fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b838110156106a1578082015181840152602081019050610686565b50505050905090810190601f1680156106ce5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b1580156106f057600080fd5b505af1158015610704573d6000803e3d6000fd5b505050506040513d602081101561071a57600080fd5b8101908080519060200190929190505050151561073657600080fd5b9392505050565b60026020528060005260406000206000915054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156107df57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561080557600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156108a457600080fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156108fc57600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6040805190810160405280601081526020017f57686974656c697374204d6f64756c650000000000000000000000000000000081525081565b60008061099b610bc2565b600091505b8251821015610a4e5782828151811015156109b757fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff16141515156109e957600080fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555081806001019250506109a0565b505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610aaf57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610ad557600080fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610b2e57600080fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610c0957600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505600a165627a7a723058202f15d7927e2ed3723a36804ee24b65ed4b34edcd2b65d7a7a11d8729219f6a9e0029", - "sourceMap": "289:1968:14:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;289:1968:14;;;;;;;", - "deployedSourceMap": "289:1968:14:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1864:391;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1864:391:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;498:46;;8:9:-1;5:2;;;30:1;27;20:12;5:2;498:46:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;262:28:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;262:28:5;;;;;;;;;;;;;;;;;;;;;;;;;;;626:208:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:208:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;1438:172:14;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1438:172:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;331:48;;8:9:-1;5:2;;;30:1;27;20:12;5:2;331:48:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;331:48:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;667:270;;8:9:-1;5:2;;;30:1;27;20:12;5:2;667:270:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1086:198;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1086:198:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;385:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;385:40:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;385:40:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1864:391;1963:4;2093:7;;;;;;;;;;;2080:29;;;2110:10;2080:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2080:41:14;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2080:41:14;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2080:41:14;;;;;;;;;;;;;;;;2072:50;;;;;;;;2140:13;:17;2154:2;2140:17;;;;;;;;;;;;;;;;;;;;;;;;;2132:26;;;;;;;;2176:7;;;;;;;;;;;:33;;;2210:2;2214:5;2221:4;2227:19;2176:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;2176:71:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2176:71:14;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2176:71:14;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2176:71:14;;;;;;;;;;;;;;;;2168:80;;;;;;;;1864:391;;;;;:::o;498:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;262:28:5:-;;;;;;;;;;;;;:::o;626:208:4:-;359:7:5;;;;;;;;;;;337:30;;:10;:30;;;329:39;;;;;;;;791:1:4;776:11;:16;;;;768:25;;;;;;;;816:11;803:10;;:24;;;;;;;;;;;;;;;;;;626:208;:::o;1438:172:14:-;359:7:5;;;;;;;;;;;337:30;;:10;:30;;;329:39;;;;;;;;1540:13:14;:22;1554:7;1540:22;;;;;;;;;;;;;;;;;;;;;;;;;1532:31;;;;;;;;1598:5;1573:13;:22;1587:7;1573:22;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;1438:172;:::o;331:48::-;;;;;;;;;;;;;;;;;;;;:::o;667:270::-;758:9;813:15;731:12;:10;:12::i;:::-;770:1;758:13;;753:178;777:8;:15;773:1;:19;753:178;;;831:8;840:1;831:11;;;;;;;;;;;;;;;;;;813:29;;875:1;864:7;:12;;;;856:21;;;;;;;;916:4;891:13;:22;905:7;891:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;794:3;;;;;;;753:178;;;667:270;;;:::o;1086:198::-;359:7:5;;;;;;;;;;;337:30;;:10;:30;;;329:39;;;;;;;;1194:1:14;1183:7;:12;;;;1175:21;;;;;;;;1215:13;:22;1229:7;1215:22;;;;;;;;;;;;;;;;;;;;;;;;;1214:23;1206:32;;;;;;;;1273:4;1248:13;:22;1262:7;1248:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;1086:198;:::o;385:40::-;;;;;;;;;;;;;;;;;;;;:::o;392:268:5:-;606:1;594:7;;;;;;;;;;;586:21;;;578:30;;;;;;;;642:10;618:7;;:35;;;;;;;;;;;;;;;;;;392:268::o", - "source": "pragma solidity 0.4.23;\nimport \"../Enum.sol\";\nimport \"../Module.sol\";\nimport \"../ModuleManager.sol\";\nimport \"../OwnerManager.sol\";\n\n\n/// @title Whitelist Module - Allows to execute transactions to whitelisted addresses without confirmations.\n/// @author Stefan George - \ncontract WhitelistModule is Module {\n\n string public constant NAME = \"Whitelist Module\";\n string public constant VERSION = \"0.0.1\";\n\n // isWhitelisted mapping maps destination address to boolean.\n mapping (address => bool) public isWhitelisted;\n\n /// @dev Setup function sets initial storage of contract.\n /// @param accounts List of whitelisted accounts.\n function setup(address[] accounts)\n public\n {\n setManager();\n for (uint256 i = 0; i < accounts.length; i++) {\n address account = accounts[i];\n require(account != 0);\n isWhitelisted[account] = true;\n }\n }\n\n /// @dev Allows to add destination to whitelist. This can only be done via a Safe transaction.\n /// @param account Destination address.\n function addToWhitelist(address account)\n public\n authorized\n {\n require(account != 0);\n require(!isWhitelisted[account]);\n isWhitelisted[account] = true;\n }\n\n /// @dev Allows to remove destination from whitelist. This can only be done via a Safe transaction.\n /// @param account Destination address.\n function removeFromWhitelist(address account)\n public\n authorized\n {\n require(isWhitelisted[account]);\n isWhitelisted[account] = false;\n }\n\n /// @dev Returns if Safe transaction is to a whitelisted destination.\n /// @param to Whitelisted destination address.\n /// @param value Not checked.\n /// @param data Not checked.\n /// @return Returns if transaction can be executed.\n function executeWhitelisted(address to, uint256 value, bytes data)\n public\n returns (bool)\n {\n // Only Safe owners are allowed to execute transactions to whitelisted accounts.\n require(OwnerManager(manager).isOwner(msg.sender));\n require(isWhitelisted[to]);\n require(manager.execTransactionFromModule(to, value, data, Enum.Operation.Call));\n }\n}\n", + "bytecode": "0x608060405234801561001057600080fd5b50610c78806100206000396000f300608060405260043610610099576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632f2f3be11461009e5780633af32abf14610149578063481c6a75146101a45780637de7edef146101fb5780638ab1d6811461023e578063a3f4df7e14610281578063bd5b853b14610311578063e43252d714610377578063ffa1ad74146103ba575b600080fd5b3480156100aa57600080fd5b5061012f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061044a565b604051808215151515815260200191505060405180910390f35b34801561015557600080fd5b5061018a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061073d565b604051808215151515815260200191505060405180910390f35b3480156101b057600080fd5b506101b961075d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561020757600080fd5b5061023c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610783565b005b34801561024a57600080fd5b5061027f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610848565b005b34801561028d57600080fd5b50610296610957565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102d65780820151818401526020810190506102bb565b50505050905090810190601f1680156103035780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561031d57600080fd5b5061037560048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050610990565b005b34801561038357600080fd5b506103b8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a53565b005b3480156103c657600080fd5b506103cf610b89565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561040f5780820151818401526020810190506103f4565b50505050905090810190601f16801561043c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561050957600080fd5b505af115801561051d573d6000803e3d6000fd5b505050506040513d602081101561053357600080fd5b8101908080519060200190929190505050151561054f57600080fd5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156105a757600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a785858560006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200183600281111561066157fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b838110156106a1578082015181840152602081019050610686565b50505050905090810190601f1680156106ce5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b1580156106f057600080fd5b505af1158015610704573d6000803e3d6000fd5b505050506040513d602081101561071a57600080fd5b8101908080519060200190929190505050151561073657600080fd5b9392505050565b60026020528060005260406000206000915054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156107df57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561080557600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156108a457600080fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156108fc57600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6040805190810160405280601081526020017f57686974656c697374204d6f64756c650000000000000000000000000000000081525081565b60008061099b610bc2565b600091505b8251821015610a4e5782828151811015156109b757fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff16141515156109e957600080fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555081806001019250506109a0565b505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610aaf57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610ad557600080fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610b2e57600080fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610c0957600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505600a165627a7a72305820a2e4acc18c7392c4cdfa06bb162c1c255b8fd38cb3756ecc9215b556928a15c10029", + "deployedBytecode": "0x608060405260043610610099576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632f2f3be11461009e5780633af32abf14610149578063481c6a75146101a45780637de7edef146101fb5780638ab1d6811461023e578063a3f4df7e14610281578063bd5b853b14610311578063e43252d714610377578063ffa1ad74146103ba575b600080fd5b3480156100aa57600080fd5b5061012f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061044a565b604051808215151515815260200191505060405180910390f35b34801561015557600080fd5b5061018a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061073d565b604051808215151515815260200191505060405180910390f35b3480156101b057600080fd5b506101b961075d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561020757600080fd5b5061023c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610783565b005b34801561024a57600080fd5b5061027f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610848565b005b34801561028d57600080fd5b50610296610957565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102d65780820151818401526020810190506102bb565b50505050905090810190601f1680156103035780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561031d57600080fd5b5061037560048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050610990565b005b34801561038357600080fd5b506103b8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a53565b005b3480156103c657600080fd5b506103cf610b89565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561040f5780820151818401526020810190506103f4565b50505050905090810190601f16801561043c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561050957600080fd5b505af115801561051d573d6000803e3d6000fd5b505050506040513d602081101561053357600080fd5b8101908080519060200190929190505050151561054f57600080fd5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156105a757600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a785858560006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200183600281111561066157fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b838110156106a1578082015181840152602081019050610686565b50505050905090810190601f1680156106ce5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b1580156106f057600080fd5b505af1158015610704573d6000803e3d6000fd5b505050506040513d602081101561071a57600080fd5b8101908080519060200190929190505050151561073657600080fd5b9392505050565b60026020528060005260406000206000915054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156107df57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561080557600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156108a457600080fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156108fc57600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6040805190810160405280601081526020017f57686974656c697374204d6f64756c650000000000000000000000000000000081525081565b60008061099b610bc2565b600091505b8251821015610a4e5782828151811015156109b757fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff16141515156109e957600080fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555081806001019250506109a0565b505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610aaf57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610ad557600080fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610b2e57600080fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610c0957600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505600a165627a7a72305820a2e4acc18c7392c4cdfa06bb162c1c255b8fd38cb3756ecc9215b556928a15c10029", + "sourceMap": "289:1968:20:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;289:1968:20;;;;;;;", + "deployedSourceMap": "289:1968:20:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1864:391;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1864:391:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;498:46;;8:9:-1;5:2;;;30:1;27;20:12;5:2;498:46:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;262:28:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;262:28:7;;;;;;;;;;;;;;;;;;;;;;;;;;;626:208:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:208:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;1438:172:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1438:172:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;331:48;;8:9:-1;5:2;;;30:1;27;20:12;5:2;331:48:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;331:48:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;667:270;;8:9:-1;5:2;;;30:1;27;20:12;5:2;667:270:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1086:198;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1086:198:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;385:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;385:40:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;385:40:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1864:391;1963:4;2093:7;;;;;;;;;;;2080:29;;;2110:10;2080:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2080:41:20;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2080:41:20;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2080:41:20;;;;;;;;;;;;;;;;2072:50;;;;;;;;2140:13;:17;2154:2;2140:17;;;;;;;;;;;;;;;;;;;;;;;;;2132:26;;;;;;;;2176:7;;;;;;;;;;;:33;;;2210:2;2214:5;2221:4;2227:19;2176:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;2176:71:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2176:71:20;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2176:71:20;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2176:71:20;;;;;;;;;;;;;;;;2168:80;;;;;;;;1864:391;;;;;:::o;498:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;262:28:7:-;;;;;;;;;;;;;:::o;626:208:5:-;359:7:7;;;;;;;;;;;337:30;;:10;:30;;;329:39;;;;;;;;791:1:5;776:11;:16;;;;768:25;;;;;;;;816:11;803:10;;:24;;;;;;;;;;;;;;;;;;626:208;:::o;1438:172:20:-;359:7:7;;;;;;;;;;;337:30;;:10;:30;;;329:39;;;;;;;;1540:13:20;:22;1554:7;1540:22;;;;;;;;;;;;;;;;;;;;;;;;;1532:31;;;;;;;;1598:5;1573:13;:22;1587:7;1573:22;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;1438:172;:::o;331:48::-;;;;;;;;;;;;;;;;;;;;:::o;667:270::-;758:9;813:15;731:12;:10;:12::i;:::-;770:1;758:13;;753:178;777:8;:15;773:1;:19;753:178;;;831:8;840:1;831:11;;;;;;;;;;;;;;;;;;813:29;;875:1;864:7;:12;;;;856:21;;;;;;;;916:4;891:13;:22;905:7;891:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;794:3;;;;;;;753:178;;;667:270;;;:::o;1086:198::-;359:7:7;;;;;;;;;;;337:30;;:10;:30;;;329:39;;;;;;;;1194:1:20;1183:7;:12;;;;1175:21;;;;;;;;1215:13;:22;1229:7;1215:22;;;;;;;;;;;;;;;;;;;;;;;;;1214:23;1206:32;;;;;;;;1273:4;1248:13;:22;1262:7;1248:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;1086:198;:::o;385:40::-;;;;;;;;;;;;;;;;;;;;:::o;392:268:7:-;606:1;594:7;;;;;;;;;;;586:21;;;578:30;;;;;;;;642:10;618:7;;:35;;;;;;;;;;;;;;;;;;392:268::o", + "source": "pragma solidity 0.4.24;\nimport \"../Enum.sol\";\nimport \"../Module.sol\";\nimport \"../ModuleManager.sol\";\nimport \"../OwnerManager.sol\";\n\n\n/// @title Whitelist Module - Allows to execute transactions to whitelisted addresses without confirmations.\n/// @author Stefan George - \ncontract WhitelistModule is Module {\n\n string public constant NAME = \"Whitelist Module\";\n string public constant VERSION = \"0.0.1\";\n\n // isWhitelisted mapping maps destination address to boolean.\n mapping (address => bool) public isWhitelisted;\n\n /// @dev Setup function sets initial storage of contract.\n /// @param accounts List of whitelisted accounts.\n function setup(address[] accounts)\n public\n {\n setManager();\n for (uint256 i = 0; i < accounts.length; i++) {\n address account = accounts[i];\n require(account != 0);\n isWhitelisted[account] = true;\n }\n }\n\n /// @dev Allows to add destination to whitelist. This can only be done via a Safe transaction.\n /// @param account Destination address.\n function addToWhitelist(address account)\n public\n authorized\n {\n require(account != 0);\n require(!isWhitelisted[account]);\n isWhitelisted[account] = true;\n }\n\n /// @dev Allows to remove destination from whitelist. This can only be done via a Safe transaction.\n /// @param account Destination address.\n function removeFromWhitelist(address account)\n public\n authorized\n {\n require(isWhitelisted[account]);\n isWhitelisted[account] = false;\n }\n\n /// @dev Returns if Safe transaction is to a whitelisted destination.\n /// @param to Whitelisted destination address.\n /// @param value Not checked.\n /// @param data Not checked.\n /// @return Returns if transaction can be executed.\n function executeWhitelisted(address to, uint256 value, bytes data)\n public\n returns (bool)\n {\n // Only Safe owners are allowed to execute transactions to whitelisted accounts.\n require(OwnerManager(manager).isOwner(msg.sender));\n require(isWhitelisted[to]);\n require(manager.execTransactionFromModule(to, value, data, Enum.Operation.Call));\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/WhitelistModule.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/WhitelistModule.sol", "exportedSymbols": { "WhitelistModule": [ - 2381 + 2583 ] }, - "id": 2382, + "id": 2584, "nodeType": "SourceUnit", "nodes": [ { - "id": 2236, + "id": 2438, "literals": [ "solidity", "0.4", - ".23" + ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:14" + "src": "0:23:20" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Enum.sol", "file": "../Enum.sol", - "id": 2237, + "id": 2439, "nodeType": "ImportDirective", - "scope": 2382, - "sourceUnit": 7, - "src": "24:21:14", + "scope": 2584, + "sourceUnit": 31, + "src": "24:21:20", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "file": "../Module.sol", - "id": 2238, + "id": 2440, "nodeType": "ImportDirective", - "scope": 2382, - "sourceUnit": 622, - "src": "46:23:14", + "scope": 2584, + "sourceUnit": 751, + "src": "46:23:20", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ModuleManager.sol", "file": "../ModuleManager.sol", - "id": 2239, + "id": 2441, "nodeType": "ImportDirective", - "scope": 2382, - "sourceUnit": 972, - "src": "70:30:14", + "scope": 2584, + "sourceUnit": 1101, + "src": "70:30:20", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", "file": "../OwnerManager.sol", - "id": 2240, + "id": 2442, "nodeType": "ImportDirective", - "scope": 2382, - "sourceUnit": 1344, - "src": "101:29:14", + "scope": 2584, + "sourceUnit": 1473, + "src": "101:29:20", "symbolAliases": [], "unitAlias": "" }, @@ -222,46 +222,46 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 2241, + "id": 2443, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 621, - "src": "317:6:14", + "referencedDeclaration": 750, + "src": "317:6:20", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } }, - "id": 2242, + "id": 2444, "nodeType": "InheritanceSpecifier", - "src": "317:6:14" + "src": "317:6:20" } ], "contractDependencies": [ - 580, - 621, - 1359 + 652, + 750, + 1619 ], "contractKind": "contract", "documentation": "@title Whitelist Module - Allows to execute transactions to whitelisted addresses without confirmations.\n @author Stefan George - ", "fullyImplemented": true, - "id": 2381, + "id": 2583, "linearizedBaseContracts": [ - 2381, - 621, - 580, - 1359 + 2583, + 750, + 652, + 1619 ], "name": "WhitelistModule", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, - "id": 2245, + "id": 2447, "name": "NAME", "nodeType": "VariableDeclaration", - "scope": 2381, - "src": "331:48:14", + "scope": 2583, + "src": "331:48:20", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -269,10 +269,10 @@ "typeString": "string" }, "typeName": { - "id": 2243, + "id": 2445, "name": "string", "nodeType": "ElementaryTypeName", - "src": "331:6:14", + "src": "331:6:20", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -281,14 +281,14 @@ "value": { "argumentTypes": null, "hexValue": "57686974656c697374204d6f64756c65", - "id": 2244, + "id": 2446, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "361:18:14", + "src": "361:18:20", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_84d69d03a7c747e8eefe7cc2b9e87b566cfc57cc90e4ed88f03f9c9780b7d4e6", @@ -300,11 +300,11 @@ }, { "constant": true, - "id": 2248, + "id": 2450, "name": "VERSION", "nodeType": "VariableDeclaration", - "scope": 2381, - "src": "385:40:14", + "scope": 2583, + "src": "385:40:20", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -312,10 +312,10 @@ "typeString": "string" }, "typeName": { - "id": 2246, + "id": 2448, "name": "string", "nodeType": "ElementaryTypeName", - "src": "385:6:14", + "src": "385:6:20", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -324,14 +324,14 @@ "value": { "argumentTypes": null, "hexValue": "302e302e31", - "id": 2247, + "id": 2449, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "418:7:14", + "src": "418:7:20", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", @@ -343,11 +343,11 @@ }, { "constant": false, - "id": 2252, + "id": 2454, "name": "isWhitelisted", "nodeType": "VariableDeclaration", - "scope": 2381, - "src": "498:46:14", + "scope": 2583, + "src": "498:46:20", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -355,28 +355,28 @@ "typeString": "mapping(address => bool)" }, "typeName": { - "id": 2251, + "id": 2453, "keyType": { - "id": 2249, + "id": 2451, "name": "address", "nodeType": "ElementaryTypeName", - "src": "507:7:14", + "src": "507:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "498:25:14", + "src": "498:25:20", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" }, "valueType": { - "id": 2250, + "id": 2452, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "518:4:14", + "src": "518:4:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -388,9 +388,9 @@ }, { "body": { - "id": 2292, + "id": 2494, "nodeType": "Block", - "src": "721:216:14", + "src": "721:216:20", "statements": [ { "expression": { @@ -398,18 +398,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 2258, + "id": 2460, "name": "setManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 620, - "src": "731:10:14", + "referencedDeclaration": 749, + "src": "731:10:20", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 2259, + "id": 2461, "isConstant": false, "isLValue": false, "isPure": false, @@ -417,34 +417,34 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "731:12:14", + "src": "731:12:20", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2260, + "id": 2462, "nodeType": "ExpressionStatement", - "src": "731:12:14" + "src": "731:12:20" }, { "body": { - "id": 2290, + "id": 2492, "nodeType": "Block", - "src": "799:132:14", + "src": "799:132:20", "statements": [ { "assignments": [ - 2273 + 2475 ], "declarations": [ { "constant": false, - "id": 2273, + "id": 2475, "name": "account", "nodeType": "VariableDeclaration", - "scope": 2293, - "src": "813:15:14", + "scope": 2495, + "src": "813:15:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -452,10 +452,10 @@ "typeString": "address" }, "typeName": { - "id": 2272, + "id": 2474, "name": "address", "nodeType": "ElementaryTypeName", - "src": "813:7:14", + "src": "813:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -465,31 +465,31 @@ "visibility": "internal" } ], - "id": 2277, + "id": 2479, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2274, + "id": 2476, "name": "accounts", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2255, - "src": "831:8:14", + "referencedDeclaration": 2457, + "src": "831:8:20", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 2276, + "id": 2478, "indexExpression": { "argumentTypes": null, - "id": 2275, + "id": 2477, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2262, - "src": "840:1:14", + "referencedDeclaration": 2464, + "src": "840:1:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -500,14 +500,14 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "831:11:14", + "src": "831:11:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "813:29:14" + "src": "813:29:20" }, { "expression": { @@ -519,19 +519,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 2281, + "id": 2483, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2279, + "id": 2481, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2273, - "src": "864:7:14", + "referencedDeclaration": 2475, + "src": "864:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -542,14 +542,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 2280, + "id": 2482, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "875:1:14", + "src": "875:1:20", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -557,7 +557,7 @@ }, "value": "0" }, - "src": "864:12:14", + "src": "864:12:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -571,21 +571,21 @@ "typeString": "bool" } ], - "id": 2278, + "id": 2480, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "856:7:14", + "referencedDeclaration": 2601, + "src": "856:7:20", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 2282, + "id": 2484, "isConstant": false, "isLValue": false, "isPure": false, @@ -593,20 +593,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "856:21:14", + "src": "856:21:20", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2283, + "id": 2485, "nodeType": "ExpressionStatement", - "src": "856:21:14" + "src": "856:21:20" }, { "expression": { "argumentTypes": null, - "id": 2288, + "id": 2490, "isConstant": false, "isLValue": false, "isPure": false, @@ -615,26 +615,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2284, + "id": 2486, "name": "isWhitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2252, - "src": "891:13:14", + "referencedDeclaration": 2454, + "src": "891:13:20", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2286, + "id": 2488, "indexExpression": { "argumentTypes": null, - "id": 2285, + "id": 2487, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2273, - "src": "905:7:14", + "referencedDeclaration": 2475, + "src": "905:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -645,7 +645,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "891:22:14", + "src": "891:22:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -656,14 +656,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 2287, + "id": 2489, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "916:4:14", + "src": "916:4:20", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -671,15 +671,15 @@ }, "value": "true" }, - "src": "891:29:14", + "src": "891:29:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2289, + "id": 2491, "nodeType": "ExpressionStatement", - "src": "891:29:14" + "src": "891:29:20" } ] }, @@ -689,19 +689,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 2268, + "id": 2470, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2265, + "id": 2467, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2262, - "src": "773:1:14", + "referencedDeclaration": 2464, + "src": "773:1:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -713,18 +713,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2266, + "id": 2468, "name": "accounts", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2255, - "src": "777:8:14", + "referencedDeclaration": 2457, + "src": "777:8:20", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 2267, + "id": 2469, "isConstant": false, "isLValue": false, "isPure": false, @@ -732,31 +732,31 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "777:15:14", + "src": "777:15:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "773:19:14", + "src": "773:19:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2291, + "id": 2493, "initializationExpression": { "assignments": [ - 2262 + 2464 ], "declarations": [ { "constant": false, - "id": 2262, + "id": 2464, "name": "i", "nodeType": "VariableDeclaration", - "scope": 2293, - "src": "758:9:14", + "scope": 2495, + "src": "758:9:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -764,10 +764,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2261, + "id": 2463, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "758:7:14", + "src": "758:7:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -777,18 +777,18 @@ "visibility": "internal" } ], - "id": 2264, + "id": 2466, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 2263, + "id": 2465, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "770:1:14", + "src": "770:1:20", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -797,12 +797,12 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "758:13:14" + "src": "758:13:20" }, "loopExpression": { "expression": { "argumentTypes": null, - "id": 2270, + "id": 2472, "isConstant": false, "isLValue": false, "isPure": false, @@ -810,15 +810,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "794:3:14", + "src": "794:3:20", "subExpression": { "argumentTypes": null, - "id": 2269, + "id": 2471, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2262, - "src": "794:1:14", + "referencedDeclaration": 2464, + "src": "794:1:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -829,17 +829,17 @@ "typeString": "uint256" } }, - "id": 2271, + "id": 2473, "nodeType": "ExpressionStatement", - "src": "794:3:14" + "src": "794:3:20" }, "nodeType": "ForStatement", - "src": "753:178:14" + "src": "753:178:20" } ] }, "documentation": "@dev Setup function sets initial storage of contract.\n @param accounts List of whitelisted accounts.", - "id": 2293, + "id": 2495, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -847,16 +847,16 @@ "name": "setup", "nodeType": "FunctionDefinition", "parameters": { - "id": 2256, + "id": 2458, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2255, + "id": 2457, "name": "accounts", "nodeType": "VariableDeclaration", - "scope": 2293, - "src": "682:18:14", + "scope": 2495, + "src": "682:18:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -865,19 +865,19 @@ }, "typeName": { "baseType": { - "id": 2253, + "id": 2455, "name": "address", "nodeType": "ElementaryTypeName", - "src": "682:7:14", + "src": "682:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 2254, + "id": 2456, "length": null, "nodeType": "ArrayTypeName", - "src": "682:9:14", + "src": "682:9:20", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -887,26 +887,26 @@ "visibility": "internal" } ], - "src": "681:20:14" + "src": "681:20:20" }, "payable": false, "returnParameters": { - "id": 2257, + "id": 2459, "nodeType": "ParameterList", "parameters": [], - "src": "721:0:14" + "src": "721:0:20" }, - "scope": 2381, - "src": "667:270:14", + "scope": 2583, + "src": "667:270:20", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2319, + "id": 2521, "nodeType": "Block", - "src": "1165:119:14", + "src": "1165:119:20", "statements": [ { "expression": { @@ -918,19 +918,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 2303, + "id": 2505, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2301, + "id": 2503, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2295, - "src": "1183:7:14", + "referencedDeclaration": 2497, + "src": "1183:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -941,14 +941,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 2302, + "id": 2504, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1194:1:14", + "src": "1194:1:20", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -956,7 +956,7 @@ }, "value": "0" }, - "src": "1183:12:14", + "src": "1183:12:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -970,21 +970,21 @@ "typeString": "bool" } ], - "id": 2300, + "id": 2502, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "1175:7:14", + "referencedDeclaration": 2601, + "src": "1175:7:20", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 2304, + "id": 2506, "isConstant": false, "isLValue": false, "isPure": false, @@ -992,15 +992,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1175:21:14", + "src": "1175:21:20", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2305, + "id": 2507, "nodeType": "ExpressionStatement", - "src": "1175:21:14" + "src": "1175:21:20" }, { "expression": { @@ -1008,7 +1008,7 @@ "arguments": [ { "argumentTypes": null, - "id": 2310, + "id": 2512, "isConstant": false, "isLValue": false, "isPure": false, @@ -1016,31 +1016,31 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "1214:23:14", + "src": "1214:23:20", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2307, + "id": 2509, "name": "isWhitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2252, - "src": "1215:13:14", + "referencedDeclaration": 2454, + "src": "1215:13:20", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2309, + "id": 2511, "indexExpression": { "argumentTypes": null, - "id": 2308, + "id": 2510, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2295, - "src": "1229:7:14", + "referencedDeclaration": 2497, + "src": "1229:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1051,7 +1051,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1215:22:14", + "src": "1215:22:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1070,21 +1070,21 @@ "typeString": "bool" } ], - "id": 2306, + "id": 2508, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "1206:7:14", + "referencedDeclaration": 2601, + "src": "1206:7:20", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 2311, + "id": 2513, "isConstant": false, "isLValue": false, "isPure": false, @@ -1092,20 +1092,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1206:32:14", + "src": "1206:32:20", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2312, + "id": 2514, "nodeType": "ExpressionStatement", - "src": "1206:32:14" + "src": "1206:32:20" }, { "expression": { "argumentTypes": null, - "id": 2317, + "id": 2519, "isConstant": false, "isLValue": false, "isPure": false, @@ -1114,26 +1114,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2313, + "id": 2515, "name": "isWhitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2252, - "src": "1248:13:14", + "referencedDeclaration": 2454, + "src": "1248:13:20", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2315, + "id": 2517, "indexExpression": { "argumentTypes": null, - "id": 2314, + "id": 2516, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2295, - "src": "1262:7:14", + "referencedDeclaration": 2497, + "src": "1262:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1144,7 +1144,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1248:22:14", + "src": "1248:22:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1155,14 +1155,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 2316, + "id": 2518, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "1273:4:14", + "src": "1273:4:20", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -1170,57 +1170,57 @@ }, "value": "true" }, - "src": "1248:29:14", + "src": "1248:29:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2318, + "id": 2520, "nodeType": "ExpressionStatement", - "src": "1248:29:14" + "src": "1248:29:20" } ] }, "documentation": "@dev Allows to add destination to whitelist. This can only be done via a Safe transaction.\n @param account Destination address.", - "id": 2320, + "id": 2522, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 2298, + "id": 2500, "modifierName": { "argumentTypes": null, - "id": 2297, + "id": 2499, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 601, - "src": "1150:10:14", + "referencedDeclaration": 730, + "src": "1150:10:20", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1150:10:14" + "src": "1150:10:20" } ], "name": "addToWhitelist", "nodeType": "FunctionDefinition", "parameters": { - "id": 2296, + "id": 2498, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2295, + "id": 2497, "name": "account", "nodeType": "VariableDeclaration", - "scope": 2320, - "src": "1110:15:14", + "scope": 2522, + "src": "1110:15:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1228,10 +1228,10 @@ "typeString": "address" }, "typeName": { - "id": 2294, + "id": 2496, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1110:7:14", + "src": "1110:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1241,26 +1241,26 @@ "visibility": "internal" } ], - "src": "1109:17:14" + "src": "1109:17:20" }, "payable": false, "returnParameters": { - "id": 2299, + "id": 2501, "nodeType": "ParameterList", "parameters": [], - "src": "1165:0:14" + "src": "1165:0:20" }, - "scope": 2381, - "src": "1086:198:14", + "scope": 2583, + "src": "1086:198:20", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2339, + "id": 2541, "nodeType": "Block", - "src": "1522:88:14", + "src": "1522:88:20", "statements": [ { "expression": { @@ -1270,26 +1270,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2328, + "id": 2530, "name": "isWhitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2252, - "src": "1540:13:14", + "referencedDeclaration": 2454, + "src": "1540:13:20", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2330, + "id": 2532, "indexExpression": { "argumentTypes": null, - "id": 2329, + "id": 2531, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2322, - "src": "1554:7:14", + "referencedDeclaration": 2524, + "src": "1554:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1300,7 +1300,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1540:22:14", + "src": "1540:22:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1314,21 +1314,21 @@ "typeString": "bool" } ], - "id": 2327, + "id": 2529, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "1532:7:14", + "referencedDeclaration": 2601, + "src": "1532:7:20", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 2331, + "id": 2533, "isConstant": false, "isLValue": false, "isPure": false, @@ -1336,20 +1336,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1532:31:14", + "src": "1532:31:20", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2332, + "id": 2534, "nodeType": "ExpressionStatement", - "src": "1532:31:14" + "src": "1532:31:20" }, { "expression": { "argumentTypes": null, - "id": 2337, + "id": 2539, "isConstant": false, "isLValue": false, "isPure": false, @@ -1358,26 +1358,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2333, + "id": 2535, "name": "isWhitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2252, - "src": "1573:13:14", + "referencedDeclaration": 2454, + "src": "1573:13:20", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2335, + "id": 2537, "indexExpression": { "argumentTypes": null, - "id": 2334, + "id": 2536, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2322, - "src": "1587:7:14", + "referencedDeclaration": 2524, + "src": "1587:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1388,7 +1388,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1573:22:14", + "src": "1573:22:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1399,14 +1399,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "66616c7365", - "id": 2336, + "id": 2538, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "1598:5:14", + "src": "1598:5:20", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -1414,57 +1414,57 @@ }, "value": "false" }, - "src": "1573:30:14", + "src": "1573:30:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2338, + "id": 2540, "nodeType": "ExpressionStatement", - "src": "1573:30:14" + "src": "1573:30:20" } ] }, "documentation": "@dev Allows to remove destination from whitelist. This can only be done via a Safe transaction.\n @param account Destination address.", - "id": 2340, + "id": 2542, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 2325, + "id": 2527, "modifierName": { "argumentTypes": null, - "id": 2324, + "id": 2526, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 601, - "src": "1507:10:14", + "referencedDeclaration": 730, + "src": "1507:10:20", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1507:10:14" + "src": "1507:10:20" } ], "name": "removeFromWhitelist", "nodeType": "FunctionDefinition", "parameters": { - "id": 2323, + "id": 2525, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2322, + "id": 2524, "name": "account", "nodeType": "VariableDeclaration", - "scope": 2340, - "src": "1467:15:14", + "scope": 2542, + "src": "1467:15:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1472,10 +1472,10 @@ "typeString": "address" }, "typeName": { - "id": 2321, + "id": 2523, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1467:7:14", + "src": "1467:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1485,26 +1485,26 @@ "visibility": "internal" } ], - "src": "1466:17:14" + "src": "1466:17:20" }, "payable": false, "returnParameters": { - "id": 2326, + "id": 2528, "nodeType": "ParameterList", "parameters": [], - "src": "1522:0:14" + "src": "1522:0:20" }, - "scope": 2381, - "src": "1438:172:14", + "scope": 2583, + "src": "1438:172:20", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2379, + "id": 2581, "nodeType": "Block", - "src": "1973:282:14", + "src": "1973:282:20", "statements": [ { "expression": { @@ -1517,18 +1517,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2356, + "id": 2558, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2396, - "src": "2110:3:14", + "referencedDeclaration": 2598, + "src": "2110:3:20", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 2357, + "id": 2559, "isConstant": false, "isLValue": false, "isPure": false, @@ -1536,7 +1536,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2110:10:14", + "src": "2110:10:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1555,14 +1555,14 @@ "arguments": [ { "argumentTypes": null, - "id": 2353, + "id": 2555, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 588, - "src": "2093:7:14", + "referencedDeclaration": 717, + "src": "2093:7:20", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" } } @@ -1570,22 +1570,22 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" } ], - "id": 2352, + "id": 2554, "name": "OwnerManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1343, - "src": "2080:12:14", + "referencedDeclaration": 1472, + "src": "2080:12:20", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1343_$", + "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1472_$", "typeString": "type(contract OwnerManager)" } }, - "id": 2354, + "id": 2556, "isConstant": false, "isLValue": false, "isPure": false, @@ -1593,27 +1593,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2080:21:14", + "src": "2080:21:20", "typeDescriptions": { - "typeIdentifier": "t_contract$_OwnerManager_$1343", + "typeIdentifier": "t_contract$_OwnerManager_$1472", "typeString": "contract OwnerManager" } }, - "id": 2355, + "id": 2557, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "isOwner", "nodeType": "MemberAccess", - "referencedDeclaration": 1293, - "src": "2080:29:14", + "referencedDeclaration": 1422, + "src": "2080:29:20", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view external returns (bool)" } }, - "id": 2358, + "id": 2560, "isConstant": false, "isLValue": false, "isPure": false, @@ -1621,7 +1621,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2080:41:14", + "src": "2080:41:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1635,21 +1635,21 @@ "typeString": "bool" } ], - "id": 2351, + "id": 2553, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "2072:7:14", + "referencedDeclaration": 2601, + "src": "2072:7:20", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 2359, + "id": 2561, "isConstant": false, "isLValue": false, "isPure": false, @@ -1657,15 +1657,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2072:50:14", + "src": "2072:50:20", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2360, + "id": 2562, "nodeType": "ExpressionStatement", - "src": "2072:50:14" + "src": "2072:50:20" }, { "expression": { @@ -1675,26 +1675,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2362, + "id": 2564, "name": "isWhitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2252, - "src": "2140:13:14", + "referencedDeclaration": 2454, + "src": "2140:13:20", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2364, + "id": 2566, "indexExpression": { "argumentTypes": null, - "id": 2363, + "id": 2565, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2342, - "src": "2154:2:14", + "referencedDeclaration": 2544, + "src": "2154:2:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1705,7 +1705,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2140:17:14", + "src": "2140:17:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1719,21 +1719,21 @@ "typeString": "bool" } ], - "id": 2361, + "id": 2563, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "2132:7:14", + "referencedDeclaration": 2601, + "src": "2132:7:20", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 2365, + "id": 2567, "isConstant": false, "isLValue": false, "isPure": false, @@ -1741,15 +1741,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2132:26:14", + "src": "2132:26:20", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2366, + "id": 2568, "nodeType": "ExpressionStatement", - "src": "2132:26:14" + "src": "2132:26:20" }, { "expression": { @@ -1760,12 +1760,12 @@ "arguments": [ { "argumentTypes": null, - "id": 2370, + "id": 2572, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2342, - "src": "2210:2:14", + "referencedDeclaration": 2544, + "src": "2210:2:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1773,12 +1773,12 @@ }, { "argumentTypes": null, - "id": 2371, + "id": 2573, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2344, - "src": "2214:5:14", + "referencedDeclaration": 2546, + "src": "2214:5:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1786,12 +1786,12 @@ }, { "argumentTypes": null, - "id": 2372, + "id": 2574, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2346, - "src": "2221:4:14", + "referencedDeclaration": 2548, + "src": "2221:4:20", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -1803,32 +1803,32 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2373, + "id": 2575, "name": "Enum", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6, - "src": "2227:4:14", + "referencedDeclaration": 30, + "src": "2227:4:20", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Enum_$6_$", + "typeIdentifier": "t_type$_t_contract$_Enum_$30_$", "typeString": "type(contract Enum)" } }, - "id": 2374, + "id": 2576, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "Operation", "nodeType": "MemberAccess", - "referencedDeclaration": 5, - "src": "2227:14:14", + "referencedDeclaration": 29, + "src": "2227:14:20", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_Operation_$5_$", + "typeIdentifier": "t_type$_t_enum$_Operation_$29_$", "typeString": "type(enum Enum.Operation)" } }, - "id": 2375, + "id": 2577, "isConstant": false, "isLValue": false, "isPure": true, @@ -1836,9 +1836,9 @@ "memberName": "Call", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2227:19:14", + "src": "2227:19:20", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } } @@ -1858,38 +1858,38 @@ "typeString": "bytes memory" }, { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } ], "expression": { "argumentTypes": null, - "id": 2368, + "id": 2570, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 588, - "src": "2176:7:14", + "referencedDeclaration": 717, + "src": "2176:7:20", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" } }, - "id": 2369, + "id": 2571, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "execTransactionFromModule", "nodeType": "MemberAccess", - "referencedDeclaration": 798, - "src": "2176:33:14", + "referencedDeclaration": 927, + "src": "2176:33:20", "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$returns$_t_bool_$", + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation) external returns (bool)" } }, - "id": 2376, + "id": 2578, "isConstant": false, "isLValue": false, "isPure": false, @@ -1897,7 +1897,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2176:71:14", + "src": "2176:71:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1911,21 +1911,21 @@ "typeString": "bool" } ], - "id": 2367, + "id": 2569, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "2168:7:14", + "referencedDeclaration": 2601, + "src": "2168:7:20", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 2377, + "id": 2579, "isConstant": false, "isLValue": false, "isPure": false, @@ -1933,20 +1933,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2168:80:14", + "src": "2168:80:20", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2378, + "id": 2580, "nodeType": "ExpressionStatement", - "src": "2168:80:14" + "src": "2168:80:20" } ] }, "documentation": "@dev Returns if Safe transaction is to a whitelisted destination.\n @param to Whitelisted destination address.\n @param value Not checked.\n @param data Not checked.\n @return Returns if transaction can be executed.", - "id": 2380, + "id": 2582, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -1954,16 +1954,16 @@ "name": "executeWhitelisted", "nodeType": "FunctionDefinition", "parameters": { - "id": 2347, + "id": 2549, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2342, + "id": 2544, "name": "to", "nodeType": "VariableDeclaration", - "scope": 2380, - "src": "1892:10:14", + "scope": 2582, + "src": "1892:10:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1971,10 +1971,10 @@ "typeString": "address" }, "typeName": { - "id": 2341, + "id": 2543, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1892:7:14", + "src": "1892:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1985,11 +1985,11 @@ }, { "constant": false, - "id": 2344, + "id": 2546, "name": "value", "nodeType": "VariableDeclaration", - "scope": 2380, - "src": "1904:13:14", + "scope": 2582, + "src": "1904:13:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1997,10 +1997,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2343, + "id": 2545, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1904:7:14", + "src": "1904:7:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2011,11 +2011,11 @@ }, { "constant": false, - "id": 2346, + "id": 2548, "name": "data", "nodeType": "VariableDeclaration", - "scope": 2380, - "src": "1919:10:14", + "scope": 2582, + "src": "1919:10:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2023,10 +2023,10 @@ "typeString": "bytes" }, "typeName": { - "id": 2345, + "id": 2547, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "1919:5:14", + "src": "1919:5:20", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -2036,20 +2036,20 @@ "visibility": "internal" } ], - "src": "1891:39:14" + "src": "1891:39:20" }, "payable": false, "returnParameters": { - "id": 2350, + "id": 2552, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2349, + "id": 2551, "name": "", "nodeType": "VariableDeclaration", - "scope": 2380, - "src": "1963:4:14", + "scope": 2582, + "src": "1963:4:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2057,10 +2057,10 @@ "typeString": "bool" }, "typeName": { - "id": 2348, + "id": 2550, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "1963:4:14", + "src": "1963:4:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2070,82 +2070,82 @@ "visibility": "internal" } ], - "src": "1962:6:14" + "src": "1962:6:20" }, - "scope": 2381, - "src": "1864:391:14", + "scope": 2583, + "src": "1864:391:20", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 2382, - "src": "289:1968:14" + "scope": 2584, + "src": "289:1968:20" } ], - "src": "0:2258:14" + "src": "0:2258:20" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/WhitelistModule.sol", "exportedSymbols": { "WhitelistModule": [ - 2381 + 2583 ] }, - "id": 2382, + "id": 2584, "nodeType": "SourceUnit", "nodes": [ { - "id": 2236, + "id": 2438, "literals": [ "solidity", "0.4", - ".23" + ".24" ], "nodeType": "PragmaDirective", - "src": "0:23:14" + "src": "0:23:20" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Enum.sol", "file": "../Enum.sol", - "id": 2237, + "id": 2439, "nodeType": "ImportDirective", - "scope": 2382, - "sourceUnit": 7, - "src": "24:21:14", + "scope": 2584, + "sourceUnit": 31, + "src": "24:21:20", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "file": "../Module.sol", - "id": 2238, + "id": 2440, "nodeType": "ImportDirective", - "scope": 2382, - "sourceUnit": 622, - "src": "46:23:14", + "scope": 2584, + "sourceUnit": 751, + "src": "46:23:20", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ModuleManager.sol", "file": "../ModuleManager.sol", - "id": 2239, + "id": 2441, "nodeType": "ImportDirective", - "scope": 2382, - "sourceUnit": 972, - "src": "70:30:14", + "scope": 2584, + "sourceUnit": 1101, + "src": "70:30:20", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", "file": "../OwnerManager.sol", - "id": 2240, + "id": 2442, "nodeType": "ImportDirective", - "scope": 2382, - "sourceUnit": 1344, - "src": "101:29:14", + "scope": 2584, + "sourceUnit": 1473, + "src": "101:29:20", "symbolAliases": [], "unitAlias": "" }, @@ -2155,46 +2155,46 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 2241, + "id": 2443, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 621, - "src": "317:6:14", + "referencedDeclaration": 750, + "src": "317:6:20", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$621", + "typeIdentifier": "t_contract$_Module_$750", "typeString": "contract Module" } }, - "id": 2242, + "id": 2444, "nodeType": "InheritanceSpecifier", - "src": "317:6:14" + "src": "317:6:20" } ], "contractDependencies": [ - 580, - 621, - 1359 + 652, + 750, + 1619 ], "contractKind": "contract", "documentation": "@title Whitelist Module - Allows to execute transactions to whitelisted addresses without confirmations.\n @author Stefan George - ", "fullyImplemented": true, - "id": 2381, + "id": 2583, "linearizedBaseContracts": [ - 2381, - 621, - 580, - 1359 + 2583, + 750, + 652, + 1619 ], "name": "WhitelistModule", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, - "id": 2245, + "id": 2447, "name": "NAME", "nodeType": "VariableDeclaration", - "scope": 2381, - "src": "331:48:14", + "scope": 2583, + "src": "331:48:20", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2202,10 +2202,10 @@ "typeString": "string" }, "typeName": { - "id": 2243, + "id": 2445, "name": "string", "nodeType": "ElementaryTypeName", - "src": "331:6:14", + "src": "331:6:20", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -2214,14 +2214,14 @@ "value": { "argumentTypes": null, "hexValue": "57686974656c697374204d6f64756c65", - "id": 2244, + "id": 2446, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "361:18:14", + "src": "361:18:20", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_84d69d03a7c747e8eefe7cc2b9e87b566cfc57cc90e4ed88f03f9c9780b7d4e6", @@ -2233,11 +2233,11 @@ }, { "constant": true, - "id": 2248, + "id": 2450, "name": "VERSION", "nodeType": "VariableDeclaration", - "scope": 2381, - "src": "385:40:14", + "scope": 2583, + "src": "385:40:20", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2245,10 +2245,10 @@ "typeString": "string" }, "typeName": { - "id": 2246, + "id": 2448, "name": "string", "nodeType": "ElementaryTypeName", - "src": "385:6:14", + "src": "385:6:20", "typeDescriptions": { "typeIdentifier": "t_string_storage_ptr", "typeString": "string" @@ -2257,14 +2257,14 @@ "value": { "argumentTypes": null, "hexValue": "302e302e31", - "id": 2247, + "id": 2449, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "418:7:14", + "src": "418:7:20", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_ae209a0b48f21c054280f2455d32cf309387644879d9acbd8ffc199163811885", @@ -2276,11 +2276,11 @@ }, { "constant": false, - "id": 2252, + "id": 2454, "name": "isWhitelisted", "nodeType": "VariableDeclaration", - "scope": 2381, - "src": "498:46:14", + "scope": 2583, + "src": "498:46:20", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { @@ -2288,28 +2288,28 @@ "typeString": "mapping(address => bool)" }, "typeName": { - "id": 2251, + "id": 2453, "keyType": { - "id": 2249, + "id": 2451, "name": "address", "nodeType": "ElementaryTypeName", - "src": "507:7:14", + "src": "507:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "498:25:14", + "src": "498:25:20", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" }, "valueType": { - "id": 2250, + "id": 2452, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "518:4:14", + "src": "518:4:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2321,9 +2321,9 @@ }, { "body": { - "id": 2292, + "id": 2494, "nodeType": "Block", - "src": "721:216:14", + "src": "721:216:20", "statements": [ { "expression": { @@ -2331,18 +2331,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 2258, + "id": 2460, "name": "setManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 620, - "src": "731:10:14", + "referencedDeclaration": 749, + "src": "731:10:20", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 2259, + "id": 2461, "isConstant": false, "isLValue": false, "isPure": false, @@ -2350,34 +2350,34 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "731:12:14", + "src": "731:12:20", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2260, + "id": 2462, "nodeType": "ExpressionStatement", - "src": "731:12:14" + "src": "731:12:20" }, { "body": { - "id": 2290, + "id": 2492, "nodeType": "Block", - "src": "799:132:14", + "src": "799:132:20", "statements": [ { "assignments": [ - 2273 + 2475 ], "declarations": [ { "constant": false, - "id": 2273, + "id": 2475, "name": "account", "nodeType": "VariableDeclaration", - "scope": 2293, - "src": "813:15:14", + "scope": 2495, + "src": "813:15:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2385,10 +2385,10 @@ "typeString": "address" }, "typeName": { - "id": 2272, + "id": 2474, "name": "address", "nodeType": "ElementaryTypeName", - "src": "813:7:14", + "src": "813:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2398,31 +2398,31 @@ "visibility": "internal" } ], - "id": 2277, + "id": 2479, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2274, + "id": 2476, "name": "accounts", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2255, - "src": "831:8:14", + "referencedDeclaration": 2457, + "src": "831:8:20", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 2276, + "id": 2478, "indexExpression": { "argumentTypes": null, - "id": 2275, + "id": 2477, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2262, - "src": "840:1:14", + "referencedDeclaration": 2464, + "src": "840:1:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2433,14 +2433,14 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "831:11:14", + "src": "831:11:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "813:29:14" + "src": "813:29:20" }, { "expression": { @@ -2452,19 +2452,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 2281, + "id": 2483, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2279, + "id": 2481, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2273, - "src": "864:7:14", + "referencedDeclaration": 2475, + "src": "864:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2475,14 +2475,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 2280, + "id": 2482, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "875:1:14", + "src": "875:1:20", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -2490,7 +2490,7 @@ }, "value": "0" }, - "src": "864:12:14", + "src": "864:12:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2504,21 +2504,21 @@ "typeString": "bool" } ], - "id": 2278, + "id": 2480, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "856:7:14", + "referencedDeclaration": 2601, + "src": "856:7:20", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 2282, + "id": 2484, "isConstant": false, "isLValue": false, "isPure": false, @@ -2526,20 +2526,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "856:21:14", + "src": "856:21:20", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2283, + "id": 2485, "nodeType": "ExpressionStatement", - "src": "856:21:14" + "src": "856:21:20" }, { "expression": { "argumentTypes": null, - "id": 2288, + "id": 2490, "isConstant": false, "isLValue": false, "isPure": false, @@ -2548,26 +2548,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2284, + "id": 2486, "name": "isWhitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2252, - "src": "891:13:14", + "referencedDeclaration": 2454, + "src": "891:13:20", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2286, + "id": 2488, "indexExpression": { "argumentTypes": null, - "id": 2285, + "id": 2487, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2273, - "src": "905:7:14", + "referencedDeclaration": 2475, + "src": "905:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2578,7 +2578,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "891:22:14", + "src": "891:22:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2589,14 +2589,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 2287, + "id": 2489, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "916:4:14", + "src": "916:4:20", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -2604,15 +2604,15 @@ }, "value": "true" }, - "src": "891:29:14", + "src": "891:29:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2289, + "id": 2491, "nodeType": "ExpressionStatement", - "src": "891:29:14" + "src": "891:29:20" } ] }, @@ -2622,19 +2622,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 2268, + "id": 2470, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2265, + "id": 2467, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2262, - "src": "773:1:14", + "referencedDeclaration": 2464, + "src": "773:1:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2646,18 +2646,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2266, + "id": 2468, "name": "accounts", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2255, - "src": "777:8:14", + "referencedDeclaration": 2457, + "src": "777:8:20", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 2267, + "id": 2469, "isConstant": false, "isLValue": false, "isPure": false, @@ -2665,31 +2665,31 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "777:15:14", + "src": "777:15:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "773:19:14", + "src": "773:19:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2291, + "id": 2493, "initializationExpression": { "assignments": [ - 2262 + 2464 ], "declarations": [ { "constant": false, - "id": 2262, + "id": 2464, "name": "i", "nodeType": "VariableDeclaration", - "scope": 2293, - "src": "758:9:14", + "scope": 2495, + "src": "758:9:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2697,10 +2697,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2261, + "id": 2463, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "758:7:14", + "src": "758:7:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2710,18 +2710,18 @@ "visibility": "internal" } ], - "id": 2264, + "id": 2466, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 2263, + "id": 2465, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "770:1:14", + "src": "770:1:20", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -2730,12 +2730,12 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "758:13:14" + "src": "758:13:20" }, "loopExpression": { "expression": { "argumentTypes": null, - "id": 2270, + "id": 2472, "isConstant": false, "isLValue": false, "isPure": false, @@ -2743,15 +2743,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "794:3:14", + "src": "794:3:20", "subExpression": { "argumentTypes": null, - "id": 2269, + "id": 2471, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2262, - "src": "794:1:14", + "referencedDeclaration": 2464, + "src": "794:1:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2762,17 +2762,17 @@ "typeString": "uint256" } }, - "id": 2271, + "id": 2473, "nodeType": "ExpressionStatement", - "src": "794:3:14" + "src": "794:3:20" }, "nodeType": "ForStatement", - "src": "753:178:14" + "src": "753:178:20" } ] }, "documentation": "@dev Setup function sets initial storage of contract.\n @param accounts List of whitelisted accounts.", - "id": 2293, + "id": 2495, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -2780,16 +2780,16 @@ "name": "setup", "nodeType": "FunctionDefinition", "parameters": { - "id": 2256, + "id": 2458, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2255, + "id": 2457, "name": "accounts", "nodeType": "VariableDeclaration", - "scope": 2293, - "src": "682:18:14", + "scope": 2495, + "src": "682:18:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2798,19 +2798,19 @@ }, "typeName": { "baseType": { - "id": 2253, + "id": 2455, "name": "address", "nodeType": "ElementaryTypeName", - "src": "682:7:14", + "src": "682:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 2254, + "id": 2456, "length": null, "nodeType": "ArrayTypeName", - "src": "682:9:14", + "src": "682:9:20", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -2820,26 +2820,26 @@ "visibility": "internal" } ], - "src": "681:20:14" + "src": "681:20:20" }, "payable": false, "returnParameters": { - "id": 2257, + "id": 2459, "nodeType": "ParameterList", "parameters": [], - "src": "721:0:14" + "src": "721:0:20" }, - "scope": 2381, - "src": "667:270:14", + "scope": 2583, + "src": "667:270:20", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2319, + "id": 2521, "nodeType": "Block", - "src": "1165:119:14", + "src": "1165:119:20", "statements": [ { "expression": { @@ -2851,19 +2851,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 2303, + "id": 2505, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2301, + "id": 2503, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2295, - "src": "1183:7:14", + "referencedDeclaration": 2497, + "src": "1183:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2874,14 +2874,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 2302, + "id": 2504, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1194:1:14", + "src": "1194:1:20", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -2889,7 +2889,7 @@ }, "value": "0" }, - "src": "1183:12:14", + "src": "1183:12:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2903,21 +2903,21 @@ "typeString": "bool" } ], - "id": 2300, + "id": 2502, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "1175:7:14", + "referencedDeclaration": 2601, + "src": "1175:7:20", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 2304, + "id": 2506, "isConstant": false, "isLValue": false, "isPure": false, @@ -2925,15 +2925,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1175:21:14", + "src": "1175:21:20", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2305, + "id": 2507, "nodeType": "ExpressionStatement", - "src": "1175:21:14" + "src": "1175:21:20" }, { "expression": { @@ -2941,7 +2941,7 @@ "arguments": [ { "argumentTypes": null, - "id": 2310, + "id": 2512, "isConstant": false, "isLValue": false, "isPure": false, @@ -2949,31 +2949,31 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "1214:23:14", + "src": "1214:23:20", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2307, + "id": 2509, "name": "isWhitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2252, - "src": "1215:13:14", + "referencedDeclaration": 2454, + "src": "1215:13:20", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2309, + "id": 2511, "indexExpression": { "argumentTypes": null, - "id": 2308, + "id": 2510, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2295, - "src": "1229:7:14", + "referencedDeclaration": 2497, + "src": "1229:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2984,7 +2984,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1215:22:14", + "src": "1215:22:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3003,21 +3003,21 @@ "typeString": "bool" } ], - "id": 2306, + "id": 2508, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "1206:7:14", + "referencedDeclaration": 2601, + "src": "1206:7:20", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 2311, + "id": 2513, "isConstant": false, "isLValue": false, "isPure": false, @@ -3025,20 +3025,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1206:32:14", + "src": "1206:32:20", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2312, + "id": 2514, "nodeType": "ExpressionStatement", - "src": "1206:32:14" + "src": "1206:32:20" }, { "expression": { "argumentTypes": null, - "id": 2317, + "id": 2519, "isConstant": false, "isLValue": false, "isPure": false, @@ -3047,26 +3047,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2313, + "id": 2515, "name": "isWhitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2252, - "src": "1248:13:14", + "referencedDeclaration": 2454, + "src": "1248:13:20", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2315, + "id": 2517, "indexExpression": { "argumentTypes": null, - "id": 2314, + "id": 2516, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2295, - "src": "1262:7:14", + "referencedDeclaration": 2497, + "src": "1262:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3077,7 +3077,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1248:22:14", + "src": "1248:22:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3088,14 +3088,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 2316, + "id": 2518, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "1273:4:14", + "src": "1273:4:20", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -3103,57 +3103,57 @@ }, "value": "true" }, - "src": "1248:29:14", + "src": "1248:29:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2318, + "id": 2520, "nodeType": "ExpressionStatement", - "src": "1248:29:14" + "src": "1248:29:20" } ] }, "documentation": "@dev Allows to add destination to whitelist. This can only be done via a Safe transaction.\n @param account Destination address.", - "id": 2320, + "id": 2522, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 2298, + "id": 2500, "modifierName": { "argumentTypes": null, - "id": 2297, + "id": 2499, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 601, - "src": "1150:10:14", + "referencedDeclaration": 730, + "src": "1150:10:20", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1150:10:14" + "src": "1150:10:20" } ], "name": "addToWhitelist", "nodeType": "FunctionDefinition", "parameters": { - "id": 2296, + "id": 2498, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2295, + "id": 2497, "name": "account", "nodeType": "VariableDeclaration", - "scope": 2320, - "src": "1110:15:14", + "scope": 2522, + "src": "1110:15:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3161,10 +3161,10 @@ "typeString": "address" }, "typeName": { - "id": 2294, + "id": 2496, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1110:7:14", + "src": "1110:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3174,26 +3174,26 @@ "visibility": "internal" } ], - "src": "1109:17:14" + "src": "1109:17:20" }, "payable": false, "returnParameters": { - "id": 2299, + "id": 2501, "nodeType": "ParameterList", "parameters": [], - "src": "1165:0:14" + "src": "1165:0:20" }, - "scope": 2381, - "src": "1086:198:14", + "scope": 2583, + "src": "1086:198:20", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2339, + "id": 2541, "nodeType": "Block", - "src": "1522:88:14", + "src": "1522:88:20", "statements": [ { "expression": { @@ -3203,26 +3203,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2328, + "id": 2530, "name": "isWhitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2252, - "src": "1540:13:14", + "referencedDeclaration": 2454, + "src": "1540:13:20", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2330, + "id": 2532, "indexExpression": { "argumentTypes": null, - "id": 2329, + "id": 2531, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2322, - "src": "1554:7:14", + "referencedDeclaration": 2524, + "src": "1554:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3233,7 +3233,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1540:22:14", + "src": "1540:22:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3247,21 +3247,21 @@ "typeString": "bool" } ], - "id": 2327, + "id": 2529, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "1532:7:14", + "referencedDeclaration": 2601, + "src": "1532:7:20", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 2331, + "id": 2533, "isConstant": false, "isLValue": false, "isPure": false, @@ -3269,20 +3269,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1532:31:14", + "src": "1532:31:20", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2332, + "id": 2534, "nodeType": "ExpressionStatement", - "src": "1532:31:14" + "src": "1532:31:20" }, { "expression": { "argumentTypes": null, - "id": 2337, + "id": 2539, "isConstant": false, "isLValue": false, "isPure": false, @@ -3291,26 +3291,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2333, + "id": 2535, "name": "isWhitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2252, - "src": "1573:13:14", + "referencedDeclaration": 2454, + "src": "1573:13:20", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2335, + "id": 2537, "indexExpression": { "argumentTypes": null, - "id": 2334, + "id": 2536, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2322, - "src": "1587:7:14", + "referencedDeclaration": 2524, + "src": "1587:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3321,7 +3321,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1573:22:14", + "src": "1573:22:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3332,14 +3332,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "66616c7365", - "id": 2336, + "id": 2538, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "1598:5:14", + "src": "1598:5:20", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -3347,57 +3347,57 @@ }, "value": "false" }, - "src": "1573:30:14", + "src": "1573:30:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2338, + "id": 2540, "nodeType": "ExpressionStatement", - "src": "1573:30:14" + "src": "1573:30:20" } ] }, "documentation": "@dev Allows to remove destination from whitelist. This can only be done via a Safe transaction.\n @param account Destination address.", - "id": 2340, + "id": 2542, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 2325, + "id": 2527, "modifierName": { "argumentTypes": null, - "id": 2324, + "id": 2526, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 601, - "src": "1507:10:14", + "referencedDeclaration": 730, + "src": "1507:10:20", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1507:10:14" + "src": "1507:10:20" } ], "name": "removeFromWhitelist", "nodeType": "FunctionDefinition", "parameters": { - "id": 2323, + "id": 2525, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2322, + "id": 2524, "name": "account", "nodeType": "VariableDeclaration", - "scope": 2340, - "src": "1467:15:14", + "scope": 2542, + "src": "1467:15:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3405,10 +3405,10 @@ "typeString": "address" }, "typeName": { - "id": 2321, + "id": 2523, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1467:7:14", + "src": "1467:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3418,26 +3418,26 @@ "visibility": "internal" } ], - "src": "1466:17:14" + "src": "1466:17:20" }, "payable": false, "returnParameters": { - "id": 2326, + "id": 2528, "nodeType": "ParameterList", "parameters": [], - "src": "1522:0:14" + "src": "1522:0:20" }, - "scope": 2381, - "src": "1438:172:14", + "scope": 2583, + "src": "1438:172:20", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2379, + "id": 2581, "nodeType": "Block", - "src": "1973:282:14", + "src": "1973:282:20", "statements": [ { "expression": { @@ -3450,18 +3450,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2356, + "id": 2558, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2396, - "src": "2110:3:14", + "referencedDeclaration": 2598, + "src": "2110:3:20", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 2357, + "id": 2559, "isConstant": false, "isLValue": false, "isPure": false, @@ -3469,7 +3469,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2110:10:14", + "src": "2110:10:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3488,14 +3488,14 @@ "arguments": [ { "argumentTypes": null, - "id": 2353, + "id": 2555, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 588, - "src": "2093:7:14", + "referencedDeclaration": 717, + "src": "2093:7:20", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" } } @@ -3503,22 +3503,22 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" } ], - "id": 2352, + "id": 2554, "name": "OwnerManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1343, - "src": "2080:12:14", + "referencedDeclaration": 1472, + "src": "2080:12:20", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1343_$", + "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1472_$", "typeString": "type(contract OwnerManager)" } }, - "id": 2354, + "id": 2556, "isConstant": false, "isLValue": false, "isPure": false, @@ -3526,27 +3526,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2080:21:14", + "src": "2080:21:20", "typeDescriptions": { - "typeIdentifier": "t_contract$_OwnerManager_$1343", + "typeIdentifier": "t_contract$_OwnerManager_$1472", "typeString": "contract OwnerManager" } }, - "id": 2355, + "id": 2557, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "isOwner", "nodeType": "MemberAccess", - "referencedDeclaration": 1293, - "src": "2080:29:14", + "referencedDeclaration": 1422, + "src": "2080:29:20", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view external returns (bool)" } }, - "id": 2358, + "id": 2560, "isConstant": false, "isLValue": false, "isPure": false, @@ -3554,7 +3554,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2080:41:14", + "src": "2080:41:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3568,21 +3568,21 @@ "typeString": "bool" } ], - "id": 2351, + "id": 2553, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "2072:7:14", + "referencedDeclaration": 2601, + "src": "2072:7:20", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 2359, + "id": 2561, "isConstant": false, "isLValue": false, "isPure": false, @@ -3590,15 +3590,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2072:50:14", + "src": "2072:50:20", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2360, + "id": 2562, "nodeType": "ExpressionStatement", - "src": "2072:50:14" + "src": "2072:50:20" }, { "expression": { @@ -3608,26 +3608,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2362, + "id": 2564, "name": "isWhitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2252, - "src": "2140:13:14", + "referencedDeclaration": 2454, + "src": "2140:13:20", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2364, + "id": 2566, "indexExpression": { "argumentTypes": null, - "id": 2363, + "id": 2565, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2342, - "src": "2154:2:14", + "referencedDeclaration": 2544, + "src": "2154:2:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3638,7 +3638,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2140:17:14", + "src": "2140:17:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3652,21 +3652,21 @@ "typeString": "bool" } ], - "id": 2361, + "id": 2563, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "2132:7:14", + "referencedDeclaration": 2601, + "src": "2132:7:20", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 2365, + "id": 2567, "isConstant": false, "isLValue": false, "isPure": false, @@ -3674,15 +3674,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2132:26:14", + "src": "2132:26:20", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2366, + "id": 2568, "nodeType": "ExpressionStatement", - "src": "2132:26:14" + "src": "2132:26:20" }, { "expression": { @@ -3693,12 +3693,12 @@ "arguments": [ { "argumentTypes": null, - "id": 2370, + "id": 2572, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2342, - "src": "2210:2:14", + "referencedDeclaration": 2544, + "src": "2210:2:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3706,12 +3706,12 @@ }, { "argumentTypes": null, - "id": 2371, + "id": 2573, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2344, - "src": "2214:5:14", + "referencedDeclaration": 2546, + "src": "2214:5:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3719,12 +3719,12 @@ }, { "argumentTypes": null, - "id": 2372, + "id": 2574, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2346, - "src": "2221:4:14", + "referencedDeclaration": 2548, + "src": "2221:4:20", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -3736,32 +3736,32 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2373, + "id": 2575, "name": "Enum", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 6, - "src": "2227:4:14", + "referencedDeclaration": 30, + "src": "2227:4:20", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Enum_$6_$", + "typeIdentifier": "t_type$_t_contract$_Enum_$30_$", "typeString": "type(contract Enum)" } }, - "id": 2374, + "id": 2576, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "Operation", "nodeType": "MemberAccess", - "referencedDeclaration": 5, - "src": "2227:14:14", + "referencedDeclaration": 29, + "src": "2227:14:20", "typeDescriptions": { - "typeIdentifier": "t_type$_t_enum$_Operation_$5_$", + "typeIdentifier": "t_type$_t_enum$_Operation_$29_$", "typeString": "type(enum Enum.Operation)" } }, - "id": 2375, + "id": 2577, "isConstant": false, "isLValue": false, "isPure": true, @@ -3769,9 +3769,9 @@ "memberName": "Call", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2227:19:14", + "src": "2227:19:20", "typeDescriptions": { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } } @@ -3791,38 +3791,38 @@ "typeString": "bytes memory" }, { - "typeIdentifier": "t_enum$_Operation_$5", + "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } ], "expression": { "argumentTypes": null, - "id": 2368, + "id": 2570, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 588, - "src": "2176:7:14", + "referencedDeclaration": 717, + "src": "2176:7:20", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$971", + "typeIdentifier": "t_contract$_ModuleManager_$1100", "typeString": "contract ModuleManager" } }, - "id": 2369, + "id": 2571, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "execTransactionFromModule", "nodeType": "MemberAccess", - "referencedDeclaration": 798, - "src": "2176:33:14", + "referencedDeclaration": 927, + "src": "2176:33:20", "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$5_$returns$_t_bool_$", + "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation) external returns (bool)" } }, - "id": 2376, + "id": 2578, "isConstant": false, "isLValue": false, "isPure": false, @@ -3830,7 +3830,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2176:71:14", + "src": "2176:71:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3844,21 +3844,21 @@ "typeString": "bool" } ], - "id": 2367, + "id": 2569, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2399, - 2400 + 2601, + 2602 ], - "referencedDeclaration": 2399, - "src": "2168:7:14", + "referencedDeclaration": 2601, + "src": "2168:7:20", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 2377, + "id": 2579, "isConstant": false, "isLValue": false, "isPure": false, @@ -3866,20 +3866,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2168:80:14", + "src": "2168:80:20", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2378, + "id": 2580, "nodeType": "ExpressionStatement", - "src": "2168:80:14" + "src": "2168:80:20" } ] }, "documentation": "@dev Returns if Safe transaction is to a whitelisted destination.\n @param to Whitelisted destination address.\n @param value Not checked.\n @param data Not checked.\n @return Returns if transaction can be executed.", - "id": 2380, + "id": 2582, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -3887,16 +3887,16 @@ "name": "executeWhitelisted", "nodeType": "FunctionDefinition", "parameters": { - "id": 2347, + "id": 2549, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2342, + "id": 2544, "name": "to", "nodeType": "VariableDeclaration", - "scope": 2380, - "src": "1892:10:14", + "scope": 2582, + "src": "1892:10:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3904,10 +3904,10 @@ "typeString": "address" }, "typeName": { - "id": 2341, + "id": 2543, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1892:7:14", + "src": "1892:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3918,11 +3918,11 @@ }, { "constant": false, - "id": 2344, + "id": 2546, "name": "value", "nodeType": "VariableDeclaration", - "scope": 2380, - "src": "1904:13:14", + "scope": 2582, + "src": "1904:13:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3930,10 +3930,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2343, + "id": 2545, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1904:7:14", + "src": "1904:7:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3944,11 +3944,11 @@ }, { "constant": false, - "id": 2346, + "id": 2548, "name": "data", "nodeType": "VariableDeclaration", - "scope": 2380, - "src": "1919:10:14", + "scope": 2582, + "src": "1919:10:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3956,10 +3956,10 @@ "typeString": "bytes" }, "typeName": { - "id": 2345, + "id": 2547, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "1919:5:14", + "src": "1919:5:20", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -3969,20 +3969,20 @@ "visibility": "internal" } ], - "src": "1891:39:14" + "src": "1891:39:20" }, "payable": false, "returnParameters": { - "id": 2350, + "id": 2552, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2349, + "id": 2551, "name": "", "nodeType": "VariableDeclaration", - "scope": 2380, - "src": "1963:4:14", + "scope": 2582, + "src": "1963:4:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3990,10 +3990,10 @@ "typeString": "bool" }, "typeName": { - "id": 2348, + "id": 2550, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "1963:4:14", + "src": "1963:4:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4003,63 +4003,45 @@ "visibility": "internal" } ], - "src": "1962:6:14" + "src": "1962:6:20" }, - "scope": 2381, - "src": "1864:391:14", + "scope": 2583, + "src": "1864:391:20", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 2382, - "src": "289:1968:14" + "scope": 2584, + "src": "289:1968:20" } ], - "src": "0:2258:14" + "src": "0:2258:20" }, "compiler": { "name": "solc", - "version": "0.4.23+commit.124ca40d.Emscripten.clang" + "version": "0.4.24+commit.e67f0147.Emscripten.clang" }, "networks": { "4": { "events": {}, "links": {}, - "address": "0x4e2dfbbb0f2b3225fdcdec7e05dcd92c92832fbd", - "transactionHash": "0x1b787034883e27a45b7b9a90b77670ef807701894a32904f573a60b666b3bd94" + "address": "0xc9ecedc3f0aa6ec4dc9b6a46bace62480a607617", + "transactionHash": "0xe39c78298afab44ba85b809e6c6d8050d841d420a98a45615afc3c69a7733e05" }, - "1525950336085": { - "events": {}, - "links": {}, - "address": "0x15fd83fcf27f1726e692389be1b6e03fe7d56bb6", - "transactionHash": "0xc7f84311daf6a72740fe5822cd6007cec3ce1ff6aeaf454559f3e5f36c81cfd8" - }, - "1526283540628": { - "events": {}, - "links": {}, - "address": "0x536f677993e3eada3e17f2f42888ee777441fc3e", - "transactionHash": "0xc7f84311daf6a72740fe5822cd6007cec3ce1ff6aeaf454559f3e5f36c81cfd8" - }, - "1526478212260": { - "events": {}, - "links": {}, - "address": "0x5fde4f39a944859214e24311ad809166d35b2595", - "transactionHash": "0xe8e4d24799a8b74210c07b7faa44968bece2c73df692920f7af75181654e10f2" - }, - "1526973574996": { + "1527316019334": { "events": {}, "links": {}, - "address": "0xba3ef9cf5be6c120fc0a642690f297e3bd239aa3", - "transactionHash": "0xe8e4d24799a8b74210c07b7faa44968bece2c73df692920f7af75181654e10f2" + "address": "0xa0a04217f63fe5026bc20445af8ded0dffaccbc2", + "transactionHash": "0x10a442e0b3d7b44501719f123d9180db28c9206bfaf6163dfbfc2b987eb0e33f" }, - "1527316019334": { + "1527420696956": { "events": {}, "links": {}, - "address": "0xa0a2c39cdfb6d7fb2f9b88990703f1b3c44ad5dc", - "transactionHash": "0xe8e4d24799a8b74210c07b7faa44968bece2c73df692920f7af75181654e10f2" + "address": "0x00d378002af4eccf8548c93aaf9d2b42d7d57239", + "transactionHash": "0x37296a82258f36484727e72673860ef6ed238e3754263014e3f3ff9a8997b64b" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-26T06:28:28.359Z" + "updatedAt": "2018-05-27T11:31:46.258Z" } \ No newline at end of file From 192eb9b909e539009eab1bf29dbd4d48eac97edb Mon Sep 17 00:00:00 2001 From: apanizo Date: Sun, 27 May 2018 13:35:20 +0200 Subject: [PATCH 106/138] WA-238 Updating Truffle to 4.1.11 --- package.json | 2 +- yarn.lock | 132 ++++++++++++++++----------------------------------- 2 files changed, 43 insertions(+), 91 deletions(-) diff --git a/package.json b/package.json index 586fc64a72..576b330be9 100644 --- a/package.json +++ b/package.json @@ -87,7 +87,7 @@ "storybook-host": "^4.1.5", "storybook-router": "^0.3.3", "style-loader": "^0.20.2", - "truffle": "4.1.8", + "truffle": "git://github.com/trufflesuite/truffle.git#develop", "truffle-contract": "^1.1.8", "truffle-solidity-loader": "0.0.8", "uglifyjs-webpack-plugin": "^1.2.2", diff --git a/yarn.lock b/yarn.lock index 0e8a027b10..704bc4b6b4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3297,6 +3297,10 @@ commander@0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/commander/-/commander-0.6.1.tgz#fa68a14f6a945d54dbbe50d8cdb3320e9e3b1a06" +commander@2.11.0: + version "2.11.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.11.0.tgz#157152fd1e7a6c8d98a5b715cf376df928004563" + commander@2.14.x, commander@~2.14.1: version "2.14.1" resolved "https://registry.yarnpkg.com/commander/-/commander-2.14.1.tgz#2235123e37af8ca3c65df45b026dbd357b01b9aa" @@ -3305,12 +3309,6 @@ commander@2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.3.0.tgz#fd430e889832ec353b9acd1de217c11cb3eef873" -commander@2.9.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/commander/-/commander-2.9.0.tgz#9c99094176e12240cb22d6c5146098400fe0f7d4" - dependencies: - graceful-readlink ">= 1.0.0" - commander@^2.11.0, commander@^2.12.2, commander@^2.13.0, commander@^2.8.1, commander@^2.9.0: version "2.15.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.15.0.tgz#ad2a23a1c3b036e392469b8012cec6b33b4c1322" @@ -3757,19 +3755,13 @@ debug@2.2.0, debug@~2.2.0: dependencies: ms "0.7.1" -debug@2.6.8: - version "2.6.8" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.8.tgz#e731531ca2ede27d188222427da17821d68ff4fc" - dependencies: - ms "2.0.0" - debug@2.6.9, debug@^2.2.0, debug@^2.3.3, debug@^2.6.0, debug@^2.6.6, debug@^2.6.8, debug@^2.6.9: version "2.6.9" resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" dependencies: ms "2.0.0" -debug@^3.0.1, debug@^3.1.0: +debug@3.1.0, debug@^3.0.1, debug@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" dependencies: @@ -3959,9 +3951,9 @@ diff@1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/diff/-/diff-1.4.0.tgz#7f28d2eb9ee7b15a97efd89ce63dcfdaa3ccbabf" -diff@3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-3.2.0.tgz#c9ce393a4b7cbd0b058a725c93df299027868ff9" +diff@3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/diff/-/diff-3.3.1.tgz#aa8567a6eed03c531fc89d3f711cd0e5259dec75" diff@^3.2.0, diff@^3.3.1, diff@^3.5.0: version "3.5.0" @@ -5316,14 +5308,14 @@ glob@3.2.11: inherits "2" minimatch "0.3" -glob@7.1.1: - version "7.1.1" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.1.tgz#805211df04faaf1c63a3600306cdf5ade50b2ec8" +glob@7.1.2, glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.0, glob@^7.1.1, glob@^7.1.2, glob@~7.1.1, glob@~7.1.2: + version "7.1.2" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" inherits "2" - minimatch "^3.0.2" + minimatch "^3.0.4" once "^1.3.0" path-is-absolute "^1.0.0" @@ -5337,17 +5329,6 @@ glob@^6.0.1: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.0.0, glob@^7.0.3, glob@^7.0.5, glob@^7.1.0, glob@^7.1.1, glob@^7.1.2, glob@~7.1.1, glob@~7.1.2: - version "7.1.2" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - global-modules@1.0.0, global-modules@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" @@ -5455,10 +5436,6 @@ graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9, version "4.1.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658" -"graceful-readlink@>= 1.0.0": - version "1.0.1" - resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" - graphlib@^2.0.0: version "2.1.5" resolved "https://registry.yarnpkg.com/graphlib/-/graphlib-2.1.5.tgz#6afe1afcc5148555ec799e499056795bd6938c87" @@ -5471,6 +5448,10 @@ grouped-queue@^0.3.3: dependencies: lodash "^4.17.2" +growl@1.10.3: + version "1.10.3" + resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.3.tgz#1926ba90cf3edfe2adb4927f5880bc22c66c790f" + growl@1.9.2: version "1.9.2" resolved "https://registry.yarnpkg.com/growl/-/growl-1.9.2.tgz#0ea7743715db8d8de2c5ede1775e1b45ac85c02f" @@ -6898,7 +6879,7 @@ json-stringify-safe@^5.0.1, json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" -json3@3.3.2, json3@^3.3.2: +json3@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/json3/-/json3-3.3.2.tgz#3c0434743df93e2f5c42aee7b19bcb483575f4e1" @@ -7263,29 +7244,10 @@ lodash-es@^4.17.4, lodash-es@^4.17.5, lodash-es@^4.2.1: version "4.17.7" resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.7.tgz#db240a3252c3dd8360201ac9feef91ac977ea856" -lodash._baseassign@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz#8c38a099500f215ad09e59f1722fd0c52bfe0a4e" - dependencies: - lodash._basecopy "^3.0.0" - lodash.keys "^3.0.0" - -lodash._basecopy@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36" - -lodash._basecreate@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/lodash._basecreate/-/lodash._basecreate-3.0.3.tgz#1bc661614daa7fc311b7d03bf16806a0213cf821" - lodash._getnative@^3.0.0: version "3.9.1" resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5" -lodash._isiterateecall@^3.0.0: - version "3.0.9" - resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c" - lodash.assign@^4.0.3, lodash.assign@^4.0.6, lodash.assign@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/lodash.assign/-/lodash.assign-4.2.0.tgz#0d99f3ccd7a6d261d19bdaeb9245005d285808e7" @@ -7298,14 +7260,6 @@ lodash.clonedeep@^4.3.2: version "4.5.0" resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" -lodash.create@3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/lodash.create/-/lodash.create-3.1.1.tgz#d7f2849f0dbda7e04682bb8cd72ab022461debe7" - dependencies: - lodash._baseassign "^3.0.0" - lodash._basecreate "^3.0.0" - lodash._isiterateecall "^3.0.0" - lodash.debounce@^4.0.8: version "4.0.8" resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" @@ -7326,7 +7280,7 @@ lodash.isplainobject@^4.0.6: version "4.0.6" resolved "https://registry.yarnpkg.com/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz#7c526a52d89b45c45cc690b88163be0497f550cb" -lodash.keys@^3.0.0, lodash.keys@^3.1.2: +lodash.keys@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a" dependencies: @@ -7806,22 +7760,20 @@ mocha@^2.3.3, mocha@^2.4.5: supports-color "1.2.0" to-iso-string "0.0.2" -mocha@^3.4.2: - version "3.5.3" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-3.5.3.tgz#1e0480fe36d2da5858d1eb6acc38418b26eaa20d" +mocha@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-4.1.0.tgz#7d86cfbcf35cb829e2754c32e17355ec05338794" dependencies: browser-stdout "1.3.0" - commander "2.9.0" - debug "2.6.8" - diff "3.2.0" + commander "2.11.0" + debug "3.1.0" + diff "3.3.1" escape-string-regexp "1.0.5" - glob "7.1.1" - growl "1.9.2" + glob "7.1.2" + growl "1.10.3" he "1.1.1" - json3 "3.3.2" - lodash.create "3.1.1" mkdirp "0.5.1" - supports-color "3.1.2" + supports-color "4.4.0" module-deps@^4.0.8: version "4.1.1" @@ -10477,9 +10429,9 @@ sockjs@0.3.19: faye-websocket "^0.10.0" uuid "^3.0.1" -solc@0.4.23: - version "0.4.23" - resolved "https://registry.yarnpkg.com/solc/-/solc-0.4.23.tgz#54a0ff4015827b32fddb62c0a418b5247310a58e" +solc@0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/solc/-/solc-0.4.24.tgz#354f14b269b38cbaa82a47d1ff151723502b954e" dependencies: fs-extra "^0.30.0" memorystream "^0.3.1" @@ -10926,11 +10878,11 @@ supports-color@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-1.2.0.tgz#ff1ed1e61169d06b3cf2d588e188b18d8847e17e" -supports-color@3.1.2: - version "3.1.2" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.1.2.tgz#72a262894d9d408b956ca05ff37b2ed8a6e2a2d5" +supports-color@4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.4.0.tgz#883f7ddabc165142b2a61427f3352ded195d1a3e" dependencies: - has-flag "^1.0.0" + has-flag "^2.0.0" supports-color@^2.0.0: version "2.0.0" @@ -11262,14 +11214,6 @@ truffle-solidity-loader@0.0.8: truffle "^2.0.8" web3 "^0.17.0-alpha" -truffle@4.1.8: - version "4.1.8" - resolved "https://registry.yarnpkg.com/truffle/-/truffle-4.1.8.tgz#b0b9175e0270145999567a3f0a2337c914a23a9c" - dependencies: - mocha "^3.4.2" - original-require "^1.0.1" - solc "0.4.23" - truffle@^2.0.8: version "2.1.2" resolved "https://registry.yarnpkg.com/truffle/-/truffle-2.1.2.tgz#1ee61b9d785f6f2edb42801579e31f15b66c3746" @@ -11302,6 +11246,14 @@ truffle@^2.0.8: web3 "^0.16.0" yargs "^3.27.0" +"truffle@git://github.com/trufflesuite/truffle.git#develop": + version "4.1.11" + resolved "git://github.com/trufflesuite/truffle.git#2d722ce8df62271aece9dd3f652489d50c5f7b4b" + dependencies: + mocha "^4.1.0" + original-require "^1.0.1" + solc "0.4.24" + tryer@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/tryer/-/tryer-1.0.0.tgz#027b69fa823225e551cace3ef03b11f6ab37c1d7" From 194e51d20747b711e2e5f53d3ccf780bb3b2f909 Mon Sep 17 00:00:00 2001 From: apanizo Date: Sun, 27 May 2018 13:56:22 +0200 Subject: [PATCH 107/138] WA-238 Fix updating executed txs --- .../safe/component/AddTransaction/createTransactions.js | 2 +- .../safe/component/Transactions/processTransactions.js | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/routes/safe/component/AddTransaction/createTransactions.js b/src/routes/safe/component/AddTransaction/createTransactions.js index e5ee15446e..c29be7d0a9 100644 --- a/src/routes/safe/component/AddTransaction/createTransactions.js +++ b/src/routes/safe/component/AddTransaction/createTransactions.js @@ -21,7 +21,7 @@ export const buildConfirmationsFrom = throw new Error('This safe has no owners') } - if (!owners.find((owner: Owner) => owner.get('address') === creator)) { + if (!owners.find((owner: Owner) => owner.get('address').toLowerCase() === creator.toLowerCase())) { throw new Error('The creator of the tx is not an owner') } diff --git a/src/routes/safe/component/Transactions/processTransactions.js b/src/routes/safe/component/Transactions/processTransactions.js index b39756f726..cffea581cc 100644 --- a/src/routes/safe/component/Transactions/processTransactions.js +++ b/src/routes/safe/component/Transactions/processTransactions.js @@ -3,7 +3,7 @@ import { List } from 'immutable' import { type Owner } from '~/routes/safe/store/model/owner' import { load, TX_KEY } from '~/utils/localStorage' import { type Confirmation, makeConfirmation } from '~/routes/safe/store/model/confirmation' -import { makeTransaction, type Transaction } from '~/routes/safe/store/model/transaction' +import { makeTransaction, type Transaction, type TransactionProps } from '~/routes/safe/store/model/transaction' import { getGnosisSafeContract } from '~/wallets/safeContracts' import { getWeb3 } from '~/wallets/getWeb3' import { EXECUTED_CONFIRMATION_HASH } from '~/routes/safe/component/AddTransaction/createTransactions' @@ -27,9 +27,9 @@ export const updateTransaction = ( const transactions = safeTransactions[safeAddress] const txsRecord = transactions ? List(transactions) : List([]) - const index = txsRecord.findIndex((trans: Transaction) => trans.get('nonce') === nonce) + const index = txsRecord.findIndex((trans: TransactionProps) => trans.nonce === nonce) - safeTransactions[safeAddress] = txsRecord.update(index, transaction) + safeTransactions[safeAddress] = txsRecord.remove(index).push(transaction) localStorage.setItem(TX_KEY, JSON.stringify(safeTransactions)) } From f917bb2abdc6a5b2b54b6015f9776b9ae7056b1d Mon Sep 17 00:00:00 2001 From: apanizo Date: Sun, 27 May 2018 14:12:29 +0200 Subject: [PATCH 108/138] WA-238 sameAddress helper for avoid case sensitive problems with eth addresses --- .../safe/component/AddTransaction/createTransactions.js | 7 ++++--- .../safe/component/Transactions/processTransactions.js | 8 +++++--- src/routes/safe/container/selector.js | 3 ++- src/routes/safeList/store/selectors/index.js | 8 ++------ src/wallets/ethAddresses.js | 3 +++ 5 files changed, 16 insertions(+), 13 deletions(-) create mode 100644 src/wallets/ethAddresses.js diff --git a/src/routes/safe/component/AddTransaction/createTransactions.js b/src/routes/safe/component/AddTransaction/createTransactions.js index c29be7d0a9..f13db071ae 100644 --- a/src/routes/safe/component/AddTransaction/createTransactions.js +++ b/src/routes/safe/component/AddTransaction/createTransactions.js @@ -7,6 +7,7 @@ import { makeTransaction, type Transaction, type TransactionProps } from '~/rout import { getGnosisSafeContract } from '~/wallets/safeContracts' import { getWeb3 } from '~/wallets/getWeb3' import { type Safe } from '~/routes/safe/store/model/safe' +import { sameAddress } from '~/wallets/ethAddresses' export const TX_NAME_PARAM = 'txName' export const TX_DESTINATION_PARAM = 'txDestination' @@ -21,14 +22,14 @@ export const buildConfirmationsFrom = throw new Error('This safe has no owners') } - if (!owners.find((owner: Owner) => owner.get('address').toLowerCase() === creator.toLowerCase())) { + if (!owners.find((owner: Owner) => sameAddress(owner.get('address'), creator))) { throw new Error('The creator of the tx is not an owner') } return owners.map((owner: Owner) => makeConfirmation({ owner, - status: owner.get('address') === creator, - hash: owner.get('address') === creator ? confirmationHash : undefined, + status: sameAddress(owner.get('address'), creator), + hash: sameAddress(owner.get('address'), creator) ? confirmationHash : undefined, })) } diff --git a/src/routes/safe/component/Transactions/processTransactions.js b/src/routes/safe/component/Transactions/processTransactions.js index cffea581cc..b84ebb538b 100644 --- a/src/routes/safe/component/Transactions/processTransactions.js +++ b/src/routes/safe/component/Transactions/processTransactions.js @@ -6,6 +6,7 @@ import { type Confirmation, makeConfirmation } from '~/routes/safe/store/model/c import { makeTransaction, type Transaction, type TransactionProps } from '~/routes/safe/store/model/transaction' import { getGnosisSafeContract } from '~/wallets/safeContracts' import { getWeb3 } from '~/wallets/getWeb3' +import { sameAddress } from '~/wallets/ethAddresses' import { EXECUTED_CONFIRMATION_HASH } from '~/routes/safe/component/AddTransaction/createTransactions' export const updateTransaction = ( @@ -72,8 +73,9 @@ const execConfirmation = async ( const updateConfirmations = (confirmations: List, userAddress: string, txHash: string) => confirmations.map((confirmation: Confirmation) => { const owner: Owner = confirmation.get('owner') - const status: boolean = owner.get('address') === userAddress ? true : confirmation.get('status') - const hash: string = owner.get('address') === userAddress ? txHash : confirmation.get('hash') + const samePerson = sameAddress(owner.get('address'), userAddress) + const status: boolean = samePerson ? true : confirmation.get('status') + const hash: string = samePerson ? txHash : confirmation.get('hash') return makeConfirmation({ owner, status, hash }) }) @@ -91,7 +93,7 @@ export const processTransaction = async ( const confirmations = tx.get('confirmations') const userHasAlreadyConfirmed = confirmations.filter((confirmation: Confirmation) => { const ownerAddress = confirmation.get('owner').get('address') - const samePerson = ownerAddress === userAddress + const samePerson = sameAddress(ownerAddress, userAddress) return samePerson && confirmation.get('status') }).count() > 0 diff --git a/src/routes/safe/container/selector.js b/src/routes/safe/container/selector.js index 4e3fbf834a..e345129223 100644 --- a/src/routes/safe/container/selector.js +++ b/src/routes/safe/container/selector.js @@ -6,6 +6,7 @@ import { providerNameSelector, userAccountSelector } from '~/wallets/store/selec import { type Safe } from '~/routes/safe/store/model/safe' import { type Owner } from '~/routes/safe/store/model/owner' import { type GlobalState } from '~/store/index' +import { sameAddress } from '~/wallets/ethAddresses' export type SelectorProps = { safe: SafeSelectorProps, @@ -30,7 +31,7 @@ export const grantedSelector: Selector = crea return false } - return owners.find((owner: Owner) => owner.get('address').toLocaleLowerCase() === userAccount.toLocaleLowerCase()) !== undefined + return owners.find((owner: Owner) => sameAddress(owner.get('address'), userAccount)) !== undefined }, ) diff --git a/src/routes/safeList/store/selectors/index.js b/src/routes/safeList/store/selectors/index.js index 93989643c0..40ed28b45f 100644 --- a/src/routes/safeList/store/selectors/index.js +++ b/src/routes/safeList/store/selectors/index.js @@ -5,6 +5,7 @@ import { type GlobalState } from '~/store/index' import { type Safe } from '~/routes/safe/store/model/safe' import { userAccountSelector } from '~/wallets/store/selectors/index' import { type Owner } from '~/routes/safe/store/model/owner' +import { sameAddress } from '~/wallets/ethAddresses' export const safesMapSelector = (state: GlobalState): Map => state.safes const safesListSelector: Selector> = createSelector( @@ -17,10 +18,5 @@ export const safesByOwnerSelector: Selector> = creat safesListSelector, (userAddress: string, safes: List): List => safes.filter((safe: Safe) => - safe.owners.filter((owner: Owner) => { - const ownerLower = owner.get('address').toLowerCase() - const userLower = userAddress.toLowerCase() - - return ownerLower === userLower - }).count() > 0), + safe.owners.filter((owner: Owner) => sameAddress(owner.get('address'), userAddress)).count() > 0), ) diff --git a/src/wallets/ethAddresses.js b/src/wallets/ethAddresses.js new file mode 100644 index 0000000000..ed301735a5 --- /dev/null +++ b/src/wallets/ethAddresses.js @@ -0,0 +1,3 @@ +// @flow +export const sameAddress = (firstAddress: string, secondAddress: string): boolean => + firstAddress.toLowerCase() === secondAddress.toLowerCase() From 071fee90560c5d138db2d8b8629063653adaeca9 Mon Sep 17 00:00:00 2001 From: apanizo Date: Sun, 27 May 2018 14:38:44 +0200 Subject: [PATCH 109/138] WA-238 Fix withdrawn smart contract function --- src/routes/safe/component/Withdrawn/withdrawn.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/routes/safe/component/Withdrawn/withdrawn.js b/src/routes/safe/component/Withdrawn/withdrawn.js index ad958b4873..ad73431147 100644 --- a/src/routes/safe/component/Withdrawn/withdrawn.js +++ b/src/routes/safe/component/Withdrawn/withdrawn.js @@ -43,9 +43,9 @@ const withdrawn = async (values: Object, safeAddress: string, userAccount: strin const value = web3.toWei(values[VALUE_PARAM], 'ether') return dailyLimitModule.executeDailyLimit( + 0, destination, value, - 0, { from: userAccount, gas: '5000000' }, ) } From 547f14474eebc10ed625b9d1937878da4d314095 Mon Sep 17 00:00:00 2001 From: apanizo Date: Mon, 28 May 2018 08:19:20 +0200 Subject: [PATCH 110/138] WA-238 Add new deployment of safe-contracts --- .../build/contracts/CreateAndAddModules.json | 364 +- .../build/contracts/DailyLimitModule.json | 2446 ++++----- .../contracts/DelegateConstructorProxy.json | 38 +- .../build/contracts/ERC20Token.json | 386 +- safe-contracts/build/contracts/Enum.json | 2 +- .../build/contracts/GnosisSafe.json | 68 +- .../contracts/GnosisSafePersonalEdition.json | 2854 ++++++----- .../contracts/GnosisSafeTeamEdition.json | 2470 +++++----- .../build/contracts/MasterCopy.json | 284 +- .../build/contracts/Migrations.json | 364 +- safe-contracts/build/contracts/Module.json | 536 +- .../build/contracts/ModuleManager.json | 3816 +++++++------- safe-contracts/build/contracts/MultiSend.json | 96 +- .../build/contracts/OwnerManager.json | 4376 ++++++++++------- .../build/contracts/PayingProxy.json | 436 +- safe-contracts/build/contracts/Proxy.json | 436 +- .../build/contracts/ProxyFactory.json | 296 +- .../build/contracts/SelfAuthorized.json | 196 +- .../build/contracts/SocialRecoveryModule.json | 3170 ++++++------ .../build/contracts/StateChannelModule.json | 2122 ++++---- .../build/contracts/WhitelistModule.json | 1754 ++++--- 21 files changed, 14487 insertions(+), 12023 deletions(-) diff --git a/safe-contracts/build/contracts/CreateAndAddModules.json b/safe-contracts/build/contracts/CreateAndAddModules.json index bd8cbc94f2..864dd5f32b 100644 --- a/safe-contracts/build/contracts/CreateAndAddModules.json +++ b/safe-contracts/build/contracts/CreateAndAddModules.json @@ -34,8 +34,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50610275806100206000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806360df7f5814610051578063610b5925146100da575b600080fd5b34801561005d57600080fd5b506100d8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061011d565b005b3480156100e657600080fd5b5061011b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610244565b005b600080600083519250600090505b8281101561023d5780840160200151818501604001604051600060208285858c5af4141561015857600080fd5b73ffffffffffffffffffffffffffffffffffffffff8151169450602080601f85010402602001840193505050503073ffffffffffffffffffffffffffffffffffffffff1663610b5925836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561022057600080fd5b505af1158015610234573d6000803e3d6000fd5b5050505061012b565b5050505050565b600080fd00a165627a7a723058208f7a97e938c15e3356168d53d19c7667249d0a3b35454b33fa8a258c0655d6ce0029", - "deployedBytecode": "0x60806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806360df7f5814610051578063610b5925146100da575b600080fd5b34801561005d57600080fd5b506100d8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061011d565b005b3480156100e657600080fd5b5061011b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610244565b005b600080600083519250600090505b8281101561023d5780840160200151818501604001604051600060208285858c5af4141561015857600080fd5b73ffffffffffffffffffffffffffffffffffffffff8151169450602080601f85010402602001840193505050503073ffffffffffffffffffffffffffffffffffffffff1663610b5925836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561022057600080fd5b505af1158015610234573d6000803e3d6000fd5b5050505061012b565b5050505050565b600080fd00a165627a7a723058208f7a97e938c15e3356168d53d19c7667249d0a3b35454b33fa8a258c0655d6ce0029", + "bytecode": "0x608060405234801561001057600080fd5b50610275806100206000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806360df7f5814610051578063610b5925146100da575b600080fd5b34801561005d57600080fd5b506100d8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061011d565b005b3480156100e657600080fd5b5061011b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610244565b005b600080600083519250600090505b8281101561023d5780840160200151818501604001604051600060208285858c5af4141561015857600080fd5b73ffffffffffffffffffffffffffffffffffffffff8151169450602080601f85010402602001840193505050503073ffffffffffffffffffffffffffffffffffffffff1663610b5925836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561022057600080fd5b505af1158015610234573d6000803e3d6000fd5b5050505061012b565b5050505050565b600080fd00a165627a7a723058206ac82068c55e1196d57483750406af3b357f1002ac108aaf06f242a92509ca780029", + "deployedBytecode": "0x60806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806360df7f5814610051578063610b5925146100da575b600080fd5b34801561005d57600080fd5b506100d8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061011d565b005b3480156100e657600080fd5b5061011b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610244565b005b600080600083519250600090505b8281101561023d5780840160200151818501604001604051600060208285858c5af4141561015857600080fd5b73ffffffffffffffffffffffffffffffffffffffff8151169450602080601f85010402602001840193505050503073ffffffffffffffffffffffffffffffffffffffff1663610b5925836040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801561022057600080fd5b505af1158015610234573d6000803e3d6000fd5b5050505061012b565b5050505050565b600080fd00a165627a7a723058206ac82068c55e1196d57483750406af3b357f1002ac108aaf06f242a92509ca780029", "sourceMap": "245:1457:15:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;245:1457:15;;;;;;;", "deployedSourceMap": "245:1457:15:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;815:885;;8:9:-1;5:2;;;30:1;27;20:12;5:2;815:885:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;405:81;;8:9:-1;5:2;;;30:1;27;20:12;5:2;405:81:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;815:885;907:14;945:13;968:9;924:4;:11;907:28;;980:1;968:13;;991:703;1002:6;998:1;:10;991:703;;;1170:1;1164:4;1160:12;1154:4;1150:23;1144:30;1230:1;1224:4;1220:12;1214:4;1210:23;1271:4;1265:11;1378:1;1371:4;1363:6;1344:17;1331:11;1317:12;1312:3;1299:77;1296:84;1293:2;;;1393:1;1390;1383:12;1293:2;1443:42;1434:6;1428:13;1424:62;1414:72;;1624:4;1617;1610;1591:17;1587:28;1583:39;1579:50;1573:4;1569:61;1566:1;1562:69;1557:74;;1101:544;;;1658:4;:17;;;1676:6;1658:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1658:25:15;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1658:25:15;;;;991:703;;;815:885;;;;;:::o;405:81::-;471:8;;", "source": "pragma solidity 0.4.24;\nimport \"../Module.sol\";\n\n\n/// @title Create and Add Modules - Allows to create and add multiple module in one transaction.\n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract CreateAndAddModules {\n\n /// @dev Function required to compile contract. Gnosis Safe function is called instead.\n /// @param module Not used.\n function enableModule(Module module)\n public\n {\n revert();\n }\n\n /// @dev Allows to create and add multiple module in one transaction.\n /// @param proxyFactory Module proxy factory contract.\n /// @param data Modules constructor payload. This is the data for each proxy factory call concatinated. (e.g. )\n function createAndAddModules(address proxyFactory, bytes data)\n public\n {\n uint256 length = data.length;\n Module module;\n uint256 i = 0;\n while (i < length) {\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n let createBytesLength := mload(add(0x20, add(data, i)))\n let createBytes := add(0x40, add(data, i))\n\n let output := mload(0x40)\n if eq(delegatecall(gas, proxyFactory, createBytes, createBytesLength, output, 0x20), 0) { revert(0, 0) }\n module := and(mload(output), 0xffffffffffffffffffffffffffffffffffffffff)\n\n // Data is always padded to 32 bytes\n i := add(i, add(0x20, mul(div(add(createBytesLength, 0x1f), 0x20), 0x20)))\n }\n this.enableModule(module);\n }\n }\n}\n", @@ -44,14 +44,14 @@ "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/libraries/CreateAndAddModules.sol", "exportedSymbols": { "CreateAndAddModules": [ - 1730 + 1765 ] }, - "id": 1731, + "id": 1766, "nodeType": "SourceUnit", "nodes": [ { - "id": 1687, + "id": 1722, "literals": [ "solidity", "0.4", @@ -63,10 +63,10 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "file": "../Module.sol", - "id": 1688, + "id": 1723, "nodeType": "ImportDirective", - "scope": 1731, - "sourceUnit": 751, + "scope": 1766, + "sourceUnit": 763, "src": "24:23:15", "symbolAliases": [], "unitAlias": "" @@ -77,16 +77,16 @@ "contractKind": "contract", "documentation": "@title Create and Add Modules - Allows to create and add multiple module in one transaction.\n @author Stefan George - \n @author Richard Meissner - ", "fullyImplemented": true, - "id": 1730, + "id": 1765, "linearizedBaseContracts": [ - 1730 + 1765 ], "name": "CreateAndAddModules", "nodeType": "ContractDefinition", "nodes": [ { "body": { - "id": 1696, + "id": 1731, "nodeType": "Block", "src": "461:25:15", "statements": [ @@ -96,21 +96,21 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 1693, + "id": 1728, "name": "revert", "nodeType": "Identifier", "overloadedDeclarations": [ - 2603, - 2604 + 2659, + 2660 ], - "referencedDeclaration": 2603, + "referencedDeclaration": 2659, "src": "471:6:15", "typeDescriptions": { "typeIdentifier": "t_function_revert_pure$__$returns$__$", "typeString": "function () pure" } }, - "id": 1694, + "id": 1729, "isConstant": false, "isLValue": false, "isPure": false, @@ -124,14 +124,14 @@ "typeString": "tuple()" } }, - "id": 1695, + "id": 1730, "nodeType": "ExpressionStatement", "src": "471:8:15" } ] }, "documentation": "@dev Function required to compile contract. Gnosis Safe function is called instead.\n @param module Not used.", - "id": 1697, + "id": 1732, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -139,31 +139,31 @@ "name": "enableModule", "nodeType": "FunctionDefinition", "parameters": { - "id": 1691, + "id": 1726, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1690, + "id": 1725, "name": "module", "nodeType": "VariableDeclaration", - "scope": 1697, + "scope": 1732, "src": "427:13:15", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" }, "typeName": { "contractScope": null, - "id": 1689, + "id": 1724, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 750, + "referencedDeclaration": 762, "src": "427:6:15", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } }, @@ -175,12 +175,12 @@ }, "payable": false, "returnParameters": { - "id": 1692, + "id": 1727, "nodeType": "ParameterList", "parameters": [], "src": "461:0:15" }, - "scope": 1730, + "scope": 1765, "src": "405:81:15", "stateMutability": "nonpayable", "superFunction": null, @@ -188,21 +188,21 @@ }, { "body": { - "id": 1728, + "id": 1763, "nodeType": "Block", "src": "897:803:15", "statements": [ { "assignments": [ - 1705 + 1740 ], "declarations": [ { "constant": false, - "id": 1705, + "id": 1740, "name": "length", "nodeType": "VariableDeclaration", - "scope": 1729, + "scope": 1764, "src": "907:14:15", "stateVariable": false, "storageLocation": "default", @@ -211,7 +211,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1704, + "id": 1739, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "907:7:15", @@ -224,23 +224,23 @@ "visibility": "internal" } ], - "id": 1708, + "id": 1743, "initialValue": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1706, + "id": 1741, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1701, + "referencedDeclaration": 1736, "src": "924:4:15", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, - "id": 1707, + "id": 1742, "isConstant": false, "isLValue": false, "isPure": false, @@ -262,26 +262,26 @@ "declarations": [ { "constant": false, - "id": 1710, + "id": 1745, "name": "module", "nodeType": "VariableDeclaration", - "scope": 1729, + "scope": 1764, "src": "945:13:15", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" }, "typeName": { "contractScope": null, - "id": 1709, + "id": 1744, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 750, + "referencedDeclaration": 762, "src": "945:6:15", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } }, @@ -289,22 +289,22 @@ "visibility": "internal" } ], - "id": 1711, + "id": 1746, "initialValue": null, "nodeType": "VariableDeclarationStatement", "src": "945:13:15" }, { "assignments": [ - 1713 + 1748 ], "declarations": [ { "constant": false, - "id": 1713, + "id": 1748, "name": "i", "nodeType": "VariableDeclaration", - "scope": 1729, + "scope": 1764, "src": "968:9:15", "stateVariable": false, "storageLocation": "default", @@ -313,7 +313,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1712, + "id": 1747, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "968:7:15", @@ -326,11 +326,11 @@ "visibility": "internal" } ], - "id": 1715, + "id": 1750, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 1714, + "id": 1749, "isConstant": false, "isLValue": false, "isPure": true, @@ -350,7 +350,7 @@ }, { "body": { - "id": 1726, + "id": 1761, "nodeType": "Block", "src": "1010:684:15", "statements": [ @@ -358,7 +358,7 @@ "externalReferences": [ { "module": { - "declaration": 1710, + "declaration": 1745, "isOffset": false, "isSlot": false, "src": "1414:6:15", @@ -367,7 +367,7 @@ }, { "data": { - "declaration": 1701, + "declaration": 1736, "isOffset": false, "isSlot": false, "src": "1164:4:15", @@ -376,7 +376,7 @@ }, { "i": { - "declaration": 1713, + "declaration": 1748, "isOffset": false, "isSlot": false, "src": "1170:1:15", @@ -385,7 +385,7 @@ }, { "data": { - "declaration": 1701, + "declaration": 1736, "isOffset": false, "isSlot": false, "src": "1224:4:15", @@ -394,7 +394,7 @@ }, { "i": { - "declaration": 1713, + "declaration": 1748, "isOffset": false, "isSlot": false, "src": "1230:1:15", @@ -403,7 +403,7 @@ }, { "i": { - "declaration": 1713, + "declaration": 1748, "isOffset": false, "isSlot": false, "src": "1557:1:15", @@ -412,7 +412,7 @@ }, { "proxyFactory": { - "declaration": 1699, + "declaration": 1734, "isOffset": false, "isSlot": false, "src": "1317:12:15", @@ -421,7 +421,7 @@ }, { "i": { - "declaration": 1713, + "declaration": 1748, "isOffset": false, "isSlot": false, "src": "1566:1:15", @@ -429,7 +429,7 @@ } } ], - "id": 1719, + "id": 1754, "nodeType": "InlineAssembly", "operations": "{\n let createBytesLength := mload(add(0x20, add(data, i)))\n let createBytes := add(0x40, add(data, i))\n let output := mload(0x40)\n if eq(delegatecall(gas(), proxyFactory, createBytes, createBytesLength, output, 0x20), 0)\n {\n revert(0, 0)\n }\n module := and(mload(output), 0xffffffffffffffffffffffffffffffffffffffff)\n i := add(i, add(0x20, mul(div(add(createBytesLength, 0x1f), 0x20), 0x20)))\n}", "src": "1092:570:15" @@ -440,14 +440,14 @@ "arguments": [ { "argumentTypes": null, - "id": 1723, + "id": 1758, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1710, + "referencedDeclaration": 1745, "src": "1676:6:15", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } } @@ -455,38 +455,38 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } ], "expression": { "argumentTypes": null, - "id": 1720, + "id": 1755, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2641, + "referencedDeclaration": 2697, "src": "1658:4:15", "typeDescriptions": { - "typeIdentifier": "t_contract$_CreateAndAddModules_$1730", + "typeIdentifier": "t_contract$_CreateAndAddModules_$1765", "typeString": "contract CreateAndAddModules" } }, - "id": 1722, + "id": 1757, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "enableModule", "nodeType": "MemberAccess", - "referencedDeclaration": 1697, + "referencedDeclaration": 1732, "src": "1658:17:15", "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_contract$_Module_$750_$returns$__$", + "typeIdentifier": "t_function_external_nonpayable$_t_contract$_Module_$762_$returns$__$", "typeString": "function (contract Module) external" } }, - "id": 1724, + "id": 1759, "isConstant": false, "isLValue": false, "isPure": false, @@ -500,7 +500,7 @@ "typeString": "tuple()" } }, - "id": 1725, + "id": 1760, "nodeType": "ExpressionStatement", "src": "1658:25:15" } @@ -512,18 +512,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1718, + "id": 1753, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1716, + "id": 1751, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1713, + "referencedDeclaration": 1748, "src": "998:1:15", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -534,11 +534,11 @@ "operator": "<", "rightExpression": { "argumentTypes": null, - "id": 1717, + "id": 1752, "name": "length", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1705, + "referencedDeclaration": 1740, "src": "1002:6:15", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -551,14 +551,14 @@ "typeString": "bool" } }, - "id": 1727, + "id": 1762, "nodeType": "WhileStatement", "src": "991:703:15" } ] }, "documentation": "@dev Allows to create and add multiple module in one transaction.\n @param proxyFactory Module proxy factory contract.\n @param data Modules constructor payload. This is the data for each proxy factory call concatinated. (e.g. )", - "id": 1729, + "id": 1764, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -566,15 +566,15 @@ "name": "createAndAddModules", "nodeType": "FunctionDefinition", "parameters": { - "id": 1702, + "id": 1737, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1699, + "id": 1734, "name": "proxyFactory", "nodeType": "VariableDeclaration", - "scope": 1729, + "scope": 1764, "src": "844:20:15", "stateVariable": false, "storageLocation": "default", @@ -583,7 +583,7 @@ "typeString": "address" }, "typeName": { - "id": 1698, + "id": 1733, "name": "address", "nodeType": "ElementaryTypeName", "src": "844:7:15", @@ -597,10 +597,10 @@ }, { "constant": false, - "id": 1701, + "id": 1736, "name": "data", "nodeType": "VariableDeclaration", - "scope": 1729, + "scope": 1764, "src": "866:10:15", "stateVariable": false, "storageLocation": "default", @@ -609,7 +609,7 @@ "typeString": "bytes" }, "typeName": { - "id": 1700, + "id": 1735, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "866:5:15", @@ -626,19 +626,19 @@ }, "payable": false, "returnParameters": { - "id": 1703, + "id": 1738, "nodeType": "ParameterList", "parameters": [], "src": "897:0:15" }, - "scope": 1730, + "scope": 1765, "src": "815:885:15", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 1731, + "scope": 1766, "src": "245:1457:15" } ], @@ -648,14 +648,14 @@ "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/libraries/CreateAndAddModules.sol", "exportedSymbols": { "CreateAndAddModules": [ - 1730 + 1765 ] }, - "id": 1731, + "id": 1766, "nodeType": "SourceUnit", "nodes": [ { - "id": 1687, + "id": 1722, "literals": [ "solidity", "0.4", @@ -667,10 +667,10 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "file": "../Module.sol", - "id": 1688, + "id": 1723, "nodeType": "ImportDirective", - "scope": 1731, - "sourceUnit": 751, + "scope": 1766, + "sourceUnit": 763, "src": "24:23:15", "symbolAliases": [], "unitAlias": "" @@ -681,16 +681,16 @@ "contractKind": "contract", "documentation": "@title Create and Add Modules - Allows to create and add multiple module in one transaction.\n @author Stefan George - \n @author Richard Meissner - ", "fullyImplemented": true, - "id": 1730, + "id": 1765, "linearizedBaseContracts": [ - 1730 + 1765 ], "name": "CreateAndAddModules", "nodeType": "ContractDefinition", "nodes": [ { "body": { - "id": 1696, + "id": 1731, "nodeType": "Block", "src": "461:25:15", "statements": [ @@ -700,21 +700,21 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 1693, + "id": 1728, "name": "revert", "nodeType": "Identifier", "overloadedDeclarations": [ - 2603, - 2604 + 2659, + 2660 ], - "referencedDeclaration": 2603, + "referencedDeclaration": 2659, "src": "471:6:15", "typeDescriptions": { "typeIdentifier": "t_function_revert_pure$__$returns$__$", "typeString": "function () pure" } }, - "id": 1694, + "id": 1729, "isConstant": false, "isLValue": false, "isPure": false, @@ -728,14 +728,14 @@ "typeString": "tuple()" } }, - "id": 1695, + "id": 1730, "nodeType": "ExpressionStatement", "src": "471:8:15" } ] }, "documentation": "@dev Function required to compile contract. Gnosis Safe function is called instead.\n @param module Not used.", - "id": 1697, + "id": 1732, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -743,31 +743,31 @@ "name": "enableModule", "nodeType": "FunctionDefinition", "parameters": { - "id": 1691, + "id": 1726, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1690, + "id": 1725, "name": "module", "nodeType": "VariableDeclaration", - "scope": 1697, + "scope": 1732, "src": "427:13:15", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" }, "typeName": { "contractScope": null, - "id": 1689, + "id": 1724, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 750, + "referencedDeclaration": 762, "src": "427:6:15", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } }, @@ -779,12 +779,12 @@ }, "payable": false, "returnParameters": { - "id": 1692, + "id": 1727, "nodeType": "ParameterList", "parameters": [], "src": "461:0:15" }, - "scope": 1730, + "scope": 1765, "src": "405:81:15", "stateMutability": "nonpayable", "superFunction": null, @@ -792,21 +792,21 @@ }, { "body": { - "id": 1728, + "id": 1763, "nodeType": "Block", "src": "897:803:15", "statements": [ { "assignments": [ - 1705 + 1740 ], "declarations": [ { "constant": false, - "id": 1705, + "id": 1740, "name": "length", "nodeType": "VariableDeclaration", - "scope": 1729, + "scope": 1764, "src": "907:14:15", "stateVariable": false, "storageLocation": "default", @@ -815,7 +815,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1704, + "id": 1739, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "907:7:15", @@ -828,23 +828,23 @@ "visibility": "internal" } ], - "id": 1708, + "id": 1743, "initialValue": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1706, + "id": 1741, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1701, + "referencedDeclaration": 1736, "src": "924:4:15", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, - "id": 1707, + "id": 1742, "isConstant": false, "isLValue": false, "isPure": false, @@ -866,26 +866,26 @@ "declarations": [ { "constant": false, - "id": 1710, + "id": 1745, "name": "module", "nodeType": "VariableDeclaration", - "scope": 1729, + "scope": 1764, "src": "945:13:15", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" }, "typeName": { "contractScope": null, - "id": 1709, + "id": 1744, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 750, + "referencedDeclaration": 762, "src": "945:6:15", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } }, @@ -893,22 +893,22 @@ "visibility": "internal" } ], - "id": 1711, + "id": 1746, "initialValue": null, "nodeType": "VariableDeclarationStatement", "src": "945:13:15" }, { "assignments": [ - 1713 + 1748 ], "declarations": [ { "constant": false, - "id": 1713, + "id": 1748, "name": "i", "nodeType": "VariableDeclaration", - "scope": 1729, + "scope": 1764, "src": "968:9:15", "stateVariable": false, "storageLocation": "default", @@ -917,7 +917,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1712, + "id": 1747, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "968:7:15", @@ -930,11 +930,11 @@ "visibility": "internal" } ], - "id": 1715, + "id": 1750, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 1714, + "id": 1749, "isConstant": false, "isLValue": false, "isPure": true, @@ -954,7 +954,7 @@ }, { "body": { - "id": 1726, + "id": 1761, "nodeType": "Block", "src": "1010:684:15", "statements": [ @@ -962,7 +962,7 @@ "externalReferences": [ { "module": { - "declaration": 1710, + "declaration": 1745, "isOffset": false, "isSlot": false, "src": "1414:6:15", @@ -971,7 +971,7 @@ }, { "data": { - "declaration": 1701, + "declaration": 1736, "isOffset": false, "isSlot": false, "src": "1164:4:15", @@ -980,7 +980,7 @@ }, { "i": { - "declaration": 1713, + "declaration": 1748, "isOffset": false, "isSlot": false, "src": "1170:1:15", @@ -989,7 +989,7 @@ }, { "data": { - "declaration": 1701, + "declaration": 1736, "isOffset": false, "isSlot": false, "src": "1224:4:15", @@ -998,7 +998,7 @@ }, { "i": { - "declaration": 1713, + "declaration": 1748, "isOffset": false, "isSlot": false, "src": "1230:1:15", @@ -1007,7 +1007,7 @@ }, { "i": { - "declaration": 1713, + "declaration": 1748, "isOffset": false, "isSlot": false, "src": "1557:1:15", @@ -1016,7 +1016,7 @@ }, { "proxyFactory": { - "declaration": 1699, + "declaration": 1734, "isOffset": false, "isSlot": false, "src": "1317:12:15", @@ -1025,7 +1025,7 @@ }, { "i": { - "declaration": 1713, + "declaration": 1748, "isOffset": false, "isSlot": false, "src": "1566:1:15", @@ -1033,7 +1033,7 @@ } } ], - "id": 1719, + "id": 1754, "nodeType": "InlineAssembly", "operations": "{\n let createBytesLength := mload(add(0x20, add(data, i)))\n let createBytes := add(0x40, add(data, i))\n let output := mload(0x40)\n if eq(delegatecall(gas(), proxyFactory, createBytes, createBytesLength, output, 0x20), 0)\n {\n revert(0, 0)\n }\n module := and(mload(output), 0xffffffffffffffffffffffffffffffffffffffff)\n i := add(i, add(0x20, mul(div(add(createBytesLength, 0x1f), 0x20), 0x20)))\n}", "src": "1092:570:15" @@ -1044,14 +1044,14 @@ "arguments": [ { "argumentTypes": null, - "id": 1723, + "id": 1758, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1710, + "referencedDeclaration": 1745, "src": "1676:6:15", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } } @@ -1059,38 +1059,38 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } ], "expression": { "argumentTypes": null, - "id": 1720, + "id": 1755, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2641, + "referencedDeclaration": 2697, "src": "1658:4:15", "typeDescriptions": { - "typeIdentifier": "t_contract$_CreateAndAddModules_$1730", + "typeIdentifier": "t_contract$_CreateAndAddModules_$1765", "typeString": "contract CreateAndAddModules" } }, - "id": 1722, + "id": 1757, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "enableModule", "nodeType": "MemberAccess", - "referencedDeclaration": 1697, + "referencedDeclaration": 1732, "src": "1658:17:15", "typeDescriptions": { - "typeIdentifier": "t_function_external_nonpayable$_t_contract$_Module_$750_$returns$__$", + "typeIdentifier": "t_function_external_nonpayable$_t_contract$_Module_$762_$returns$__$", "typeString": "function (contract Module) external" } }, - "id": 1724, + "id": 1759, "isConstant": false, "isLValue": false, "isPure": false, @@ -1104,7 +1104,7 @@ "typeString": "tuple()" } }, - "id": 1725, + "id": 1760, "nodeType": "ExpressionStatement", "src": "1658:25:15" } @@ -1116,18 +1116,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1718, + "id": 1753, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1716, + "id": 1751, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1713, + "referencedDeclaration": 1748, "src": "998:1:15", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -1138,11 +1138,11 @@ "operator": "<", "rightExpression": { "argumentTypes": null, - "id": 1717, + "id": 1752, "name": "length", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1705, + "referencedDeclaration": 1740, "src": "1002:6:15", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -1155,14 +1155,14 @@ "typeString": "bool" } }, - "id": 1727, + "id": 1762, "nodeType": "WhileStatement", "src": "991:703:15" } ] }, "documentation": "@dev Allows to create and add multiple module in one transaction.\n @param proxyFactory Module proxy factory contract.\n @param data Modules constructor payload. This is the data for each proxy factory call concatinated. (e.g. )", - "id": 1729, + "id": 1764, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -1170,15 +1170,15 @@ "name": "createAndAddModules", "nodeType": "FunctionDefinition", "parameters": { - "id": 1702, + "id": 1737, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1699, + "id": 1734, "name": "proxyFactory", "nodeType": "VariableDeclaration", - "scope": 1729, + "scope": 1764, "src": "844:20:15", "stateVariable": false, "storageLocation": "default", @@ -1187,7 +1187,7 @@ "typeString": "address" }, "typeName": { - "id": 1698, + "id": 1733, "name": "address", "nodeType": "ElementaryTypeName", "src": "844:7:15", @@ -1201,10 +1201,10 @@ }, { "constant": false, - "id": 1701, + "id": 1736, "name": "data", "nodeType": "VariableDeclaration", - "scope": 1729, + "scope": 1764, "src": "866:10:15", "stateVariable": false, "storageLocation": "default", @@ -1213,7 +1213,7 @@ "typeString": "bytes" }, "typeName": { - "id": 1700, + "id": 1735, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "866:5:15", @@ -1230,19 +1230,19 @@ }, "payable": false, "returnParameters": { - "id": 1703, + "id": 1738, "nodeType": "ParameterList", "parameters": [], "src": "897:0:15" }, - "scope": 1730, + "scope": 1765, "src": "815:885:15", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 1731, + "scope": 1766, "src": "245:1457:15" } ], @@ -1256,22 +1256,16 @@ "4": { "events": {}, "links": {}, - "address": "0x09938dc4aedf7573bea1acde27119525162caf86", - "transactionHash": "0x542ed496b9857fdad7870207cd3aa4de6ef756975a2f8f7b736e950aff77634e" - }, - "1527316019334": { - "events": {}, - "links": {}, - "address": "0x3476d04ef7a630db99177c493378763511783ecc", - "transactionHash": "0xa1f976aa57640d6f00fda50b5faa87e6395a25cb7ebcbdf43802038869c30189" + "address": "0x8cc5a7a73b667110937125a6cf5a18fa4c0a3bb3", + "transactionHash": "0x37f1199a37e28f38e2bd8fe42a375f5683f4392bd0bd7db914bd6e17e9f546c6" }, "1527420696956": { "events": {}, "links": {}, - "address": "0xa13c4a216f6f3441841401afecdad68223f47cce", - "transactionHash": "0x5c5a77c0584fd75a1a9b7f932710af48fa6803a794ac7c28f17aea45b28c4f26" + "address": "0x6b95b8c9f47aed9b889c543cec1f0b36cba22b95", + "transactionHash": "0x43e2d4d7da24019e4bcdd3c8e6a4a633566d5c2a7519d87f20ba1fc39b5c748c" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-27T11:31:46.256Z" + "updatedAt": "2018-05-28T06:08:59.481Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/DailyLimitModule.json b/safe-contracts/build/contracts/DailyLimitModule.json index aa13febbab..d0fd032463 100644 --- a/safe-contracts/build/contracts/DailyLimitModule.json +++ b/safe-contracts/build/contracts/DailyLimitModule.json @@ -157,24 +157,24 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50610de9806100206000396000f300608060405260043610610099576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806328814f031461009e578063481c6a751461014757806363bae7c31461019e5780637de7edef1461020b57806381c5e03b1461024e578063a3f4df7e1461029b578063b74e452b1461032b578063d7bffc9214610356578063ffa1ad74146103bb575b600080fd5b3480156100aa57600080fd5b50610145600480360381019080803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929050505061044b565b005b34801561015357600080fd5b5061015c6104ea565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101aa57600080fd5b50610209600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610510565b005b34801561021757600080fd5b5061024c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a64565b005b34801561025a57600080fd5b50610299600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b29565b005b3480156102a757600080fd5b506102b0610bd0565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102f05780820151818401526020810190506102d5565b50505050905090810190601f16801561031d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561033757600080fd5b50610340610c09565b6040518082815260200191505060405180910390f35b34801561036257600080fd5b50610397600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c21565b60405180848152602001838152602001828152602001935050505060405180910390f35b3480156103c757600080fd5b506103d0610c4b565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104105780820151818401526020810190506103f5565b50505050905090810190601f16801561043d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000610455610c84565b600090505b82518110156104e557818181518110151561047157fe5b9060200190602002015160026000858481518110151561048d57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550808060010191505061045a565b505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156105cf57600080fd5b505af11580156105e3573d6000803e3d6000fd5b505050506040513d60208110156105f957600080fd5b8101908080519060200190929190505050151561061557600080fd5b60008373ffffffffffffffffffffffffffffffffffffffff161415151561063b57600080fd5b60008211151561064a57600080fd5b6106548483610d0e565b151561065f57600080fd5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016000828254019250508190555060008473ffffffffffffffffffffffffffffffffffffffff16141561080957600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a7848460006040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018060200183600281111561078757fe5b60ff168152602001828103825260008152602001602001945050505050602060405180830381600087803b1580156107be57600080fd5b505af11580156107d2573d6000803e3d6000fd5b505050506040513d60208110156107e857600080fd5b8101908080519060200190929190505050151561080457600080fd5b610a5e565b8282604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001925050506040516020818303038152906040527fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a78560008460006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200183600281111561098857fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b838110156109c85780820151818401526020810190506109ad565b50505050905090810190601f1680156109f55780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610a1757600080fd5b505af1158015610a2b573d6000803e3d6000fd5b505050506040513d6020811015610a4157600080fd5b81019080805190602001909291905050501515610a5d57600080fd5b5b50505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610ac057600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610ae657600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b8557600080fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055505050565b6040805190810160405280601281526020017f4461696c79204c696d6974204d6f64756c65000000000000000000000000000081525081565b60006201518042811515610c1957fe5b064203905090565b60026020528060005260406000206000915090508060000154908060010154908060020154905083565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610ccb57600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060020154610d5f610c09565b1115610d8057610d6d610c09565b8160020181905550600081600101819055505b80600001548382600101540111158015610da35750806001015483826001015401115b15610db15760019150610db6565b600091505b50929150505600a165627a7a723058204a6f633058d32a4c7f0a2649d73dd0a0048102b89b6ddd371abdbd004bd34c790029", - "deployedBytecode": "0x608060405260043610610099576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806328814f031461009e578063481c6a751461014757806363bae7c31461019e5780637de7edef1461020b57806381c5e03b1461024e578063a3f4df7e1461029b578063b74e452b1461032b578063d7bffc9214610356578063ffa1ad74146103bb575b600080fd5b3480156100aa57600080fd5b50610145600480360381019080803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929050505061044b565b005b34801561015357600080fd5b5061015c6104ea565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101aa57600080fd5b50610209600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610510565b005b34801561021757600080fd5b5061024c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a64565b005b34801561025a57600080fd5b50610299600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610b29565b005b3480156102a757600080fd5b506102b0610bd0565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102f05780820151818401526020810190506102d5565b50505050905090810190601f16801561031d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561033757600080fd5b50610340610c09565b6040518082815260200191505060405180910390f35b34801561036257600080fd5b50610397600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610c21565b60405180848152602001838152602001828152602001935050505060405180910390f35b3480156103c757600080fd5b506103d0610c4b565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104105780820151818401526020810190506103f5565b50505050905090810190601f16801561043d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000610455610c84565b600090505b82518110156104e557818181518110151561047157fe5b9060200190602002015160026000858481518110151561048d57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550808060010191505061045a565b505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156105cf57600080fd5b505af11580156105e3573d6000803e3d6000fd5b505050506040513d60208110156105f957600080fd5b8101908080519060200190929190505050151561061557600080fd5b60008373ffffffffffffffffffffffffffffffffffffffff161415151561063b57600080fd5b60008211151561064a57600080fd5b6106548483610d0e565b151561065f57600080fd5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016000828254019250508190555060008473ffffffffffffffffffffffffffffffffffffffff16141561080957600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a7848460006040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018060200183600281111561078757fe5b60ff168152602001828103825260008152602001602001945050505050602060405180830381600087803b1580156107be57600080fd5b505af11580156107d2573d6000803e3d6000fd5b505050506040513d60208110156107e857600080fd5b8101908080519060200190929190505050151561080457600080fd5b610a5e565b8282604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001925050506040516020818303038152906040527fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a78560008460006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200183600281111561098857fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b838110156109c85780820151818401526020810190506109ad565b50505050905090810190601f1680156109f55780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610a1757600080fd5b505af1158015610a2b573d6000803e3d6000fd5b505050506040513d6020811015610a4157600080fd5b81019080805190602001909291905050501515610a5d57600080fd5b5b50505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610ac057600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610ae657600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b8557600080fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055505050565b6040805190810160405280601281526020017f4461696c79204c696d6974204d6f64756c65000000000000000000000000000081525081565b60006201518042811515610c1957fe5b064203905090565b60026020528060005260406000206000915090508060000154908060010154908060020154905083565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610ccb57600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060020154610d5f610c09565b1115610d8057610d6d610c09565b8160020181905550600081600101819055505b80600001548382600101540111158015610da35750806001015483826001015401115b15610db15760019150610db6565b600091505b50929150505600a165627a7a723058204a6f633058d32a4c7f0a2649d73dd0a0048102b89b6ddd371abdbd004bd34c790029", - "sourceMap": "296:3082:17:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;296:3082:17;;;;;;;", - "deployedSourceMap": "296:3082:17:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;918:222;;8:9:-1;5:2;;;30:1;27;20:12;5:2;918:222:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;262:28:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;262:28:7;;;;;;;;;;;;;;;;;;;;;;;;;;;1890:784:17;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1890:784:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;626:208:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:208:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;1368:158:17;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1368:158:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;339:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;339:50:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;339:50:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3260:116;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3260:116:17;;;;;;;;;;;;;;;;;;;;;;;513:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;513:50:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;395:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;395:40:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;395:40:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;918:222;1031:9;1004:12;:10;:12::i;:::-;1043:1;1031:13;;1026:107;1050:6;:13;1046:1;:17;1026:107;;;1118:12;1131:1;1118:15;;;;;;;;;;;;;;;;;;1082:11;:22;1094:6;1101:1;1094:9;;;;;;;;;;;;;;;;;;1082:22;;;;;;;;;;;;;;;:33;;:51;;;;1065:3;;;;;;;1026:107;;;918:222;;;:::o;262:28:7:-;;;;;;;;;;;;;:::o;1890:784:17:-;2480:17;2087:7;;;;;;;;;;;2074:29;;;2104:10;2074:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2074:41:17;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2074:41:17;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2074:41:17;;;;;;;;;;;;;;;;2066:50;;;;;;;;2140:1;2134:2;:7;;;;2126:16;;;;;;;;2169:1;2160:6;:10;2152:19;;;;;;;;2253:27;2266:5;2273:6;2253:12;:27::i;:::-;2245:36;;;;;;;;2324:6;2291:11;:18;2303:5;2291:18;;;;;;;;;;;;;;;:29;;;:39;;;;;;;;;;;2353:1;2344:5;:10;;;2340:328;;;2378:7;;;;;;;;;;;:33;;;2412:2;2416:6;2428:19;2378:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2378:70:17;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2378:70:17;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2378:70:17;;;;;;;;;;;;;;;;2370:79;;;;;;;;2340:328;;;2553:2;2557:6;2500:64;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2500:64:17;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;2500:64:17;2480:84;;2586:7;;;;;;;;;;;:33;;;2620:5;2627:1;2630:4;2636:19;2586:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;2586:70:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2586:70:17;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2586:70:17;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2586:70:17;;;;;;;;;;;;;;;;2578:79;;;;;;;;2340:328;1890:784;;;;:::o;626:208:5:-;359:7:7;;;;;;;;;;;337:30;;:10;:30;;;329:39;;;;;;;;791:1:5;776:11;:16;;;;768:25;;;;;;;;816:11;803:10;;:24;;;;;;;;;;;;;;;;;;626:208;:::o;1368:158:17:-;359:7:7;;;;;;;;;;;337:30;;:10;:30;;;329:39;;;;;;;;1509:10:17;1477:11;:18;1489:5;1477:18;;;;;;;;;;;;;;;:29;;:42;;;;1368:158;;:::o;339:50::-;;;;;;;;;;;;;;;;;;;;:::o;3260:116::-;3322:4;3362:6;3356:3;:12;;;;;;;;3349:3;:20;3342:27;;3260:116;:::o;513:50::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;395:40::-;;;;;;;;;;;;;;;;;;;;:::o;392:268:7:-;606:1;594:7;;;;;;;;;;;586:21;;;578:30;;;;;;;;642:10;618:7;;:35;;;;;;;;;;;;;;;;;;392:268::o;2680:488:17:-;2767:4;2787:29;2819:11;:18;2831:5;2819:18;;;;;;;;;;;;;;;2787:50;;2861:10;:18;;;2851:7;:5;:7::i;:::-;:28;2847:126;;;2916:7;:5;:7::i;:::-;2895:10;:18;;:28;;;;2961:1;2937:10;:21;;:25;;;;2847:126;3023:10;:21;;;3013:6;2989:10;:21;;;:30;:55;;:125;;;;;3093:10;:21;;;3084:6;3060:10;:21;;;:30;:54;2989:125;2982:157;;;3135:4;3128:11;;;;2982:157;3156:5;3149:12;;2680:488;;;;;;:::o", - "source": "pragma solidity 0.4.24;\nimport \"../Module.sol\";\nimport \"../ModuleManager.sol\";\nimport \"../OwnerManager.sol\";\nimport \"../Enum.sol\";\n\n\n/// @title Daily Limit Module - Allows to transfer limited amounts of ERC20 tokens and Ether without confirmations.\n/// @author Stefan George - \ncontract DailyLimitModule is Module {\n\n string public constant NAME = \"Daily Limit Module\";\n string public constant VERSION = \"0.0.1\";\n\n // dailyLimits mapping maps token address to daily limit settings.\n mapping (address => DailyLimit) public dailyLimits;\n\n struct DailyLimit {\n uint256 dailyLimit;\n uint256 spentToday;\n uint256 lastDay;\n }\n\n /// @dev Setup function sets initial storage of contract.\n /// @param tokens List of token addresses. Ether is represented with address 0x0.\n /// @param _dailyLimits List of daily limits in smalles units (e.g. Wei for Ether).\n function setup(address[] tokens, uint256[] _dailyLimits)\n public\n {\n setManager();\n for (uint256 i = 0; i < tokens.length; i++)\n dailyLimits[tokens[i]].dailyLimit = _dailyLimits[i];\n }\n\n /// @dev Allows to update the daily limit for a specified token. This can only be done via a Safe transaction.\n /// @param token Token contract address.\n /// @param dailyLimit Daily limit in smallest token unit.\n function changeDailyLimit(address token, uint256 dailyLimit)\n public\n authorized\n {\n dailyLimits[token].dailyLimit = dailyLimit;\n }\n\n /// @dev Returns if Safe transaction is a valid daily limit transaction.\n /// @param token Address of the token that should be transfered (0 for Ether)\n /// @param to Address to which the tokens should be transfered\n /// @param amount Amount of tokens (or Ether) that should be transfered\n /// @return Returns if transaction can be executed.\n function executeDailyLimit(address token, address to, uint256 amount)\n public\n {\n // Only Safe owners are allowed to execute daily limit transactions.\n require(OwnerManager(manager).isOwner(msg.sender));\n require(to != 0);\n require(amount > 0);\n // Validate that transfer is not exceeding daily limit.\n require(isUnderLimit(token, amount));\n dailyLimits[token].spentToday += amount;\n if (token == 0) {\n require(manager.execTransactionFromModule(to, amount, \"\", Enum.Operation.Call));\n } else {\n bytes memory data = abi.encodeWithSignature(\"transfer(address,uint256)\", to, amount);\n require(manager.execTransactionFromModule(token, 0, data, Enum.Operation.Call));\n }\n }\n\n function isUnderLimit(address token, uint256 amount)\n internal\n returns (bool)\n {\n DailyLimit storage dailyLimit = dailyLimits[token];\n if (today() > dailyLimit.lastDay) {\n dailyLimit.lastDay = today();\n dailyLimit.spentToday = 0;\n }\n if ( dailyLimit.spentToday + amount <= dailyLimit.dailyLimit\n && dailyLimit.spentToday + amount > dailyLimit.spentToday)\n return true;\n return false;\n }\n\n /// @dev Returns last midnight as Unix timestamp.\n /// @return Unix timestamp.\n function today()\n public\n view\n returns (uint)\n {\n return now - (now % 1 days);\n }\n}\n", + "bytecode": "0x608060405234801561001057600080fd5b5061129b806100206000396000f300608060405260043610610099576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806328814f031461009e578063481c6a751461014757806363bae7c31461019e5780637de7edef1461020b57806381c5e03b1461024e578063a3f4df7e1461029b578063b74e452b1461032b578063d7bffc9214610356578063ffa1ad74146103bb575b600080fd5b3480156100aa57600080fd5b50610145600480360381019080803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929050505061044b565b005b34801561015357600080fd5b5061015c6104ea565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101aa57600080fd5b50610209600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610510565b005b34801561021757600080fd5b5061024c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d00565b005b34801561025a57600080fd5b50610299600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ee3565b005b3480156102a757600080fd5b506102b0611019565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102f05780820151818401526020810190506102d5565b50505050905090810190601f16801561031d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561033757600080fd5b50610340611052565b6040518082815260200191505060405180910390f35b34801561036257600080fd5b50610397600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061106a565b60405180848152602001838152602001828152602001935050505060405180910390f35b3480156103c757600080fd5b506103d0611094565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104105780820151818401526020810190506103f5565b50505050905090810190601f16801561043d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60006104556110cd565b600090505b82518110156104e557818181518110151561047157fe5b9060200190602002015160026000858481518110151561048d57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550808060010191505061045a565b505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156105cf57600080fd5b505af11580156105e3573d6000803e3d6000fd5b505050506040513d60208110156105f957600080fd5b810190808051906020019092919050505015156106a4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f4d6574686f642063616e206f6e6c792062652063616c6c656420627920616e2081526020017f6f776e657200000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff1614151515610733576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f496e76616c696420746f20616464726573732070726f7669646564000000000081525060200191505060405180910390fd5b6000821115156107ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f496e76616c696420616d6f756e742070726f766964656400000000000000000081525060200191505060405180910390fd5b6107b584836111c0565b1515610829576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4461696c79206c696d697420686173206265656e20726561636865640000000081525060200191505060405180910390fd5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016000828254019250508190555060008473ffffffffffffffffffffffffffffffffffffffff161415610a3c57600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a7848460006040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018060200183600281111561095157fe5b60ff168152602001828103825260008152602001602001945050505050602060405180830381600087803b15801561098857600080fd5b505af115801561099c573d6000803e3d6000fd5b505050506040513d60208110156109b257600080fd5b81019080805190602001909291905050501515610a37576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f436f756c64206e6f742065786563757465206574686572207472616e7366657281525060200191505060405180910390fd5b610cfa565b8282604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001925050506040516020818303038152906040527fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a78560008460006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001836002811115610bbb57fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b83811015610bfb578082015181840152602081019050610be0565b50505050905090810190601f168015610c285780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610c4a57600080fd5b505af1158015610c5e573d6000803e3d6000fd5b505050506040513d6020811015610c7457600080fd5b81019080805190602001909291905050501515610cf9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f436f756c64206e6f74206578656375746520746f6b656e207472616e7366657281525060200191505060405180910390fd5b5b50505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610deb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206d81526020017f616e61676572000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610ea0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f496e76616c6964206d617374657220636f707920616464726573732070726f7681526020017f696465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610fce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206d81526020017f616e61676572000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055505050565b6040805190810160405280601281526020017f4461696c79204c696d6974204d6f64756c65000000000000000000000000000081525081565b6000620151804281151561106257fe5b064203905090565b60026020528060005260406000206000915090508060000154908060010154908060020154905083565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561117d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4d616e616765722068617320616c7265616479206265656e207365740000000081525060200191505060405180910390fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060020154611211611052565b11156112325761121f611052565b8160020181905550600081600101819055505b806000015483826001015401111580156112555750806001015483826001015401115b156112635760019150611268565b600091505b50929150505600a165627a7a7230582011d3a83d43b995685cbcea5e8d959f3e41fa3e354a8b40967776877052465e350029", + "deployedBytecode": "0x608060405260043610610099576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806328814f031461009e578063481c6a751461014757806363bae7c31461019e5780637de7edef1461020b57806381c5e03b1461024e578063a3f4df7e1461029b578063b74e452b1461032b578063d7bffc9214610356578063ffa1ad74146103bb575b600080fd5b3480156100aa57600080fd5b50610145600480360381019080803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929050505061044b565b005b34801561015357600080fd5b5061015c6104ea565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101aa57600080fd5b50610209600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610510565b005b34801561021757600080fd5b5061024c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610d00565b005b34801561025a57600080fd5b50610299600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ee3565b005b3480156102a757600080fd5b506102b0611019565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102f05780820151818401526020810190506102d5565b50505050905090810190601f16801561031d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561033757600080fd5b50610340611052565b6040518082815260200191505060405180910390f35b34801561036257600080fd5b50610397600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061106a565b60405180848152602001838152602001828152602001935050505060405180910390f35b3480156103c757600080fd5b506103d0611094565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104105780820151818401526020810190506103f5565b50505050905090810190601f16801561043d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60006104556110cd565b600090505b82518110156104e557818181518110151561047157fe5b9060200190602002015160026000858481518110151561048d57fe5b9060200190602002015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000181905550808060010191505061045a565b505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b1580156105cf57600080fd5b505af11580156105e3573d6000803e3d6000fd5b505050506040513d60208110156105f957600080fd5b810190808051906020019092919050505015156106a4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f4d6574686f642063616e206f6e6c792062652063616c6c656420627920616e2081526020017f6f776e657200000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008373ffffffffffffffffffffffffffffffffffffffff1614151515610733576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f496e76616c696420746f20616464726573732070726f7669646564000000000081525060200191505060405180910390fd5b6000821115156107ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f496e76616c696420616d6f756e742070726f766964656400000000000000000081525060200191505060405180910390fd5b6107b584836111c0565b1515610829576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4461696c79206c696d697420686173206265656e20726561636865640000000081525060200191505060405180910390fd5b81600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206001016000828254019250508190555060008473ffffffffffffffffffffffffffffffffffffffff161415610a3c57600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a7848460006040518463ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018060200183600281111561095157fe5b60ff168152602001828103825260008152602001602001945050505050602060405180830381600087803b15801561098857600080fd5b505af115801561099c573d6000803e3d6000fd5b505050506040513d60208110156109b257600080fd5b81019080805190602001909291905050501515610a37576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f436f756c64206e6f742065786563757465206574686572207472616e7366657281525060200191505060405180910390fd5b610cfa565b8282604051602401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001925050506040516020818303038152906040527fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a78560008460006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001836002811115610bbb57fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b83811015610bfb578082015181840152602081019050610be0565b50505050905090810190601f168015610c285780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610c4a57600080fd5b505af1158015610c5e573d6000803e3d6000fd5b505050506040513d6020811015610c7457600080fd5b81019080805190602001909291905050501515610cf9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f436f756c64206e6f74206578656375746520746f6b656e207472616e7366657281525060200191505060405180910390fd5b5b50505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610deb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206d81526020017f616e61676572000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610ea0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f496e76616c6964206d617374657220636f707920616464726573732070726f7681526020017f696465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610fce576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206d81526020017f616e61676572000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b80600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055505050565b6040805190810160405280601281526020017f4461696c79204c696d6974204d6f64756c65000000000000000000000000000081525081565b6000620151804281151561106257fe5b064203905090565b60026020528060005260406000206000915090508060000154908060010154908060020154905083565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561117d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4d616e616765722068617320616c7265616479206265656e207365740000000081525060200191505060405180910390fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002090508060020154611211611052565b11156112325761121f611052565b8160020181905550600081600101819055505b806000015483826001015401111580156112555750806001015483826001015401115b156112635760019150611268565b600091505b50929150505600a165627a7a7230582011d3a83d43b995685cbcea5e8d959f3e41fa3e354a8b40967776877052465e350029", + "sourceMap": "296:3285:17:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;296:3285:17;;;;;;;", + "deployedSourceMap": "296:3285:17:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;918:222;;8:9:-1;5:2;;;30:1;27;20:12;5:2;918:222:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;262:28:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;262:28:7;;;;;;;;;;;;;;;;;;;;;;;;;;;1890:987:17;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1890:987:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;626:248:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:248:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;1368:158:17;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1368:158:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;339:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;339:50:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;339:50:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3463:116;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3463:116:17;;;;;;;;;;;;;;;;;;;;;;;513:50;;8:9:-1;5:2;;;30:1;27;20:12;5:2;513:50:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;395:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;395:40:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;395:40:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;918:222;1031:9;1004:12;:10;:12::i;:::-;1043:1;1031:13;;1026:107;1050:6;:13;1046:1;:17;1026:107;;;1118:12;1131:1;1118:15;;;;;;;;;;;;;;;;;;1082:11;:22;1094:6;1101:1;1094:9;;;;;;;;;;;;;;;;;;1082:22;;;;;;;;;;;;;;;:33;;:51;;;;1065:3;;;;;;;1026:107;;;918:222;;;:::o;262:28:7:-;;;;;;;;;;;;;:::o;1890:987:17:-;2647:17;2087:7;;;;;;;;;;;2074:29;;;2104:10;2074:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2074:41:17;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2074:41:17;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2074:41:17;;;;;;;;;;;;;;;;2066:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2181:1;2175:2;:7;;;;2167:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2241:1;2232:6;:10;2224:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2352:27;2365:5;2372:6;2352:12;:27::i;:::-;2344:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2455:6;2422:11;:18;2434:5;2422:18;;;;;;;;;;;;;;;:29;;;:39;;;;;;;;;;;2484:1;2475:5;:10;;;2471:400;;;2509:7;;;;;;;;;;;:33;;;2543:2;2547:6;2559:19;2509:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2509:70:17;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2509:70:17;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2509:70:17;;;;;;;;;;;;;;;;2501:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2471:400;;;2720:2;2724:6;2667:64;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2667:64:17;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;2667:64:17;2647:84;;2753:7;;;;;;;;;;;:33;;;2787:5;2794:1;2797:4;2803:19;2753:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;2753:70:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2753:70:17;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2753:70:17;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2753:70:17;;;;;;;;;;;;;;;;2745:115;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2471:400;1890:987;;;;:::o;626:248:5:-;359:7:7;;;;;;;;;;;337:30;;:10;:30;;;329:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;791:1:5;776:11;:16;;;;768:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;856:11;843:10;;:24;;;;;;;;;;;;;;;;;;626:248;:::o;1368:158:17:-;359:7:7;;;;;;;;;;;337:30;;:10;:30;;;329:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1509:10:17;1477:11;:18;1489:5;1477:18;;;;;;;;;;;;;;;:29;;:42;;;;1368:158;;:::o;339:50::-;;;;;;;;;;;;;;;;;;;;:::o;3463:116::-;3525:4;3565:6;3559:3;:12;;;;;;;;3552:3;:20;3545:27;;3463:116;:::o;513:50::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;395:40::-;;;;;;;;;;;;;;;;;;;;:::o;434:300:7:-;648:1;636:7;;;;;;;;;;;628:21;;;620:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;716:10;692:7;;:35;;;;;;;;;;;;;;;;;;434:300::o;2883:488:17:-;2970:4;2990:29;3022:11;:18;3034:5;3022:18;;;;;;;;;;;;;;;2990:50;;3064:10;:18;;;3054:7;:5;:7::i;:::-;:28;3050:126;;;3119:7;:5;:7::i;:::-;3098:10;:18;;:28;;;;3164:1;3140:10;:21;;:25;;;;3050:126;3226:10;:21;;;3216:6;3192:10;:21;;;:30;:55;;:125;;;;;3296:10;:21;;;3287:6;3263:10;:21;;;:30;:54;3192:125;3185:157;;;3338:4;3331:11;;;;3185:157;3359:5;3352:12;;2883:488;;;;;;:::o", + "source": "pragma solidity 0.4.24;\nimport \"../Module.sol\";\nimport \"../ModuleManager.sol\";\nimport \"../OwnerManager.sol\";\nimport \"../Enum.sol\";\n\n\n/// @title Daily Limit Module - Allows to transfer limited amounts of ERC20 tokens and Ether without confirmations.\n/// @author Stefan George - \ncontract DailyLimitModule is Module {\n\n string public constant NAME = \"Daily Limit Module\";\n string public constant VERSION = \"0.0.1\";\n\n // dailyLimits mapping maps token address to daily limit settings.\n mapping (address => DailyLimit) public dailyLimits;\n\n struct DailyLimit {\n uint256 dailyLimit;\n uint256 spentToday;\n uint256 lastDay;\n }\n\n /// @dev Setup function sets initial storage of contract.\n /// @param tokens List of token addresses. Ether is represented with address 0x0.\n /// @param _dailyLimits List of daily limits in smalles units (e.g. Wei for Ether).\n function setup(address[] tokens, uint256[] _dailyLimits)\n public\n {\n setManager();\n for (uint256 i = 0; i < tokens.length; i++)\n dailyLimits[tokens[i]].dailyLimit = _dailyLimits[i];\n }\n\n /// @dev Allows to update the daily limit for a specified token. This can only be done via a Safe transaction.\n /// @param token Token contract address.\n /// @param dailyLimit Daily limit in smallest token unit.\n function changeDailyLimit(address token, uint256 dailyLimit)\n public\n authorized\n {\n dailyLimits[token].dailyLimit = dailyLimit;\n }\n\n /// @dev Returns if Safe transaction is a valid daily limit transaction.\n /// @param token Address of the token that should be transfered (0 for Ether)\n /// @param to Address to which the tokens should be transfered\n /// @param amount Amount of tokens (or Ether) that should be transfered\n /// @return Returns if transaction can be executed.\n function executeDailyLimit(address token, address to, uint256 amount)\n public\n {\n // Only Safe owners are allowed to execute daily limit transactions.\n require(OwnerManager(manager).isOwner(msg.sender), \"Method can only be called by an owner\");\n require(to != 0, \"Invalid to address provided\");\n require(amount > 0, \"Invalid amount provided\");\n // Validate that transfer is not exceeding daily limit.\n require(isUnderLimit(token, amount), \"Daily limit has been reached\");\n dailyLimits[token].spentToday += amount;\n if (token == 0) {\n require(manager.execTransactionFromModule(to, amount, \"\", Enum.Operation.Call), \"Could not execute ether transfer\");\n } else {\n bytes memory data = abi.encodeWithSignature(\"transfer(address,uint256)\", to, amount);\n require(manager.execTransactionFromModule(token, 0, data, Enum.Operation.Call), \"Could not execute token transfer\");\n }\n }\n\n function isUnderLimit(address token, uint256 amount)\n internal\n returns (bool)\n {\n DailyLimit storage dailyLimit = dailyLimits[token];\n if (today() > dailyLimit.lastDay) {\n dailyLimit.lastDay = today();\n dailyLimit.spentToday = 0;\n }\n if ( dailyLimit.spentToday + amount <= dailyLimit.dailyLimit\n && dailyLimit.spentToday + amount > dailyLimit.spentToday)\n return true;\n return false;\n }\n\n /// @dev Returns last midnight as Unix timestamp.\n /// @return Unix timestamp.\n function today()\n public\n view\n returns (uint)\n {\n return now - (now % 1 days);\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/DailyLimitModule.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/DailyLimitModule.sol", "exportedSymbols": { "DailyLimitModule": [ - 1973 + 2014 ] }, - "id": 1974, + "id": 2015, "nodeType": "SourceUnit", "nodes": [ { - "id": 1742, + "id": 1777, "literals": [ "solidity", "0.4", @@ -186,10 +186,10 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "file": "../Module.sol", - "id": 1743, + "id": 1778, "nodeType": "ImportDirective", - "scope": 1974, - "sourceUnit": 751, + "scope": 2015, + "sourceUnit": 763, "src": "24:23:17", "symbolAliases": [], "unitAlias": "" @@ -197,10 +197,10 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ModuleManager.sol", "file": "../ModuleManager.sol", - "id": 1744, + "id": 1779, "nodeType": "ImportDirective", - "scope": 1974, - "sourceUnit": 1101, + "scope": 2015, + "sourceUnit": 1119, "src": "48:30:17", "symbolAliases": [], "unitAlias": "" @@ -208,10 +208,10 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", "file": "../OwnerManager.sol", - "id": 1745, + "id": 1780, "nodeType": "ImportDirective", - "scope": 1974, - "sourceUnit": 1473, + "scope": 2015, + "sourceUnit": 1505, "src": "79:29:17", "symbolAliases": [], "unitAlias": "" @@ -219,9 +219,9 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Enum.sol", "file": "../Enum.sol", - "id": 1746, + "id": 1781, "nodeType": "ImportDirective", - "scope": 1974, + "scope": 2015, "sourceUnit": 31, "src": "109:21:17", "symbolAliases": [], @@ -233,45 +233,45 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 1747, + "id": 1782, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 750, + "referencedDeclaration": 762, "src": "325:6:17", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } }, - "id": 1748, + "id": 1783, "nodeType": "InheritanceSpecifier", "src": "325:6:17" } ], "contractDependencies": [ - 652, - 750, - 1619 + 662, + 762, + 1654 ], "contractKind": "contract", "documentation": "@title Daily Limit Module - Allows to transfer limited amounts of ERC20 tokens and Ether without confirmations.\n @author Stefan George - ", "fullyImplemented": true, - "id": 1973, + "id": 2014, "linearizedBaseContracts": [ - 1973, - 750, - 652, - 1619 + 2014, + 762, + 662, + 1654 ], "name": "DailyLimitModule", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, - "id": 1751, + "id": 1786, "name": "NAME", "nodeType": "VariableDeclaration", - "scope": 1973, + "scope": 2014, "src": "339:50:17", "stateVariable": true, "storageLocation": "default", @@ -280,7 +280,7 @@ "typeString": "string" }, "typeName": { - "id": 1749, + "id": 1784, "name": "string", "nodeType": "ElementaryTypeName", "src": "339:6:17", @@ -292,7 +292,7 @@ "value": { "argumentTypes": null, "hexValue": "4461696c79204c696d6974204d6f64756c65", - "id": 1750, + "id": 1785, "isConstant": false, "isLValue": false, "isPure": true, @@ -311,10 +311,10 @@ }, { "constant": true, - "id": 1754, + "id": 1789, "name": "VERSION", "nodeType": "VariableDeclaration", - "scope": 1973, + "scope": 2014, "src": "395:40:17", "stateVariable": true, "storageLocation": "default", @@ -323,7 +323,7 @@ "typeString": "string" }, "typeName": { - "id": 1752, + "id": 1787, "name": "string", "nodeType": "ElementaryTypeName", "src": "395:6:17", @@ -335,7 +335,7 @@ "value": { "argumentTypes": null, "hexValue": "302e302e31", - "id": 1753, + "id": 1788, "isConstant": false, "isLValue": false, "isPure": true, @@ -354,21 +354,21 @@ }, { "constant": false, - "id": 1758, + "id": 1793, "name": "dailyLimits", "nodeType": "VariableDeclaration", - "scope": 1973, + "scope": 2014, "src": "513:50:17", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1765_storage_$", + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1800_storage_$", "typeString": "mapping(address => struct DailyLimitModule.DailyLimit)" }, "typeName": { - "id": 1757, + "id": 1792, "keyType": { - "id": 1755, + "id": 1790, "name": "address", "nodeType": "ElementaryTypeName", "src": "522:7:17", @@ -380,18 +380,18 @@ "nodeType": "Mapping", "src": "513:31:17", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1765_storage_$", + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1800_storage_$", "typeString": "mapping(address => struct DailyLimitModule.DailyLimit)" }, "valueType": { "contractScope": null, - "id": 1756, + "id": 1791, "name": "DailyLimit", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1765, + "referencedDeclaration": 1800, "src": "533:10:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1765_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1800_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit" } } @@ -401,14 +401,14 @@ }, { "canonicalName": "DailyLimitModule.DailyLimit", - "id": 1765, + "id": 1800, "members": [ { "constant": false, - "id": 1760, + "id": 1795, "name": "dailyLimit", "nodeType": "VariableDeclaration", - "scope": 1765, + "scope": 1800, "src": "598:18:17", "stateVariable": false, "storageLocation": "default", @@ -417,7 +417,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1759, + "id": 1794, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "598:7:17", @@ -431,10 +431,10 @@ }, { "constant": false, - "id": 1762, + "id": 1797, "name": "spentToday", "nodeType": "VariableDeclaration", - "scope": 1765, + "scope": 1800, "src": "626:18:17", "stateVariable": false, "storageLocation": "default", @@ -443,7 +443,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1761, + "id": 1796, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "626:7:17", @@ -457,10 +457,10 @@ }, { "constant": false, - "id": 1764, + "id": 1799, "name": "lastDay", "nodeType": "VariableDeclaration", - "scope": 1765, + "scope": 1800, "src": "654:15:17", "stateVariable": false, "storageLocation": "default", @@ -469,7 +469,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1763, + "id": 1798, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "654:7:17", @@ -484,13 +484,13 @@ ], "name": "DailyLimit", "nodeType": "StructDefinition", - "scope": 1973, + "scope": 2014, "src": "570:106:17", "visibility": "public" }, { "body": { - "id": 1800, + "id": 1835, "nodeType": "Block", "src": "994:146:17", "statements": [ @@ -500,18 +500,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 1774, + "id": 1809, "name": "setManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 749, + "referencedDeclaration": 761, "src": "1004:10:17", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 1775, + "id": 1810, "isConstant": false, "isLValue": false, "isPure": false, @@ -525,7 +525,7 @@ "typeString": "tuple()" } }, - "id": 1776, + "id": 1811, "nodeType": "ExpressionStatement", "src": "1004:12:17" }, @@ -533,7 +533,7 @@ "body": { "expression": { "argumentTypes": null, - "id": 1797, + "id": 1832, "isConstant": false, "isLValue": false, "isPure": false, @@ -544,41 +544,41 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1788, + "id": 1823, "name": "dailyLimits", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1758, + "referencedDeclaration": 1793, "src": "1082:11:17", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1765_storage_$", + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1800_storage_$", "typeString": "mapping(address => struct DailyLimitModule.DailyLimit storage ref)" } }, - "id": 1792, + "id": 1827, "indexExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1789, + "id": 1824, "name": "tokens", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1768, + "referencedDeclaration": 1803, "src": "1094:6:17", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1791, + "id": 1826, "indexExpression": { "argumentTypes": null, - "id": 1790, + "id": 1825, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1778, + "referencedDeclaration": 1813, "src": "1101:1:17", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -603,18 +603,18 @@ "nodeType": "IndexAccess", "src": "1082:22:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1765_storage", + "typeIdentifier": "t_struct$_DailyLimit_$1800_storage", "typeString": "struct DailyLimitModule.DailyLimit storage ref" } }, - "id": 1793, + "id": 1828, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "dailyLimit", "nodeType": "MemberAccess", - "referencedDeclaration": 1760, + "referencedDeclaration": 1795, "src": "1082:33:17", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -627,25 +627,25 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1794, + "id": 1829, "name": "_dailyLimits", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1771, + "referencedDeclaration": 1806, "src": "1118:12:17", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" } }, - "id": 1796, + "id": 1831, "indexExpression": { "argumentTypes": null, - "id": 1795, + "id": 1830, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1778, + "referencedDeclaration": 1813, "src": "1131:1:17", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -669,7 +669,7 @@ "typeString": "uint256" } }, - "id": 1798, + "id": 1833, "nodeType": "ExpressionStatement", "src": "1082:51:17" }, @@ -679,18 +679,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1784, + "id": 1819, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1781, + "id": 1816, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1778, + "referencedDeclaration": 1813, "src": "1046:1:17", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -703,18 +703,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1782, + "id": 1817, "name": "tokens", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1768, + "referencedDeclaration": 1803, "src": "1050:6:17", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1783, + "id": 1818, "isConstant": false, "isLValue": false, "isPure": false, @@ -734,18 +734,18 @@ "typeString": "bool" } }, - "id": 1799, + "id": 1834, "initializationExpression": { "assignments": [ - 1778 + 1813 ], "declarations": [ { "constant": false, - "id": 1778, + "id": 1813, "name": "i", "nodeType": "VariableDeclaration", - "scope": 1801, + "scope": 1836, "src": "1031:9:17", "stateVariable": false, "storageLocation": "default", @@ -754,7 +754,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1777, + "id": 1812, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1031:7:17", @@ -767,11 +767,11 @@ "visibility": "internal" } ], - "id": 1780, + "id": 1815, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 1779, + "id": 1814, "isConstant": false, "isLValue": false, "isPure": true, @@ -792,7 +792,7 @@ "loopExpression": { "expression": { "argumentTypes": null, - "id": 1786, + "id": 1821, "isConstant": false, "isLValue": false, "isPure": false, @@ -803,11 +803,11 @@ "src": "1065:3:17", "subExpression": { "argumentTypes": null, - "id": 1785, + "id": 1820, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1778, + "referencedDeclaration": 1813, "src": "1065:1:17", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -819,7 +819,7 @@ "typeString": "uint256" } }, - "id": 1787, + "id": 1822, "nodeType": "ExpressionStatement", "src": "1065:3:17" }, @@ -829,7 +829,7 @@ ] }, "documentation": "@dev Setup function sets initial storage of contract.\n @param tokens List of token addresses. Ether is represented with address 0x0.\n @param _dailyLimits List of daily limits in smalles units (e.g. Wei for Ether).", - "id": 1801, + "id": 1836, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -837,15 +837,15 @@ "name": "setup", "nodeType": "FunctionDefinition", "parameters": { - "id": 1772, + "id": 1807, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1768, + "id": 1803, "name": "tokens", "nodeType": "VariableDeclaration", - "scope": 1801, + "scope": 1836, "src": "933:16:17", "stateVariable": false, "storageLocation": "default", @@ -855,7 +855,7 @@ }, "typeName": { "baseType": { - "id": 1766, + "id": 1801, "name": "address", "nodeType": "ElementaryTypeName", "src": "933:7:17", @@ -864,7 +864,7 @@ "typeString": "address" } }, - "id": 1767, + "id": 1802, "length": null, "nodeType": "ArrayTypeName", "src": "933:9:17", @@ -878,10 +878,10 @@ }, { "constant": false, - "id": 1771, + "id": 1806, "name": "_dailyLimits", "nodeType": "VariableDeclaration", - "scope": 1801, + "scope": 1836, "src": "951:22:17", "stateVariable": false, "storageLocation": "default", @@ -891,7 +891,7 @@ }, "typeName": { "baseType": { - "id": 1769, + "id": 1804, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "951:7:17", @@ -900,7 +900,7 @@ "typeString": "uint256" } }, - "id": 1770, + "id": 1805, "length": null, "nodeType": "ArrayTypeName", "src": "951:9:17", @@ -917,12 +917,12 @@ }, "payable": false, "returnParameters": { - "id": 1773, + "id": 1808, "nodeType": "ParameterList", "parameters": [], "src": "994:0:17" }, - "scope": 1973, + "scope": 2014, "src": "918:222:17", "stateMutability": "nonpayable", "superFunction": null, @@ -930,14 +930,14 @@ }, { "body": { - "id": 1817, + "id": 1852, "nodeType": "Block", "src": "1467:59:17", "statements": [ { "expression": { "argumentTypes": null, - "id": 1815, + "id": 1850, "isConstant": false, "isLValue": false, "isPure": false, @@ -948,25 +948,25 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1810, + "id": 1845, "name": "dailyLimits", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1758, + "referencedDeclaration": 1793, "src": "1477:11:17", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1765_storage_$", + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1800_storage_$", "typeString": "mapping(address => struct DailyLimitModule.DailyLimit storage ref)" } }, - "id": 1812, + "id": 1847, "indexExpression": { "argumentTypes": null, - "id": 1811, + "id": 1846, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1803, + "referencedDeclaration": 1838, "src": "1489:5:17", "typeDescriptions": { "typeIdentifier": "t_address", @@ -980,18 +980,18 @@ "nodeType": "IndexAccess", "src": "1477:18:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1765_storage", + "typeIdentifier": "t_struct$_DailyLimit_$1800_storage", "typeString": "struct DailyLimitModule.DailyLimit storage ref" } }, - "id": 1813, + "id": 1848, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "dailyLimit", "nodeType": "MemberAccess", - "referencedDeclaration": 1760, + "referencedDeclaration": 1795, "src": "1477:29:17", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -1002,11 +1002,11 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1814, + "id": 1849, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1805, + "referencedDeclaration": 1840, "src": "1509:10:17", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -1019,28 +1019,28 @@ "typeString": "uint256" } }, - "id": 1816, + "id": 1851, "nodeType": "ExpressionStatement", "src": "1477:42:17" } ] }, "documentation": "@dev Allows to update the daily limit for a specified token. This can only be done via a Safe transaction.\n @param token Token contract address.\n @param dailyLimit Daily limit in smallest token unit.", - "id": 1818, + "id": 1853, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 1808, + "id": 1843, "modifierName": { "argumentTypes": null, - "id": 1807, + "id": 1842, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 730, + "referencedDeclaration": 741, "src": "1452:10:17", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", @@ -1054,15 +1054,15 @@ "name": "changeDailyLimit", "nodeType": "FunctionDefinition", "parameters": { - "id": 1806, + "id": 1841, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1803, + "id": 1838, "name": "token", "nodeType": "VariableDeclaration", - "scope": 1818, + "scope": 1853, "src": "1394:13:17", "stateVariable": false, "storageLocation": "default", @@ -1071,7 +1071,7 @@ "typeString": "address" }, "typeName": { - "id": 1802, + "id": 1837, "name": "address", "nodeType": "ElementaryTypeName", "src": "1394:7:17", @@ -1085,10 +1085,10 @@ }, { "constant": false, - "id": 1805, + "id": 1840, "name": "dailyLimit", "nodeType": "VariableDeclaration", - "scope": 1818, + "scope": 1853, "src": "1409:18:17", "stateVariable": false, "storageLocation": "default", @@ -1097,7 +1097,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1804, + "id": 1839, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1409:7:17", @@ -1114,12 +1114,12 @@ }, "payable": false, "returnParameters": { - "id": 1809, + "id": 1844, "nodeType": "ParameterList", "parameters": [], "src": "1467:0:17" }, - "scope": 1973, + "scope": 2014, "src": "1368:158:17", "stateMutability": "nonpayable", "superFunction": null, @@ -1127,9 +1127,9 @@ }, { "body": { - "id": 1902, + "id": 1943, "nodeType": "Block", - "src": "1979:695:17", + "src": "1979:898:17", "statements": [ { "expression": { @@ -1142,18 +1142,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1832, + "id": 1867, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2598, + "referencedDeclaration": 2654, "src": "2104:3:17", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 1833, + "id": 1868, "isConstant": false, "isLValue": false, "isPure": false, @@ -1180,14 +1180,14 @@ "arguments": [ { "argumentTypes": null, - "id": 1829, + "id": 1864, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 717, + "referencedDeclaration": 727, "src": "2087:7:17", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } } @@ -1195,22 +1195,22 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } ], - "id": 1828, + "id": 1863, "name": "OwnerManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1472, + "referencedDeclaration": 1504, "src": "2074:12:17", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1472_$", + "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1504_$", "typeString": "type(contract OwnerManager)" } }, - "id": 1830, + "id": 1865, "isConstant": false, "isLValue": false, "isPure": false, @@ -1220,25 +1220,25 @@ "nodeType": "FunctionCall", "src": "2074:21:17", "typeDescriptions": { - "typeIdentifier": "t_contract$_OwnerManager_$1472", + "typeIdentifier": "t_contract$_OwnerManager_$1504", "typeString": "contract OwnerManager" } }, - "id": 1831, + "id": 1866, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "isOwner", "nodeType": "MemberAccess", - "referencedDeclaration": 1422, + "referencedDeclaration": 1454, "src": "2074:29:17", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view external returns (bool)" } }, - "id": 1834, + "id": 1869, "isConstant": false, "isLValue": false, "isPure": false, @@ -1251,6 +1251,24 @@ "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "4d6574686f642063616e206f6e6c792062652063616c6c656420627920616e206f776e6572", + "id": 1870, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2117:39:17", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_4df072353ff501a1071e1cc3e2eb3ee0ebb21a35321efe90c0960bf2f4356640", + "typeString": "literal_string \"Method can only be called by an owner\"" + }, + "value": "Method can only be called by an owner" } ], "expression": { @@ -1258,23 +1276,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_4df072353ff501a1071e1cc3e2eb3ee0ebb21a35321efe90c0960bf2f4356640", + "typeString": "literal_string \"Method can only be called by an owner\"" } ], - "id": 1827, + "id": 1862, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, + "referencedDeclaration": 2658, "src": "2066:7:17", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1835, + "id": 1871, "isConstant": false, "isLValue": false, "isPure": false, @@ -1282,15 +1304,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2066:50:17", + "src": "2066:91:17", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1836, + "id": 1872, "nodeType": "ExpressionStatement", - "src": "2066:50:17" + "src": "2066:91:17" }, { "expression": { @@ -1302,19 +1324,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1840, + "id": 1876, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1838, + "id": 1874, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1822, - "src": "2134:2:17", + "referencedDeclaration": 1857, + "src": "2175:2:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1325,14 +1347,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1839, + "id": 1875, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2140:1:17", + "src": "2181:1:17", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1340,11 +1362,29 @@ }, "value": "0" }, - "src": "2134:7:17", + "src": "2175:7:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "496e76616c696420746f20616464726573732070726f7669646564", + "id": 1877, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2184:29:17", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5adba0692e08f8080ea3ec2bf95727d181df9c72d0fc6db8f77e3703d9523f1", + "typeString": "literal_string \"Invalid to address provided\"" + }, + "value": "Invalid to address provided" } ], "expression": { @@ -1352,23 +1392,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_c5adba0692e08f8080ea3ec2bf95727d181df9c72d0fc6db8f77e3703d9523f1", + "typeString": "literal_string \"Invalid to address provided\"" } ], - "id": 1837, + "id": 1873, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "2126:7:17", + "referencedDeclaration": 2658, + "src": "2167:7:17", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1841, + "id": 1878, "isConstant": false, "isLValue": false, "isPure": false, @@ -1376,15 +1420,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2126:16:17", + "src": "2167:47:17", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1842, + "id": 1879, "nodeType": "ExpressionStatement", - "src": "2126:16:17" + "src": "2167:47:17" }, { "expression": { @@ -1396,19 +1440,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1846, + "id": 1883, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1844, + "id": 1881, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1824, - "src": "2160:6:17", + "referencedDeclaration": 1859, + "src": "2232:6:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1419,14 +1463,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1845, + "id": 1882, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2169:1:17", + "src": "2241:1:17", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1434,11 +1478,29 @@ }, "value": "0" }, - "src": "2160:10:17", + "src": "2232:10:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "496e76616c696420616d6f756e742070726f7669646564", + "id": 1884, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2244:25:17", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_991bec80688b0edba4751e32429f6879002de57199ff2c6b5bf0742d348ba58f", + "typeString": "literal_string \"Invalid amount provided\"" + }, + "value": "Invalid amount provided" } ], "expression": { @@ -1446,23 +1508,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_991bec80688b0edba4751e32429f6879002de57199ff2c6b5bf0742d348ba58f", + "typeString": "literal_string \"Invalid amount provided\"" } ], - "id": 1843, + "id": 1880, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "2152:7:17", + "referencedDeclaration": 2658, + "src": "2224:7:17", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1847, + "id": 1885, "isConstant": false, "isLValue": false, "isPure": false, @@ -1470,15 +1536,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2152:19:17", + "src": "2224:46:17", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1848, + "id": 1886, "nodeType": "ExpressionStatement", - "src": "2152:19:17" + "src": "2224:46:17" }, { "expression": { @@ -1489,12 +1555,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1851, + "id": 1889, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1820, - "src": "2266:5:17", + "referencedDeclaration": 1855, + "src": "2365:5:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1502,12 +1568,12 @@ }, { "argumentTypes": null, - "id": 1852, + "id": 1890, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1824, - "src": "2273:6:17", + "referencedDeclaration": 1859, + "src": "2372:6:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1525,18 +1591,18 @@ "typeString": "uint256" } ], - "id": 1850, + "id": 1888, "name": "isUnderLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1959, - "src": "2253:12:17", + "referencedDeclaration": 2000, + "src": "2352:12:17", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) returns (bool)" } }, - "id": 1853, + "id": 1891, "isConstant": false, "isLValue": false, "isPure": false, @@ -1544,11 +1610,29 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2253:27:17", + "src": "2352:27:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "4461696c79206c696d697420686173206265656e2072656163686564", + "id": 1892, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2381:30:17", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_8c8c9a9731e3c1970f356c6998c7e6418ab5b55402b68846f03a8bbe49c05905", + "typeString": "literal_string \"Daily limit has been reached\"" + }, + "value": "Daily limit has been reached" } ], "expression": { @@ -1556,23 +1640,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_8c8c9a9731e3c1970f356c6998c7e6418ab5b55402b68846f03a8bbe49c05905", + "typeString": "literal_string \"Daily limit has been reached\"" } ], - "id": 1849, + "id": 1887, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "2245:7:17", + "referencedDeclaration": 2658, + "src": "2344:7:17", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1854, + "id": 1893, "isConstant": false, "isLValue": false, "isPure": false, @@ -1580,20 +1668,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2245:36:17", + "src": "2344:68:17", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1855, + "id": 1894, "nodeType": "ExpressionStatement", - "src": "2245:36:17" + "src": "2344:68:17" }, { "expression": { "argumentTypes": null, - "id": 1861, + "id": 1900, "isConstant": false, "isLValue": false, "isPure": false, @@ -1604,26 +1692,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1856, + "id": 1895, "name": "dailyLimits", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1758, - "src": "2291:11:17", + "referencedDeclaration": 1793, + "src": "2422:11:17", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1765_storage_$", + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1800_storage_$", "typeString": "mapping(address => struct DailyLimitModule.DailyLimit storage ref)" } }, - "id": 1858, + "id": 1897, "indexExpression": { "argumentTypes": null, - "id": 1857, + "id": 1896, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1820, - "src": "2303:5:17", + "referencedDeclaration": 1855, + "src": "2434:5:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1634,21 +1722,21 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2291:18:17", + "src": "2422:18:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1765_storage", + "typeIdentifier": "t_struct$_DailyLimit_$1800_storage", "typeString": "struct DailyLimitModule.DailyLimit storage ref" } }, - "id": 1859, + "id": 1898, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "spentToday", "nodeType": "MemberAccess", - "referencedDeclaration": 1762, - "src": "2291:29:17", + "referencedDeclaration": 1797, + "src": "2422:29:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1658,26 +1746,26 @@ "operator": "+=", "rightHandSide": { "argumentTypes": null, - "id": 1860, + "id": 1899, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1824, - "src": "2324:6:17", + "referencedDeclaration": 1859, + "src": "2455:6:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2291:39:17", + "src": "2422:39:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1862, + "id": 1901, "nodeType": "ExpressionStatement", - "src": "2291:39:17" + "src": "2422:39:17" }, { "condition": { @@ -1686,19 +1774,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1865, + "id": 1904, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1863, + "id": 1902, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1820, - "src": "2344:5:17", + "referencedDeclaration": 1855, + "src": "2475:5:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1709,14 +1797,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1864, + "id": 1903, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2353:1:17", + "src": "2484:1:17", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1724,29 +1812,29 @@ }, "value": "0" }, - "src": "2344:10:17", + "src": "2475:10:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { - "id": 1900, + "id": 1941, "nodeType": "Block", - "src": "2466:202:17", + "src": "2633:238:17", "statements": [ { "assignments": [ - 1880 + 1920 ], "declarations": [ { "constant": false, - "id": 1880, + "id": 1920, "name": "data", "nodeType": "VariableDeclaration", - "scope": 1903, - "src": "2480:17:17", + "scope": 1944, + "src": "2647:17:17", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -1754,10 +1842,10 @@ "typeString": "bytes" }, "typeName": { - "id": 1879, + "id": 1919, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "2480:5:17", + "src": "2647:5:17", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -1767,21 +1855,21 @@ "visibility": "internal" } ], - "id": 1887, + "id": 1927, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "7472616e7366657228616464726573732c75696e7432353629", - "id": 1883, + "id": 1923, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2524:27:17", + "src": "2691:27:17", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_a9059cbb2ab09eb219583f4a59a5d0623ade346d962bcd4e46b11da047c9049b", @@ -1791,12 +1879,12 @@ }, { "argumentTypes": null, - "id": 1884, + "id": 1924, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1822, - "src": "2553:2:17", + "referencedDeclaration": 1857, + "src": "2720:2:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1804,12 +1892,12 @@ }, { "argumentTypes": null, - "id": 1885, + "id": 1925, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1824, - "src": "2557:6:17", + "referencedDeclaration": 1859, + "src": "2724:6:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1833,18 +1921,18 @@ ], "expression": { "argumentTypes": null, - "id": 1881, + "id": 1921, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2585, - "src": "2500:3:17", + "referencedDeclaration": 2641, + "src": "2667:3:17", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, - "id": 1882, + "id": 1922, "isConstant": false, "isLValue": false, "isPure": true, @@ -1852,13 +1940,13 @@ "memberName": "encodeWithSignature", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2500:23:17", + "src": "2667:23:17", "typeDescriptions": { "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", "typeString": "function (string memory) pure returns (bytes memory)" } }, - "id": 1886, + "id": 1926, "isConstant": false, "isLValue": false, "isPure": false, @@ -1866,14 +1954,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2500:64:17", + "src": "2667:64:17", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "nodeType": "VariableDeclarationStatement", - "src": "2480:84:17" + "src": "2647:84:17" }, { "expression": { @@ -1884,12 +1972,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1891, + "id": 1931, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1820, - "src": "2620:5:17", + "referencedDeclaration": 1855, + "src": "2787:5:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1898,14 +1986,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 1892, + "id": 1932, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2627:1:17", + "src": "2794:1:17", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1915,12 +2003,12 @@ }, { "argumentTypes": null, - "id": 1893, + "id": 1933, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1880, - "src": "2630:4:17", + "referencedDeclaration": 1920, + "src": "2797:4:17", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -1932,18 +2020,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1894, + "id": 1934, "name": "Enum", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 30, - "src": "2636:4:17", + "src": "2803:4:17", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_Enum_$30_$", "typeString": "type(contract Enum)" } }, - "id": 1895, + "id": 1935, "isConstant": false, "isLValue": false, "isPure": false, @@ -1951,13 +2039,13 @@ "memberName": "Operation", "nodeType": "MemberAccess", "referencedDeclaration": 29, - "src": "2636:14:17", + "src": "2803:14:17", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_Operation_$29_$", "typeString": "type(enum Enum.Operation)" } }, - "id": 1896, + "id": 1936, "isConstant": false, "isLValue": false, "isPure": true, @@ -1965,7 +2053,7 @@ "memberName": "Call", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2636:19:17", + "src": "2803:19:17", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -1993,32 +2081,32 @@ ], "expression": { "argumentTypes": null, - "id": 1889, + "id": 1929, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 717, - "src": "2586:7:17", + "referencedDeclaration": 727, + "src": "2753:7:17", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } }, - "id": 1890, + "id": 1930, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "execTransactionFromModule", "nodeType": "MemberAccess", - "referencedDeclaration": 927, - "src": "2586:33:17", + "referencedDeclaration": 945, + "src": "2753:33:17", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation) external returns (bool)" } }, - "id": 1897, + "id": 1937, "isConstant": false, "isLValue": false, "isPure": false, @@ -2026,11 +2114,29 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2586:70:17", + "src": "2753:70:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "436f756c64206e6f74206578656375746520746f6b656e207472616e73666572", + "id": 1938, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2825:34:17", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_00c0b742664159361be6aebbe2af44c4ae7eb95e13260265d1e1cf75d2593709", + "typeString": "literal_string \"Could not execute token transfer\"" + }, + "value": "Could not execute token transfer" } ], "expression": { @@ -2038,23 +2144,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_00c0b742664159361be6aebbe2af44c4ae7eb95e13260265d1e1cf75d2593709", + "typeString": "literal_string \"Could not execute token transfer\"" } ], - "id": 1888, + "id": 1928, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "2578:7:17", + "referencedDeclaration": 2658, + "src": "2745:7:17", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1898, + "id": 1939, "isConstant": false, "isLValue": false, "isPure": false, @@ -2062,25 +2172,25 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2578:79:17", + "src": "2745:115:17", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1899, + "id": 1940, "nodeType": "ExpressionStatement", - "src": "2578:79:17" + "src": "2745:115:17" } ] }, - "id": 1901, + "id": 1942, "nodeType": "IfStatement", - "src": "2340:328:17", + "src": "2471:400:17", "trueBody": { - "id": 1878, + "id": 1918, "nodeType": "Block", - "src": "2356:104:17", + "src": "2487:140:17", "statements": [ { "expression": { @@ -2091,12 +2201,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1869, + "id": 1908, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1822, - "src": "2412:2:17", + "referencedDeclaration": 1857, + "src": "2543:2:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2104,12 +2214,12 @@ }, { "argumentTypes": null, - "id": 1870, + "id": 1909, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1824, - "src": "2416:6:17", + "referencedDeclaration": 1859, + "src": "2547:6:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2118,14 +2228,14 @@ { "argumentTypes": null, "hexValue": "", - "id": 1871, + "id": 1910, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2424:2:17", + "src": "2555:2:17", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", @@ -2139,18 +2249,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1872, + "id": 1911, "name": "Enum", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 30, - "src": "2428:4:17", + "src": "2559:4:17", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_Enum_$30_$", "typeString": "type(contract Enum)" } }, - "id": 1873, + "id": 1912, "isConstant": false, "isLValue": false, "isPure": false, @@ -2158,13 +2268,13 @@ "memberName": "Operation", "nodeType": "MemberAccess", "referencedDeclaration": 29, - "src": "2428:14:17", + "src": "2559:14:17", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_Operation_$29_$", "typeString": "type(enum Enum.Operation)" } }, - "id": 1874, + "id": 1913, "isConstant": false, "isLValue": false, "isPure": true, @@ -2172,7 +2282,7 @@ "memberName": "Call", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2428:19:17", + "src": "2559:19:17", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -2200,32 +2310,32 @@ ], "expression": { "argumentTypes": null, - "id": 1867, + "id": 1906, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 717, - "src": "2378:7:17", + "referencedDeclaration": 727, + "src": "2509:7:17", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } }, - "id": 1868, + "id": 1907, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "execTransactionFromModule", "nodeType": "MemberAccess", - "referencedDeclaration": 927, - "src": "2378:33:17", + "referencedDeclaration": 945, + "src": "2509:33:17", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation) external returns (bool)" } }, - "id": 1875, + "id": 1914, "isConstant": false, "isLValue": false, "isPure": false, @@ -2233,11 +2343,29 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2378:70:17", + "src": "2509:70:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "436f756c64206e6f742065786563757465206574686572207472616e73666572", + "id": 1915, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2581:34:17", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_2fae53cac084168982e43888b6e5eff084959ab65d511777b56b4cbb265d2586", + "typeString": "literal_string \"Could not execute ether transfer\"" + }, + "value": "Could not execute ether transfer" } ], "expression": { @@ -2245,23 +2373,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_2fae53cac084168982e43888b6e5eff084959ab65d511777b56b4cbb265d2586", + "typeString": "literal_string \"Could not execute ether transfer\"" } ], - "id": 1866, + "id": 1905, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "2370:7:17", + "referencedDeclaration": 2658, + "src": "2501:7:17", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1876, + "id": 1916, "isConstant": false, "isLValue": false, "isPure": false, @@ -2269,15 +2401,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2370:79:17", + "src": "2501:115:17", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1877, + "id": 1917, "nodeType": "ExpressionStatement", - "src": "2370:79:17" + "src": "2501:115:17" } ] } @@ -2285,7 +2417,7 @@ ] }, "documentation": "@dev Returns if Safe transaction is a valid daily limit transaction.\n @param token Address of the token that should be transfered (0 for Ether)\n @param to Address to which the tokens should be transfered\n @param amount Amount of tokens (or Ether) that should be transfered\n @return Returns if transaction can be executed.", - "id": 1903, + "id": 1944, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -2293,15 +2425,15 @@ "name": "executeDailyLimit", "nodeType": "FunctionDefinition", "parameters": { - "id": 1825, + "id": 1860, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1820, + "id": 1855, "name": "token", "nodeType": "VariableDeclaration", - "scope": 1903, + "scope": 1944, "src": "1917:13:17", "stateVariable": false, "storageLocation": "default", @@ -2310,7 +2442,7 @@ "typeString": "address" }, "typeName": { - "id": 1819, + "id": 1854, "name": "address", "nodeType": "ElementaryTypeName", "src": "1917:7:17", @@ -2324,10 +2456,10 @@ }, { "constant": false, - "id": 1822, + "id": 1857, "name": "to", "nodeType": "VariableDeclaration", - "scope": 1903, + "scope": 1944, "src": "1932:10:17", "stateVariable": false, "storageLocation": "default", @@ -2336,7 +2468,7 @@ "typeString": "address" }, "typeName": { - "id": 1821, + "id": 1856, "name": "address", "nodeType": "ElementaryTypeName", "src": "1932:7:17", @@ -2350,10 +2482,10 @@ }, { "constant": false, - "id": 1824, + "id": 1859, "name": "amount", "nodeType": "VariableDeclaration", - "scope": 1903, + "scope": 1944, "src": "1944:14:17", "stateVariable": false, "storageLocation": "default", @@ -2362,7 +2494,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1823, + "id": 1858, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1944:7:17", @@ -2379,50 +2511,50 @@ }, "payable": false, "returnParameters": { - "id": 1826, + "id": 1861, "nodeType": "ParameterList", "parameters": [], "src": "1979:0:17" }, - "scope": 1973, - "src": "1890:784:17", + "scope": 2014, + "src": "1890:987:17", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1958, + "id": 1999, "nodeType": "Block", - "src": "2777:391:17", + "src": "2980:391:17", "statements": [ { "assignments": [ - 1913 + 1954 ], "declarations": [ { "constant": false, - "id": 1913, + "id": 1954, "name": "dailyLimit", "nodeType": "VariableDeclaration", - "scope": 1959, - "src": "2787:29:17", + "scope": 2000, + "src": "2990:29:17", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1765_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1800_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit" }, "typeName": { "contractScope": null, - "id": 1912, + "id": 1953, "name": "DailyLimit", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1765, - "src": "2787:10:17", + "referencedDeclaration": 1800, + "src": "2990:10:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1765_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1800_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit" } }, @@ -2430,31 +2562,31 @@ "visibility": "internal" } ], - "id": 1917, + "id": 1958, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1914, + "id": 1955, "name": "dailyLimits", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1758, - "src": "2819:11:17", + "referencedDeclaration": 1793, + "src": "3022:11:17", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1765_storage_$", + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1800_storage_$", "typeString": "mapping(address => struct DailyLimitModule.DailyLimit storage ref)" } }, - "id": 1916, + "id": 1957, "indexExpression": { "argumentTypes": null, - "id": 1915, + "id": 1956, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1905, - "src": "2831:5:17", + "referencedDeclaration": 1946, + "src": "3034:5:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2465,14 +2597,14 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2819:18:17", + "src": "3022:18:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1765_storage", + "typeIdentifier": "t_struct$_DailyLimit_$1800_storage", "typeString": "struct DailyLimitModule.DailyLimit storage ref" } }, "nodeType": "VariableDeclarationStatement", - "src": "2787:50:17" + "src": "2990:50:17" }, { "condition": { @@ -2481,7 +2613,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1922, + "id": 1963, "isConstant": false, "isLValue": false, "isPure": false, @@ -2491,18 +2623,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 1918, + "id": 1959, "name": "today", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1972, - "src": "2851:5:17", + "referencedDeclaration": 2013, + "src": "3054:5:17", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 1919, + "id": 1960, "isConstant": false, "isLValue": false, "isPure": false, @@ -2510,7 +2642,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2851:7:17", + "src": "3054:7:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2522,50 +2654,50 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1920, + "id": 1961, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1913, - "src": "2861:10:17", + "referencedDeclaration": 1954, + "src": "3064:10:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1765_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1800_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, - "id": 1921, + "id": 1962, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "lastDay", "nodeType": "MemberAccess", - "referencedDeclaration": 1764, - "src": "2861:18:17", + "referencedDeclaration": 1799, + "src": "3064:18:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2851:28:17", + "src": "3054:28:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 1937, + "id": 1978, "nodeType": "IfStatement", - "src": "2847:126:17", + "src": "3050:126:17", "trueBody": { - "id": 1936, + "id": 1977, "nodeType": "Block", - "src": "2881:92:17", + "src": "3084:92:17", "statements": [ { "expression": { "argumentTypes": null, - "id": 1928, + "id": 1969, "isConstant": false, "isLValue": false, "isPure": false, @@ -2574,26 +2706,26 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1923, + "id": 1964, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1913, - "src": "2895:10:17", + "referencedDeclaration": 1954, + "src": "3098:10:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1765_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1800_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, - "id": 1925, + "id": 1966, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "lastDay", "nodeType": "MemberAccess", - "referencedDeclaration": 1764, - "src": "2895:18:17", + "referencedDeclaration": 1799, + "src": "3098:18:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2606,18 +2738,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 1926, + "id": 1967, "name": "today", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1972, - "src": "2916:5:17", + "referencedDeclaration": 2013, + "src": "3119:5:17", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 1927, + "id": 1968, "isConstant": false, "isLValue": false, "isPure": false, @@ -2625,26 +2757,26 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2916:7:17", + "src": "3119:7:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2895:28:17", + "src": "3098:28:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1929, + "id": 1970, "nodeType": "ExpressionStatement", - "src": "2895:28:17" + "src": "3098:28:17" }, { "expression": { "argumentTypes": null, - "id": 1934, + "id": 1975, "isConstant": false, "isLValue": false, "isPure": false, @@ -2653,26 +2785,26 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1930, + "id": 1971, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1913, - "src": "2937:10:17", + "referencedDeclaration": 1954, + "src": "3140:10:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1765_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1800_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, - "id": 1932, + "id": 1973, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "spentToday", "nodeType": "MemberAccess", - "referencedDeclaration": 1762, - "src": "2937:21:17", + "referencedDeclaration": 1797, + "src": "3140:21:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2683,14 +2815,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "30", - "id": 1933, + "id": 1974, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2961:1:17", + "src": "3164:1:17", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -2698,15 +2830,15 @@ }, "value": "0" }, - "src": "2937:25:17", + "src": "3140:25:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1935, + "id": 1976, "nodeType": "ExpressionStatement", - "src": "2937:25:17" + "src": "3140:25:17" } ] } @@ -2718,7 +2850,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 1952, + "id": 1993, "isConstant": false, "isLValue": false, "isPure": false, @@ -2729,7 +2861,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1944, + "id": 1985, "isConstant": false, "isLValue": false, "isPure": false, @@ -2740,7 +2872,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1941, + "id": 1982, "isConstant": false, "isLValue": false, "isPure": false, @@ -2749,26 +2881,26 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1938, + "id": 1979, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1913, - "src": "2989:10:17", + "referencedDeclaration": 1954, + "src": "3192:10:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1765_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1800_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, - "id": 1939, + "id": 1980, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "spentToday", "nodeType": "MemberAccess", - "referencedDeclaration": 1762, - "src": "2989:21:17", + "referencedDeclaration": 1797, + "src": "3192:21:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2778,18 +2910,18 @@ "operator": "+", "rightExpression": { "argumentTypes": null, - "id": 1940, + "id": 1981, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1907, - "src": "3013:6:17", + "referencedDeclaration": 1948, + "src": "3216:6:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2989:30:17", + "src": "3192:30:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2801,32 +2933,32 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1942, + "id": 1983, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1913, - "src": "3023:10:17", + "referencedDeclaration": 1954, + "src": "3226:10:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1765_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1800_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, - "id": 1943, + "id": 1984, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "dailyLimit", "nodeType": "MemberAccess", - "referencedDeclaration": 1760, - "src": "3023:21:17", + "referencedDeclaration": 1795, + "src": "3226:21:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2989:55:17", + "src": "3192:55:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2840,7 +2972,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1951, + "id": 1992, "isConstant": false, "isLValue": false, "isPure": false, @@ -2851,7 +2983,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1948, + "id": 1989, "isConstant": false, "isLValue": false, "isPure": false, @@ -2860,26 +2992,26 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1945, + "id": 1986, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1913, - "src": "3060:10:17", + "referencedDeclaration": 1954, + "src": "3263:10:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1765_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1800_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, - "id": 1946, + "id": 1987, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "spentToday", "nodeType": "MemberAccess", - "referencedDeclaration": 1762, - "src": "3060:21:17", + "referencedDeclaration": 1797, + "src": "3263:21:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2889,18 +3021,18 @@ "operator": "+", "rightExpression": { "argumentTypes": null, - "id": 1947, + "id": 1988, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1907, - "src": "3084:6:17", + "referencedDeclaration": 1948, + "src": "3287:6:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3060:30:17", + "src": "3263:30:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2912,59 +3044,59 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1949, + "id": 1990, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1913, - "src": "3093:10:17", + "referencedDeclaration": 1954, + "src": "3296:10:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1765_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1800_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, - "id": 1950, + "id": 1991, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "spentToday", "nodeType": "MemberAccess", - "referencedDeclaration": 1762, - "src": "3093:21:17", + "referencedDeclaration": 1797, + "src": "3296:21:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3060:54:17", + "src": "3263:54:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "2989:125:17", + "src": "3192:125:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 1955, + "id": 1996, "nodeType": "IfStatement", - "src": "2982:157:17", + "src": "3185:157:17", "trueBody": { "expression": { "argumentTypes": null, "hexValue": "74727565", - "id": 1953, + "id": 1994, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "3135:4:17", + "src": "3338:4:17", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -2972,24 +3104,24 @@ }, "value": "true" }, - "functionReturnParameters": 1911, - "id": 1954, + "functionReturnParameters": 1952, + "id": 1995, "nodeType": "Return", - "src": "3128:11:17" + "src": "3331:11:17" } }, { "expression": { "argumentTypes": null, "hexValue": "66616c7365", - "id": 1956, + "id": 1997, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "3156:5:17", + "src": "3359:5:17", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -2997,15 +3129,15 @@ }, "value": "false" }, - "functionReturnParameters": 1911, - "id": 1957, + "functionReturnParameters": 1952, + "id": 1998, "nodeType": "Return", - "src": "3149:12:17" + "src": "3352:12:17" } ] }, "documentation": null, - "id": 1959, + "id": 2000, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -3013,16 +3145,16 @@ "name": "isUnderLimit", "nodeType": "FunctionDefinition", "parameters": { - "id": 1908, + "id": 1949, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1905, + "id": 1946, "name": "token", "nodeType": "VariableDeclaration", - "scope": 1959, - "src": "2702:13:17", + "scope": 2000, + "src": "2905:13:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3030,10 +3162,10 @@ "typeString": "address" }, "typeName": { - "id": 1904, + "id": 1945, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2702:7:17", + "src": "2905:7:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3044,11 +3176,11 @@ }, { "constant": false, - "id": 1907, + "id": 1948, "name": "amount", "nodeType": "VariableDeclaration", - "scope": 1959, - "src": "2717:14:17", + "scope": 2000, + "src": "2920:14:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3056,10 +3188,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1906, + "id": 1947, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2717:7:17", + "src": "2920:7:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3069,20 +3201,20 @@ "visibility": "internal" } ], - "src": "2701:31:17" + "src": "2904:31:17" }, "payable": false, "returnParameters": { - "id": 1911, + "id": 1952, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1910, + "id": 1951, "name": "", "nodeType": "VariableDeclaration", - "scope": 1959, - "src": "2767:4:17", + "scope": 2000, + "src": "2970:4:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3090,10 +3222,10 @@ "typeString": "bool" }, "typeName": { - "id": 1909, + "id": 1950, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "2767:4:17", + "src": "2970:4:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3103,19 +3235,19 @@ "visibility": "internal" } ], - "src": "2766:6:17" + "src": "2969:6:17" }, - "scope": 1973, - "src": "2680:488:17", + "scope": 2014, + "src": "2883:488:17", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1971, + "id": 2012, "nodeType": "Block", - "src": "3332:44:17", + "src": "3535:44:17", "statements": [ { "expression": { @@ -3124,19 +3256,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1969, + "id": 2010, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1964, + "id": 2005, "name": "now", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2600, - "src": "3349:3:17", + "referencedDeclaration": 2656, + "src": "3552:3:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3153,19 +3285,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1967, + "id": 2008, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1965, + "id": 2006, "name": "now", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2600, - "src": "3356:3:17", + "referencedDeclaration": 2656, + "src": "3559:3:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3176,14 +3308,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31", - "id": 1966, + "id": 2007, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3362:6:17", + "src": "3565:6:17", "subdenomination": "days", "typeDescriptions": { "typeIdentifier": "t_rational_86400_by_1", @@ -3191,41 +3323,41 @@ }, "value": "1" }, - "src": "3356:12:17", + "src": "3559:12:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], - "id": 1968, + "id": 2009, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "3355:14:17", + "src": "3558:14:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3349:20:17", + "src": "3552:20:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 1963, - "id": 1970, + "functionReturnParameters": 2004, + "id": 2011, "nodeType": "Return", - "src": "3342:27:17" + "src": "3545:27:17" } ] }, "documentation": "@dev Returns last midnight as Unix timestamp.\n @return Unix timestamp.", - "id": 1972, + "id": 2013, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -3233,23 +3365,23 @@ "name": "today", "nodeType": "FunctionDefinition", "parameters": { - "id": 1960, + "id": 2001, "nodeType": "ParameterList", "parameters": [], - "src": "3274:2:17" + "src": "3477:2:17" }, "payable": false, "returnParameters": { - "id": 1963, + "id": 2004, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1962, + "id": 2003, "name": "", "nodeType": "VariableDeclaration", - "scope": 1972, - "src": "3322:4:17", + "scope": 2013, + "src": "3525:4:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3257,10 +3389,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1961, + "id": 2002, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "3322:4:17", + "src": "3525:4:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3270,33 +3402,33 @@ "visibility": "internal" } ], - "src": "3321:6:17" + "src": "3524:6:17" }, - "scope": 1973, - "src": "3260:116:17", + "scope": 2014, + "src": "3463:116:17", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 1974, - "src": "296:3082:17" + "scope": 2015, + "src": "296:3285:17" } ], - "src": "0:3379:17" + "src": "0:3582:17" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/DailyLimitModule.sol", "exportedSymbols": { "DailyLimitModule": [ - 1973 + 2014 ] }, - "id": 1974, + "id": 2015, "nodeType": "SourceUnit", "nodes": [ { - "id": 1742, + "id": 1777, "literals": [ "solidity", "0.4", @@ -3308,10 +3440,10 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "file": "../Module.sol", - "id": 1743, + "id": 1778, "nodeType": "ImportDirective", - "scope": 1974, - "sourceUnit": 751, + "scope": 2015, + "sourceUnit": 763, "src": "24:23:17", "symbolAliases": [], "unitAlias": "" @@ -3319,10 +3451,10 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ModuleManager.sol", "file": "../ModuleManager.sol", - "id": 1744, + "id": 1779, "nodeType": "ImportDirective", - "scope": 1974, - "sourceUnit": 1101, + "scope": 2015, + "sourceUnit": 1119, "src": "48:30:17", "symbolAliases": [], "unitAlias": "" @@ -3330,10 +3462,10 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", "file": "../OwnerManager.sol", - "id": 1745, + "id": 1780, "nodeType": "ImportDirective", - "scope": 1974, - "sourceUnit": 1473, + "scope": 2015, + "sourceUnit": 1505, "src": "79:29:17", "symbolAliases": [], "unitAlias": "" @@ -3341,9 +3473,9 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Enum.sol", "file": "../Enum.sol", - "id": 1746, + "id": 1781, "nodeType": "ImportDirective", - "scope": 1974, + "scope": 2015, "sourceUnit": 31, "src": "109:21:17", "symbolAliases": [], @@ -3355,45 +3487,45 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 1747, + "id": 1782, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 750, + "referencedDeclaration": 762, "src": "325:6:17", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } }, - "id": 1748, + "id": 1783, "nodeType": "InheritanceSpecifier", "src": "325:6:17" } ], "contractDependencies": [ - 652, - 750, - 1619 + 662, + 762, + 1654 ], "contractKind": "contract", "documentation": "@title Daily Limit Module - Allows to transfer limited amounts of ERC20 tokens and Ether without confirmations.\n @author Stefan George - ", "fullyImplemented": true, - "id": 1973, + "id": 2014, "linearizedBaseContracts": [ - 1973, - 750, - 652, - 1619 + 2014, + 762, + 662, + 1654 ], "name": "DailyLimitModule", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, - "id": 1751, + "id": 1786, "name": "NAME", "nodeType": "VariableDeclaration", - "scope": 1973, + "scope": 2014, "src": "339:50:17", "stateVariable": true, "storageLocation": "default", @@ -3402,7 +3534,7 @@ "typeString": "string" }, "typeName": { - "id": 1749, + "id": 1784, "name": "string", "nodeType": "ElementaryTypeName", "src": "339:6:17", @@ -3414,7 +3546,7 @@ "value": { "argumentTypes": null, "hexValue": "4461696c79204c696d6974204d6f64756c65", - "id": 1750, + "id": 1785, "isConstant": false, "isLValue": false, "isPure": true, @@ -3433,10 +3565,10 @@ }, { "constant": true, - "id": 1754, + "id": 1789, "name": "VERSION", "nodeType": "VariableDeclaration", - "scope": 1973, + "scope": 2014, "src": "395:40:17", "stateVariable": true, "storageLocation": "default", @@ -3445,7 +3577,7 @@ "typeString": "string" }, "typeName": { - "id": 1752, + "id": 1787, "name": "string", "nodeType": "ElementaryTypeName", "src": "395:6:17", @@ -3457,7 +3589,7 @@ "value": { "argumentTypes": null, "hexValue": "302e302e31", - "id": 1753, + "id": 1788, "isConstant": false, "isLValue": false, "isPure": true, @@ -3476,21 +3608,21 @@ }, { "constant": false, - "id": 1758, + "id": 1793, "name": "dailyLimits", "nodeType": "VariableDeclaration", - "scope": 1973, + "scope": 2014, "src": "513:50:17", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1765_storage_$", + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1800_storage_$", "typeString": "mapping(address => struct DailyLimitModule.DailyLimit)" }, "typeName": { - "id": 1757, + "id": 1792, "keyType": { - "id": 1755, + "id": 1790, "name": "address", "nodeType": "ElementaryTypeName", "src": "522:7:17", @@ -3502,18 +3634,18 @@ "nodeType": "Mapping", "src": "513:31:17", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1765_storage_$", + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1800_storage_$", "typeString": "mapping(address => struct DailyLimitModule.DailyLimit)" }, "valueType": { "contractScope": null, - "id": 1756, + "id": 1791, "name": "DailyLimit", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1765, + "referencedDeclaration": 1800, "src": "533:10:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1765_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1800_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit" } } @@ -3523,14 +3655,14 @@ }, { "canonicalName": "DailyLimitModule.DailyLimit", - "id": 1765, + "id": 1800, "members": [ { "constant": false, - "id": 1760, + "id": 1795, "name": "dailyLimit", "nodeType": "VariableDeclaration", - "scope": 1765, + "scope": 1800, "src": "598:18:17", "stateVariable": false, "storageLocation": "default", @@ -3539,7 +3671,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1759, + "id": 1794, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "598:7:17", @@ -3553,10 +3685,10 @@ }, { "constant": false, - "id": 1762, + "id": 1797, "name": "spentToday", "nodeType": "VariableDeclaration", - "scope": 1765, + "scope": 1800, "src": "626:18:17", "stateVariable": false, "storageLocation": "default", @@ -3565,7 +3697,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1761, + "id": 1796, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "626:7:17", @@ -3579,10 +3711,10 @@ }, { "constant": false, - "id": 1764, + "id": 1799, "name": "lastDay", "nodeType": "VariableDeclaration", - "scope": 1765, + "scope": 1800, "src": "654:15:17", "stateVariable": false, "storageLocation": "default", @@ -3591,7 +3723,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1763, + "id": 1798, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "654:7:17", @@ -3606,13 +3738,13 @@ ], "name": "DailyLimit", "nodeType": "StructDefinition", - "scope": 1973, + "scope": 2014, "src": "570:106:17", "visibility": "public" }, { "body": { - "id": 1800, + "id": 1835, "nodeType": "Block", "src": "994:146:17", "statements": [ @@ -3622,18 +3754,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 1774, + "id": 1809, "name": "setManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 749, + "referencedDeclaration": 761, "src": "1004:10:17", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 1775, + "id": 1810, "isConstant": false, "isLValue": false, "isPure": false, @@ -3647,7 +3779,7 @@ "typeString": "tuple()" } }, - "id": 1776, + "id": 1811, "nodeType": "ExpressionStatement", "src": "1004:12:17" }, @@ -3655,7 +3787,7 @@ "body": { "expression": { "argumentTypes": null, - "id": 1797, + "id": 1832, "isConstant": false, "isLValue": false, "isPure": false, @@ -3666,41 +3798,41 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1788, + "id": 1823, "name": "dailyLimits", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1758, + "referencedDeclaration": 1793, "src": "1082:11:17", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1765_storage_$", + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1800_storage_$", "typeString": "mapping(address => struct DailyLimitModule.DailyLimit storage ref)" } }, - "id": 1792, + "id": 1827, "indexExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1789, + "id": 1824, "name": "tokens", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1768, + "referencedDeclaration": 1803, "src": "1094:6:17", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1791, + "id": 1826, "indexExpression": { "argumentTypes": null, - "id": 1790, + "id": 1825, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1778, + "referencedDeclaration": 1813, "src": "1101:1:17", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -3725,18 +3857,18 @@ "nodeType": "IndexAccess", "src": "1082:22:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1765_storage", + "typeIdentifier": "t_struct$_DailyLimit_$1800_storage", "typeString": "struct DailyLimitModule.DailyLimit storage ref" } }, - "id": 1793, + "id": 1828, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "dailyLimit", "nodeType": "MemberAccess", - "referencedDeclaration": 1760, + "referencedDeclaration": 1795, "src": "1082:33:17", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -3749,25 +3881,25 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1794, + "id": 1829, "name": "_dailyLimits", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1771, + "referencedDeclaration": 1806, "src": "1118:12:17", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr", "typeString": "uint256[] memory" } }, - "id": 1796, + "id": 1831, "indexExpression": { "argumentTypes": null, - "id": 1795, + "id": 1830, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1778, + "referencedDeclaration": 1813, "src": "1131:1:17", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -3791,7 +3923,7 @@ "typeString": "uint256" } }, - "id": 1798, + "id": 1833, "nodeType": "ExpressionStatement", "src": "1082:51:17" }, @@ -3801,18 +3933,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1784, + "id": 1819, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1781, + "id": 1816, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1778, + "referencedDeclaration": 1813, "src": "1046:1:17", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -3825,18 +3957,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1782, + "id": 1817, "name": "tokens", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1768, + "referencedDeclaration": 1803, "src": "1050:6:17", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1783, + "id": 1818, "isConstant": false, "isLValue": false, "isPure": false, @@ -3856,18 +3988,18 @@ "typeString": "bool" } }, - "id": 1799, + "id": 1834, "initializationExpression": { "assignments": [ - 1778 + 1813 ], "declarations": [ { "constant": false, - "id": 1778, + "id": 1813, "name": "i", "nodeType": "VariableDeclaration", - "scope": 1801, + "scope": 1836, "src": "1031:9:17", "stateVariable": false, "storageLocation": "default", @@ -3876,7 +4008,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1777, + "id": 1812, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1031:7:17", @@ -3889,11 +4021,11 @@ "visibility": "internal" } ], - "id": 1780, + "id": 1815, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 1779, + "id": 1814, "isConstant": false, "isLValue": false, "isPure": true, @@ -3914,7 +4046,7 @@ "loopExpression": { "expression": { "argumentTypes": null, - "id": 1786, + "id": 1821, "isConstant": false, "isLValue": false, "isPure": false, @@ -3925,11 +4057,11 @@ "src": "1065:3:17", "subExpression": { "argumentTypes": null, - "id": 1785, + "id": 1820, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1778, + "referencedDeclaration": 1813, "src": "1065:1:17", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -3941,7 +4073,7 @@ "typeString": "uint256" } }, - "id": 1787, + "id": 1822, "nodeType": "ExpressionStatement", "src": "1065:3:17" }, @@ -3951,7 +4083,7 @@ ] }, "documentation": "@dev Setup function sets initial storage of contract.\n @param tokens List of token addresses. Ether is represented with address 0x0.\n @param _dailyLimits List of daily limits in smalles units (e.g. Wei for Ether).", - "id": 1801, + "id": 1836, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -3959,15 +4091,15 @@ "name": "setup", "nodeType": "FunctionDefinition", "parameters": { - "id": 1772, + "id": 1807, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1768, + "id": 1803, "name": "tokens", "nodeType": "VariableDeclaration", - "scope": 1801, + "scope": 1836, "src": "933:16:17", "stateVariable": false, "storageLocation": "default", @@ -3977,7 +4109,7 @@ }, "typeName": { "baseType": { - "id": 1766, + "id": 1801, "name": "address", "nodeType": "ElementaryTypeName", "src": "933:7:17", @@ -3986,7 +4118,7 @@ "typeString": "address" } }, - "id": 1767, + "id": 1802, "length": null, "nodeType": "ArrayTypeName", "src": "933:9:17", @@ -4000,10 +4132,10 @@ }, { "constant": false, - "id": 1771, + "id": 1806, "name": "_dailyLimits", "nodeType": "VariableDeclaration", - "scope": 1801, + "scope": 1836, "src": "951:22:17", "stateVariable": false, "storageLocation": "default", @@ -4013,7 +4145,7 @@ }, "typeName": { "baseType": { - "id": 1769, + "id": 1804, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "951:7:17", @@ -4022,7 +4154,7 @@ "typeString": "uint256" } }, - "id": 1770, + "id": 1805, "length": null, "nodeType": "ArrayTypeName", "src": "951:9:17", @@ -4039,12 +4171,12 @@ }, "payable": false, "returnParameters": { - "id": 1773, + "id": 1808, "nodeType": "ParameterList", "parameters": [], "src": "994:0:17" }, - "scope": 1973, + "scope": 2014, "src": "918:222:17", "stateMutability": "nonpayable", "superFunction": null, @@ -4052,14 +4184,14 @@ }, { "body": { - "id": 1817, + "id": 1852, "nodeType": "Block", "src": "1467:59:17", "statements": [ { "expression": { "argumentTypes": null, - "id": 1815, + "id": 1850, "isConstant": false, "isLValue": false, "isPure": false, @@ -4070,25 +4202,25 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1810, + "id": 1845, "name": "dailyLimits", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1758, + "referencedDeclaration": 1793, "src": "1477:11:17", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1765_storage_$", + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1800_storage_$", "typeString": "mapping(address => struct DailyLimitModule.DailyLimit storage ref)" } }, - "id": 1812, + "id": 1847, "indexExpression": { "argumentTypes": null, - "id": 1811, + "id": 1846, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1803, + "referencedDeclaration": 1838, "src": "1489:5:17", "typeDescriptions": { "typeIdentifier": "t_address", @@ -4102,18 +4234,18 @@ "nodeType": "IndexAccess", "src": "1477:18:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1765_storage", + "typeIdentifier": "t_struct$_DailyLimit_$1800_storage", "typeString": "struct DailyLimitModule.DailyLimit storage ref" } }, - "id": 1813, + "id": 1848, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "dailyLimit", "nodeType": "MemberAccess", - "referencedDeclaration": 1760, + "referencedDeclaration": 1795, "src": "1477:29:17", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -4124,11 +4256,11 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1814, + "id": 1849, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1805, + "referencedDeclaration": 1840, "src": "1509:10:17", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -4141,28 +4273,28 @@ "typeString": "uint256" } }, - "id": 1816, + "id": 1851, "nodeType": "ExpressionStatement", "src": "1477:42:17" } ] }, "documentation": "@dev Allows to update the daily limit for a specified token. This can only be done via a Safe transaction.\n @param token Token contract address.\n @param dailyLimit Daily limit in smallest token unit.", - "id": 1818, + "id": 1853, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 1808, + "id": 1843, "modifierName": { "argumentTypes": null, - "id": 1807, + "id": 1842, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 730, + "referencedDeclaration": 741, "src": "1452:10:17", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", @@ -4176,15 +4308,15 @@ "name": "changeDailyLimit", "nodeType": "FunctionDefinition", "parameters": { - "id": 1806, + "id": 1841, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1803, + "id": 1838, "name": "token", "nodeType": "VariableDeclaration", - "scope": 1818, + "scope": 1853, "src": "1394:13:17", "stateVariable": false, "storageLocation": "default", @@ -4193,7 +4325,7 @@ "typeString": "address" }, "typeName": { - "id": 1802, + "id": 1837, "name": "address", "nodeType": "ElementaryTypeName", "src": "1394:7:17", @@ -4207,10 +4339,10 @@ }, { "constant": false, - "id": 1805, + "id": 1840, "name": "dailyLimit", "nodeType": "VariableDeclaration", - "scope": 1818, + "scope": 1853, "src": "1409:18:17", "stateVariable": false, "storageLocation": "default", @@ -4219,7 +4351,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1804, + "id": 1839, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1409:7:17", @@ -4236,12 +4368,12 @@ }, "payable": false, "returnParameters": { - "id": 1809, + "id": 1844, "nodeType": "ParameterList", "parameters": [], "src": "1467:0:17" }, - "scope": 1973, + "scope": 2014, "src": "1368:158:17", "stateMutability": "nonpayable", "superFunction": null, @@ -4249,9 +4381,9 @@ }, { "body": { - "id": 1902, + "id": 1943, "nodeType": "Block", - "src": "1979:695:17", + "src": "1979:898:17", "statements": [ { "expression": { @@ -4264,18 +4396,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1832, + "id": 1867, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2598, + "referencedDeclaration": 2654, "src": "2104:3:17", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 1833, + "id": 1868, "isConstant": false, "isLValue": false, "isPure": false, @@ -4302,14 +4434,14 @@ "arguments": [ { "argumentTypes": null, - "id": 1829, + "id": 1864, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 717, + "referencedDeclaration": 727, "src": "2087:7:17", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } } @@ -4317,22 +4449,22 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } ], - "id": 1828, + "id": 1863, "name": "OwnerManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1472, + "referencedDeclaration": 1504, "src": "2074:12:17", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1472_$", + "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1504_$", "typeString": "type(contract OwnerManager)" } }, - "id": 1830, + "id": 1865, "isConstant": false, "isLValue": false, "isPure": false, @@ -4342,25 +4474,25 @@ "nodeType": "FunctionCall", "src": "2074:21:17", "typeDescriptions": { - "typeIdentifier": "t_contract$_OwnerManager_$1472", + "typeIdentifier": "t_contract$_OwnerManager_$1504", "typeString": "contract OwnerManager" } }, - "id": 1831, + "id": 1866, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "isOwner", "nodeType": "MemberAccess", - "referencedDeclaration": 1422, + "referencedDeclaration": 1454, "src": "2074:29:17", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view external returns (bool)" } }, - "id": 1834, + "id": 1869, "isConstant": false, "isLValue": false, "isPure": false, @@ -4373,6 +4505,24 @@ "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "4d6574686f642063616e206f6e6c792062652063616c6c656420627920616e206f776e6572", + "id": 1870, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2117:39:17", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_4df072353ff501a1071e1cc3e2eb3ee0ebb21a35321efe90c0960bf2f4356640", + "typeString": "literal_string \"Method can only be called by an owner\"" + }, + "value": "Method can only be called by an owner" } ], "expression": { @@ -4380,23 +4530,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_4df072353ff501a1071e1cc3e2eb3ee0ebb21a35321efe90c0960bf2f4356640", + "typeString": "literal_string \"Method can only be called by an owner\"" } ], - "id": 1827, + "id": 1862, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, + "referencedDeclaration": 2658, "src": "2066:7:17", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1835, + "id": 1871, "isConstant": false, "isLValue": false, "isPure": false, @@ -4404,15 +4558,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2066:50:17", + "src": "2066:91:17", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1836, + "id": 1872, "nodeType": "ExpressionStatement", - "src": "2066:50:17" + "src": "2066:91:17" }, { "expression": { @@ -4424,19 +4578,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1840, + "id": 1876, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1838, + "id": 1874, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1822, - "src": "2134:2:17", + "referencedDeclaration": 1857, + "src": "2175:2:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4447,14 +4601,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1839, + "id": 1875, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2140:1:17", + "src": "2181:1:17", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -4462,11 +4616,29 @@ }, "value": "0" }, - "src": "2134:7:17", + "src": "2175:7:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "496e76616c696420746f20616464726573732070726f7669646564", + "id": 1877, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2184:29:17", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c5adba0692e08f8080ea3ec2bf95727d181df9c72d0fc6db8f77e3703d9523f1", + "typeString": "literal_string \"Invalid to address provided\"" + }, + "value": "Invalid to address provided" } ], "expression": { @@ -4474,23 +4646,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_c5adba0692e08f8080ea3ec2bf95727d181df9c72d0fc6db8f77e3703d9523f1", + "typeString": "literal_string \"Invalid to address provided\"" } ], - "id": 1837, + "id": 1873, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "2126:7:17", + "referencedDeclaration": 2658, + "src": "2167:7:17", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1841, + "id": 1878, "isConstant": false, "isLValue": false, "isPure": false, @@ -4498,15 +4674,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2126:16:17", + "src": "2167:47:17", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1842, + "id": 1879, "nodeType": "ExpressionStatement", - "src": "2126:16:17" + "src": "2167:47:17" }, { "expression": { @@ -4518,19 +4694,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1846, + "id": 1883, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1844, + "id": 1881, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1824, - "src": "2160:6:17", + "referencedDeclaration": 1859, + "src": "2232:6:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4541,14 +4717,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1845, + "id": 1882, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2169:1:17", + "src": "2241:1:17", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -4556,11 +4732,29 @@ }, "value": "0" }, - "src": "2160:10:17", + "src": "2232:10:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "496e76616c696420616d6f756e742070726f7669646564", + "id": 1884, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2244:25:17", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_991bec80688b0edba4751e32429f6879002de57199ff2c6b5bf0742d348ba58f", + "typeString": "literal_string \"Invalid amount provided\"" + }, + "value": "Invalid amount provided" } ], "expression": { @@ -4568,23 +4762,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_991bec80688b0edba4751e32429f6879002de57199ff2c6b5bf0742d348ba58f", + "typeString": "literal_string \"Invalid amount provided\"" } ], - "id": 1843, + "id": 1880, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "2152:7:17", + "referencedDeclaration": 2658, + "src": "2224:7:17", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1847, + "id": 1885, "isConstant": false, "isLValue": false, "isPure": false, @@ -4592,15 +4790,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2152:19:17", + "src": "2224:46:17", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1848, + "id": 1886, "nodeType": "ExpressionStatement", - "src": "2152:19:17" + "src": "2224:46:17" }, { "expression": { @@ -4611,12 +4809,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1851, + "id": 1889, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1820, - "src": "2266:5:17", + "referencedDeclaration": 1855, + "src": "2365:5:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4624,12 +4822,12 @@ }, { "argumentTypes": null, - "id": 1852, + "id": 1890, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1824, - "src": "2273:6:17", + "referencedDeclaration": 1859, + "src": "2372:6:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4647,18 +4845,18 @@ "typeString": "uint256" } ], - "id": 1850, + "id": 1888, "name": "isUnderLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1959, - "src": "2253:12:17", + "referencedDeclaration": 2000, + "src": "2352:12:17", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) returns (bool)" } }, - "id": 1853, + "id": 1891, "isConstant": false, "isLValue": false, "isPure": false, @@ -4666,11 +4864,29 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2253:27:17", + "src": "2352:27:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "4461696c79206c696d697420686173206265656e2072656163686564", + "id": 1892, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2381:30:17", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_8c8c9a9731e3c1970f356c6998c7e6418ab5b55402b68846f03a8bbe49c05905", + "typeString": "literal_string \"Daily limit has been reached\"" + }, + "value": "Daily limit has been reached" } ], "expression": { @@ -4678,23 +4894,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_8c8c9a9731e3c1970f356c6998c7e6418ab5b55402b68846f03a8bbe49c05905", + "typeString": "literal_string \"Daily limit has been reached\"" } ], - "id": 1849, + "id": 1887, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "2245:7:17", + "referencedDeclaration": 2658, + "src": "2344:7:17", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1854, + "id": 1893, "isConstant": false, "isLValue": false, "isPure": false, @@ -4702,20 +4922,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2245:36:17", + "src": "2344:68:17", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1855, + "id": 1894, "nodeType": "ExpressionStatement", - "src": "2245:36:17" + "src": "2344:68:17" }, { "expression": { "argumentTypes": null, - "id": 1861, + "id": 1900, "isConstant": false, "isLValue": false, "isPure": false, @@ -4726,26 +4946,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1856, + "id": 1895, "name": "dailyLimits", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1758, - "src": "2291:11:17", + "referencedDeclaration": 1793, + "src": "2422:11:17", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1765_storage_$", + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1800_storage_$", "typeString": "mapping(address => struct DailyLimitModule.DailyLimit storage ref)" } }, - "id": 1858, + "id": 1897, "indexExpression": { "argumentTypes": null, - "id": 1857, + "id": 1896, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1820, - "src": "2303:5:17", + "referencedDeclaration": 1855, + "src": "2434:5:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4756,21 +4976,21 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2291:18:17", + "src": "2422:18:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1765_storage", + "typeIdentifier": "t_struct$_DailyLimit_$1800_storage", "typeString": "struct DailyLimitModule.DailyLimit storage ref" } }, - "id": 1859, + "id": 1898, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "spentToday", "nodeType": "MemberAccess", - "referencedDeclaration": 1762, - "src": "2291:29:17", + "referencedDeclaration": 1797, + "src": "2422:29:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4780,26 +5000,26 @@ "operator": "+=", "rightHandSide": { "argumentTypes": null, - "id": 1860, + "id": 1899, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1824, - "src": "2324:6:17", + "referencedDeclaration": 1859, + "src": "2455:6:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2291:39:17", + "src": "2422:39:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1862, + "id": 1901, "nodeType": "ExpressionStatement", - "src": "2291:39:17" + "src": "2422:39:17" }, { "condition": { @@ -4808,19 +5028,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1865, + "id": 1904, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1863, + "id": 1902, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1820, - "src": "2344:5:17", + "referencedDeclaration": 1855, + "src": "2475:5:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4831,14 +5051,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1864, + "id": 1903, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2353:1:17", + "src": "2484:1:17", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -4846,29 +5066,29 @@ }, "value": "0" }, - "src": "2344:10:17", + "src": "2475:10:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { - "id": 1900, + "id": 1941, "nodeType": "Block", - "src": "2466:202:17", + "src": "2633:238:17", "statements": [ { "assignments": [ - 1880 + 1920 ], "declarations": [ { "constant": false, - "id": 1880, + "id": 1920, "name": "data", "nodeType": "VariableDeclaration", - "scope": 1903, - "src": "2480:17:17", + "scope": 1944, + "src": "2647:17:17", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -4876,10 +5096,10 @@ "typeString": "bytes" }, "typeName": { - "id": 1879, + "id": 1919, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "2480:5:17", + "src": "2647:5:17", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -4889,21 +5109,21 @@ "visibility": "internal" } ], - "id": 1887, + "id": 1927, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "7472616e7366657228616464726573732c75696e7432353629", - "id": 1883, + "id": 1923, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2524:27:17", + "src": "2691:27:17", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_a9059cbb2ab09eb219583f4a59a5d0623ade346d962bcd4e46b11da047c9049b", @@ -4913,12 +5133,12 @@ }, { "argumentTypes": null, - "id": 1884, + "id": 1924, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1822, - "src": "2553:2:17", + "referencedDeclaration": 1857, + "src": "2720:2:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4926,12 +5146,12 @@ }, { "argumentTypes": null, - "id": 1885, + "id": 1925, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1824, - "src": "2557:6:17", + "referencedDeclaration": 1859, + "src": "2724:6:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4955,18 +5175,18 @@ ], "expression": { "argumentTypes": null, - "id": 1881, + "id": 1921, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2585, - "src": "2500:3:17", + "referencedDeclaration": 2641, + "src": "2667:3:17", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, - "id": 1882, + "id": 1922, "isConstant": false, "isLValue": false, "isPure": true, @@ -4974,13 +5194,13 @@ "memberName": "encodeWithSignature", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2500:23:17", + "src": "2667:23:17", "typeDescriptions": { "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", "typeString": "function (string memory) pure returns (bytes memory)" } }, - "id": 1886, + "id": 1926, "isConstant": false, "isLValue": false, "isPure": false, @@ -4988,14 +5208,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2500:64:17", + "src": "2667:64:17", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "nodeType": "VariableDeclarationStatement", - "src": "2480:84:17" + "src": "2647:84:17" }, { "expression": { @@ -5006,12 +5226,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1891, + "id": 1931, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1820, - "src": "2620:5:17", + "referencedDeclaration": 1855, + "src": "2787:5:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5020,14 +5240,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 1892, + "id": 1932, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2627:1:17", + "src": "2794:1:17", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -5037,12 +5257,12 @@ }, { "argumentTypes": null, - "id": 1893, + "id": 1933, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1880, - "src": "2630:4:17", + "referencedDeclaration": 1920, + "src": "2797:4:17", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -5054,18 +5274,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1894, + "id": 1934, "name": "Enum", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 30, - "src": "2636:4:17", + "src": "2803:4:17", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_Enum_$30_$", "typeString": "type(contract Enum)" } }, - "id": 1895, + "id": 1935, "isConstant": false, "isLValue": false, "isPure": false, @@ -5073,13 +5293,13 @@ "memberName": "Operation", "nodeType": "MemberAccess", "referencedDeclaration": 29, - "src": "2636:14:17", + "src": "2803:14:17", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_Operation_$29_$", "typeString": "type(enum Enum.Operation)" } }, - "id": 1896, + "id": 1936, "isConstant": false, "isLValue": false, "isPure": true, @@ -5087,7 +5307,7 @@ "memberName": "Call", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2636:19:17", + "src": "2803:19:17", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -5115,32 +5335,32 @@ ], "expression": { "argumentTypes": null, - "id": 1889, + "id": 1929, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 717, - "src": "2586:7:17", + "referencedDeclaration": 727, + "src": "2753:7:17", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } }, - "id": 1890, + "id": 1930, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "execTransactionFromModule", "nodeType": "MemberAccess", - "referencedDeclaration": 927, - "src": "2586:33:17", + "referencedDeclaration": 945, + "src": "2753:33:17", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation) external returns (bool)" } }, - "id": 1897, + "id": 1937, "isConstant": false, "isLValue": false, "isPure": false, @@ -5148,11 +5368,29 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2586:70:17", + "src": "2753:70:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "436f756c64206e6f74206578656375746520746f6b656e207472616e73666572", + "id": 1938, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2825:34:17", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_00c0b742664159361be6aebbe2af44c4ae7eb95e13260265d1e1cf75d2593709", + "typeString": "literal_string \"Could not execute token transfer\"" + }, + "value": "Could not execute token transfer" } ], "expression": { @@ -5160,23 +5398,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_00c0b742664159361be6aebbe2af44c4ae7eb95e13260265d1e1cf75d2593709", + "typeString": "literal_string \"Could not execute token transfer\"" } ], - "id": 1888, + "id": 1928, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "2578:7:17", + "referencedDeclaration": 2658, + "src": "2745:7:17", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1898, + "id": 1939, "isConstant": false, "isLValue": false, "isPure": false, @@ -5184,25 +5426,25 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2578:79:17", + "src": "2745:115:17", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1899, + "id": 1940, "nodeType": "ExpressionStatement", - "src": "2578:79:17" + "src": "2745:115:17" } ] }, - "id": 1901, + "id": 1942, "nodeType": "IfStatement", - "src": "2340:328:17", + "src": "2471:400:17", "trueBody": { - "id": 1878, + "id": 1918, "nodeType": "Block", - "src": "2356:104:17", + "src": "2487:140:17", "statements": [ { "expression": { @@ -5213,12 +5455,12 @@ "arguments": [ { "argumentTypes": null, - "id": 1869, + "id": 1908, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1822, - "src": "2412:2:17", + "referencedDeclaration": 1857, + "src": "2543:2:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5226,12 +5468,12 @@ }, { "argumentTypes": null, - "id": 1870, + "id": 1909, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1824, - "src": "2416:6:17", + "referencedDeclaration": 1859, + "src": "2547:6:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5240,14 +5482,14 @@ { "argumentTypes": null, "hexValue": "", - "id": 1871, + "id": 1910, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2424:2:17", + "src": "2555:2:17", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470", @@ -5261,18 +5503,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1872, + "id": 1911, "name": "Enum", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 30, - "src": "2428:4:17", + "src": "2559:4:17", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_Enum_$30_$", "typeString": "type(contract Enum)" } }, - "id": 1873, + "id": 1912, "isConstant": false, "isLValue": false, "isPure": false, @@ -5280,13 +5522,13 @@ "memberName": "Operation", "nodeType": "MemberAccess", "referencedDeclaration": 29, - "src": "2428:14:17", + "src": "2559:14:17", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_Operation_$29_$", "typeString": "type(enum Enum.Operation)" } }, - "id": 1874, + "id": 1913, "isConstant": false, "isLValue": false, "isPure": true, @@ -5294,7 +5536,7 @@ "memberName": "Call", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2428:19:17", + "src": "2559:19:17", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -5322,32 +5564,32 @@ ], "expression": { "argumentTypes": null, - "id": 1867, + "id": 1906, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 717, - "src": "2378:7:17", + "referencedDeclaration": 727, + "src": "2509:7:17", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } }, - "id": 1868, + "id": 1907, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "execTransactionFromModule", "nodeType": "MemberAccess", - "referencedDeclaration": 927, - "src": "2378:33:17", + "referencedDeclaration": 945, + "src": "2509:33:17", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation) external returns (bool)" } }, - "id": 1875, + "id": 1914, "isConstant": false, "isLValue": false, "isPure": false, @@ -5355,11 +5597,29 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2378:70:17", + "src": "2509:70:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "436f756c64206e6f742065786563757465206574686572207472616e73666572", + "id": 1915, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2581:34:17", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_2fae53cac084168982e43888b6e5eff084959ab65d511777b56b4cbb265d2586", + "typeString": "literal_string \"Could not execute ether transfer\"" + }, + "value": "Could not execute ether transfer" } ], "expression": { @@ -5367,23 +5627,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_2fae53cac084168982e43888b6e5eff084959ab65d511777b56b4cbb265d2586", + "typeString": "literal_string \"Could not execute ether transfer\"" } ], - "id": 1866, + "id": 1905, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "2370:7:17", + "referencedDeclaration": 2658, + "src": "2501:7:17", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1876, + "id": 1916, "isConstant": false, "isLValue": false, "isPure": false, @@ -5391,15 +5655,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2370:79:17", + "src": "2501:115:17", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1877, + "id": 1917, "nodeType": "ExpressionStatement", - "src": "2370:79:17" + "src": "2501:115:17" } ] } @@ -5407,7 +5671,7 @@ ] }, "documentation": "@dev Returns if Safe transaction is a valid daily limit transaction.\n @param token Address of the token that should be transfered (0 for Ether)\n @param to Address to which the tokens should be transfered\n @param amount Amount of tokens (or Ether) that should be transfered\n @return Returns if transaction can be executed.", - "id": 1903, + "id": 1944, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -5415,15 +5679,15 @@ "name": "executeDailyLimit", "nodeType": "FunctionDefinition", "parameters": { - "id": 1825, + "id": 1860, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1820, + "id": 1855, "name": "token", "nodeType": "VariableDeclaration", - "scope": 1903, + "scope": 1944, "src": "1917:13:17", "stateVariable": false, "storageLocation": "default", @@ -5432,7 +5696,7 @@ "typeString": "address" }, "typeName": { - "id": 1819, + "id": 1854, "name": "address", "nodeType": "ElementaryTypeName", "src": "1917:7:17", @@ -5446,10 +5710,10 @@ }, { "constant": false, - "id": 1822, + "id": 1857, "name": "to", "nodeType": "VariableDeclaration", - "scope": 1903, + "scope": 1944, "src": "1932:10:17", "stateVariable": false, "storageLocation": "default", @@ -5458,7 +5722,7 @@ "typeString": "address" }, "typeName": { - "id": 1821, + "id": 1856, "name": "address", "nodeType": "ElementaryTypeName", "src": "1932:7:17", @@ -5472,10 +5736,10 @@ }, { "constant": false, - "id": 1824, + "id": 1859, "name": "amount", "nodeType": "VariableDeclaration", - "scope": 1903, + "scope": 1944, "src": "1944:14:17", "stateVariable": false, "storageLocation": "default", @@ -5484,7 +5748,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1823, + "id": 1858, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1944:7:17", @@ -5501,50 +5765,50 @@ }, "payable": false, "returnParameters": { - "id": 1826, + "id": 1861, "nodeType": "ParameterList", "parameters": [], "src": "1979:0:17" }, - "scope": 1973, - "src": "1890:784:17", + "scope": 2014, + "src": "1890:987:17", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1958, + "id": 1999, "nodeType": "Block", - "src": "2777:391:17", + "src": "2980:391:17", "statements": [ { "assignments": [ - 1913 + 1954 ], "declarations": [ { "constant": false, - "id": 1913, + "id": 1954, "name": "dailyLimit", "nodeType": "VariableDeclaration", - "scope": 1959, - "src": "2787:29:17", + "scope": 2000, + "src": "2990:29:17", "stateVariable": false, "storageLocation": "storage", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1765_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1800_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit" }, "typeName": { "contractScope": null, - "id": 1912, + "id": 1953, "name": "DailyLimit", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1765, - "src": "2787:10:17", + "referencedDeclaration": 1800, + "src": "2990:10:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1765_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1800_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit" } }, @@ -5552,31 +5816,31 @@ "visibility": "internal" } ], - "id": 1917, + "id": 1958, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1914, + "id": 1955, "name": "dailyLimits", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1758, - "src": "2819:11:17", + "referencedDeclaration": 1793, + "src": "3022:11:17", "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1765_storage_$", + "typeIdentifier": "t_mapping$_t_address_$_t_struct$_DailyLimit_$1800_storage_$", "typeString": "mapping(address => struct DailyLimitModule.DailyLimit storage ref)" } }, - "id": 1916, + "id": 1957, "indexExpression": { "argumentTypes": null, - "id": 1915, + "id": 1956, "name": "token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1905, - "src": "2831:5:17", + "referencedDeclaration": 1946, + "src": "3034:5:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5587,14 +5851,14 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2819:18:17", + "src": "3022:18:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1765_storage", + "typeIdentifier": "t_struct$_DailyLimit_$1800_storage", "typeString": "struct DailyLimitModule.DailyLimit storage ref" } }, "nodeType": "VariableDeclarationStatement", - "src": "2787:50:17" + "src": "2990:50:17" }, { "condition": { @@ -5603,7 +5867,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1922, + "id": 1963, "isConstant": false, "isLValue": false, "isPure": false, @@ -5613,18 +5877,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 1918, + "id": 1959, "name": "today", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1972, - "src": "2851:5:17", + "referencedDeclaration": 2013, + "src": "3054:5:17", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 1919, + "id": 1960, "isConstant": false, "isLValue": false, "isPure": false, @@ -5632,7 +5896,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2851:7:17", + "src": "3054:7:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5644,50 +5908,50 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1920, + "id": 1961, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1913, - "src": "2861:10:17", + "referencedDeclaration": 1954, + "src": "3064:10:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1765_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1800_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, - "id": 1921, + "id": 1962, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "lastDay", "nodeType": "MemberAccess", - "referencedDeclaration": 1764, - "src": "2861:18:17", + "referencedDeclaration": 1799, + "src": "3064:18:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2851:28:17", + "src": "3054:28:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 1937, + "id": 1978, "nodeType": "IfStatement", - "src": "2847:126:17", + "src": "3050:126:17", "trueBody": { - "id": 1936, + "id": 1977, "nodeType": "Block", - "src": "2881:92:17", + "src": "3084:92:17", "statements": [ { "expression": { "argumentTypes": null, - "id": 1928, + "id": 1969, "isConstant": false, "isLValue": false, "isPure": false, @@ -5696,26 +5960,26 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1923, + "id": 1964, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1913, - "src": "2895:10:17", + "referencedDeclaration": 1954, + "src": "3098:10:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1765_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1800_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, - "id": 1925, + "id": 1966, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "lastDay", "nodeType": "MemberAccess", - "referencedDeclaration": 1764, - "src": "2895:18:17", + "referencedDeclaration": 1799, + "src": "3098:18:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5728,18 +5992,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 1926, + "id": 1967, "name": "today", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1972, - "src": "2916:5:17", + "referencedDeclaration": 2013, + "src": "3119:5:17", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 1927, + "id": 1968, "isConstant": false, "isLValue": false, "isPure": false, @@ -5747,26 +6011,26 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2916:7:17", + "src": "3119:7:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2895:28:17", + "src": "3098:28:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1929, + "id": 1970, "nodeType": "ExpressionStatement", - "src": "2895:28:17" + "src": "3098:28:17" }, { "expression": { "argumentTypes": null, - "id": 1934, + "id": 1975, "isConstant": false, "isLValue": false, "isPure": false, @@ -5775,26 +6039,26 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1930, + "id": 1971, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1913, - "src": "2937:10:17", + "referencedDeclaration": 1954, + "src": "3140:10:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1765_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1800_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, - "id": 1932, + "id": 1973, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": true, "memberName": "spentToday", "nodeType": "MemberAccess", - "referencedDeclaration": 1762, - "src": "2937:21:17", + "referencedDeclaration": 1797, + "src": "3140:21:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5805,14 +6069,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "30", - "id": 1933, + "id": 1974, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2961:1:17", + "src": "3164:1:17", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -5820,15 +6084,15 @@ }, "value": "0" }, - "src": "2937:25:17", + "src": "3140:25:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1935, + "id": 1976, "nodeType": "ExpressionStatement", - "src": "2937:25:17" + "src": "3140:25:17" } ] } @@ -5840,7 +6104,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 1952, + "id": 1993, "isConstant": false, "isLValue": false, "isPure": false, @@ -5851,7 +6115,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1944, + "id": 1985, "isConstant": false, "isLValue": false, "isPure": false, @@ -5862,7 +6126,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1941, + "id": 1982, "isConstant": false, "isLValue": false, "isPure": false, @@ -5871,26 +6135,26 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1938, + "id": 1979, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1913, - "src": "2989:10:17", + "referencedDeclaration": 1954, + "src": "3192:10:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1765_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1800_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, - "id": 1939, + "id": 1980, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "spentToday", "nodeType": "MemberAccess", - "referencedDeclaration": 1762, - "src": "2989:21:17", + "referencedDeclaration": 1797, + "src": "3192:21:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5900,18 +6164,18 @@ "operator": "+", "rightExpression": { "argumentTypes": null, - "id": 1940, + "id": 1981, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1907, - "src": "3013:6:17", + "referencedDeclaration": 1948, + "src": "3216:6:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2989:30:17", + "src": "3192:30:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5923,32 +6187,32 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1942, + "id": 1983, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1913, - "src": "3023:10:17", + "referencedDeclaration": 1954, + "src": "3226:10:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1765_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1800_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, - "id": 1943, + "id": 1984, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "dailyLimit", "nodeType": "MemberAccess", - "referencedDeclaration": 1760, - "src": "3023:21:17", + "referencedDeclaration": 1795, + "src": "3226:21:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2989:55:17", + "src": "3192:55:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5962,7 +6226,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1951, + "id": 1992, "isConstant": false, "isLValue": false, "isPure": false, @@ -5973,7 +6237,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1948, + "id": 1989, "isConstant": false, "isLValue": false, "isPure": false, @@ -5982,26 +6246,26 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1945, + "id": 1986, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1913, - "src": "3060:10:17", + "referencedDeclaration": 1954, + "src": "3263:10:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1765_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1800_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, - "id": 1946, + "id": 1987, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "spentToday", "nodeType": "MemberAccess", - "referencedDeclaration": 1762, - "src": "3060:21:17", + "referencedDeclaration": 1797, + "src": "3263:21:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6011,18 +6275,18 @@ "operator": "+", "rightExpression": { "argumentTypes": null, - "id": 1947, + "id": 1988, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1907, - "src": "3084:6:17", + "referencedDeclaration": 1948, + "src": "3287:6:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3060:30:17", + "src": "3263:30:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6034,59 +6298,59 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1949, + "id": 1990, "name": "dailyLimit", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1913, - "src": "3093:10:17", + "referencedDeclaration": 1954, + "src": "3296:10:17", "typeDescriptions": { - "typeIdentifier": "t_struct$_DailyLimit_$1765_storage_ptr", + "typeIdentifier": "t_struct$_DailyLimit_$1800_storage_ptr", "typeString": "struct DailyLimitModule.DailyLimit storage pointer" } }, - "id": 1950, + "id": 1991, "isConstant": false, "isLValue": true, "isPure": false, "lValueRequested": false, "memberName": "spentToday", "nodeType": "MemberAccess", - "referencedDeclaration": 1762, - "src": "3093:21:17", + "referencedDeclaration": 1797, + "src": "3296:21:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3060:54:17", + "src": "3263:54:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "2989:125:17", + "src": "3192:125:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 1955, + "id": 1996, "nodeType": "IfStatement", - "src": "2982:157:17", + "src": "3185:157:17", "trueBody": { "expression": { "argumentTypes": null, "hexValue": "74727565", - "id": 1953, + "id": 1994, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "3135:4:17", + "src": "3338:4:17", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -6094,24 +6358,24 @@ }, "value": "true" }, - "functionReturnParameters": 1911, - "id": 1954, + "functionReturnParameters": 1952, + "id": 1995, "nodeType": "Return", - "src": "3128:11:17" + "src": "3331:11:17" } }, { "expression": { "argumentTypes": null, "hexValue": "66616c7365", - "id": 1956, + "id": 1997, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "3156:5:17", + "src": "3359:5:17", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -6119,15 +6383,15 @@ }, "value": "false" }, - "functionReturnParameters": 1911, - "id": 1957, + "functionReturnParameters": 1952, + "id": 1998, "nodeType": "Return", - "src": "3149:12:17" + "src": "3352:12:17" } ] }, "documentation": null, - "id": 1959, + "id": 2000, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -6135,16 +6399,16 @@ "name": "isUnderLimit", "nodeType": "FunctionDefinition", "parameters": { - "id": 1908, + "id": 1949, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1905, + "id": 1946, "name": "token", "nodeType": "VariableDeclaration", - "scope": 1959, - "src": "2702:13:17", + "scope": 2000, + "src": "2905:13:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6152,10 +6416,10 @@ "typeString": "address" }, "typeName": { - "id": 1904, + "id": 1945, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2702:7:17", + "src": "2905:7:17", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6166,11 +6430,11 @@ }, { "constant": false, - "id": 1907, + "id": 1948, "name": "amount", "nodeType": "VariableDeclaration", - "scope": 1959, - "src": "2717:14:17", + "scope": 2000, + "src": "2920:14:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6178,10 +6442,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1906, + "id": 1947, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2717:7:17", + "src": "2920:7:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6191,20 +6455,20 @@ "visibility": "internal" } ], - "src": "2701:31:17" + "src": "2904:31:17" }, "payable": false, "returnParameters": { - "id": 1911, + "id": 1952, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1910, + "id": 1951, "name": "", "nodeType": "VariableDeclaration", - "scope": 1959, - "src": "2767:4:17", + "scope": 2000, + "src": "2970:4:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6212,10 +6476,10 @@ "typeString": "bool" }, "typeName": { - "id": 1909, + "id": 1950, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "2767:4:17", + "src": "2970:4:17", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6225,19 +6489,19 @@ "visibility": "internal" } ], - "src": "2766:6:17" + "src": "2969:6:17" }, - "scope": 1973, - "src": "2680:488:17", + "scope": 2014, + "src": "2883:488:17", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1971, + "id": 2012, "nodeType": "Block", - "src": "3332:44:17", + "src": "3535:44:17", "statements": [ { "expression": { @@ -6246,19 +6510,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1969, + "id": 2010, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1964, + "id": 2005, "name": "now", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2600, - "src": "3349:3:17", + "referencedDeclaration": 2656, + "src": "3552:3:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6275,19 +6539,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1967, + "id": 2008, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1965, + "id": 2006, "name": "now", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2600, - "src": "3356:3:17", + "referencedDeclaration": 2656, + "src": "3559:3:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6298,14 +6562,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31", - "id": 1966, + "id": 2007, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3362:6:17", + "src": "3565:6:17", "subdenomination": "days", "typeDescriptions": { "typeIdentifier": "t_rational_86400_by_1", @@ -6313,41 +6577,41 @@ }, "value": "1" }, - "src": "3356:12:17", + "src": "3559:12:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } ], - "id": 1968, + "id": 2009, "isConstant": false, "isInlineArray": false, "isLValue": false, "isPure": false, "lValueRequested": false, "nodeType": "TupleExpression", - "src": "3355:14:17", + "src": "3558:14:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3349:20:17", + "src": "3552:20:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 1963, - "id": 1970, + "functionReturnParameters": 2004, + "id": 2011, "nodeType": "Return", - "src": "3342:27:17" + "src": "3545:27:17" } ] }, "documentation": "@dev Returns last midnight as Unix timestamp.\n @return Unix timestamp.", - "id": 1972, + "id": 2013, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -6355,23 +6619,23 @@ "name": "today", "nodeType": "FunctionDefinition", "parameters": { - "id": 1960, + "id": 2001, "nodeType": "ParameterList", "parameters": [], - "src": "3274:2:17" + "src": "3477:2:17" }, "payable": false, "returnParameters": { - "id": 1963, + "id": 2004, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1962, + "id": 2003, "name": "", "nodeType": "VariableDeclaration", - "scope": 1972, - "src": "3322:4:17", + "scope": 2013, + "src": "3525:4:17", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6379,10 +6643,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1961, + "id": 2002, "name": "uint", "nodeType": "ElementaryTypeName", - "src": "3322:4:17", + "src": "3525:4:17", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6392,20 +6656,20 @@ "visibility": "internal" } ], - "src": "3321:6:17" + "src": "3524:6:17" }, - "scope": 1973, - "src": "3260:116:17", + "scope": 2014, + "src": "3463:116:17", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 1974, - "src": "296:3082:17" + "scope": 2015, + "src": "296:3285:17" } ], - "src": "0:3379:17" + "src": "0:3582:17" }, "compiler": { "name": "solc", @@ -6415,22 +6679,16 @@ "4": { "events": {}, "links": {}, - "address": "0x7fbf23d81d86e6d983bb5526e1456a314057ffb0", - "transactionHash": "0x6c99547388ac2e4a058dfefd9a50240efb12fa4b21c127c89dcca96ca3e918d1" - }, - "1527316019334": { - "events": {}, - "links": {}, - "address": "0xc78d5518d62b7a5bd2659c432996dd55ca07f1eb", - "transactionHash": "0xa9c94eb8ff4c3c857211c3b03fa7356009f4952d8cc71d3953be16cd0152a022" + "address": "0xf7c0628a4cc1c38eef958e62bd15576a9a418cdc", + "transactionHash": "0x7b776cf74bc1a0d0a3ecd14727e4c5b7f4d21b791cdb802c39bf86255d574338" }, "1527420696956": { "events": {}, "links": {}, - "address": "0xf289e80fb030333c4b18827149f3148c1597e5cd", - "transactionHash": "0x25e24bddf0042536191b50d1de301cc2aaa3356b6aac5044c793dcbe358a72f9" + "address": "0x557498e7ad8193f837dd25e1c1a056282004314a", + "transactionHash": "0x609ccb6f82d0ea07fe6a3dbe55f81e0b5bf70b08b12a64a681bb2667c0da7713" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-27T11:31:46.254Z" + "updatedAt": "2018-05-28T06:08:59.478Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/DelegateConstructorProxy.json b/safe-contracts/build/contracts/DelegateConstructorProxy.json index 939b532247..581f7cb676 100644 --- a/safe-contracts/build/contracts/DelegateConstructorProxy.json +++ b/safe-contracts/build/contracts/DelegateConstructorProxy.json @@ -50,10 +50,10 @@ "type": "fallback" } ], - "bytecode": "0x608060405234801561001057600080fd5b5060405161026d38038061026d83398101806040528101908080519060200190929190805182019291905050508160008173ffffffffffffffffffffffffffffffffffffffff161415151561006457600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506000815111156100f15773ffffffffffffffffffffffffffffffffffffffff60005416600080835160208501846127105a03f46040513d6000823e60008214156100ed573d81fd5b5050505b505061016b806101026000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461008b5780635c60da1b146100b6575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e6000811415610086573d6000fd5b3d6000f35b34801561009757600080fd5b506100a061010d565b6040518082815260200191505060405180910390f35b3480156100c257600080fd5b506100cb610116565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006002905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a723058205cd4a89651ca60d8b50982ec7e3fbdce37b95b9583ada7bf65fc3dad95a54f750029", - "deployedBytecode": "0x60806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461008b5780635c60da1b146100b6575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e6000811415610086573d6000fd5b3d6000f35b34801561009757600080fd5b506100a061010d565b6040518082815260200191505060405180910390f35b3480156100c257600080fd5b506100cb610116565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006002905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a723058205cd4a89651ca60d8b50982ec7e3fbdce37b95b9583ada7bf65fc3dad95a54f750029", - "sourceMap": "355:882:0:-;;;610:625;8:9:-1;5:2;;;30:1;27;20:12;5:2;610:625:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;668:11;593:1:11;578:11;:16;;;;570:25;;;;;;;;618:11;605:10;;:24;;;;;;;;;;;;;;;;;;508:128;735:1:0;714:11;:18;:22;710:519;;;879:42;875:1;869:8;865:57;1043:1;1040;1026:11;1020:18;1013:4;1000:11;996:22;984:10;976:5;971:3;967:15;954:91;1079:4;1073:11;1124:14;1121:1;1116:3;1101:38;1171:1;1162:7;1159:14;1156:2;;;1188:14;1183:3;1176:27;1156:2;829:390;;;;610:625;;355:882;;;;;;", - "deployedSourceMap": "355:882:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;915:42:11;911:1;905:8;901:57;990:14;987:1;984;971:34;1085:1;1082;1066:14;1063:1;1051:10;1046:3;1033:54;1121:16;1118:1;1115;1100:38;1166:1;1157:7;1154:14;1151:2;;;1181:16;1178:1;1171:27;1151:2;1223:16;1220:1;1213:27;1386:104;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1386:104:11;;;;;;;;;;;;;;;;;;;;;;;1262:118;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1262:118:11;;;;;;;;;;;;;;;;;;;;;;;;;;;1386:104;1452:7;1482:1;1475:8;;1386:104;:::o;1262:118::-;1333:7;1363:10;;;;;;;;;;;1356:17;;1262:118;:::o", + "bytecode": "0x608060405234801561001057600080fd5b506040516102fc3803806102fc83398101806040528101908080519060200190929190805182019291905050508160008173ffffffffffffffffffffffffffffffffffffffff16141515156100f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f496e76616c6964206d617374657220636f707920616464726573732070726f7681526020017f696465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506000815111156101805773ffffffffffffffffffffffffffffffffffffffff60005416600080835160208501846127105a03f46040513d6000823e600082141561017c573d81fd5b5050505b505061016b806101916000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461008b5780635c60da1b146100b6575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e6000811415610086573d6000fd5b3d6000f35b34801561009757600080fd5b506100a061010d565b6040518082815260200191505060405180910390f35b3480156100c257600080fd5b506100cb610116565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006002905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a72305820bab5357556c704bffef0f96326dd27742408be175057ffd8f4f58237314cfd520029", + "deployedBytecode": "0x60806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461008b5780635c60da1b146100b6575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e6000811415610086573d6000fd5b3d6000f35b34801561009757600080fd5b506100a061010d565b6040518082815260200191505060405180910390f35b3480156100c257600080fd5b506100cb610116565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006002905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a72305820bab5357556c704bffef0f96326dd27742408be175057ffd8f4f58237314cfd520029", + "sourceMap": "355:882:0:-;;;610:625;8:9:-1;5:2;;;30:1;27;20:12;5:2;610:625:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;668:11;593:1:11;578:11;:16;;;;570:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;658:11;645:10;;:24;;;;;;;;;;;;;;;;;;508:168;735:1:0;714:11;:18;:22;710:519;;;879:42;875:1;869:8;865:57;1043:1;1040;1026:11;1020:18;1013:4;1000:11;996:22;984:10;976:5;971:3;967:15;954:91;1079:4;1073:11;1124:14;1121:1;1116:3;1101:38;1171:1;1162:7;1159:14;1156:2;;;1188:14;1183:3;1176:27;1156:2;829:390;;;;610:625;;355:882;;;;;;", + "deployedSourceMap": "355:882:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;955:42:11;951:1;945:8;941:57;1030:14;1027:1;1024;1011:34;1125:1;1122;1106:14;1103:1;1091:10;1086:3;1073:54;1161:16;1158:1;1155;1140:38;1206:1;1197:7;1194:14;1191:2;;;1221:16;1218:1;1211:27;1191:2;1263:16;1260:1;1253:27;1426:104;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1426:104:11;;;;;;;;;;;;;;;;;;;;;;;1302:118;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1302:118:11;;;;;;;;;;;;;;;;;;;;;;;;;;;1426:104;1492:7;1522:1;1515:8;;1426:104;:::o;1302:118::-;1373:7;1403:10;;;;;;;;;;;1396:17;;1302:118;:::o", "source": "pragma solidity 0.4.24;\nimport \"./Proxy.sol\";\n\n\n/// @title Delegate Constructor Proxy - Generic proxy contract allows to execute all transactions applying the code of a master contract. It is possible to send along initialization data with the constructor.\n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract DelegateConstructorProxy is Proxy {\n\n /// @dev Constructor function sets address of master copy contract.\n /// @param _masterCopy Master copy address.\n /// @param initializer Data used for a delegate call to initialize the contract.\n constructor(address _masterCopy, bytes initializer) Proxy(_masterCopy)\n public\n {\n if (initializer.length > 0) {\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n let masterCopy := and(sload(0), 0xffffffffffffffffffffffffffffffffffffffff)\n let success := delegatecall(sub(gas, 10000), masterCopy, add(initializer, 0x20), mload(initializer), 0, 0)\n let ptr := mload(0x40)\n returndatacopy(ptr, 0, returndatasize)\n if eq(success, 0) { revert(ptr, returndatasize) }\n }\n }\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/DelegateConstructorProxy.sol", "ast": { @@ -82,7 +82,7 @@ "id": 2, "nodeType": "ImportDirective", "scope": 24, - "sourceUnit": 1569, + "sourceUnit": 1603, "src": "24:21:0", "symbolAliases": [], "unitAlias": "" @@ -96,10 +96,10 @@ "id": 3, "name": "Proxy", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1568, + "referencedDeclaration": 1602, "src": "392:5:0", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1568", + "typeIdentifier": "t_contract$_Proxy_$1602", "typeString": "contract Proxy" } }, @@ -109,7 +109,7 @@ } ], "contractDependencies": [ - 1568 + 1602 ], "contractKind": "contract", "documentation": "@title Delegate Constructor Proxy - Generic proxy contract allows to execute all transactions applying the code of a master contract. It is possible to send along initialization data with the constructor.\n @author Stefan George - \n @author Richard Meissner - ", @@ -117,7 +117,7 @@ "id": 23, "linearizedBaseContracts": [ 23, - 1568 + 1602 ], "name": "DelegateConstructorProxy", "nodeType": "ContractDefinition", @@ -264,10 +264,10 @@ "name": "Proxy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1568, + "referencedDeclaration": 1602, "src": "662:5:0", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Proxy_$1568_$", + "typeIdentifier": "t_type$_t_contract$_Proxy_$1602_$", "typeString": "type(contract Proxy)" } }, @@ -382,7 +382,7 @@ "id": 2, "nodeType": "ImportDirective", "scope": 24, - "sourceUnit": 1569, + "sourceUnit": 1603, "src": "24:21:0", "symbolAliases": [], "unitAlias": "" @@ -396,10 +396,10 @@ "id": 3, "name": "Proxy", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1568, + "referencedDeclaration": 1602, "src": "392:5:0", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1568", + "typeIdentifier": "t_contract$_Proxy_$1602", "typeString": "contract Proxy" } }, @@ -409,7 +409,7 @@ } ], "contractDependencies": [ - 1568 + 1602 ], "contractKind": "contract", "documentation": "@title Delegate Constructor Proxy - Generic proxy contract allows to execute all transactions applying the code of a master contract. It is possible to send along initialization data with the constructor.\n @author Stefan George - \n @author Richard Meissner - ", @@ -417,7 +417,7 @@ "id": 23, "linearizedBaseContracts": [ 23, - 1568 + 1602 ], "name": "DelegateConstructorProxy", "nodeType": "ContractDefinition", @@ -564,10 +564,10 @@ "name": "Proxy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1568, + "referencedDeclaration": 1602, "src": "662:5:0", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Proxy_$1568_$", + "typeIdentifier": "t_type$_t_contract$_Proxy_$1602_$", "typeString": "type(contract Proxy)" } }, @@ -662,5 +662,5 @@ }, "networks": {}, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-27T11:12:45.574Z" + "updatedAt": "2018-05-28T05:59:52.697Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/ERC20Token.json b/safe-contracts/build/contracts/ERC20Token.json index 406c841d47..9277a225ba 100644 --- a/safe-contracts/build/contracts/ERC20Token.json +++ b/safe-contracts/build/contracts/ERC20Token.json @@ -185,14 +185,14 @@ "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/interfaces/ERC20Token.sol", "exportedSymbols": { "ERC20Token": [ - 1685 + 1720 ] }, - "id": 1686, + "id": 1721, "nodeType": "SourceUnit", "nodes": [ { - "id": 1621, + "id": 1656, "literals": [ "solidity", "^", @@ -208,19 +208,19 @@ "contractKind": "contract", "documentation": null, "fullyImplemented": false, - "id": 1685, + "id": 1720, "linearizedBaseContracts": [ - 1685 + 1720 ], "name": "ERC20Token", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, - "id": 1623, + "id": 1658, "name": "totalSupply", "nodeType": "VariableDeclaration", - "scope": 1685, + "scope": 1720, "src": "616:26:14", "stateVariable": true, "storageLocation": "default", @@ -229,7 +229,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1622, + "id": 1657, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "616:7:14", @@ -244,7 +244,7 @@ { "body": null, "documentation": "@param _owner The address from which the balance will be retrieved\n @return The balance", - "id": 1630, + "id": 1665, "implemented": false, "isConstructor": false, "isDeclaredConst": true, @@ -252,15 +252,15 @@ "name": "balanceOf", "nodeType": "FunctionDefinition", "parameters": { - "id": 1626, + "id": 1661, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1625, + "id": 1660, "name": "_owner", "nodeType": "VariableDeclaration", - "scope": 1630, + "scope": 1665, "src": "771:14:14", "stateVariable": false, "storageLocation": "default", @@ -269,7 +269,7 @@ "typeString": "address" }, "typeName": { - "id": 1624, + "id": 1659, "name": "address", "nodeType": "ElementaryTypeName", "src": "771:7:14", @@ -286,15 +286,15 @@ }, "payable": false, "returnParameters": { - "id": 1629, + "id": 1664, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1628, + "id": 1663, "name": "balance", "nodeType": "VariableDeclaration", - "scope": 1630, + "scope": 1665, "src": "812:15:14", "stateVariable": false, "storageLocation": "default", @@ -303,7 +303,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1627, + "id": 1662, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "812:7:14", @@ -318,7 +318,7 @@ ], "src": "811:17:14" }, - "scope": 1685, + "scope": 1720, "src": "752:77:14", "stateMutability": "view", "superFunction": null, @@ -327,7 +327,7 @@ { "body": null, "documentation": "@notice send `_value` token to `_to` from `msg.sender`\n @param _to The address of the recipient\n @param _value The amount of token to be transferred\n @return Whether the transfer was successful or not", - "id": 1639, + "id": 1674, "implemented": false, "isConstructor": false, "isDeclaredConst": false, @@ -335,15 +335,15 @@ "name": "transfer", "nodeType": "FunctionDefinition", "parameters": { - "id": 1635, + "id": 1670, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1632, + "id": 1667, "name": "_to", "nodeType": "VariableDeclaration", - "scope": 1639, + "scope": 1674, "src": "1083:11:14", "stateVariable": false, "storageLocation": "default", @@ -352,7 +352,7 @@ "typeString": "address" }, "typeName": { - "id": 1631, + "id": 1666, "name": "address", "nodeType": "ElementaryTypeName", "src": "1083:7:14", @@ -366,10 +366,10 @@ }, { "constant": false, - "id": 1634, + "id": 1669, "name": "_value", "nodeType": "VariableDeclaration", - "scope": 1639, + "scope": 1674, "src": "1096:14:14", "stateVariable": false, "storageLocation": "default", @@ -378,7 +378,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1633, + "id": 1668, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1096:7:14", @@ -395,15 +395,15 @@ }, "payable": false, "returnParameters": { - "id": 1638, + "id": 1673, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1637, + "id": 1672, "name": "success", "nodeType": "VariableDeclaration", - "scope": 1639, + "scope": 1674, "src": "1128:12:14", "stateVariable": false, "storageLocation": "default", @@ -412,7 +412,7 @@ "typeString": "bool" }, "typeName": { - "id": 1636, + "id": 1671, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1128:4:14", @@ -427,7 +427,7 @@ ], "src": "1127:14:14" }, - "scope": 1685, + "scope": 1720, "src": "1065:77:14", "stateMutability": "nonpayable", "superFunction": null, @@ -436,7 +436,7 @@ { "body": null, "documentation": "@notice send `_value` token to `_to` from `_from` on the condition it is approved by `_from`\n @param _from The address of the sender\n @param _to The address of the recipient\n @param _value The amount of token to be transferred\n @return Whether the transfer was successful or not", - "id": 1650, + "id": 1685, "implemented": false, "isConstructor": false, "isDeclaredConst": false, @@ -444,15 +444,15 @@ "name": "transferFrom", "nodeType": "FunctionDefinition", "parameters": { - "id": 1646, + "id": 1681, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1641, + "id": 1676, "name": "_from", "nodeType": "VariableDeclaration", - "scope": 1650, + "scope": 1685, "src": "1485:13:14", "stateVariable": false, "storageLocation": "default", @@ -461,7 +461,7 @@ "typeString": "address" }, "typeName": { - "id": 1640, + "id": 1675, "name": "address", "nodeType": "ElementaryTypeName", "src": "1485:7:14", @@ -475,10 +475,10 @@ }, { "constant": false, - "id": 1643, + "id": 1678, "name": "_to", "nodeType": "VariableDeclaration", - "scope": 1650, + "scope": 1685, "src": "1500:11:14", "stateVariable": false, "storageLocation": "default", @@ -487,7 +487,7 @@ "typeString": "address" }, "typeName": { - "id": 1642, + "id": 1677, "name": "address", "nodeType": "ElementaryTypeName", "src": "1500:7:14", @@ -501,10 +501,10 @@ }, { "constant": false, - "id": 1645, + "id": 1680, "name": "_value", "nodeType": "VariableDeclaration", - "scope": 1650, + "scope": 1685, "src": "1513:14:14", "stateVariable": false, "storageLocation": "default", @@ -513,7 +513,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1644, + "id": 1679, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1513:7:14", @@ -530,15 +530,15 @@ }, "payable": false, "returnParameters": { - "id": 1649, + "id": 1684, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1648, + "id": 1683, "name": "success", "nodeType": "VariableDeclaration", - "scope": 1650, + "scope": 1685, "src": "1545:12:14", "stateVariable": false, "storageLocation": "default", @@ -547,7 +547,7 @@ "typeString": "bool" }, "typeName": { - "id": 1647, + "id": 1682, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1545:4:14", @@ -562,7 +562,7 @@ ], "src": "1544:14:14" }, - "scope": 1685, + "scope": 1720, "src": "1463:96:14", "stateMutability": "nonpayable", "superFunction": null, @@ -571,7 +571,7 @@ { "body": null, "documentation": "@notice `msg.sender` approves `_spender` to spend `_value` tokens\n @param _spender The address of the account able to transfer the tokens\n @param _value The amount of tokens to be approved for transfer\n @return Whether the approval was successful or not", - "id": 1659, + "id": 1694, "implemented": false, "isConstructor": false, "isDeclaredConst": false, @@ -579,15 +579,15 @@ "name": "approve", "nodeType": "FunctionDefinition", "parameters": { - "id": 1655, + "id": 1690, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1652, + "id": 1687, "name": "_spender", "nodeType": "VariableDeclaration", - "scope": 1659, + "scope": 1694, "src": "1865:16:14", "stateVariable": false, "storageLocation": "default", @@ -596,7 +596,7 @@ "typeString": "address" }, "typeName": { - "id": 1651, + "id": 1686, "name": "address", "nodeType": "ElementaryTypeName", "src": "1865:7:14", @@ -610,10 +610,10 @@ }, { "constant": false, - "id": 1654, + "id": 1689, "name": "_value", "nodeType": "VariableDeclaration", - "scope": 1659, + "scope": 1694, "src": "1883:14:14", "stateVariable": false, "storageLocation": "default", @@ -622,7 +622,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1653, + "id": 1688, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1883:7:14", @@ -639,15 +639,15 @@ }, "payable": false, "returnParameters": { - "id": 1658, + "id": 1693, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1657, + "id": 1692, "name": "success", "nodeType": "VariableDeclaration", - "scope": 1659, + "scope": 1694, "src": "1915:12:14", "stateVariable": false, "storageLocation": "default", @@ -656,7 +656,7 @@ "typeString": "bool" }, "typeName": { - "id": 1656, + "id": 1691, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1915:4:14", @@ -671,7 +671,7 @@ ], "src": "1914:14:14" }, - "scope": 1685, + "scope": 1720, "src": "1848:81:14", "stateMutability": "nonpayable", "superFunction": null, @@ -680,7 +680,7 @@ { "body": null, "documentation": "@param _owner The address of the account owning tokens\n @param _spender The address of the account able to transfer the tokens\n @return Amount of remaining tokens allowed to spent", - "id": 1668, + "id": 1703, "implemented": false, "isConstructor": false, "isDeclaredConst": true, @@ -688,15 +688,15 @@ "name": "allowance", "nodeType": "FunctionDefinition", "parameters": { - "id": 1664, + "id": 1699, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1661, + "id": 1696, "name": "_owner", "nodeType": "VariableDeclaration", - "scope": 1668, + "scope": 1703, "src": "2156:14:14", "stateVariable": false, "storageLocation": "default", @@ -705,7 +705,7 @@ "typeString": "address" }, "typeName": { - "id": 1660, + "id": 1695, "name": "address", "nodeType": "ElementaryTypeName", "src": "2156:7:14", @@ -719,10 +719,10 @@ }, { "constant": false, - "id": 1663, + "id": 1698, "name": "_spender", "nodeType": "VariableDeclaration", - "scope": 1668, + "scope": 1703, "src": "2172:16:14", "stateVariable": false, "storageLocation": "default", @@ -731,7 +731,7 @@ "typeString": "address" }, "typeName": { - "id": 1662, + "id": 1697, "name": "address", "nodeType": "ElementaryTypeName", "src": "2172:7:14", @@ -748,15 +748,15 @@ }, "payable": false, "returnParameters": { - "id": 1667, + "id": 1702, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1666, + "id": 1701, "name": "remaining", "nodeType": "VariableDeclaration", - "scope": 1668, + "scope": 1703, "src": "2215:17:14", "stateVariable": false, "storageLocation": "default", @@ -765,7 +765,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1665, + "id": 1700, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2215:7:14", @@ -780,7 +780,7 @@ ], "src": "2214:19:14" }, - "scope": 1685, + "scope": 1720, "src": "2137:97:14", "stateMutability": "view", "superFunction": null, @@ -789,20 +789,20 @@ { "anonymous": false, "documentation": null, - "id": 1676, + "id": 1711, "name": "Transfer", "nodeType": "EventDefinition", "parameters": { - "id": 1675, + "id": 1710, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1670, + "id": 1705, "indexed": true, "name": "_from", "nodeType": "VariableDeclaration", - "scope": 1676, + "scope": 1711, "src": "2255:21:14", "stateVariable": false, "storageLocation": "default", @@ -811,7 +811,7 @@ "typeString": "address" }, "typeName": { - "id": 1669, + "id": 1704, "name": "address", "nodeType": "ElementaryTypeName", "src": "2255:7:14", @@ -825,11 +825,11 @@ }, { "constant": false, - "id": 1672, + "id": 1707, "indexed": true, "name": "_to", "nodeType": "VariableDeclaration", - "scope": 1676, + "scope": 1711, "src": "2278:19:14", "stateVariable": false, "storageLocation": "default", @@ -838,7 +838,7 @@ "typeString": "address" }, "typeName": { - "id": 1671, + "id": 1706, "name": "address", "nodeType": "ElementaryTypeName", "src": "2278:7:14", @@ -852,11 +852,11 @@ }, { "constant": false, - "id": 1674, + "id": 1709, "indexed": false, "name": "_value", "nodeType": "VariableDeclaration", - "scope": 1676, + "scope": 1711, "src": "2299:14:14", "stateVariable": false, "storageLocation": "default", @@ -865,7 +865,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1673, + "id": 1708, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2299:7:14", @@ -885,20 +885,20 @@ { "anonymous": false, "documentation": null, - "id": 1684, + "id": 1719, "name": "Approval", "nodeType": "EventDefinition", "parameters": { - "id": 1683, + "id": 1718, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1678, + "id": 1713, "indexed": true, "name": "_owner", "nodeType": "VariableDeclaration", - "scope": 1684, + "scope": 1719, "src": "2335:22:14", "stateVariable": false, "storageLocation": "default", @@ -907,7 +907,7 @@ "typeString": "address" }, "typeName": { - "id": 1677, + "id": 1712, "name": "address", "nodeType": "ElementaryTypeName", "src": "2335:7:14", @@ -921,11 +921,11 @@ }, { "constant": false, - "id": 1680, + "id": 1715, "indexed": true, "name": "_spender", "nodeType": "VariableDeclaration", - "scope": 1684, + "scope": 1719, "src": "2359:24:14", "stateVariable": false, "storageLocation": "default", @@ -934,7 +934,7 @@ "typeString": "address" }, "typeName": { - "id": 1679, + "id": 1714, "name": "address", "nodeType": "ElementaryTypeName", "src": "2359:7:14", @@ -948,11 +948,11 @@ }, { "constant": false, - "id": 1682, + "id": 1717, "indexed": false, "name": "_value", "nodeType": "VariableDeclaration", - "scope": 1684, + "scope": 1719, "src": "2385:14:14", "stateVariable": false, "storageLocation": "default", @@ -961,7 +961,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1681, + "id": 1716, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2385:7:14", @@ -979,7 +979,7 @@ "src": "2320:81:14" } ], - "scope": 1686, + "scope": 1721, "src": "129:2274:14" } ], @@ -989,14 +989,14 @@ "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/interfaces/ERC20Token.sol", "exportedSymbols": { "ERC20Token": [ - 1685 + 1720 ] }, - "id": 1686, + "id": 1721, "nodeType": "SourceUnit", "nodes": [ { - "id": 1621, + "id": 1656, "literals": [ "solidity", "^", @@ -1012,19 +1012,19 @@ "contractKind": "contract", "documentation": null, "fullyImplemented": false, - "id": 1685, + "id": 1720, "linearizedBaseContracts": [ - 1685 + 1720 ], "name": "ERC20Token", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, - "id": 1623, + "id": 1658, "name": "totalSupply", "nodeType": "VariableDeclaration", - "scope": 1685, + "scope": 1720, "src": "616:26:14", "stateVariable": true, "storageLocation": "default", @@ -1033,7 +1033,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1622, + "id": 1657, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "616:7:14", @@ -1048,7 +1048,7 @@ { "body": null, "documentation": "@param _owner The address from which the balance will be retrieved\n @return The balance", - "id": 1630, + "id": 1665, "implemented": false, "isConstructor": false, "isDeclaredConst": true, @@ -1056,15 +1056,15 @@ "name": "balanceOf", "nodeType": "FunctionDefinition", "parameters": { - "id": 1626, + "id": 1661, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1625, + "id": 1660, "name": "_owner", "nodeType": "VariableDeclaration", - "scope": 1630, + "scope": 1665, "src": "771:14:14", "stateVariable": false, "storageLocation": "default", @@ -1073,7 +1073,7 @@ "typeString": "address" }, "typeName": { - "id": 1624, + "id": 1659, "name": "address", "nodeType": "ElementaryTypeName", "src": "771:7:14", @@ -1090,15 +1090,15 @@ }, "payable": false, "returnParameters": { - "id": 1629, + "id": 1664, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1628, + "id": 1663, "name": "balance", "nodeType": "VariableDeclaration", - "scope": 1630, + "scope": 1665, "src": "812:15:14", "stateVariable": false, "storageLocation": "default", @@ -1107,7 +1107,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1627, + "id": 1662, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "812:7:14", @@ -1122,7 +1122,7 @@ ], "src": "811:17:14" }, - "scope": 1685, + "scope": 1720, "src": "752:77:14", "stateMutability": "view", "superFunction": null, @@ -1131,7 +1131,7 @@ { "body": null, "documentation": "@notice send `_value` token to `_to` from `msg.sender`\n @param _to The address of the recipient\n @param _value The amount of token to be transferred\n @return Whether the transfer was successful or not", - "id": 1639, + "id": 1674, "implemented": false, "isConstructor": false, "isDeclaredConst": false, @@ -1139,15 +1139,15 @@ "name": "transfer", "nodeType": "FunctionDefinition", "parameters": { - "id": 1635, + "id": 1670, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1632, + "id": 1667, "name": "_to", "nodeType": "VariableDeclaration", - "scope": 1639, + "scope": 1674, "src": "1083:11:14", "stateVariable": false, "storageLocation": "default", @@ -1156,7 +1156,7 @@ "typeString": "address" }, "typeName": { - "id": 1631, + "id": 1666, "name": "address", "nodeType": "ElementaryTypeName", "src": "1083:7:14", @@ -1170,10 +1170,10 @@ }, { "constant": false, - "id": 1634, + "id": 1669, "name": "_value", "nodeType": "VariableDeclaration", - "scope": 1639, + "scope": 1674, "src": "1096:14:14", "stateVariable": false, "storageLocation": "default", @@ -1182,7 +1182,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1633, + "id": 1668, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1096:7:14", @@ -1199,15 +1199,15 @@ }, "payable": false, "returnParameters": { - "id": 1638, + "id": 1673, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1637, + "id": 1672, "name": "success", "nodeType": "VariableDeclaration", - "scope": 1639, + "scope": 1674, "src": "1128:12:14", "stateVariable": false, "storageLocation": "default", @@ -1216,7 +1216,7 @@ "typeString": "bool" }, "typeName": { - "id": 1636, + "id": 1671, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1128:4:14", @@ -1231,7 +1231,7 @@ ], "src": "1127:14:14" }, - "scope": 1685, + "scope": 1720, "src": "1065:77:14", "stateMutability": "nonpayable", "superFunction": null, @@ -1240,7 +1240,7 @@ { "body": null, "documentation": "@notice send `_value` token to `_to` from `_from` on the condition it is approved by `_from`\n @param _from The address of the sender\n @param _to The address of the recipient\n @param _value The amount of token to be transferred\n @return Whether the transfer was successful or not", - "id": 1650, + "id": 1685, "implemented": false, "isConstructor": false, "isDeclaredConst": false, @@ -1248,15 +1248,15 @@ "name": "transferFrom", "nodeType": "FunctionDefinition", "parameters": { - "id": 1646, + "id": 1681, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1641, + "id": 1676, "name": "_from", "nodeType": "VariableDeclaration", - "scope": 1650, + "scope": 1685, "src": "1485:13:14", "stateVariable": false, "storageLocation": "default", @@ -1265,7 +1265,7 @@ "typeString": "address" }, "typeName": { - "id": 1640, + "id": 1675, "name": "address", "nodeType": "ElementaryTypeName", "src": "1485:7:14", @@ -1279,10 +1279,10 @@ }, { "constant": false, - "id": 1643, + "id": 1678, "name": "_to", "nodeType": "VariableDeclaration", - "scope": 1650, + "scope": 1685, "src": "1500:11:14", "stateVariable": false, "storageLocation": "default", @@ -1291,7 +1291,7 @@ "typeString": "address" }, "typeName": { - "id": 1642, + "id": 1677, "name": "address", "nodeType": "ElementaryTypeName", "src": "1500:7:14", @@ -1305,10 +1305,10 @@ }, { "constant": false, - "id": 1645, + "id": 1680, "name": "_value", "nodeType": "VariableDeclaration", - "scope": 1650, + "scope": 1685, "src": "1513:14:14", "stateVariable": false, "storageLocation": "default", @@ -1317,7 +1317,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1644, + "id": 1679, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1513:7:14", @@ -1334,15 +1334,15 @@ }, "payable": false, "returnParameters": { - "id": 1649, + "id": 1684, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1648, + "id": 1683, "name": "success", "nodeType": "VariableDeclaration", - "scope": 1650, + "scope": 1685, "src": "1545:12:14", "stateVariable": false, "storageLocation": "default", @@ -1351,7 +1351,7 @@ "typeString": "bool" }, "typeName": { - "id": 1647, + "id": 1682, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1545:4:14", @@ -1366,7 +1366,7 @@ ], "src": "1544:14:14" }, - "scope": 1685, + "scope": 1720, "src": "1463:96:14", "stateMutability": "nonpayable", "superFunction": null, @@ -1375,7 +1375,7 @@ { "body": null, "documentation": "@notice `msg.sender` approves `_spender` to spend `_value` tokens\n @param _spender The address of the account able to transfer the tokens\n @param _value The amount of tokens to be approved for transfer\n @return Whether the approval was successful or not", - "id": 1659, + "id": 1694, "implemented": false, "isConstructor": false, "isDeclaredConst": false, @@ -1383,15 +1383,15 @@ "name": "approve", "nodeType": "FunctionDefinition", "parameters": { - "id": 1655, + "id": 1690, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1652, + "id": 1687, "name": "_spender", "nodeType": "VariableDeclaration", - "scope": 1659, + "scope": 1694, "src": "1865:16:14", "stateVariable": false, "storageLocation": "default", @@ -1400,7 +1400,7 @@ "typeString": "address" }, "typeName": { - "id": 1651, + "id": 1686, "name": "address", "nodeType": "ElementaryTypeName", "src": "1865:7:14", @@ -1414,10 +1414,10 @@ }, { "constant": false, - "id": 1654, + "id": 1689, "name": "_value", "nodeType": "VariableDeclaration", - "scope": 1659, + "scope": 1694, "src": "1883:14:14", "stateVariable": false, "storageLocation": "default", @@ -1426,7 +1426,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1653, + "id": 1688, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1883:7:14", @@ -1443,15 +1443,15 @@ }, "payable": false, "returnParameters": { - "id": 1658, + "id": 1693, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1657, + "id": 1692, "name": "success", "nodeType": "VariableDeclaration", - "scope": 1659, + "scope": 1694, "src": "1915:12:14", "stateVariable": false, "storageLocation": "default", @@ -1460,7 +1460,7 @@ "typeString": "bool" }, "typeName": { - "id": 1656, + "id": 1691, "name": "bool", "nodeType": "ElementaryTypeName", "src": "1915:4:14", @@ -1475,7 +1475,7 @@ ], "src": "1914:14:14" }, - "scope": 1685, + "scope": 1720, "src": "1848:81:14", "stateMutability": "nonpayable", "superFunction": null, @@ -1484,7 +1484,7 @@ { "body": null, "documentation": "@param _owner The address of the account owning tokens\n @param _spender The address of the account able to transfer the tokens\n @return Amount of remaining tokens allowed to spent", - "id": 1668, + "id": 1703, "implemented": false, "isConstructor": false, "isDeclaredConst": true, @@ -1492,15 +1492,15 @@ "name": "allowance", "nodeType": "FunctionDefinition", "parameters": { - "id": 1664, + "id": 1699, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1661, + "id": 1696, "name": "_owner", "nodeType": "VariableDeclaration", - "scope": 1668, + "scope": 1703, "src": "2156:14:14", "stateVariable": false, "storageLocation": "default", @@ -1509,7 +1509,7 @@ "typeString": "address" }, "typeName": { - "id": 1660, + "id": 1695, "name": "address", "nodeType": "ElementaryTypeName", "src": "2156:7:14", @@ -1523,10 +1523,10 @@ }, { "constant": false, - "id": 1663, + "id": 1698, "name": "_spender", "nodeType": "VariableDeclaration", - "scope": 1668, + "scope": 1703, "src": "2172:16:14", "stateVariable": false, "storageLocation": "default", @@ -1535,7 +1535,7 @@ "typeString": "address" }, "typeName": { - "id": 1662, + "id": 1697, "name": "address", "nodeType": "ElementaryTypeName", "src": "2172:7:14", @@ -1552,15 +1552,15 @@ }, "payable": false, "returnParameters": { - "id": 1667, + "id": 1702, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1666, + "id": 1701, "name": "remaining", "nodeType": "VariableDeclaration", - "scope": 1668, + "scope": 1703, "src": "2215:17:14", "stateVariable": false, "storageLocation": "default", @@ -1569,7 +1569,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1665, + "id": 1700, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2215:7:14", @@ -1584,7 +1584,7 @@ ], "src": "2214:19:14" }, - "scope": 1685, + "scope": 1720, "src": "2137:97:14", "stateMutability": "view", "superFunction": null, @@ -1593,20 +1593,20 @@ { "anonymous": false, "documentation": null, - "id": 1676, + "id": 1711, "name": "Transfer", "nodeType": "EventDefinition", "parameters": { - "id": 1675, + "id": 1710, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1670, + "id": 1705, "indexed": true, "name": "_from", "nodeType": "VariableDeclaration", - "scope": 1676, + "scope": 1711, "src": "2255:21:14", "stateVariable": false, "storageLocation": "default", @@ -1615,7 +1615,7 @@ "typeString": "address" }, "typeName": { - "id": 1669, + "id": 1704, "name": "address", "nodeType": "ElementaryTypeName", "src": "2255:7:14", @@ -1629,11 +1629,11 @@ }, { "constant": false, - "id": 1672, + "id": 1707, "indexed": true, "name": "_to", "nodeType": "VariableDeclaration", - "scope": 1676, + "scope": 1711, "src": "2278:19:14", "stateVariable": false, "storageLocation": "default", @@ -1642,7 +1642,7 @@ "typeString": "address" }, "typeName": { - "id": 1671, + "id": 1706, "name": "address", "nodeType": "ElementaryTypeName", "src": "2278:7:14", @@ -1656,11 +1656,11 @@ }, { "constant": false, - "id": 1674, + "id": 1709, "indexed": false, "name": "_value", "nodeType": "VariableDeclaration", - "scope": 1676, + "scope": 1711, "src": "2299:14:14", "stateVariable": false, "storageLocation": "default", @@ -1669,7 +1669,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1673, + "id": 1708, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2299:7:14", @@ -1689,20 +1689,20 @@ { "anonymous": false, "documentation": null, - "id": 1684, + "id": 1719, "name": "Approval", "nodeType": "EventDefinition", "parameters": { - "id": 1683, + "id": 1718, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1678, + "id": 1713, "indexed": true, "name": "_owner", "nodeType": "VariableDeclaration", - "scope": 1684, + "scope": 1719, "src": "2335:22:14", "stateVariable": false, "storageLocation": "default", @@ -1711,7 +1711,7 @@ "typeString": "address" }, "typeName": { - "id": 1677, + "id": 1712, "name": "address", "nodeType": "ElementaryTypeName", "src": "2335:7:14", @@ -1725,11 +1725,11 @@ }, { "constant": false, - "id": 1680, + "id": 1715, "indexed": true, "name": "_spender", "nodeType": "VariableDeclaration", - "scope": 1684, + "scope": 1719, "src": "2359:24:14", "stateVariable": false, "storageLocation": "default", @@ -1738,7 +1738,7 @@ "typeString": "address" }, "typeName": { - "id": 1679, + "id": 1714, "name": "address", "nodeType": "ElementaryTypeName", "src": "2359:7:14", @@ -1752,11 +1752,11 @@ }, { "constant": false, - "id": 1682, + "id": 1717, "indexed": false, "name": "_value", "nodeType": "VariableDeclaration", - "scope": 1684, + "scope": 1719, "src": "2385:14:14", "stateVariable": false, "storageLocation": "default", @@ -1765,7 +1765,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1681, + "id": 1716, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "2385:7:14", @@ -1783,7 +1783,7 @@ "src": "2320:81:14" } ], - "scope": 1686, + "scope": 1721, "src": "129:2274:14" } ], @@ -1795,5 +1795,5 @@ }, "networks": {}, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-27T11:12:45.584Z" + "updatedAt": "2018-05-28T05:59:52.707Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/Enum.json b/safe-contracts/build/contracts/Enum.json index 94e98a6e03..fe2d43fd09 100644 --- a/safe-contracts/build/contracts/Enum.json +++ b/safe-contracts/build/contracts/Enum.json @@ -147,5 +147,5 @@ }, "networks": {}, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-27T11:12:45.575Z" + "updatedAt": "2018-05-28T05:59:52.697Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/GnosisSafe.json b/safe-contracts/build/contracts/GnosisSafe.json index 26770b8b50..1c65be8215 100644 --- a/safe-contracts/build/contracts/GnosisSafe.json +++ b/safe-contracts/build/contracts/GnosisSafe.json @@ -301,10 +301,10 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50612100806100206000396000f3006080604052600436106100e6576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632f54bf6e146100e8578063468721a714610143578063610b5925146101fb57806385e332cd1461023e57806386040aa9146102955780638cff635514610305578063a04222e11461035c578063a0e67e2b14610435578063a3f4df7e146104a1578063b2494df314610531578063b7f3358d1461059d578063b91a667f146105cd578063e009cfde1461061d578063e318b52b14610680578063e75235b814610703578063ffa1ad7414610734575b005b3480156100f457600080fd5b50610129600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107c4565b604051808215151515815260200191505060405180910390f35b34801561014f57600080fd5b506101e1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050610846565b604051808215151515815260200191505060405180910390f35b34801561020757600080fd5b5061023c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506108e2565b005b34801561024a57600080fd5b50610253610b5b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102a157600080fd5b50610303600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050610b60565b005b34801561031157600080fd5b5061031a610de6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561036857600080fd5b5061043360048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610deb565b005b34801561044157600080fd5b5061044a610e05565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561048d578082015181840152602081019050610472565b505050509050019250505060405180910390f35b3480156104ad57600080fd5b506104b6610fa0565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104f65780820151818401526020810190506104db565b50505050905090810190601f1680156105235780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561053d57600080fd5b50610546610fd9565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561058957808201518184015260208101905061056e565b505050509050019250505060405180910390f35b3480156105a957600080fd5b506105cb600480360381019080803560ff16906020019092919050505061127c565b005b3480156105d957600080fd5b5061061b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506112fb565b005b34801561062957600080fd5b5061067e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115b3565b005b34801561068c57600080fd5b50610701600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117e2565b005b34801561070f57600080fd5b50610718611b77565b604051808260ff1660ff16815260200191505060405180910390f35b34801561074057600080fd5b50610749611b8e565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561078957808201518184015260208101905061076e565b50505050905090810190601f1680156107b65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b6000806000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515156108cb57600080fd5b6108d8858585855a611bc7565b9050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561091c57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156109705750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b151561097b57600080fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156109fe57600080fd5b600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b9a57600080fd5b8060ff1660016002540310151515610bb157600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610c4a57600080fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260008154809291906001900391905055508060ff16600360009054906101000a900460ff1660ff16141515610de157610de08161127c565b5b505050565b600181565b610df58484611cc4565b610dff8282611f54565b50505050565b606080600080600254604051908082528060200260200182016040528015610e3c5781602001602082028038833980820191505090505b5092506000915060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515610f9757808383815181101515610eec57fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508180600101925050610ea7565b82935050505090565b6040805190810160405280600e81526020017f4d6f64756c65204d616e6167657200000000000000000000000000000000000081525081565b6060600080606060009250600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156110eb576000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050611047565b8260405190808252806020026020018201604052801561111a5781602001602082028038833980820191505090505b50905060009250600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515611273578181848151811015156111c957fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050611184565b80935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156112b657600080fd5b6002548160ff16111515156112ca57600080fd5b60018160ff16101515156112dd57600080fd5b80600360006101000a81548160ff021916908360ff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561133557600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff16141580156113895750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b151561139457600080fd5b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561141857600080fd5b60016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506002600081548092919060010191905055508060ff16600360009054906101000a900460ff1660ff161415156115af576115ae8161127c565b5b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156115ed57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561168557600080fd5b6000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561181c57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156118705750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b151561187b57600080fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156118ff57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561199857600080fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000600360009054906101000a900460ff16905090565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b60008060006002811115611bd757fe5b846002811115611be357fe5b1415611bfc57611bf587878786612092565b9150611cba565b60016002811115611c0957fe5b846002811115611c1557fe5b1415611c2d57611c268786856120ab565b9150611cb9565b611c36856120c2565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b600080600080600360009054906101000a900460ff1660ff16141515611ce957600080fd5b84518460ff1611151515611cfc57600080fd5b60018460ff1610151515611d0f57600080fd5b60019250600091505b8451821015611eac578482815181101515611d2f57fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff1614158015611d8f5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515611d9a57600080fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611e1e57600080fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508092508180600101925050611d18565b60018060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550845160028190555083600360006101000a81548160ff021916908360ff1602179055505050505050565b6000806000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611fd857600080fd5b6001600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008273ffffffffffffffffffffffffffffffffffffffff1614151561208e5761208282825a6120ab565b151561208d57600080fd5b5b5050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f090509190505600a165627a7a72305820320bc4a9d7df05e83245d3a6f7c0c117f907d8577ab1a6fb3eb23fc392c0a32b0029", - "deployedBytecode": "0x6080604052600436106100e6576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632f54bf6e146100e8578063468721a714610143578063610b5925146101fb57806385e332cd1461023e57806386040aa9146102955780638cff635514610305578063a04222e11461035c578063a0e67e2b14610435578063a3f4df7e146104a1578063b2494df314610531578063b7f3358d1461059d578063b91a667f146105cd578063e009cfde1461061d578063e318b52b14610680578063e75235b814610703578063ffa1ad7414610734575b005b3480156100f457600080fd5b50610129600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107c4565b604051808215151515815260200191505060405180910390f35b34801561014f57600080fd5b506101e1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050610846565b604051808215151515815260200191505060405180910390f35b34801561020757600080fd5b5061023c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506108e2565b005b34801561024a57600080fd5b50610253610b5b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102a157600080fd5b50610303600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050610b60565b005b34801561031157600080fd5b5061031a610de6565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561036857600080fd5b5061043360048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610deb565b005b34801561044157600080fd5b5061044a610e05565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561048d578082015181840152602081019050610472565b505050509050019250505060405180910390f35b3480156104ad57600080fd5b506104b6610fa0565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104f65780820151818401526020810190506104db565b50505050905090810190601f1680156105235780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561053d57600080fd5b50610546610fd9565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561058957808201518184015260208101905061056e565b505050509050019250505060405180910390f35b3480156105a957600080fd5b506105cb600480360381019080803560ff16906020019092919050505061127c565b005b3480156105d957600080fd5b5061061b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506112fb565b005b34801561062957600080fd5b5061067e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506115b3565b005b34801561068c57600080fd5b50610701600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506117e2565b005b34801561070f57600080fd5b50610718611b77565b604051808260ff1660ff16815260200191505060405180910390f35b34801561074057600080fd5b50610749611b8e565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561078957808201518184015260208101905061076e565b50505050905090810190601f1680156107b65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b6000806000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515156108cb57600080fd5b6108d8858585855a611bc7565b9050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561091c57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156109705750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b151561097b57600080fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156109fe57600080fd5b600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b9a57600080fd5b8060ff1660016002540310151515610bb157600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610c4a57600080fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260008154809291906001900391905055508060ff16600360009054906101000a900460ff1660ff16141515610de157610de08161127c565b5b505050565b600181565b610df58484611cc4565b610dff8282611f54565b50505050565b606080600080600254604051908082528060200260200182016040528015610e3c5781602001602082028038833980820191505090505b5092506000915060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515610f9757808383815181101515610eec57fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508180600101925050610ea7565b82935050505090565b6040805190810160405280600e81526020017f4d6f64756c65204d616e6167657200000000000000000000000000000000000081525081565b6060600080606060009250600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156110eb576000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050611047565b8260405190808252806020026020018201604052801561111a5781602001602082028038833980820191505090505b50905060009250600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515611273578181848151811015156111c957fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050611184565b80935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156112b657600080fd5b6002548160ff16111515156112ca57600080fd5b60018160ff16101515156112dd57600080fd5b80600360006101000a81548160ff021916908360ff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561133557600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff16141580156113895750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b151561139457600080fd5b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561141857600080fd5b60016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506002600081548092919060010191905055508060ff16600360009054906101000a900460ff1660ff161415156115af576115ae8161127c565b5b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156115ed57600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561168557600080fd5b6000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561181c57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156118705750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b151561187b57600080fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156118ff57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561199857600080fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000600360009054906101000a900460ff16905090565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b60008060006002811115611bd757fe5b846002811115611be357fe5b1415611bfc57611bf587878786612092565b9150611cba565b60016002811115611c0957fe5b846002811115611c1557fe5b1415611c2d57611c268786856120ab565b9150611cb9565b611c36856120c2565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b600080600080600360009054906101000a900460ff1660ff16141515611ce957600080fd5b84518460ff1611151515611cfc57600080fd5b60018460ff1610151515611d0f57600080fd5b60019250600091505b8451821015611eac578482815181101515611d2f57fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff1614158015611d8f5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515611d9a57600080fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611e1e57600080fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508092508180600101925050611d18565b60018060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550845160028190555083600360006101000a81548160ff021916908360ff1602179055505050505050565b6000806000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611fd857600080fd5b6001600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008273ffffffffffffffffffffffffffffffffffffffff1614151561208e5761208282825a6120ab565b151561208d57600080fd5b5b5050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f090509190505600a165627a7a72305820320bc4a9d7df05e83245d3a6f7c0c117f907d8577ab1a6fb3eb23fc392c0a32b0029", + "bytecode": "0x608060405234801561001057600080fd5b50612e0a806100206000396000f3006080604052600436106100e6576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632f54bf6e146100e8578063468721a714610143578063610b5925146101fb57806385e332cd1461023e57806386040aa9146102955780638cff635514610305578063a04222e11461035c578063a0e67e2b14610435578063a3f4df7e146104a1578063b2494df314610531578063b7f3358d1461059d578063b91a667f146105cd578063e009cfde1461061d578063e318b52b14610680578063e75235b814610703578063ffa1ad7414610734575b005b3480156100f457600080fd5b50610129600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107c4565b604051808215151515815260200191505060405180910390f35b34801561014f57600080fd5b506101e1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050610846565b604051808215151515815260200191505060405180910390f35b34801561020757600080fd5b5061023c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610971565b005b34801561024a57600080fd5b50610253610d4b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102a157600080fd5b50610303600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050610d50565b005b34801561031157600080fd5b5061031a611183565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561036857600080fd5b5061043360048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611188565b005b34801561044157600080fd5b5061044a6111a2565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561048d578082015181840152602081019050610472565b505050509050019250505060405180910390f35b3480156104ad57600080fd5b506104b661133d565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104f65780820151818401526020810190506104db565b50505050905090810190601f1680156105235780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561053d57600080fd5b50610546611376565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561058957808201518184015260208101905061056e565b505050509050019250505060405180910390f35b3480156105a957600080fd5b506105cb600480360381019080803560ff169060200190929190505050611619565b005b3480156105d957600080fd5b5061061b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050611845565b005b34801561062957600080fd5b5061067e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c5e565b005b34801561068c57600080fd5b50610701600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611fab565b005b34801561070f57600080fd5b50610718612530565b604051808260ff1660ff16815260200191505060405180910390f35b34801561074057600080fd5b50610749612547565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561078957808201518184015260208101905061076e565b50505050905090810190601f1680156107b65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b6000806000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561095a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206181526020017f6e20656e61626c6564206d6f64756c650000000000000000000000000000000081525060400191505060405180910390fd5b610967858585855a612580565b9050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610a3a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614158015610a8e5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515610b02576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f496e76616c6964206d6f64756c6520616464726573732070726f76696465640081525060200191505060405180910390fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610bee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4d6f64756c652068617320616c7265616479206265656e20616464656400000081525060200191505060405180910390fd5b600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610e19576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b8060ff1660016002540310151515610ebf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001807f4e6577206f776e657220636f756e74206e6565647320746f206265206c61726781526020017f6572207468616e206e6577207468726573686f6c64000000000000000000000081525060400191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610fe7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f496e76616c696420707265764f776e65722c206f776e6572207061697220707281526020017f6f7669646564000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260008154809291906001900391905055508060ff16600360009054906101000a900460ff1660ff1614151561117e5761117d81611619565b5b505050565b600181565b611192848461267d565b61119c8282612b66565b50505050565b6060806000806002546040519080825280602002602001820160405280156111d95781602001602082028038833980820191505090505b5092506000915060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415156113345780838381518110151561128957fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508180600101925050611244565b82935050505090565b6040805190810160405280600e81526020017f4d6f64756c65204d616e6167657200000000000000000000000000000000000081525081565b6060600080606060009250600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515611488576000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915082806001019350506113e4565b826040519080825280602002602001820160405280156114b75781602001602082028038833980820191505090505b50905060009250600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156116105781818481518110151561156657fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050611521565b80935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156116e2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b6002548160ff1611151515611785576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f5468726573686f6c642063616e6e6f7420657863656564206f776e657220636f81526020017f756e74000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60018160ff1610151515611827576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f5468726573686f6c64206e6565647320746f206265206772656174657220746881526020017f616e20300000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b80600360006101000a81548160ff021916908360ff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561190e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff16141580156119625750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15156119d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611ac3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4164647265737320697320616c726561647920616e206f776e6572000000000081525060200191505060405180910390fd5b60016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506002600081548092919060010191905055508060ff16600360009054906101000a900460ff1660ff16141515611c5a57611c5981611619565b5b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611d27576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611e4e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001807f496e76616c696420707265764d6f64756c652c206d6f64756c6520706169722081526020017f70726f766964656400000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612074576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156120c85750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b151561213c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612229576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4164647265737320697320616c726561647920616e206f776e6572000000000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612351576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f496e76616c696420707265764f776e65722c206f776e6572207061697220707281526020017f6f7669646564000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000600360009054906101000a900460ff16905090565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000806000600281111561259057fe5b84600281111561259c57fe5b14156125b5576125ae87878786612d9c565b9150612673565b600160028111156125c257fe5b8460028111156125ce57fe5b14156125e6576125df878685612db5565b9150612672565b6125ef85612dcc565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b600080600080600360009054906101000a900460ff1660ff1614151561270b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f4f776e657273206861766520616c7265616479206265656e207365747570000081525060200191505060405180910390fd5b84518460ff16111515156127ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f5468726573686f6c642063616e6e6f7420657863656564206f776e657220636f81526020017f756e74000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60018460ff161015151561284f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f5468726573686f6c64206e6565647320746f206265206772656174657220746881526020017f616e20300000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60019250600091505b8451821015612abe57848281518110151561286f57fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff16141580156128cf5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515612943576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612a30576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4475706c6963617465206f776e657220616464726573732070726f766964656481525060200191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508092508180600101925050612858565b60018060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550845160028190555083600360006101000a81548160ff021916908360ff1602179055505050505050565b6000806000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612c79576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f4d6f64756c6573206861766520616c7265616479206265656e20696e6974696181526020017f6c697a656400000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6001600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008273ffffffffffffffffffffffffffffffffffffffff16141515612d9857612d2382825a612db5565b1515612d97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f436f756c64206e6f742066696e69736820696e697469616c697a6174696f6e0081525060200191505060405180910390fd5b5b5050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f090509190505600a165627a7a7230582065aa5e98bad88b1083376f6b7b456f01e5be25657c4edb16fad24aa7dc5667cb0029", + "deployedBytecode": "0x6080604052600436106100e6576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632f54bf6e146100e8578063468721a714610143578063610b5925146101fb57806385e332cd1461023e57806386040aa9146102955780638cff635514610305578063a04222e11461035c578063a0e67e2b14610435578063a3f4df7e146104a1578063b2494df314610531578063b7f3358d1461059d578063b91a667f146105cd578063e009cfde1461061d578063e318b52b14610680578063e75235b814610703578063ffa1ad7414610734575b005b3480156100f457600080fd5b50610129600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107c4565b604051808215151515815260200191505060405180910390f35b34801561014f57600080fd5b506101e1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050610846565b604051808215151515815260200191505060405180910390f35b34801561020757600080fd5b5061023c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610971565b005b34801561024a57600080fd5b50610253610d4b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156102a157600080fd5b50610303600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050610d50565b005b34801561031157600080fd5b5061031a611183565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561036857600080fd5b5061043360048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611188565b005b34801561044157600080fd5b5061044a6111a2565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561048d578082015181840152602081019050610472565b505050509050019250505060405180910390f35b3480156104ad57600080fd5b506104b661133d565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104f65780820151818401526020810190506104db565b50505050905090810190601f1680156105235780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561053d57600080fd5b50610546611376565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561058957808201518184015260208101905061056e565b505050509050019250505060405180910390f35b3480156105a957600080fd5b506105cb600480360381019080803560ff169060200190929190505050611619565b005b3480156105d957600080fd5b5061061b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050611845565b005b34801561062957600080fd5b5061067e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611c5e565b005b34801561068c57600080fd5b50610701600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611fab565b005b34801561070f57600080fd5b50610718612530565b604051808260ff1660ff16815260200191505060405180910390f35b34801561074057600080fd5b50610749612547565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561078957808201518184015260208101905061076e565b50505050905090810190601f1680156107b65780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600080600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b6000806000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561095a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206181526020017f6e20656e61626c6564206d6f64756c650000000000000000000000000000000081525060400191505060405180910390fd5b610967858585855a612580565b9050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610a3a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614158015610a8e5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515610b02576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f496e76616c6964206d6f64756c6520616464726573732070726f76696465640081525060200191505060405180910390fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610bee576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4d6f64756c652068617320616c7265616479206265656e20616464656400000081525060200191505060405180910390fd5b600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610e19576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b8060ff1660016002540310151515610ebf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001807f4e6577206f776e657220636f756e74206e6565647320746f206265206c61726781526020017f6572207468616e206e6577207468726573686f6c64000000000000000000000081525060400191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610fe7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f496e76616c696420707265764f776e65722c206f776e6572207061697220707281526020017f6f7669646564000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260008154809291906001900391905055508060ff16600360009054906101000a900460ff1660ff1614151561117e5761117d81611619565b5b505050565b600181565b611192848461267d565b61119c8282612b66565b50505050565b6060806000806002546040519080825280602002602001820160405280156111d95781602001602082028038833980820191505090505b5092506000915060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415156113345780838381518110151561128957fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508180600101925050611244565b82935050505090565b6040805190810160405280600e81526020017f4d6f64756c65204d616e6167657200000000000000000000000000000000000081525081565b6060600080606060009250600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515611488576000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915082806001019350506113e4565b826040519080825280602002602001820160405280156114b75781602001602082028038833980820191505090505b50905060009250600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156116105781818481518110151561156657fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050611521565b80935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156116e2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b6002548160ff1611151515611785576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f5468726573686f6c642063616e6e6f7420657863656564206f776e657220636f81526020017f756e74000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60018160ff1610151515611827576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f5468726573686f6c64206e6565647320746f206265206772656174657220746881526020017f616e20300000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b80600360006101000a81548160ff021916908360ff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561190e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff16141580156119625750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15156119d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611ac3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4164647265737320697320616c726561647920616e206f776e6572000000000081525060200191505060405180910390fd5b60016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506002600081548092919060010191905055508060ff16600360009054906101000a900460ff1660ff16141515611c5a57611c5981611619565b5b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611d27576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611e4e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001807f496e76616c696420707265764d6f64756c652c206d6f64756c6520706169722081526020017f70726f766964656400000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612074576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156120c85750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b151561213c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612229576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4164647265737320697320616c726561647920616e206f776e6572000000000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612351576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f496e76616c696420707265764f776e65722c206f776e6572207061697220707281526020017f6f7669646564000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000600360009054906101000a900460ff16905090565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000806000600281111561259057fe5b84600281111561259c57fe5b14156125b5576125ae87878786612d9c565b9150612673565b600160028111156125c257fe5b8460028111156125ce57fe5b14156125e6576125df878685612db5565b9150612672565b6125ef85612dcc565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b600080600080600360009054906101000a900460ff1660ff1614151561270b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f4f776e657273206861766520616c7265616479206265656e207365747570000081525060200191505060405180910390fd5b84518460ff16111515156127ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f5468726573686f6c642063616e6e6f7420657863656564206f776e657220636f81526020017f756e74000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60018460ff161015151561284f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f5468726573686f6c64206e6565647320746f206265206772656174657220746881526020017f616e20300000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60019250600091505b8451821015612abe57848281518110151561286f57fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff16141580156128cf5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515612943576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612a30576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4475706c6963617465206f776e657220616464726573732070726f766964656481525060200191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508092508180600101925050612858565b60018060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550845160028190555083600360006101000a81548160ff021916908360ff1602179055505050505050565b6000806000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612c79576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f4d6f64756c6573206861766520616c7265616479206265656e20696e6974696181526020017f6c697a656400000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6001600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008273ffffffffffffffffffffffffffffffffffffffff16141515612d9857612d2382825a612db5565b1515612d97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f436f756c64206e6f742066696e69736820696e697469616c697a6174696f6e0081525060200191505060405180910390fd5b5b5050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f090509190505600a165627a7a7230582065aa5e98bad88b1083376f6b7b456f01e5be25657c4edb16fad24aa7dc5667cb0029", "sourceMap": "322:674:2:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;322:674:2;;;;;;;", - "deployedSourceMap": "322:674:2:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4841:129:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4841:129:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2522:377:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2522:377:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1235:391;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1235:391:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;499:55;;8:9:-1;5:2;;;30:1;27;20:12;5:2;499:55:8;;;;;;;;;;;;;;;;;;;;;;;;;;;2776:573:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2776:573:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;287:54;;8:9:-1;5:2;;;30:1;27;20:12;5:2;287:54:9;;;;;;;;;;;;;;;;;;;;;;;;;;;693:301:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;693:301:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5052:458:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5052:458:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;5052:458:9;;;;;;;;;;;;;;;;;401:46:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;401:46:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;401:46:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4423:738;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4423:738:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;4423:738:8;;;;;;;;;;;;;;;;;4398:318:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4398:318:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;1906:528;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1906:528:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1887:299:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1887:299:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3683:526:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3683:526:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4722:113;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4722:113:9;;;;;;;;;;;;;;;;;;;;;;;;;;;453:40:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;453:40:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;453:40:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4841:129:9;4918:4;4962:1;4945:6;:13;4952:5;4945:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;;4938:25;;4841:129;;;:::o;2522:377:8:-;2654:12;2762:1;2739:7;:19;2747:10;2739:19;;;;;;;;;;;;;;;;;;;;;;;;;:24;;;;2731:33;;;;;;;;2846:46;2854:2;2858:5;2865:4;2871:9;2882;2846:7;:46::i;:::-;2836:56;;2522:377;;;;;;:::o;1235:391::-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;1401:1:8;1390:6;1382:20;;;;:59;;;;;550:3;1406:35;;1414:6;1406:35;;;;1382:59;1374:68;;;;;;;;1520:1;1501:7;:15;1509:6;1501:15;;;;;;;;;;;;;;;;;;;;;;;;;:20;;;1493:29;;;;;;;;1550:7;:25;550:3;1550:25;;;;;;;;;;;;;;;;;;;;;;;;;1532:7;:15;1540:6;1532:15;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;1613:6;1585:7;:25;550:3;1585:25;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;1235:391;:::o;499:55::-;550:3;499:55;:::o;2776:573:9:-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;3000:10:9;2982:28;;2995:1;2982:10;;:14;:28;;2974:37;;;;;;;;3112:5;3091:26;;:6;:17;3098:9;3091:17;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;3083:35;;;;;;;;3148:6;:13;3155:5;3148:13;;;;;;;;;;;;;;;;;;;;;;;;;3128:6;:17;3135:9;3128:17;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;3187:1;3171:6;:13;3178:5;3171:13;;;;;;;;;;;;;;;;:17;;;;;;;;;;;;;;;;;;3198:10;;:12;;;;;;;;;;;;;;3291:10;3278:23;;:9;;;;;;;;;;;:23;;;;3274:68;;;3315:27;3331:10;3315:15;:27::i;:::-;3274:68;2776:573;;;:::o;287:54::-;337:3;287:54;:::o;693:301:2:-;798:32;810:7;819:10;798:11;:32::i;:::-;965:22;978:2;982:4;965:12;:22::i;:::-;693:301;;;;:::o;5052:458:9:-;5118:9;5143:22;5237:13;5264:20;5182:10;;5168:25;;;;;;;;;;;;;;;;;;;;;;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;5168:25:9;;;;5143:50;;5253:1;5237:17;;5287:6;:23;337:3;5287:23;;;;;;;;;;;;;;;;;;;;;;;;;5264:46;;5320:162;337:3;5326:31;;:12;:31;;;;5320:162;;;5388:12;5373:5;5379;5373:12;;;;;;;;;;;;;;;;;:27;;;;;;;;;;;5429:6;:20;5436:12;5429:20;;;;;;;;;;;;;;;;;;;;;;;;;5414:35;;5463:8;;;;;;;5320:162;;;5498:5;5491:12;;5052:458;;;;:::o;401:46:8:-;;;;;;;;;;;;;;;;;;;;:::o;4423:738::-;4490:9;4549:19;4582:21;4782:22;4571:1;4549:23;;4606:7;:25;550:3;4606:25;;;;;;;;;;;;;;;;;;;;;;;;;4582:49;;4641:132;550:3;4647:33;;:13;:33;;;;4641:132;;;4712:7;:22;4720:13;4712:22;;;;;;;;;;;;;;;;;;;;;;;;;4696:38;;4748:14;;;;;;;4641:132;;;4821:11;4807:26;;;;;;;;;;;;;;;;;;;;;;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;4807:26:8;;;;4782:51;;4891:1;4877:15;;4918:7;:25;550:3;4918:25;;;;;;;;;;;;;;;;;;;;;;;;;4902:41;;4953:180;550:3;4959:33;;:13;:33;;;;4953:180;;;5029:13;5008:5;5014:11;5008:18;;;;;;;;;;;;;;;;;:34;;;;;;;;;;;5072:7;:22;5080:13;5072:22;;;;;;;;;;;;;;;;;;;;;;;;;5056:38;;5108:14;;;;;;;4953:180;;;5149:5;5142:12;;4423:738;;;;:::o;4398:318:9:-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;4580:10:9;;4566;:24;;;;4558:33;;;;;;;;4675:1;4661:10;:15;;;;4653:24;;;;;;;;4699:10;4687:9;;:22;;;;;;;;;;;;;;;;;;4398:318;:::o;1906:528::-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;2076:1:9;2067:5;:10;;;;:38;;;;;337:3;2081:24;;:5;:24;;;;2067:38;2059:47;;;;;;;;2181:1;2164:6;:13;2171:5;2164:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;2156:27;;;;;;;;2209:6;:23;337:3;2209:23;;;;;;;;;;;;;;;;;;;;;;;;;2193:6;:13;2200:5;2193:13;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;2268:5;2242:6;:23;337:3;2242:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;2283:10;;:12;;;;;;;;;;;;;2376:10;2363:23;;:9;;;;;;;;;;;:23;;;;2359:68;;;2400:27;2416:10;2400:15;:27::i;:::-;2359:68;1906:528;;:::o;1887:299:8:-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;2095:6:8;2064:38;;:7;:19;2072:10;2064:19;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;2056:47;;;;;;;;2135:7;:15;2143:6;2135:15;;;;;;;;;;;;;;;;;;;;;;;;;2113:7;:19;2121:10;2113:19;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;2178:1;2160:7;:15;2168:6;2160:15;;;;;;;;;;;;;;;;:19;;;;;;;;;;;;;;;;;;1887:299;;:::o;3683:526:9:-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;3866:1:9;3854:8;:13;;;;:44;;;;;337:3;3871:27;;:8;:27;;;;3854:44;3846:53;;;;;;;;3977:1;3957:6;:16;3964:8;3957:16;;;;;;;;;;;;;;;;;;;;;;;;;:21;;;3949:30;;;;;;;;4080:8;4059:29;;:6;:17;4066:9;4059:17;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;4051:38;;;;;;;;4118:6;:16;4125:8;4118:16;;;;;;;;;;;;;;;;;;;;;;;;;4099:6;:16;4106:8;4099:16;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;4164:8;4144:6;:17;4151:9;4144:17;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;4201:1;4182:6;:16;4189:8;4182:16;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;3683:526;;;:::o;4722:113::-;4791:5;4819:9;;;;;;;;;;;4812:16;;4722:113;:::o;453:40:8:-;;;;;;;;;;;;;;;;;;;;:::o;2905:548::-;3036:12;3307:19;3081;3068:32;;;;;;;;:9;:32;;;;;;;;;3064:383;;;3124:35;3136:2;3140:5;3147:4;3153:5;3124:11;:35::i;:::-;3114:45;;3064:383;;;3191:27;3178:40;;;;;;;;:9;:40;;;;;;;;;3174:273;;;3242:36;3262:2;3266:4;3272:5;3242:19;:36::i;:::-;3232:46;;3174:273;;;3329:19;3343:4;3329:13;:19::i;:::-;3307:41;;3387:1;3372:11;:16;;;;3362:26;;3407:29;3424:11;3407:29;;;;;;;;;;;;;;;;;;;;;;3174:273;3064:383;2905:548;;;;;;;;:::o;641:1025:9:-;1132:20;1185:9;1284:13;875:1;862:9;;;;;;;;;;;:14;;;854:23;;;;;;;;984:7;:14;970:10;:28;;;;962:37;;;;;;;;1083:1;1069:10;:15;;;;1061:24;;;;;;;;337:3;1132:38;;1197:1;1185:13;;1180:363;1204:7;:14;1200:1;:18;1180:363;;;1300:7;1308:1;1300:10;;;;;;;;;;;;;;;;;;1284:26;;1341:1;1332:5;:10;;;;:38;;;;;337:3;1346:24;;:5;:24;;;;1332:38;1324:47;;;;;;;;1454:1;1437:6;:13;1444:5;1437:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;1429:27;;;;;;;;1493:5;1470:6;:20;1477:12;1470:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;1527:5;1512:20;;1220:3;;;;;;;1180:363;;;337:3;1552:6;:20;1559:12;1552:20;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;1613:7;:14;1600:10;:27;;;;1649:10;1637:9;;:22;;;;;;;;;;;;;;;;;;641:1025;;;;;:::o;735:333:8:-;849:1;820:7;:25;550:3;820:25;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;812:39;;;;;;;;550:3;861:7;:25;550:3;861:25;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;925:1;919:2;:7;;;;915:146;;;1020:40;1040:2;1044:4;1050:9;1020:19;:40::i;:::-;1012:49;;;;;;;;915:146;735:333;;:::o;3459:309::-;3568:12;3750:1;3747;3740:4;3734:11;3727:4;3721;3717:15;3710:5;3706:2;3699:5;3694:58;3683:69;;3669:93;;;;;;:::o;3774:303::-;3876:12;4059:1;4056;4049:4;4043:11;4036:4;4030;4026:15;4022:2;4015:5;4002:59;3991:70;;3977:94;;;;;:::o;4083:261::-;4152:19;4322:4;4316:11;4309:4;4303;4299:15;4296:1;4289:39;4274:54;;4260:78;;;:::o", + "deployedSourceMap": "322:674:2:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5374:129:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5374:129:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2710:429:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2710:429:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1311:459;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1311:459:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;499:55;;8:9:-1;5:2;;;30:1;27;20:12;5:2;499:55:8;;;;;;;;;;;;;;;;;;;;;;;;;;;3024:672:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3024:672:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;287:54;;8:9:-1;5:2;;;30:1;27;20:12;5:2;287:54:9;;;;;;;;;;;;;;;;;;;;;;;;;;;693:301:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;693:301:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5585:458:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5585:458:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;5585:458:9;;;;;;;;;;;;;;;;;401:46:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;401:46:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;401:46:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4663:738;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4663:738:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;4663:738:8;;;;;;;;;;;;;;;;;4852:397:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4852:397:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;2089:593;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2089:593:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2031:343:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2031:343:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4030:633:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4030:633:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5255:113;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5255:113:9;;;;;;;;;;;;;;;;;;;;;;;;;;;453:40:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;453:40:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;453:40:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5374:129:9;5451:4;5495:1;5478:6;:13;5485:5;5478:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;;5471:25;;5374:129;;;:::o;2710:429:8:-;2842:12;2950:1;2927:7;:19;2935:10;2927:19;;;;;;;;;;;;;;;;;;;;;;;;;:24;;;;2919:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3086:46;3094:2;3098:5;3105:4;3111:9;3122;3086:7;:46::i;:::-;3076:56;;2710:429;;;;;;:::o;1311:459::-;244:4:13;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1477:1:8;1466:6;1458:20;;;;:59;;;;;550:3;1482:35;;1490:6;1482:35;;;;1458:59;1450:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1631:1;1612:7;:15;1620:6;1612:15;;;;;;;;;;;;;;;;;;;;;;;;;:20;;;1604:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1694:7;:25;550:3;1694:25;;;;;;;;;;;;;;;;;;;;;;;;;1676:7;:15;1684:6;1676:15;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;1757:6;1729:7;:25;550:3;1729:25;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;1311:459;:::o;499:55::-;550:3;499:55;:::o;3024:672:9:-;244:4:13;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3248:10:9;3230:28;;3243:1;3230:10;;:14;:28;;3222:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3417:5;3396:26;;:6;:17;3403:9;3396:17;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;3388:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3495:6;:13;3502:5;3495:13;;;;;;;;;;;;;;;;;;;;;;;;;3475:6;:17;3482:9;3475:17;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;3534:1;3518:6;:13;3525:5;3518:13;;;;;;;;;;;;;;;;:17;;;;;;;;;;;;;;;;;;3545:10;;:12;;;;;;;;;;;;;;3638:10;3625:23;;:9;;;;;;;;;;;:23;;;;3621:68;;;3662:27;3678:10;3662:15;:27::i;:::-;3621:68;3024:672;;;:::o;287:54::-;337:3;287:54;:::o;693:301:2:-;798:32;810:7;819:10;798:11;:32::i;:::-;965:22;978:2;982:4;965:12;:22::i;:::-;693:301;;;;:::o;5585:458:9:-;5651:9;5676:22;5770:13;5797:20;5715:10;;5701:25;;;;;;;;;;;;;;;;;;;;;;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;5701:25:9;;;;5676:50;;5786:1;5770:17;;5820:6;:23;337:3;5820:23;;;;;;;;;;;;;;;;;;;;;;;;;5797:46;;5853:162;337:3;5859:31;;:12;:31;;;;5853:162;;;5921:12;5906:5;5912;5906:12;;;;;;;;;;;;;;;;;:27;;;;;;;;;;;5962:6;:20;5969:12;5962:20;;;;;;;;;;;;;;;;;;;;;;;;;5947:35;;5996:8;;;;;;;5853:162;;;6031:5;6024:12;;5585:458;;;;:::o;401:46:8:-;;;;;;;;;;;;;;;;;;;;:::o;4663:738::-;4730:9;4789:19;4822:21;5022:22;4811:1;4789:23;;4846:7;:25;550:3;4846:25;;;;;;;;;;;;;;;;;;;;;;;;;4822:49;;4881:132;550:3;4887:33;;:13;:33;;;;4881:132;;;4952:7;:22;4960:13;4952:22;;;;;;;;;;;;;;;;;;;;;;;;;4936:38;;4988:14;;;;;;;4881:132;;;5061:11;5047:26;;;;;;;;;;;;;;;;;;;;;;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;5047:26:8;;;;5022:51;;5131:1;5117:15;;5158:7;:25;550:3;5158:25;;;;;;;;;;;;;;;;;;;;;;;;;5142:41;;5193:180;550:3;5199:33;;:13;:33;;;;5193:180;;;5269:13;5248:5;5254:11;5248:18;;;;;;;;;;;;;;;;;:34;;;;;;;;;;;5312:7;:22;5320:13;5312:22;;;;;;;;;;;;;;;;;;;;;;;;;5296:38;;5348:14;;;;;;;5193:180;;;5389:5;5382:12;;4663:738;;;;:::o;4852:397:9:-;244:4:13;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5034:10:9;;5020;:24;;;;5012:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5168:1;5154:10;:15;;;;5146:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5232:10;5220:9;;:22;;;;;;;;;;;;;;;;;;4852:397;:::o;2089:593::-;244:4:13;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2259:1:9;2250:5;:10;;;;:38;;;;;337:3;2264:24;;:5;:24;;;;2250:38;2242:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2398:1;2381:6;:13;2388:5;2381:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;2373:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2457:6;:23;337:3;2457:23;;;;;;;;;;;;;;;;;;;;;;;;;2441:6;:13;2448:5;2441:13;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;2516:5;2490:6;:23;337:3;2490:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;2531:10;;:12;;;;;;;;;;;;;2624:10;2611:23;;:9;;;;;;;;;;;:23;;;;2607:68;;;2648:27;2664:10;2648:15;:27::i;:::-;2607:68;2089:593;;:::o;2031:343:8:-;244:4:13;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2239:6:8;2208:38;;:7;:19;2216:10;2208:19;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;2200:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2323:7;:15;2331:6;2323:15;;;;;;;;;;;;;;;;;;;;;;;;;2301:7;:19;2309:10;2301:19;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;2366:1;2348:7;:15;2356:6;2348:15;;;;;;;;;;;;;;;;:19;;;;;;;;;;;;;;;;;;2031:343;;:::o;4030:633:9:-;244:4:13;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4213:1:9;4201:8;:13;;;;:44;;;;;337:3;4218:27;;:8;:27;;;;4201:44;4193:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4358:1;4338:6;:16;4345:8;4338:16;;;;;;;;;;;;;;;;;;;;;;;;;:21;;;4330:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4492:8;4471:29;;:6;:17;4478:9;4471:17;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;4463:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4572:6;:16;4579:8;4572:16;;;;;;;;;;;;;;;;;;;;;;;;;4553:6;:16;4560:8;4553:16;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;4618:8;4598:6;:17;4605:9;4598:17;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;4655:1;4636:6;:16;4643:8;4636:16;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;4030:633;;;:::o;5255:113::-;5324:5;5352:9;;;;;;;;;;;5345:16;;5255:113;:::o;453:40:8:-;;;;;;;;;;;;;;;;;;;;:::o;3145:548::-;3276:12;3547:19;3321;3308:32;;;;;;;;:9;:32;;;;;;;;;3304:383;;;3364:35;3376:2;3380:5;3387:4;3393:5;3364:11;:35::i;:::-;3354:45;;3304:383;;;3431:27;3418:40;;;;;;;;:9;:40;;;;;;;;;3414:273;;;3482:36;3502:2;3506:4;3512:5;3482:19;:36::i;:::-;3472:46;;3414:273;;;3569:19;3583:4;3569:13;:19::i;:::-;3547:41;;3627:1;3612:11;:16;;;;3602:26;;3647:29;3664:11;3647:29;;;;;;;;;;;;;;;;;;;;;;3414:273;3304:383;3145:548;;;;;;;;:::o;641:1208:9:-;1245:20;1298:9;1397:13;875:1;862:9;;;;;;;;;;;:14;;;854:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1018:7;:14;1004:10;:28;;;;996:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1156:1;1142:10;:15;;;;1134:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;337:3;1245:38;;1310:1;1298:13;;1293:433;1317:7;:14;1313:1;:18;1293:433;;;1413:7;1421:1;1413:10;;;;;;;;;;;;;;;;;;1397:26;;1454:1;1445:5;:10;;;;:38;;;;;337:3;1459:24;;:5;:24;;;;1445:38;1437:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1601:1;1584:6;:13;1591:5;1584:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;1576:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1676:5;1653:6;:20;1660:12;1653:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;1710:5;1695:20;;1333:3;;;;;;;1293:433;;;337:3;1735:6;:20;1742:12;1735:20;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;1796:7;:14;1783:10;:27;;;;1832:10;1820:9;;:22;;;;;;;;;;;;;;;;;;641:1208;;;;;:::o;735:409:8:-;849:1;820:7;:25;550:3;820:25;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;812:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;550:3;902:7;:25;550:3;902:25;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;966:1;960:2;:7;;;;956:181;;;1061:40;1081:2;1085:4;1091:9;1061:19;:40::i;:::-;1053:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;956:181;735:409;;:::o;3699:309::-;3808:12;3990:1;3987;3980:4;3974:11;3967:4;3961;3957:15;3950:5;3946:2;3939:5;3934:58;3923:69;;3909:93;;;;;;:::o;4014:303::-;4116:12;4299:1;4296;4289:4;4283:11;4276:4;4270;4266:15;4262:2;4255:5;4242:59;4231:70;;4217:94;;;;;:::o;4323:261::-;4392:19;4562:4;4556:11;4549:4;4543;4539:15;4536:1;4529:39;4514:54;;4500:78;;;:::o", "source": "pragma solidity 0.4.24;\nimport \"./Module.sol\";\nimport \"./ModuleManager.sol\";\nimport \"./OwnerManager.sol\";\n\n\n/// @title Gnosis Safe - A multisignature wallet with support for modules and owners. This contract needs to be extented to add functionality to execute transactions.\n/// @author Stefan George - \ncontract GnosisSafe is ModuleManager, OwnerManager {\n\n /// @dev Setup function sets initial storage of contract.\n /// @param _owners List of Safe owners.\n /// @param _threshold Number of required confirmations for a Safe transaction.\n /// @param to Contract address for optional delegate call.\n /// @param data Data payload for optional delegate call.\n function setup(address[] _owners, uint8 _threshold, address to, bytes data)\n public\n {\n setupOwners(_owners, _threshold);\n // As setupOwners can only be called if the contract has not been initialized we don't need a check for setupModules\n setupModules(to, data);\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", "ast": { @@ -333,7 +333,7 @@ "id": 33, "nodeType": "ImportDirective", "scope": 64, - "sourceUnit": 751, + "sourceUnit": 763, "src": "24:22:2", "symbolAliases": [], "unitAlias": "" @@ -344,7 +344,7 @@ "id": 34, "nodeType": "ImportDirective", "scope": 64, - "sourceUnit": 1101, + "sourceUnit": 1119, "src": "47:29:2", "symbolAliases": [], "unitAlias": "" @@ -355,7 +355,7 @@ "id": 35, "nodeType": "ImportDirective", "scope": 64, - "sourceUnit": 1473, + "sourceUnit": 1505, "src": "77:28:2", "symbolAliases": [], "unitAlias": "" @@ -369,10 +369,10 @@ "id": 36, "name": "ModuleManager", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1100, + "referencedDeclaration": 1118, "src": "345:13:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } }, @@ -387,10 +387,10 @@ "id": 38, "name": "OwnerManager", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1472, + "referencedDeclaration": 1504, "src": "360:12:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_OwnerManager_$1472", + "typeIdentifier": "t_contract$_OwnerManager_$1504", "typeString": "contract OwnerManager" } }, @@ -400,9 +400,9 @@ } ], "contractDependencies": [ - 1100, - 1472, - 1619 + 1118, + 1504, + 1654 ], "contractKind": "contract", "documentation": "@title Gnosis Safe - A multisignature wallet with support for modules and owners. This contract needs to be extented to add functionality to execute transactions.\n @author Stefan George - ", @@ -410,9 +410,9 @@ "id": 63, "linearizedBaseContracts": [ 63, - 1472, - 1100, - 1619 + 1504, + 1118, + 1654 ], "name": "GnosisSafe", "nodeType": "ContractDefinition", @@ -469,7 +469,7 @@ "name": "setupOwners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1212, + "referencedDeclaration": 1235, "src": "798:11:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_uint8_$returns$__$", @@ -540,7 +540,7 @@ "name": "setupModules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 815, + "referencedDeclaration": 829, "src": "965:12:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$", @@ -742,7 +742,7 @@ "id": 33, "nodeType": "ImportDirective", "scope": 64, - "sourceUnit": 751, + "sourceUnit": 763, "src": "24:22:2", "symbolAliases": [], "unitAlias": "" @@ -753,7 +753,7 @@ "id": 34, "nodeType": "ImportDirective", "scope": 64, - "sourceUnit": 1101, + "sourceUnit": 1119, "src": "47:29:2", "symbolAliases": [], "unitAlias": "" @@ -764,7 +764,7 @@ "id": 35, "nodeType": "ImportDirective", "scope": 64, - "sourceUnit": 1473, + "sourceUnit": 1505, "src": "77:28:2", "symbolAliases": [], "unitAlias": "" @@ -778,10 +778,10 @@ "id": 36, "name": "ModuleManager", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1100, + "referencedDeclaration": 1118, "src": "345:13:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } }, @@ -796,10 +796,10 @@ "id": 38, "name": "OwnerManager", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1472, + "referencedDeclaration": 1504, "src": "360:12:2", "typeDescriptions": { - "typeIdentifier": "t_contract$_OwnerManager_$1472", + "typeIdentifier": "t_contract$_OwnerManager_$1504", "typeString": "contract OwnerManager" } }, @@ -809,9 +809,9 @@ } ], "contractDependencies": [ - 1100, - 1472, - 1619 + 1118, + 1504, + 1654 ], "contractKind": "contract", "documentation": "@title Gnosis Safe - A multisignature wallet with support for modules and owners. This contract needs to be extented to add functionality to execute transactions.\n @author Stefan George - ", @@ -819,9 +819,9 @@ "id": 63, "linearizedBaseContracts": [ 63, - 1472, - 1100, - 1619 + 1504, + 1118, + 1654 ], "name": "GnosisSafe", "nodeType": "ContractDefinition", @@ -878,7 +878,7 @@ "name": "setupOwners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1212, + "referencedDeclaration": 1235, "src": "798:11:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_uint8_$returns$__$", @@ -949,7 +949,7 @@ "name": "setupModules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 815, + "referencedDeclaration": 829, "src": "965:12:2", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$", @@ -1131,5 +1131,5 @@ }, "networks": {}, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-27T11:12:45.575Z" + "updatedAt": "2018-05-28T05:59:52.697Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/GnosisSafePersonalEdition.json b/safe-contracts/build/contracts/GnosisSafePersonalEdition.json index 970909dc75..60a03dae2c 100644 --- a/safe-contracts/build/contracts/GnosisSafePersonalEdition.json +++ b/safe-contracts/build/contracts/GnosisSafePersonalEdition.json @@ -494,20 +494,20 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50612e18806100206000396000f300608060405260043610610128576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806314148af21461012a5780632f54bf6e146102d1578063468721a71461032c578063610b5925146103e45780637de7edef1461042757806385e332cd1461046a57806386040aa9146104c15780638cff635514610531578063a04222e114610588578063a0e67e2b14610661578063a3f4df7e146106cd578063ad8a04501461075d578063affed0e0146107a8578063b2494df3146107d3578063b7f3358d1461083f578063b91a667f1461086f578063ba08ea24146108bf578063c4ca3a9c146109c3578063e009cfde14610a77578063e318b52b14610ada578063e75235b814610b5d578063ffa1ad7414610b8e575b005b34801561013657600080fd5b506102cf600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190803590602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050610c1e565b005b3480156102dd57600080fd5b50610312600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e41565b604051808215151515815260200191505060405180910390f35b34801561033857600080fd5b506103ca600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050610ec3565b604051808215151515815260200191505060405180910390f35b3480156103f057600080fd5b50610425600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f60565b005b34801561043357600080fd5b50610468600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506111dd565b005b34801561047657600080fd5b5061047f611280565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156104cd57600080fd5b5061052f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050611285565b005b34801561053d57600080fd5b5061054661150b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561059457600080fd5b5061065f60048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611510565b005b34801561066d57600080fd5b5061067661152a565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156106b957808201518184015260208101905061069e565b505050509050019250505060405180910390f35b3480156106d957600080fd5b506106e26116c5565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610722578082015181840152602081019050610707565b50505050905090810190601f16801561074f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561076957600080fd5b5061079260048036038101908080359060200190929190803590602001909291905050506116fe565b6040518082815260200191505060405180910390f35b3480156107b457600080fd5b506107bd611713565b6040518082815260200191505060405180910390f35b3480156107df57600080fd5b506107e8611719565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561082b578082015181840152602081019050610810565b505050509050019250505060405180910390f35b34801561084b57600080fd5b5061086d600480360381019080803560ff1690602001909291905050506119c0565b005b34801561087b57600080fd5b506108bd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050611a3f565b005b3480156108cb57600080fd5b506109a5600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190803590602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611cf7565b60405180826000191660001916815260200191505060405180910390f35b3480156109cf57600080fd5b50610a61600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050611fde565b6040518082815260200191505060405180910390f35b348015610a8357600080fd5b50610ad8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506120fe565b005b348015610ae657600080fd5b50610b5b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612331565b005b348015610b6957600080fd5b50610b726126c6565b604051808260ff1660ff16815260200191505060405180910390f35b348015610b9a57600080fd5b50610ba36126dd565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610be3578082015181840152602081019050610bc8565b50505050905090810190601f168015610c105780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60008060005a9250610c44610c3c8f8f8f8f8f8f8f8f600554611cf7565b878787612716565b60056000815480929190600101919050555089612af85a0310151515610c6957600080fd5b610c768e8e8e8e8e6128dd565b1515610ca9577facfdb444727b3b8994850a379f4bfc8a5ca665a55604339199daafa16f687b1a60405160405180910390a15b6000881115610e3157610cbe5a84038a6116fe565b91508782029050600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161415610d46573273ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610d40573d6000803e3d6000fd5b50610e30565b8673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb32836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610de957600080fd5b505af1158015610dfd573d6000803e3d6000fd5b505050506040513d6020811015610e1357600080fd5b81019080805190602001909291905050501515610e2f57600080fd5b5b5b5050505050505050505050505050565b600080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515610f4957600080fd5b610f56858585855a6128dd565b9050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610f9a57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614158015610fee5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515610ff957600080fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561107d57600080fd5b60016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561121757600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561123d57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156112bf57600080fd5b8060ff16600160035403101515156112d657600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561136f57600080fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360008154809291906001900391905055508060ff16600460009054906101000a900460ff1660ff1614151561150657611505816119c0565b5b505050565b600181565b61151a84846129da565b6115248282612c6b565b50505050565b6060806000806003546040519080825280602002602001820160405280156115615781602001602082028038833980820191505090505b5092506000915060026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415156116bc5780838381518110151561161157fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081806001019250506115cc565b82935050505090565b6040805190810160405280601c81526020017f476e6f736973205361666520506572736f6e616c2045646974696f6e0000000081525081565b6000615208612af88385010101905092915050565b60055481565b606060008060606000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151561182d57600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050611788565b8260405190808252806020026020018201604052801561185c5781602001602082028038833980820191505090505b5090506000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156119b75781818481518110151561190c57fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915082806001019350506118c7565b80935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156119fa57600080fd5b6003548160ff1611151515611a0e57600080fd5b60018160ff1610151515611a2157600080fd5b80600460006101000a81548160ff021916908360ff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611a7957600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614158015611acd5750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1515611ad857600080fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611b5c57600080fd5b60026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003600081548092919060010191905055508060ff16600460009054906101000a900460ff1660ff16141515611cf357611cf2816119c0565b5b5050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f010000000000000000000000000000000000000000000000000000000000000002308c8c8c8c8c8c8c8c8c604051602001808d7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018c7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140189815260200188805190602001908083835b602083101515611e9f5780518252602082019150602081019050602083039250611e7a565b6001836020036101000a038019825116818451168082178552505050505050905001876002811115611ecd57fe5b60ff167f01000000000000000000000000000000000000000000000000000000000000000281526001018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018281526020019c505050505050505050505050506040516020818303038152906040526040518082805190602001908083835b602083101515611fa25780518252602082019150602081019050602083039250611f7d565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902090509998505050505050505050565b60008060003073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561201d57600080fd5b5a915061202d878787875a6128dd565b151561203857600080fd5b5a8203905080604051602001808281526020019150506040516020818303038152906040526040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156120c35780820151818401526020810190506120a8565b50505050905090810190601f1680156120f05780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561213857600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156121d157600080fd5b600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561236b57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156123bf5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15156123ca57600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561244e57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156124e757600080fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000600460009054906101000a900460ff16905090565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000806000809250600090505b600460009054906101000a900460ff1660ff168110156128d457600187878381518110151561274e57fe5b90602001906020020151878481518110151561276657fe5b90602001906020020151878581518110151561277e57fe5b90602001906020020151604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af11580156127f9573d6000803e3d6000fd5b5050506020604051035191506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561288a57600080fd5b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161115156128c457600080fd5b8192508080600101915050612723565b50505050505050565b600080600060028111156128ed57fe5b8460028111156128f957fe5b14156129125761290b87878786612daa565b91506129d0565b6001600281111561291f57fe5b84600281111561292b57fe5b14156129435761293c878685612dc3565b91506129cf565b61294c85612dda565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b600080600080600460009054906101000a900460ff1660ff161415156129ff57600080fd5b84518460ff1611151515612a1257600080fd5b60018460ff1610151515612a2557600080fd5b60019250600091505b8451821015612bc2578482815181101515612a4557fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff1614158015612aa55750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515612ab057600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612b3457600080fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508092508180600101925050612a2e565b6001600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550845160038190555083600460006101000a81548160ff021916908360ff1602179055505050505050565b600060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612cf057600080fd5b6001806000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008273ffffffffffffffffffffffffffffffffffffffff16141515612da657612d9a82825a612dc3565b1515612da557600080fd5b5b5050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f090509190505600a165627a7a72305820347ad2b5b6fe6e72a8ecd2f9f47f2abf73193416650afadcef171dd55cb8297c0029", - "deployedBytecode": "0x608060405260043610610128576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806314148af21461012a5780632f54bf6e146102d1578063468721a71461032c578063610b5925146103e45780637de7edef1461042757806385e332cd1461046a57806386040aa9146104c15780638cff635514610531578063a04222e114610588578063a0e67e2b14610661578063a3f4df7e146106cd578063ad8a04501461075d578063affed0e0146107a8578063b2494df3146107d3578063b7f3358d1461083f578063b91a667f1461086f578063ba08ea24146108bf578063c4ca3a9c146109c3578063e009cfde14610a77578063e318b52b14610ada578063e75235b814610b5d578063ffa1ad7414610b8e575b005b34801561013657600080fd5b506102cf600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190803590602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050610c1e565b005b3480156102dd57600080fd5b50610312600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e41565b604051808215151515815260200191505060405180910390f35b34801561033857600080fd5b506103ca600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050610ec3565b604051808215151515815260200191505060405180910390f35b3480156103f057600080fd5b50610425600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f60565b005b34801561043357600080fd5b50610468600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506111dd565b005b34801561047657600080fd5b5061047f611280565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156104cd57600080fd5b5061052f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050611285565b005b34801561053d57600080fd5b5061054661150b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561059457600080fd5b5061065f60048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611510565b005b34801561066d57600080fd5b5061067661152a565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156106b957808201518184015260208101905061069e565b505050509050019250505060405180910390f35b3480156106d957600080fd5b506106e26116c5565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610722578082015181840152602081019050610707565b50505050905090810190601f16801561074f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561076957600080fd5b5061079260048036038101908080359060200190929190803590602001909291905050506116fe565b6040518082815260200191505060405180910390f35b3480156107b457600080fd5b506107bd611713565b6040518082815260200191505060405180910390f35b3480156107df57600080fd5b506107e8611719565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561082b578082015181840152602081019050610810565b505050509050019250505060405180910390f35b34801561084b57600080fd5b5061086d600480360381019080803560ff1690602001909291905050506119c0565b005b34801561087b57600080fd5b506108bd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050611a3f565b005b3480156108cb57600080fd5b506109a5600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190803590602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611cf7565b60405180826000191660001916815260200191505060405180910390f35b3480156109cf57600080fd5b50610a61600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050611fde565b6040518082815260200191505060405180910390f35b348015610a8357600080fd5b50610ad8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506120fe565b005b348015610ae657600080fd5b50610b5b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612331565b005b348015610b6957600080fd5b50610b726126c6565b604051808260ff1660ff16815260200191505060405180910390f35b348015610b9a57600080fd5b50610ba36126dd565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610be3578082015181840152602081019050610bc8565b50505050905090810190601f168015610c105780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60008060005a9250610c44610c3c8f8f8f8f8f8f8f8f600554611cf7565b878787612716565b60056000815480929190600101919050555089612af85a0310151515610c6957600080fd5b610c768e8e8e8e8e6128dd565b1515610ca9577facfdb444727b3b8994850a379f4bfc8a5ca665a55604339199daafa16f687b1a60405160405180910390a15b6000881115610e3157610cbe5a84038a6116fe565b91508782029050600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161415610d46573273ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610d40573d6000803e3d6000fd5b50610e30565b8673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb32836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610de957600080fd5b505af1158015610dfd573d6000803e3d6000fd5b505050506040513d6020811015610e1357600080fd5b81019080805190602001909291905050501515610e2f57600080fd5b5b5b5050505050505050505050505050565b600080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515610f4957600080fd5b610f56858585855a6128dd565b9050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610f9a57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614158015610fee5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515610ff957600080fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561107d57600080fd5b60016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561121757600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561123d57600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156112bf57600080fd5b8060ff16600160035403101515156112d657600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561136f57600080fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360008154809291906001900391905055508060ff16600460009054906101000a900460ff1660ff1614151561150657611505816119c0565b5b505050565b600181565b61151a84846129da565b6115248282612c6b565b50505050565b6060806000806003546040519080825280602002602001820160405280156115615781602001602082028038833980820191505090505b5092506000915060026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415156116bc5780838381518110151561161157fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081806001019250506115cc565b82935050505090565b6040805190810160405280601c81526020017f476e6f736973205361666520506572736f6e616c2045646974696f6e0000000081525081565b6000615208612af88385010101905092915050565b60055481565b606060008060606000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151561182d57600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050611788565b8260405190808252806020026020018201604052801561185c5781602001602082028038833980820191505090505b5090506000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156119b75781818481518110151561190c57fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915082806001019350506118c7565b80935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156119fa57600080fd5b6003548160ff1611151515611a0e57600080fd5b60018160ff1610151515611a2157600080fd5b80600460006101000a81548160ff021916908360ff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611a7957600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614158015611acd5750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1515611ad857600080fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611b5c57600080fd5b60026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003600081548092919060010191905055508060ff16600460009054906101000a900460ff1660ff16141515611cf357611cf2816119c0565b5b5050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f010000000000000000000000000000000000000000000000000000000000000002308c8c8c8c8c8c8c8c8c604051602001808d7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018c7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140189815260200188805190602001908083835b602083101515611e9f5780518252602082019150602081019050602083039250611e7a565b6001836020036101000a038019825116818451168082178552505050505050905001876002811115611ecd57fe5b60ff167f01000000000000000000000000000000000000000000000000000000000000000281526001018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018281526020019c505050505050505050505050506040516020818303038152906040526040518082805190602001908083835b602083101515611fa25780518252602082019150602081019050602083039250611f7d565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902090509998505050505050505050565b60008060003073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561201d57600080fd5b5a915061202d878787875a6128dd565b151561203857600080fd5b5a8203905080604051602001808281526020019150506040516020818303038152906040526040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156120c35780820151818401526020810190506120a8565b50505050905090810190601f1680156120f05780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561213857600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156121d157600080fd5b600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561236b57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156123bf5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15156123ca57600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561244e57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156124e757600080fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000600460009054906101000a900460ff16905090565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000806000809250600090505b600460009054906101000a900460ff1660ff168110156128d457600187878381518110151561274e57fe5b90602001906020020151878481518110151561276657fe5b90602001906020020151878581518110151561277e57fe5b90602001906020020151604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af11580156127f9573d6000803e3d6000fd5b5050506020604051035191506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561288a57600080fd5b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161115156128c457600080fd5b8192508080600101915050612723565b50505050505050565b600080600060028111156128ed57fe5b8460028111156128f957fe5b14156129125761290b87878786612daa565b91506129d0565b6001600281111561291f57fe5b84600281111561292b57fe5b14156129435761293c878685612dc3565b91506129cf565b61294c85612dda565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b600080600080600460009054906101000a900460ff1660ff161415156129ff57600080fd5b84518460ff1611151515612a1257600080fd5b60018460ff1610151515612a2557600080fd5b60019250600091505b8451821015612bc2578482815181101515612a4557fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff1614158015612aa55750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515612ab057600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612b3457600080fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508092508180600101925050612a2e565b6001600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550845160038190555083600460006101000a81548160ff021916908360ff1602179055505050505050565b600060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612cf057600080fd5b6001806000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008273ffffffffffffffffffffffffffffffffffffffff16141515612da657612d9a82825a612dc3565b1515612da557600080fd5b5b5050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f090509190505600a165627a7a72305820347ad2b5b6fe6e72a8ecd2f9f47f2abf73193416650afadcef171dd55cb8297c0029", - "sourceMap": "449:6193:3:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;449:6193:3;;;;;;;", - "deployedSourceMap": "449:6193:3:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1660:1367;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1660:1367:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4841:129:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4841:129:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2522:377:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2522:377:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1235:391;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1235:391:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;626:208:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:208:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;499:55:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;499:55:8;;;;;;;;;;;;;;;;;;;;;;;;;;;2776:573:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2776:573:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;287:54;;8:9:-1;5:2;;;30:1;27;20:12;5:2;287:54:9;;;;;;;;;;;;;;;;;;;;;;;;;;;693:301:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;693:301:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5052:458:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5052:458:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;5052:458:9;;;;;;;;;;;;;;;;;517:60:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;517:60:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;517:60:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3459:209;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3459:209:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;779:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;779:20:3;;;;;;;;;;;;;;;;;;;;;;;4423:738:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4423:738:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;4423:738:8;;;;;;;;;;;;;;;;;4398:318:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4398:318:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;1906:528;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1906:528:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6140:500:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6140:500:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4586:407;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4586:407:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1887:299:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1887:299:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3683:526:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3683:526:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4722:113;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4722:113:9;;;;;;;;;;;;;;;;;;;;;;;;;;;583:40:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;583:40:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;583:40:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1660:1367;1994:16;2565;2642:14;2013:9;1994:28;;2032:113;2042:93;2061:2;2065:5;2072:4;2078:9;2089;2100:7;2109:8;2119;2129:5;;2042:18;:93::i;:::-;2137:1;2140;2143;2032:9;:113::i;:::-;2206:5;;:7;;;;;;;;;;;;;2264:9;737:5;2231:9;:29;:42;;2223:51;;;;;;;;2289:46;2297:2;2301:5;2308:4;2314:9;2325;2289:7;:46::i;:::-;2288:47;2284:100;;;2356:17;;;;;;;;;;2284:100;2548:1;2537:8;:12;2533:486;;;2584:44;2609:9;2598:8;:20;2620:7;2584:13;:44::i;:::-;2565:63;;2670:8;2659;:19;2642:36;;2716:1;2696:22;;:8;:22;;;2692:317;;;2805:9;:18;;:26;2824:6;2805:26;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2805:26:3;2692:317;;;2956:8;2945:29;;;2975:9;2986:6;2945:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2945:48:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2945:48:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2945:48:3;;;;;;;;;;;;;;;;2937:57;;;;;;;;2692:317;2533:486;1660:1367;;;;;;;;;;;;;;:::o;4841:129:9:-;4918:4;4962:1;4945:6;:13;4952:5;4945:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;;4938:25;;4841:129;;;:::o;2522:377:8:-;2654:12;2762:1;2739:7;:19;2747:10;2739:19;;;;;;;;;;;;;;;;;;;;;;;;;:24;;;;2731:33;;;;;;;;2846:46;2854:2;2858:5;2865:4;2871:9;2882;2846:7;:46::i;:::-;2836:56;;2522:377;;;;;;:::o;1235:391::-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;1401:1:8;1390:6;1382:20;;;;:59;;;;;550:3;1406:35;;1414:6;1406:35;;;;1382:59;1374:68;;;;;;;;1520:1;1501:7;:15;1509:6;1501:15;;;;;;;;;;;;;;;;;;;;;;;;;:20;;;1493:29;;;;;;;;1550:7;:25;550:3;1550:25;;;;;;;;;;;;;;;;;;;;;;;;;1532:7;:15;1540:6;1532:15;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;1613:6;1585:7;:25;550:3;1585:25;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;1235:391;:::o;626:208:5:-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;791:1:5;776:11;:16;;;;768:25;;;;;;;;816:11;803:10;;:24;;;;;;;;;;;;;;;;;;626:208;:::o;499:55:8:-;550:3;499:55;:::o;2776:573:9:-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;3000:10:9;2982:28;;2995:1;2982:10;;:14;:28;;2974:37;;;;;;;;3112:5;3091:26;;:6;:17;3098:9;3091:17;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;3083:35;;;;;;;;3148:6;:13;3155:5;3148:13;;;;;;;;;;;;;;;;;;;;;;;;;3128:6;:17;3135:9;3128:17;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;3187:1;3171:6;:13;3178:5;3171:13;;;;;;;;;;;;;;;;:17;;;;;;;;;;;;;;;;;;3198:10;;:12;;;;;;;;;;;;;;3291:10;3278:23;;:9;;;;;;;;;;;:23;;;;3274:68;;;3315:27;3331:10;3315:15;:27::i;:::-;3274:68;2776:573;;;:::o;287:54::-;337:3;287:54;:::o;693:301:2:-;798:32;810:7;819:10;798:11;:32::i;:::-;965:22;978:2;982:4;965:12;:22::i;:::-;693:301;;;;:::o;5052:458:9:-;5118:9;5143:22;5237:13;5264:20;5182:10;;5168:25;;;;;;;;;;;;;;;;;;;;;;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;5168:25:9;;;;5143:50;;5253:1;5237:17;;5287:6;:23;337:3;5287:23;;;;;;;;;;;;;;;;;;;;;;;;;5264:46;;5320:162;337:3;5326:31;;:12;:31;;;;5320:162;;;5388:12;5373:5;5379;5373:12;;;;;;;;;;;;;;;;;:27;;;;;;;;;;;5429:6;:20;5436:12;5429:20;;;;;;;;;;;;;;;;;;;;;;;;;5414:35;;5463:8;;;;;;;5320:162;;;5498:5;5491:12;;5052:458;;;;:::o;517:60:3:-;;;;;;;;;;;;;;;;;;;;:::o;3459:209::-;3568:7;680:5;737;3614:7;3599:12;:22;:42;:62;3592:69;;3459:209;;;;:::o;779:20::-;;;;:::o;4423:738:8:-;4490:9;4549:19;4582:21;4782:22;4571:1;4549:23;;4606:7;:25;550:3;4606:25;;;;;;;;;;;;;;;;;;;;;;;;;4582:49;;4641:132;550:3;4647:33;;:13;:33;;;;4641:132;;;4712:7;:22;4720:13;4712:22;;;;;;;;;;;;;;;;;;;;;;;;;4696:38;;4748:14;;;;;;;4641:132;;;4821:11;4807:26;;;;;;;;;;;;;;;;;;;;;;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;4807:26:8;;;;4782:51;;4891:1;4877:15;;4918:7;:25;550:3;4918:25;;;;;;;;;;;;;;;;;;;;;;;;;4902:41;;4953:180;550:3;4959:33;;:13;:33;;;;4953:180;;;5029:13;5008:5;5014:11;5008:18;;;;;;;;;;;;;;;;;:34;;;;;;;;;;;5072:7;:22;5080:13;5072:22;;;;;;;;;;;;;;;;;;;;;;;;;5056:38;;5108:14;;;;;;;4953:180;;;5149:5;5142:12;;4423:738;;;;:::o;4398:318:9:-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;4580:10:9;;4566;:24;;;;4558:33;;;;;;;;4675:1;4661:10;:15;;;;4653:24;;;;;;;;4699:10;4687:9;;:22;;;;;;;;;;;;;;;;;;4398:318;:::o;1906:528::-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;2076:1:9;2067:5;:10;;;;:38;;;;;337:3;2081:24;;:5;:24;;;;2067:38;2059:47;;;;;;;;2181:1;2164:6;:13;2171:5;2164:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;2156:27;;;;;;;;2209:6;:23;337:3;2209:23;;;;;;;;;;;;;;;;;;;;;;;;;2193:6;:13;2200:5;2193:13;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;2268:5;2242:6;:23;337:3;2242:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;2283:10;;:12;;;;;;;;;;;;;2376:10;2363:23;;:9;;;;;;;;;;;:23;;;;2359:68;;;2400:27;2416:10;2400:15;:27::i;:::-;2359:68;1906:528;;:::o;6140:500:3:-;6451:7;6526:4;6521:10;;6538:1;6533:7;;6542:4;6548:2;6552:5;6559:4;6565:9;6576;6587:7;6596:8;6606;6616:6;6504:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;6504:119:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;6504:119:3;;;6481:152;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;6481:152:3;;;;;;;;;;;;;;;;6474:159;;6140:500;;;;;;;;;;;:::o;4586:407::-;4725:7;4748:16;4851:19;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;4767:9:3;4748:28;;4794:46;4802:2;4806:5;4813:4;4819:9;4830;4794:7;:46::i;:::-;4786:55;;;;;;;;4884:9;4873:8;:20;4851:42;;4972:11;4955:29;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;4955:29:3;;;4941:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;4941:45:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1887:299:8;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;2095:6:8;2064:38;;:7;:19;2072:10;2064:19;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;2056:47;;;;;;;;2135:7;:15;2143:6;2135:15;;;;;;;;;;;;;;;;;;;;;;;;;2113:7;:19;2121:10;2113:19;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;2178:1;2160:7;:15;2168:6;2160:15;;;;;;;;;;;;;;;;:19;;;;;;;;;;;;;;;;;;1887:299;;:::o;3683:526:9:-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;3866:1:9;3854:8;:13;;;;:44;;;;;337:3;3871:27;;:8;:27;;;;3854:44;3846:53;;;;;;;;3977:1;3957:6;:16;3964:8;3957:16;;;;;;;;;;;;;;;;;;;;;;;;;:21;;;3949:30;;;;;;;;4080:8;4059:29;;:6;:17;4066:9;4059:17;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;4051:38;;;;;;;;4118:6;:16;4125:8;4118:16;;;;;;;;;;;;;;;;;;;;;;;;;4099:6;:16;4106:8;4099:16;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;4164:8;4144:6;:17;4151:9;4144:17;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;4201:1;4182:6;:16;4189:8;4182:16;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;3683:526;;;:::o;4722:113::-;4791:5;4819:9;;;;;;;;;;;4812:16;;4722:113;:::o;583:40:3:-;;;;;;;;;;;;;;;;;;;;:::o;4999:541::-;5165:17;5205:20;5235:9;5193:1;5165:30;;5305:1;5301:5;;5296:238;5312:9;;;;;;;;;;;5308:13;;:1;:13;5296:238;;;5357:33;5367:4;5373:1;5375;5373:4;;;;;;;;;;;;;;;;;;5379:1;5381;5379:4;;;;;;;;;;;;;;;;;;5385:1;5387;5385:4;;;;;;;;;;;;;;;;;;5357:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5357:33:3;;;;;;;;5342:48;;5436:1;5412:6;:20;5419:12;5412:20;;;;;;;;;;;;;;;;;;;;;;;;;:25;;;;5404:34;;;;;;;;5475:9;5460:24;;:12;:24;;;5452:33;;;;;;;;5511:12;5499:24;;5323:3;;;;;;;5296:238;;;4999:541;;;;;;;:::o;2905:548:8:-;3036:12;3307:19;3081;3068:32;;;;;;;;:9;:32;;;;;;;;;3064:383;;;3124:35;3136:2;3140:5;3147:4;3153:5;3124:11;:35::i;:::-;3114:45;;3064:383;;;3191:27;3178:40;;;;;;;;:9;:40;;;;;;;;;3174:273;;;3242:36;3262:2;3266:4;3272:5;3242:19;:36::i;:::-;3232:46;;3174:273;;;3329:19;3343:4;3329:13;:19::i;:::-;3307:41;;3387:1;3372:11;:16;;;;3362:26;;3407:29;3424:11;3407:29;;;;;;;;;;;;;;;;;;;;;;3174:273;3064:383;2905:548;;;;;;;;:::o;641:1025:9:-;1132:20;1185:9;1284:13;875:1;862:9;;;;;;;;;;;:14;;;854:23;;;;;;;;984:7;:14;970:10;:28;;;;962:37;;;;;;;;1083:1;1069:10;:15;;;;1061:24;;;;;;;;337:3;1132:38;;1197:1;1185:13;;1180:363;1204:7;:14;1200:1;:18;1180:363;;;1300:7;1308:1;1300:10;;;;;;;;;;;;;;;;;;1284:26;;1341:1;1332:5;:10;;;;:38;;;;;337:3;1346:24;;:5;:24;;;;1332:38;1324:47;;;;;;;;1454:1;1437:6;:13;1444:5;1437:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;1429:27;;;;;;;;1493:5;1470:6;:20;1477:12;1470:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;1527:5;1512:20;;1220:3;;;;;;;1180:363;;;337:3;1552:6;:20;1559:12;1552:20;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;1613:7;:14;1600:10;:27;;;;1649:10;1637:9;;:22;;;;;;;;;;;;;;;;;;641:1025;;;;;:::o;735:333:8:-;849:1;820:7;:25;550:3;820:25;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;812:39;;;;;;;;550:3;861:7;:25;550:3;861:25;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;925:1;919:2;:7;;;;915:146;;;1020:40;1040:2;1044:4;1050:9;1020:19;:40::i;:::-;1012:49;;;;;;;;915:146;735:333;;:::o;3459:309::-;3568:12;3750:1;3747;3740:4;3734:11;3727:4;3721;3717:15;3710:5;3706:2;3699:5;3694:58;3683:69;;3669:93;;;;;;:::o;3774:303::-;3876:12;4059:1;4056;4049:4;4043:11;4036:4;4030;4026:15;4022:2;4015:5;4002:59;3991:70;;3977:94;;;;;:::o;4083:261::-;4152:19;4322:4;4316:11;4309:4;4303;4299:15;4296:1;4289:39;4274:54;;4260:78;;;:::o", - "source": "pragma solidity 0.4.24;\nimport \"./interfaces/ERC20Token.sol\";\nimport \"./GnosisSafe.sol\";\nimport \"./MasterCopy.sol\";\n\n\n/// @title Gnosis Safe Personal Edition - A multisignature wallet with support for confirmations using signed messages based on ERC191.\n/// @author Stefan George - \n/// @author Richard Meissner - \n/// @author Ricardo Guilherme Schmidt - (Status Research & Development GmbH) - Gas Token Payment\ncontract GnosisSafePersonalEdition is MasterCopy, GnosisSafe {\n\n string public constant NAME = \"Gnosis Safe Personal Edition\";\n string public constant VERSION = \"0.0.1\";\n \n uint256 internal constant BASE_TX_GAS_COSTS = 21000;\n uint256 internal constant PAYMENT_GAS_COSTS = 11000;\n\n event ExecutionFailed();\n\n uint256 public nonce;\n\n /// @dev Allows to execute a Safe transaction confirmed by required number of owners.\n /// @param to Destination address of Safe transaction.\n /// @param value Ether value of Safe transaction.\n /// @param data Data payload of Safe transaction.\n /// @param operation Operation type of Safe transaction.\n /// @param safeTxGas Gas that should be used for the Safe transaction.\n /// @param dataGas Gas costs for data used to trigger the safe transaction.\n /// @param gasPrice Gas price that should be used for the payment calculation.\n /// @param gasToken Token address (or 0 if ETH) that is used for the payment.\n /// @param v Array of signature V values sorted by owner addresses.\n /// @param r Array of signature R values sorted by owner addresses.\n /// @param s Array of signature S values sorted by owner addresses.\n function execAndPayTransaction(\n address to, \n uint256 value, \n bytes data, \n Enum.Operation operation, \n uint256 safeTxGas,\n uint256 dataGas,\n uint256 gasPrice,\n address gasToken,\n uint8[] v, \n bytes32[] r, \n bytes32[] s\n )\n public\n {\n uint256 startGas = gasleft();\n checkHash(getTransactionHash(to, value, data, operation, safeTxGas, dataGas, gasPrice, gasToken, nonce), v, r, s);\n // Increase nonce and execute transaction.\n nonce++;\n require(gasleft() - PAYMENT_GAS_COSTS >= safeTxGas);\n if (!execute(to, value, data, operation, safeTxGas)) {\n emit ExecutionFailed();\n }\n \n // We transfer the calculated tx costs to the tx.origin to avoid sending it to intermediate contracts that have made calls\n if (gasPrice > 0) {\n uint256 gasCosts = totalGasCosts(startGas - gasleft(), dataGas);\n uint256 amount = gasCosts * gasPrice;\n if (gasToken == address(0)) {\n // solium-disable-next-line security/no-tx-origin\n tx.origin.transfer(amount);\n } else {\n // solium-disable-next-line security/no-tx-origin\n require(ERC20Token(gasToken).transfer(tx.origin, amount));\n }\n } \n }\n\n /// @dev Calculates the total gas costs for a safe transaction with the gas costs for the execution of the transaction.\n /// @param executionGas Gas costs for the execution of the safe transaction.\n /// @param dataGas Gas costs for data used to trigger the safe transaction.\n /// @return Total gas costs for the execution (this includes gas costs for the payment to tx.origin, base transaction and payload data).\n function totalGasCosts(uint256 executionGas, uint256 dataGas) \n public \n pure\n returns (uint256) \n {\n return executionGas + dataGas + PAYMENT_GAS_COSTS + BASE_TX_GAS_COSTS;\n }\n\n /// @dev Allows to estimate a Safe transaction. \n /// This method is only meant for estimation purpose, therfore two different protection mechanism against execution in a transaction have been made:\n /// 1.) The method can only be called from the safe itself\n /// 2.) The response is returned with a revert\n /// When estimating set `from` to the address of the safe.\n /// Since the `estimateGas` function includes refunds, call this method to get an estimated of the costs that are deducted from the safe with `execAndPayTransaction`\n /// @param to Destination address of Safe transaction.\n /// @param value Ether value of Safe transaction.\n /// @param data Data payload of Safe transaction.\n /// @param operation Operation type of Safe transaction.\n /// @return Estimate without refunds and overhead fees (base transaction and payload data gas costs).\n function requiredTxGas(address to, uint256 value, bytes data, Enum.Operation operation)\n public\n authorized\n returns (uint256)\n {\n uint256 startGas = gasleft();\n require(execute(to, value, data, operation, gasleft()));\n uint256 requiredGas = startGas - gasleft();\n // Convert response to string\n revert(string(abi.encodePacked(requiredGas)));\n }\n\n function checkHash(bytes32 hash, uint8[] v, bytes32[] r, bytes32[] s)\n internal\n view\n {\n // There cannot be an owner with address 0.\n address lastOwner = address(0);\n address currentOwner;\n uint256 i;\n // Validate threshold is reached.\n for (i = 0; i < threshold; i++) {\n currentOwner = ecrecover(hash, v[i], r[i], s[i]);\n require(owners[currentOwner] != 0);\n require(currentOwner > lastOwner);\n lastOwner = currentOwner;\n }\n }\n\n /// @dev Returns hash to be signed by owners.\n /// @param to Destination address.\n /// @param value Ether value.\n /// @param data Data payload.\n /// @param operation Operation type.\n /// @param safeTxGas Fas that should be used for the safe transaction.\n /// @param dataGas Gas costs for data used to trigger the safe transaction.\n /// @param gasPrice Maximum gas price that should be used for this transaction.\n /// @param gasToken Token address (or 0 if ETH) that is used for the payment.\n /// @param _nonce Transaction nonce.\n /// @return Transaction hash.\n function getTransactionHash(\n address to, \n uint256 value, \n bytes data, \n Enum.Operation operation, \n uint256 safeTxGas, \n uint256 dataGas, \n uint256 gasPrice, \n address gasToken,\n uint256 _nonce\n )\n public\n view\n returns (bytes32)\n {\n return keccak256(\n abi.encodePacked(byte(0x19), byte(0), this, to, value, data, operation, safeTxGas, dataGas, gasPrice, gasToken, _nonce)\n );\n }\n}\n", + "bytecode": "0x608060405234801561001057600080fd5b50613ee5806100206000396000f300608060405260043610610128576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806314148af21461012a5780632f54bf6e146102d1578063468721a71461032c578063610b5925146103e45780637de7edef1461042757806385e332cd1461046a57806386040aa9146104c15780638cff635514610531578063a04222e114610588578063a0e67e2b14610661578063a3f4df7e146106cd578063ad8a04501461075d578063affed0e0146107a8578063b2494df3146107d3578063b7f3358d1461083f578063b91a667f1461086f578063ba08ea24146108bf578063c4ca3a9c146109c3578063e009cfde14610a77578063e318b52b14610ada578063e75235b814610b5d578063ffa1ad7414610b8e575b005b34801561013657600080fd5b506102cf600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190803590602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050610c1e565b005b3480156102dd57600080fd5b50610312600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f5f565b604051808215151515815260200191505060405180910390f35b34801561033857600080fd5b506103ca600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050610fe1565b604051808215151515815260200191505060405180910390f35b3480156103f057600080fd5b50610425600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061110d565b005b34801561043357600080fd5b50610468600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506114eb565b005b34801561047657600080fd5b5061047f6116ac565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156104cd57600080fd5b5061052f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506116b1565b005b34801561053d57600080fd5b50610546611ae4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561059457600080fd5b5061065f60048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611ae9565b005b34801561066d57600080fd5b50610676611b03565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156106b957808201518184015260208101905061069e565b505050509050019250505060405180910390f35b3480156106d957600080fd5b506106e2611c9e565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610722578082015181840152602081019050610707565b50505050905090810190601f16801561074f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561076957600080fd5b506107926004803603810190808035906020019092919080359060200190929190505050611cd7565b6040518082815260200191505060405180910390f35b3480156107b457600080fd5b506107bd611cec565b6040518082815260200191505060405180910390f35b3480156107df57600080fd5b506107e8611cf2565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561082b578082015181840152602081019050610810565b505050509050019250505060405180910390f35b34801561084b57600080fd5b5061086d600480360381019080803560ff169060200190929190505050611f99565b005b34801561087b57600080fd5b506108bd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506121c5565b005b3480156108cb57600080fd5b506109a5600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190803590602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506125de565b60405180826000191660001916815260200191505060405180910390f35b3480156109cf57600080fd5b50610a61600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff1690602001909291905050506128c5565b6040518082815260200191505060405180910390f35b348015610a8357600080fd5b50610ad8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612a74565b005b348015610ae657600080fd5b50610b5b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612dc5565b005b348015610b6957600080fd5b50610b7261334a565b604051808260ff1660ff16815260200191505060405180910390f35b348015610b9a57600080fd5b50610ba3613361565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610be3578082015181840152602081019050610bc8565b50505050905090810190601f168015610c105780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60008060005a9250610c44610c3c8f8f8f8f8f8f8f8f6005546125de565b87878761339a565b60056000815480929190600101919050555089612af85a0310151515610cf8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001807f4e6f7420656e6f7567682067617320746f20657865637574652073616665207481526020017f72616e73616374696f6e0000000000000000000000000000000000000000000081525060400191505060405180910390fd5b610d058e8e8e8e8e613659565b1515610d38577facfdb444727b3b8994850a379f4bfc8a5ca665a55604339199daafa16f687b1a60405160405180910390a15b6000881115610f4f57610d4d5a84038a611cd7565b91508782029050600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161415610dd5573273ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610dcf573d6000803e3d6000fd5b50610f4e565b8673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb32836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610e7857600080fd5b505af1158015610e8c573d6000803e3d6000fd5b505050506040513d6020811015610ea257600080fd5b81019080805190602001909291905050501515610f4d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f436f756c64206e6f74207061792067617320636f737473207769746820746f6b81526020017f656e00000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b5b5b5050505050505050505050505050565b600080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515156110f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206181526020017f6e20656e61626c6564206d6f64756c650000000000000000000000000000000081525060400191505060405180910390fd5b611103858585855a613659565b9050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156111d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415801561122a5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b151561129e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f496e76616c6964206d6f64756c6520616464726573732070726f76696465640081525060200191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561138b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4d6f64756c652068617320616c7265616479206265656e20616464656400000081525060200191505060405180910390fd5b60016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156115b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515611669576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f496e76616c6964206d617374657220636f707920616464726573732070726f7681526020017f696465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561177a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b8060ff1660016003540310151515611820576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001807f4e6577206f776e657220636f756e74206e6565647320746f206265206c61726781526020017f6572207468616e206e6577207468726573686f6c64000000000000000000000081525060400191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611948576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f496e76616c696420707265764f776e65722c206f776e6572207061697220707281526020017f6f7669646564000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360008154809291906001900391905055508060ff16600460009054906101000a900460ff1660ff16141515611adf57611ade81611f99565b5b505050565b600181565b611af38484613756565b611afd8282613c40565b50505050565b606080600080600354604051908082528060200260200182016040528015611b3a5781602001602082028038833980820191505090505b5092506000915060026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515611c9557808383815181101515611bea57fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508180600101925050611ba5565b82935050505090565b6040805190810160405280601c81526020017f476e6f736973205361666520506572736f6e616c2045646974696f6e0000000081525081565b6000615208612af88385010101905092915050565b60055481565b606060008060606000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515611e0657600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050611d61565b82604051908082528060200260200182016040528015611e355781602001602082028038833980820191505090505b5090506000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515611f9057818184815181101515611ee557fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050611ea0565b80935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612062576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b6003548160ff1611151515612105576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f5468726573686f6c642063616e6e6f7420657863656564206f776e657220636f81526020017f756e74000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60018160ff16101515156121a7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f5468726573686f6c64206e6565647320746f206265206772656174657220746881526020017f616e20300000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b80600460006101000a81548160ff021916908360ff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561228e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff16141580156122e25750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1515612356576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612443576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4164647265737320697320616c726561647920616e206f776e6572000000000081525060200191505060405180910390fd5b60026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003600081548092919060010191905055508060ff16600460009054906101000a900460ff1660ff161415156125da576125d981611f99565b5b5050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f010000000000000000000000000000000000000000000000000000000000000002308c8c8c8c8c8c8c8c8c604051602001808d7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018c7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140189815260200188805190602001908083835b6020831015156127865780518252602082019150602081019050602083039250612761565b6001836020036101000a0380198251168184511680821785525050505050509050018760028111156127b457fe5b60ff167f01000000000000000000000000000000000000000000000000000000000000000281526001018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018281526020019c505050505050505050505050506040516020818303038152906040526040518082805190602001908083835b6020831015156128895780518252602082019150602081019050602083039250612864565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902090509998505050505050505050565b60008060003073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612993576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b5a91506129a3878787875a613659565b15156129ae57600080fd5b5a8203905080604051602001808281526020019150506040516020818303038152906040526040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612a39578082015181840152602081019050612a1e565b50505050905090810190601f168015612a665780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612b3d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612c65576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001807f496e76616c696420707265764d6f64756c652c206d6f64756c6520706169722081526020017f70726f766964656400000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612e8e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614158015612ee25750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515612f56576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515613043576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4164647265737320697320616c726561647920616e206f776e6572000000000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561316b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f496e76616c696420707265764f776e65722c206f776e6572207061697220707281526020017f6f7669646564000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000600460009054906101000a900460ff16905090565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000806000809250600090505b600460009054906101000a900460ff1660ff168110156136505760018787838151811015156133d257fe5b9060200190602002015187848151811015156133ea57fe5b90602001906020020151878581518110151561340257fe5b90602001906020020151604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af115801561347d573d6000803e3d6000fd5b5050506020604051035191506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515613577576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5369676e6174757265206e6f742070726f7669646564206279206f776e65720081525060200191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16111515613640576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001807f5369676e61747572657320617265206e6f74206f726465726564206279206f7781526020017f6e6572206164647265737300000000000000000000000000000000000000000081525060400191505060405180910390fd5b81925080806001019150506133a7565b50505050505050565b6000806000600281111561366957fe5b84600281111561367557fe5b141561368e5761368787878786613e77565b915061374c565b6001600281111561369b57fe5b8460028111156136a757fe5b14156136bf576136b8878685613e90565b915061374b565b6136c885613ea7565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b600080600080600460009054906101000a900460ff1660ff161415156137e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f4f776e657273206861766520616c7265616479206265656e207365747570000081525060200191505060405180910390fd5b84518460ff1611151515613886576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f5468726573686f6c642063616e6e6f7420657863656564206f776e657220636f81526020017f756e74000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60018460ff1610151515613928576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f5468726573686f6c64206e6565647320746f206265206772656174657220746881526020017f616e20300000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60019250600091505b8451821015613b9757848281518110151561394857fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff16141580156139a85750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515613a1c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515613b09576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4475706c6963617465206f776e657220616464726573732070726f766964656481525060200191505060405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508092508180600101925050613931565b6001600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550845160038190555083600460006101000a81548160ff021916908360ff1602179055505050505050565b600060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515613d54576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f4d6f64756c6573206861766520616c7265616479206265656e20696e6974696181526020017f6c697a656400000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6001806000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008273ffffffffffffffffffffffffffffffffffffffff16141515613e7357613dfe82825a613e90565b1515613e72576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f436f756c64206e6f742066696e69736820696e697469616c697a6174696f6e0081525060200191505060405180910390fd5b5b5050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f090509190505600a165627a7a723058204a0cdc51b0bd3ef74e872a6c3c628ead2e046838ece4baffb11344a41b8a69740029", + "deployedBytecode": "0x608060405260043610610128576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806314148af21461012a5780632f54bf6e146102d1578063468721a71461032c578063610b5925146103e45780637de7edef1461042757806385e332cd1461046a57806386040aa9146104c15780638cff635514610531578063a04222e114610588578063a0e67e2b14610661578063a3f4df7e146106cd578063ad8a04501461075d578063affed0e0146107a8578063b2494df3146107d3578063b7f3358d1461083f578063b91a667f1461086f578063ba08ea24146108bf578063c4ca3a9c146109c3578063e009cfde14610a77578063e318b52b14610ada578063e75235b814610b5d578063ffa1ad7414610b8e575b005b34801561013657600080fd5b506102cf600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190803590602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050610c1e565b005b3480156102dd57600080fd5b50610312600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f5f565b604051808215151515815260200191505060405180910390f35b34801561033857600080fd5b506103ca600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050610fe1565b604051808215151515815260200191505060405180910390f35b3480156103f057600080fd5b50610425600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061110d565b005b34801561043357600080fd5b50610468600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506114eb565b005b34801561047657600080fd5b5061047f6116ac565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156104cd57600080fd5b5061052f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506116b1565b005b34801561053d57600080fd5b50610546611ae4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561059457600080fd5b5061065f60048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611ae9565b005b34801561066d57600080fd5b50610676611b03565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156106b957808201518184015260208101905061069e565b505050509050019250505060405180910390f35b3480156106d957600080fd5b506106e2611c9e565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610722578082015181840152602081019050610707565b50505050905090810190601f16801561074f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561076957600080fd5b506107926004803603810190808035906020019092919080359060200190929190505050611cd7565b6040518082815260200191505060405180910390f35b3480156107b457600080fd5b506107bd611cec565b6040518082815260200191505060405180910390f35b3480156107df57600080fd5b506107e8611cf2565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561082b578082015181840152602081019050610810565b505050509050019250505060405180910390f35b34801561084b57600080fd5b5061086d600480360381019080803560ff169060200190929190505050611f99565b005b34801561087b57600080fd5b506108bd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506121c5565b005b3480156108cb57600080fd5b506109a5600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190803590602001909291908035906020019092919080359060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506125de565b60405180826000191660001916815260200191505060405180910390f35b3480156109cf57600080fd5b50610a61600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff1690602001909291905050506128c5565b6040518082815260200191505060405180910390f35b348015610a8357600080fd5b50610ad8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612a74565b005b348015610ae657600080fd5b50610b5b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612dc5565b005b348015610b6957600080fd5b50610b7261334a565b604051808260ff1660ff16815260200191505060405180910390f35b348015610b9a57600080fd5b50610ba3613361565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610be3578082015181840152602081019050610bc8565b50505050905090810190601f168015610c105780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60008060005a9250610c44610c3c8f8f8f8f8f8f8f8f6005546125de565b87878761339a565b60056000815480929190600101919050555089612af85a0310151515610cf8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001807f4e6f7420656e6f7567682067617320746f20657865637574652073616665207481526020017f72616e73616374696f6e0000000000000000000000000000000000000000000081525060400191505060405180910390fd5b610d058e8e8e8e8e613659565b1515610d38577facfdb444727b3b8994850a379f4bfc8a5ca665a55604339199daafa16f687b1a60405160405180910390a15b6000881115610f4f57610d4d5a84038a611cd7565b91508782029050600073ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff161415610dd5573273ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610dcf573d6000803e3d6000fd5b50610f4e565b8673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb32836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610e7857600080fd5b505af1158015610e8c573d6000803e3d6000fd5b505050506040513d6020811015610ea257600080fd5b81019080805190602001909291905050501515610f4d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f436f756c64206e6f74207061792067617320636f737473207769746820746f6b81526020017f656e00000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b5b5b5050505050505050505050505050565b600080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515156110f6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206181526020017f6e20656e61626c6564206d6f64756c650000000000000000000000000000000081525060400191505060405180910390fd5b611103858585855a613659565b9050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156111d6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415801561122a5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b151561129e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f496e76616c6964206d6f64756c6520616464726573732070726f76696465640081525060200191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561138b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4d6f64756c652068617320616c7265616479206265656e20616464656400000081525060200191505060405180910390fd5b60016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156115b4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515611669576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f496e76616c6964206d617374657220636f707920616464726573732070726f7681526020017f696465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561177a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b8060ff1660016003540310151515611820576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001807f4e6577206f776e657220636f756e74206e6565647320746f206265206c61726781526020017f6572207468616e206e6577207468726573686f6c64000000000000000000000081525060400191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611948576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f496e76616c696420707265764f776e65722c206f776e6572207061697220707281526020017f6f7669646564000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360008154809291906001900391905055508060ff16600460009054906101000a900460ff1660ff16141515611adf57611ade81611f99565b5b505050565b600181565b611af38484613756565b611afd8282613c40565b50505050565b606080600080600354604051908082528060200260200182016040528015611b3a5781602001602082028038833980820191505090505b5092506000915060026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515611c9557808383815181101515611bea57fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508180600101925050611ba5565b82935050505090565b6040805190810160405280601c81526020017f476e6f736973205361666520506572736f6e616c2045646974696f6e0000000081525081565b6000615208612af88385010101905092915050565b60055481565b606060008060606000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515611e0657600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050611d61565b82604051908082528060200260200182016040528015611e355781602001602082028038833980820191505090505b5090506000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515611f9057818184815181101515611ee557fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050611ea0565b80935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612062576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b6003548160ff1611151515612105576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f5468726573686f6c642063616e6e6f7420657863656564206f776e657220636f81526020017f756e74000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60018160ff16101515156121a7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f5468726573686f6c64206e6565647320746f206265206772656174657220746881526020017f616e20300000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b80600460006101000a81548160ff021916908360ff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561228e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff16141580156122e25750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1515612356576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612443576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4164647265737320697320616c726561647920616e206f776e6572000000000081525060200191505060405180910390fd5b60026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003600081548092919060010191905055508060ff16600460009054906101000a900460ff1660ff161415156125da576125d981611f99565b5b5050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f010000000000000000000000000000000000000000000000000000000000000002308c8c8c8c8c8c8c8c8c604051602001808d7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018c7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140189815260200188805190602001908083835b6020831015156127865780518252602082019150602081019050602083039250612761565b6001836020036101000a0380198251168184511680821785525050505050509050018760028111156127b457fe5b60ff167f01000000000000000000000000000000000000000000000000000000000000000281526001018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018281526020019c505050505050505050505050506040516020818303038152906040526040518082805190602001908083835b6020831015156128895780518252602082019150602081019050602083039250612864565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902090509998505050505050505050565b60008060003073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612993576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b5a91506129a3878787875a613659565b15156129ae57600080fd5b5a8203905080604051602001808281526020019150506040516020818303038152906040526040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612a39578082015181840152602081019050612a1e565b50505050905090810190601f168015612a665780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612b3d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612c65576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001807f496e76616c696420707265764d6f64756c652c206d6f64756c6520706169722081526020017f70726f766964656400000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612e8e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614158015612ee25750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515612f56576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515613043576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4164647265737320697320616c726561647920616e206f776e6572000000000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561316b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f496e76616c696420707265764f776e65722c206f776e6572207061697220707281526020017f6f7669646564000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000600460009054906101000a900460ff16905090565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000806000809250600090505b600460009054906101000a900460ff1660ff168110156136505760018787838151811015156133d257fe5b9060200190602002015187848151811015156133ea57fe5b90602001906020020151878581518110151561340257fe5b90602001906020020151604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af115801561347d573d6000803e3d6000fd5b5050506020604051035191506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515613577576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5369676e6174757265206e6f742070726f7669646564206279206f776e65720081525060200191505060405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16111515613640576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001807f5369676e61747572657320617265206e6f74206f726465726564206279206f7781526020017f6e6572206164647265737300000000000000000000000000000000000000000081525060400191505060405180910390fd5b81925080806001019150506133a7565b50505050505050565b6000806000600281111561366957fe5b84600281111561367557fe5b141561368e5761368787878786613e77565b915061374c565b6001600281111561369b57fe5b8460028111156136a757fe5b14156136bf576136b8878685613e90565b915061374b565b6136c885613ea7565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b600080600080600460009054906101000a900460ff1660ff161415156137e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f4f776e657273206861766520616c7265616479206265656e207365747570000081525060200191505060405180910390fd5b84518460ff1611151515613886576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f5468726573686f6c642063616e6e6f7420657863656564206f776e657220636f81526020017f756e74000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60018460ff1610151515613928576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f5468726573686f6c64206e6565647320746f206265206772656174657220746881526020017f616e20300000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60019250600091505b8451821015613b9757848281518110151561394857fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff16141580156139a85750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515613a1c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515613b09576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4475706c6963617465206f776e657220616464726573732070726f766964656481525060200191505060405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508092508180600101925050613931565b6001600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550845160038190555083600460006101000a81548160ff021916908360ff1602179055505050505050565b600060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515613d54576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f4d6f64756c6573206861766520616c7265616479206265656e20696e6974696181526020017f6c697a656400000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6001806000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008273ffffffffffffffffffffffffffffffffffffffff16141515613e7357613dfe82825a613e90565b1515613e72576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f436f756c64206e6f742066696e69736820696e697469616c697a6174696f6e0081525060200191505060405180910390fd5b5b5050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f090509190505600a165627a7a723058204a0cdc51b0bd3ef74e872a6c3c628ead2e046838ece4baffb11344a41b8a69740029", + "sourceMap": "449:6475:3:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;449:6475:3;;;;;;;", + "deployedSourceMap": "449:6475:3:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1660:1451;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1660:1451:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5374:129:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5374:129:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2710:429:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2710:429:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1311:459;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1311:459:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;626:248:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:248:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;499:55:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;499:55:8;;;;;;;;;;;;;;;;;;;;;;;;;;;3024:672:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3024:672:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;287:54;;8:9:-1;5:2;;;30:1;27;20:12;5:2;287:54:9;;;;;;;;;;;;;;;;;;;;;;;;;;;693:301:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;693:301:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5585:458:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5585:458:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;5585:458:9;;;;;;;;;;;;;;;;;517:60:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;517:60:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;517:60:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3543:209;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3543:209:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;779:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;779:20:3;;;;;;;;;;;;;;;;;;;;;;;4663:738:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4663:738:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;4663:738:8;;;;;;;;;;;;;;;;;4852:397:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4852:397:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;2089:593;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2089:593:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6422:500:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6422:500:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4670:523;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4670:523:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2031:343:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2031:343:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4030:633:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4030:633:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5255:113;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5255:113:9;;;;;;;;;;;;;;;;;;;;;;;;;;;583:40:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;583:40:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;583:40:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1660:1451;1994:16;2611;2688:14;2013:9;1994:28;;2032:113;2042:93;2061:2;2065:5;2072:4;2078:9;2089;2100:7;2109:8;2119;2129:5;;2042:18;:93::i;:::-;2137:1;2140;2143;2032:9;:113::i;:::-;2206:5;;:7;;;;;;;;;;;;;2264:9;737:5;2231:9;:29;:42;;2223:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2335:46;2343:2;2347:5;2354:4;2360:9;2371;2335:7;:46::i;:::-;2334:47;2330:100;;;2402:17;;;;;;;;;;2330:100;2594:1;2583:8;:12;2579:524;;;2630:44;2655:9;2644:8;:20;2666:7;2630:13;:44::i;:::-;2611:63;;2716:8;2705;:19;2688:36;;2762:1;2742:22;;:8;:22;;;2738:355;;;2851:9;:18;;:26;2870:6;2851:26;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2851:26:3;2738:355;;;3002:8;2991:29;;;3021:9;3032:6;2991:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2991:48:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2991:48:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2991:48:3;;;;;;;;;;;;;;;;2983:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2738:355;2579:524;1660:1451;;;;;;;;;;;;;;:::o;5374:129:9:-;5451:4;5495:1;5478:6;:13;5485:5;5478:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;;5471:25;;5374:129;;;:::o;2710:429:8:-;2842:12;2950:1;2927:7;:19;2935:10;2927:19;;;;;;;;;;;;;;;;;;;;;;;;;:24;;;;2919:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3086:46;3094:2;3098:5;3105:4;3111:9;3122;3086:7;:46::i;:::-;3076:56;;2710:429;;;;;;:::o;1311:459::-;244:4:13;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1477:1:8;1466:6;1458:20;;;;:59;;;;;550:3;1482:35;;1490:6;1482:35;;;;1458:59;1450:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1631:1;1612:7;:15;1620:6;1612:15;;;;;;;;;;;;;;;;;;;;;;;;;:20;;;1604:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1694:7;:25;550:3;1694:25;;;;;;;;;;;;;;;;;;;;;;;;;1676:7;:15;1684:6;1676:15;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;1757:6;1729:7;:25;550:3;1729:25;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;1311:459;:::o;626:248:5:-;244:4:13;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;791:1:5;776:11;:16;;;;768:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;856:11;843:10;;:24;;;;;;;;;;;;;;;;;;626:248;:::o;499:55:8:-;550:3;499:55;:::o;3024:672:9:-;244:4:13;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3248:10:9;3230:28;;3243:1;3230:10;;:14;:28;;3222:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3417:5;3396:26;;:6;:17;3403:9;3396:17;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;3388:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3495:6;:13;3502:5;3495:13;;;;;;;;;;;;;;;;;;;;;;;;;3475:6;:17;3482:9;3475:17;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;3534:1;3518:6;:13;3525:5;3518:13;;;;;;;;;;;;;;;;:17;;;;;;;;;;;;;;;;;;3545:10;;:12;;;;;;;;;;;;;;3638:10;3625:23;;:9;;;;;;;;;;;:23;;;;3621:68;;;3662:27;3678:10;3662:15;:27::i;:::-;3621:68;3024:672;;;:::o;287:54::-;337:3;287:54;:::o;693:301:2:-;798:32;810:7;819:10;798:11;:32::i;:::-;965:22;978:2;982:4;965:12;:22::i;:::-;693:301;;;;:::o;5585:458:9:-;5651:9;5676:22;5770:13;5797:20;5715:10;;5701:25;;;;;;;;;;;;;;;;;;;;;;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;5701:25:9;;;;5676:50;;5786:1;5770:17;;5820:6;:23;337:3;5820:23;;;;;;;;;;;;;;;;;;;;;;;;;5797:46;;5853:162;337:3;5859:31;;:12;:31;;;;5853:162;;;5921:12;5906:5;5912;5906:12;;;;;;;;;;;;;;;;;:27;;;;;;;;;;;5962:6;:20;5969:12;5962:20;;;;;;;;;;;;;;;;;;;;;;;;;5947:35;;5996:8;;;;;;;5853:162;;;6031:5;6024:12;;5585:458;;;;:::o;517:60:3:-;;;;;;;;;;;;;;;;;;;;:::o;3543:209::-;3652:7;680:5;737;3698:7;3683:12;:22;:42;:62;3676:69;;3543:209;;;;:::o;779:20::-;;;;:::o;4663:738:8:-;4730:9;4789:19;4822:21;5022:22;4811:1;4789:23;;4846:7;:25;550:3;4846:25;;;;;;;;;;;;;;;;;;;;;;;;;4822:49;;4881:132;550:3;4887:33;;:13;:33;;;;4881:132;;;4952:7;:22;4960:13;4952:22;;;;;;;;;;;;;;;;;;;;;;;;;4936:38;;4988:14;;;;;;;4881:132;;;5061:11;5047:26;;;;;;;;;;;;;;;;;;;;;;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;5047:26:8;;;;5022:51;;5131:1;5117:15;;5158:7;:25;550:3;5158:25;;;;;;;;;;;;;;;;;;;;;;;;;5142:41;;5193:180;550:3;5199:33;;:13;:33;;;;5193:180;;;5269:13;5248:5;5254:11;5248:18;;;;;;;;;;;;;;;;;:34;;;;;;;;;;;5312:7;:22;5320:13;5312:22;;;;;;;;;;;;;;;;;;;;;;;;;5296:38;;5348:14;;;;;;;5193:180;;;5389:5;5382:12;;4663:738;;;;:::o;4852:397:9:-;244:4:13;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5034:10:9;;5020;:24;;;;5012:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5168:1;5154:10;:15;;;;5146:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5232:10;5220:9;;:22;;;;;;;;;;;;;;;;;;4852:397;:::o;2089:593::-;244:4:13;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2259:1:9;2250:5;:10;;;;:38;;;;;337:3;2264:24;;:5;:24;;;;2250:38;2242:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2398:1;2381:6;:13;2388:5;2381:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;2373:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2457:6;:23;337:3;2457:23;;;;;;;;;;;;;;;;;;;;;;;;;2441:6;:13;2448:5;2441:13;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;2516:5;2490:6;:23;337:3;2490:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;2531:10;;:12;;;;;;;;;;;;;2624:10;2611:23;;:9;;;;;;;;;;;:23;;;;2607:68;;;2648:27;2664:10;2648:15;:27::i;:::-;2607:68;2089:593;;:::o;6422:500:3:-;6733:7;6808:4;6803:10;;6820:1;6815:7;;6824:4;6830:2;6834:5;6841:4;6847:9;6858;6869:7;6878:8;6888;6898:6;6786:119;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;6786:119:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;6786:119:3;;;6763:152;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;6763:152:3;;;;;;;;;;;;;;;;6756:159;;6422:500;;;;;;;;;;;:::o;4670:523::-;4809:7;4832:16;5022:19;244:4:13;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4851:9:3;4832:28;;4965:46;4973:2;4977:5;4984:4;4990:9;5001;4965:7;:46::i;:::-;4957:55;;;;;;;;5055:9;5044:8;:20;5022:42;;5172:11;5155:29;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;5155:29:3;;;5141:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;5141:45:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2031:343:8;244:4:13;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2239:6:8;2208:38;;:7;:19;2216:10;2208:19;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;2200:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2323:7;:15;2331:6;2323:15;;;;;;;;;;;;;;;;;;;;;;;;;2301:7;:19;2309:10;2301:19;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;2366:1;2348:7;:15;2356:6;2348:15;;;;;;;;;;;;;;;;:19;;;;;;;;;;;;;;;;;;2031:343;;:::o;4030:633:9:-;244:4:13;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4213:1:9;4201:8;:13;;;;:44;;;;;337:3;4218:27;;:8;:27;;;;4201:44;4193:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4358:1;4338:6;:16;4345:8;4338:16;;;;;;;;;;;;;;;;;;;;;;;;;:21;;;4330:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4492:8;4471:29;;:6;:17;4478:9;4471:17;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;4463:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4572:6;:16;4579:8;4572:16;;;;;;;;;;;;;;;;;;;;;;;;;4553:6;:16;4560:8;4553:16;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;4618:8;4598:6;:17;4605:9;4598:17;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;4655:1;4636:6;:16;4643:8;4636:16;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;4030:633;;;:::o;5255:113::-;5324:5;5352:9;;;;;;;;;;;5345:16;;5255:113;:::o;583:40:3:-;;;;;;;;;;;;;;;;;;;;:::o;5199:623::-;5365:17;5405:20;5435:9;5393:1;5365:30;;5505:1;5501:5;;5496:320;5512:9;;;;;;;;;;;5508:13;;:1;:13;5496:320;;;5557:33;5567:4;5573:1;5575;5573:4;;;;;;;;;;;;;;;;;;5579:1;5581;5579:4;;;;;;;;;;;;;;;;;;5585:1;5587;5585:4;;;;;;;;;;;;;;;;;;5557:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5557:33:3;;;;;;;;5542:48;;5636:1;5612:6;:20;5619:12;5612:20;;;;;;;;;;;;;;;;;;;;;;;;;:25;;;;5604:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5710:9;5695:24;;:12;:24;;;5687:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5793:12;5781:24;;5523:3;;;;;;;5496:320;;;5199:623;;;;;;;:::o;3145:548:8:-;3276:12;3547:19;3321;3308:32;;;;;;;;:9;:32;;;;;;;;;3304:383;;;3364:35;3376:2;3380:5;3387:4;3393:5;3364:11;:35::i;:::-;3354:45;;3304:383;;;3431:27;3418:40;;;;;;;;:9;:40;;;;;;;;;3414:273;;;3482:36;3502:2;3506:4;3512:5;3482:19;:36::i;:::-;3472:46;;3414:273;;;3569:19;3583:4;3569:13;:19::i;:::-;3547:41;;3627:1;3612:11;:16;;;;3602:26;;3647:29;3664:11;3647:29;;;;;;;;;;;;;;;;;;;;;;3414:273;3304:383;3145:548;;;;;;;;:::o;641:1208:9:-;1245:20;1298:9;1397:13;875:1;862:9;;;;;;;;;;;:14;;;854:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1018:7;:14;1004:10;:28;;;;996:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1156:1;1142:10;:15;;;;1134:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;337:3;1245:38;;1310:1;1298:13;;1293:433;1317:7;:14;1313:1;:18;1293:433;;;1413:7;1421:1;1413:10;;;;;;;;;;;;;;;;;;1397:26;;1454:1;1445:5;:10;;;;:38;;;;;337:3;1459:24;;:5;:24;;;;1445:38;1437:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1601:1;1584:6;:13;1591:5;1584:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;1576:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1676:5;1653:6;:20;1660:12;1653:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;1710:5;1695:20;;1333:3;;;;;;;1293:433;;;337:3;1735:6;:20;1742:12;1735:20;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;1796:7;:14;1783:10;:27;;;;1832:10;1820:9;;:22;;;;;;;;;;;;;;;;;;641:1208;;;;;:::o;735:409:8:-;849:1;820:7;:25;550:3;820:25;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;812:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;550:3;902:7;:25;550:3;902:25;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;966:1;960:2;:7;;;;956:181;;;1061:40;1081:2;1085:4;1091:9;1061:19;:40::i;:::-;1053:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;956:181;735:409;;:::o;3699:309::-;3808:12;3990:1;3987;3980:4;3974:11;3967:4;3961;3957:15;3950:5;3946:2;3939:5;3934:58;3923:69;;3909:93;;;;;;:::o;4014:303::-;4116:12;4299:1;4296;4289:4;4283:11;4276:4;4270;4266:15;4262:2;4255:5;4242:59;4231:70;;4217:94;;;;;:::o;4323:261::-;4392:19;4562:4;4556:11;4549:4;4543;4539:15;4536:1;4529:39;4514:54;;4500:78;;;:::o", + "source": "pragma solidity 0.4.24;\nimport \"./interfaces/ERC20Token.sol\";\nimport \"./GnosisSafe.sol\";\nimport \"./MasterCopy.sol\";\n\n\n/// @title Gnosis Safe Personal Edition - A multisignature wallet with support for confirmations using signed messages based on ERC191.\n/// @author Stefan George - \n/// @author Richard Meissner - \n/// @author Ricardo Guilherme Schmidt - (Status Research & Development GmbH) - Gas Token Payment\ncontract GnosisSafePersonalEdition is MasterCopy, GnosisSafe {\n\n string public constant NAME = \"Gnosis Safe Personal Edition\";\n string public constant VERSION = \"0.0.1\";\n \n uint256 internal constant BASE_TX_GAS_COSTS = 21000;\n uint256 internal constant PAYMENT_GAS_COSTS = 11000;\n\n event ExecutionFailed();\n\n uint256 public nonce;\n\n /// @dev Allows to execute a Safe transaction confirmed by required number of owners.\n /// @param to Destination address of Safe transaction.\n /// @param value Ether value of Safe transaction.\n /// @param data Data payload of Safe transaction.\n /// @param operation Operation type of Safe transaction.\n /// @param safeTxGas Gas that should be used for the Safe transaction.\n /// @param dataGas Gas costs for data used to trigger the safe transaction.\n /// @param gasPrice Gas price that should be used for the payment calculation.\n /// @param gasToken Token address (or 0 if ETH) that is used for the payment.\n /// @param v Array of signature V values sorted by owner addresses.\n /// @param r Array of signature R values sorted by owner addresses.\n /// @param s Array of signature S values sorted by owner addresses.\n function execAndPayTransaction(\n address to, \n uint256 value, \n bytes data, \n Enum.Operation operation, \n uint256 safeTxGas,\n uint256 dataGas,\n uint256 gasPrice,\n address gasToken,\n uint8[] v, \n bytes32[] r, \n bytes32[] s\n )\n public\n {\n uint256 startGas = gasleft();\n checkHash(getTransactionHash(to, value, data, operation, safeTxGas, dataGas, gasPrice, gasToken, nonce), v, r, s);\n // Increase nonce and execute transaction.\n nonce++;\n require(gasleft() - PAYMENT_GAS_COSTS >= safeTxGas, \"Not enough gas to execute safe transaction\");\n if (!execute(to, value, data, operation, safeTxGas)) {\n emit ExecutionFailed();\n }\n \n // We transfer the calculated tx costs to the tx.origin to avoid sending it to intermediate contracts that have made calls\n if (gasPrice > 0) {\n uint256 gasCosts = totalGasCosts(startGas - gasleft(), dataGas);\n uint256 amount = gasCosts * gasPrice;\n if (gasToken == address(0)) {\n // solium-disable-next-line security/no-tx-origin\n tx.origin.transfer(amount);\n } else {\n // solium-disable-next-line security/no-tx-origin\n require(ERC20Token(gasToken).transfer(tx.origin, amount), \"Could not pay gas costs with token\");\n }\n } \n }\n\n /// @dev Calculates the total gas costs for a safe transaction with the gas costs for the execution of the transaction.\n /// @param executionGas Gas costs for the execution of the safe transaction.\n /// @param dataGas Gas costs for data used to trigger the safe transaction.\n /// @return Total gas costs for the execution (this includes gas costs for the payment to tx.origin, base transaction and payload data).\n function totalGasCosts(uint256 executionGas, uint256 dataGas) \n public \n pure\n returns (uint256) \n {\n return executionGas + dataGas + PAYMENT_GAS_COSTS + BASE_TX_GAS_COSTS;\n }\n\n /// @dev Allows to estimate a Safe transaction. \n /// This method is only meant for estimation purpose, therfore two different protection mechanism against execution in a transaction have been made:\n /// 1.) The method can only be called from the safe itself\n /// 2.) The response is returned with a revert\n /// When estimating set `from` to the address of the safe.\n /// Since the `estimateGas` function includes refunds, call this method to get an estimated of the costs that are deducted from the safe with `execAndPayTransaction`\n /// @param to Destination address of Safe transaction.\n /// @param value Ether value of Safe transaction.\n /// @param data Data payload of Safe transaction.\n /// @param operation Operation type of Safe transaction.\n /// @return Estimate without refunds and overhead fees (base transaction and payload data gas costs).\n function requiredTxGas(address to, uint256 value, bytes data, Enum.Operation operation)\n public\n authorized\n returns (uint256)\n {\n uint256 startGas = gasleft();\n // We don't provide an error message here, as we use it to return the estimate\n require(execute(to, value, data, operation, gasleft()));\n uint256 requiredGas = startGas - gasleft();\n // Convert response to string and return via error message\n revert(string(abi.encodePacked(requiredGas)));\n }\n\n function checkHash(bytes32 hash, uint8[] v, bytes32[] r, bytes32[] s)\n internal\n view\n {\n // There cannot be an owner with address 0.\n address lastOwner = address(0);\n address currentOwner;\n uint256 i;\n // Validate threshold is reached.\n for (i = 0; i < threshold; i++) {\n currentOwner = ecrecover(hash, v[i], r[i], s[i]);\n require(owners[currentOwner] != 0, \"Signature not provided by owner\");\n require(currentOwner > lastOwner, \"Signatures are not ordered by owner address\");\n lastOwner = currentOwner;\n }\n }\n\n /// @dev Returns hash to be signed by owners.\n /// @param to Destination address.\n /// @param value Ether value.\n /// @param data Data payload.\n /// @param operation Operation type.\n /// @param safeTxGas Fas that should be used for the safe transaction.\n /// @param dataGas Gas costs for data used to trigger the safe transaction.\n /// @param gasPrice Maximum gas price that should be used for this transaction.\n /// @param gasToken Token address (or 0 if ETH) that is used for the payment.\n /// @param _nonce Transaction nonce.\n /// @return Transaction hash.\n function getTransactionHash(\n address to, \n uint256 value, \n bytes data, \n Enum.Operation operation, \n uint256 safeTxGas, \n uint256 dataGas, \n uint256 gasPrice, \n address gasToken,\n uint256 _nonce\n )\n public\n view\n returns (bytes32)\n {\n return keccak256(\n abi.encodePacked(byte(0x19), byte(0), this, to, value, data, operation, safeTxGas, dataGas, gasPrice, gasToken, _nonce)\n );\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafePersonalEdition.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafePersonalEdition.sol", "exportedSymbols": { "GnosisSafePersonalEdition": [ - 397 + 401 ] }, - "id": 398, + "id": 402, "nodeType": "SourceUnit", "nodes": [ { @@ -525,8 +525,8 @@ "file": "./interfaces/ERC20Token.sol", "id": 66, "nodeType": "ImportDirective", - "scope": 398, - "sourceUnit": 1686, + "scope": 402, + "sourceUnit": 1721, "src": "24:37:3", "symbolAliases": [], "unitAlias": "" @@ -536,7 +536,7 @@ "file": "./GnosisSafe.sol", "id": 67, "nodeType": "ImportDirective", - "scope": 398, + "scope": 402, "sourceUnit": 64, "src": "62:26:3", "symbolAliases": [], @@ -547,8 +547,8 @@ "file": "./MasterCopy.sol", "id": 68, "nodeType": "ImportDirective", - "scope": 398, - "sourceUnit": 653, + "scope": 402, + "sourceUnit": 663, "src": "89:26:3", "symbolAliases": [], "unitAlias": "" @@ -562,10 +562,10 @@ "id": 69, "name": "MasterCopy", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 652, + "referencedDeclaration": 662, "src": "487:10:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_MasterCopy_$652", + "typeIdentifier": "t_contract$_MasterCopy_$662", "typeString": "contract MasterCopy" } }, @@ -594,22 +594,22 @@ ], "contractDependencies": [ 63, - 652, - 1100, - 1472, - 1619 + 662, + 1118, + 1504, + 1654 ], "contractKind": "contract", "documentation": "@title Gnosis Safe Personal Edition - A multisignature wallet with support for confirmations using signed messages based on ERC191.\n @author Stefan George - \n @author Richard Meissner - \n @author Ricardo Guilherme Schmidt - (Status Research & Development GmbH) - Gas Token Payment", "fullyImplemented": true, - "id": 397, + "id": 401, "linearizedBaseContracts": [ - 397, + 401, 63, - 1472, - 1100, - 652, - 1619 + 1504, + 1118, + 662, + 1654 ], "name": "GnosisSafePersonalEdition", "nodeType": "ContractDefinition", @@ -619,7 +619,7 @@ "id": 75, "name": "NAME", "nodeType": "VariableDeclaration", - "scope": 397, + "scope": 401, "src": "517:60:3", "stateVariable": true, "storageLocation": "default", @@ -662,7 +662,7 @@ "id": 78, "name": "VERSION", "nodeType": "VariableDeclaration", - "scope": 397, + "scope": 401, "src": "583:40:3", "stateVariable": true, "storageLocation": "default", @@ -705,7 +705,7 @@ "id": 81, "name": "BASE_TX_GAS_COSTS", "nodeType": "VariableDeclaration", - "scope": 397, + "scope": 401, "src": "634:51:3", "stateVariable": true, "storageLocation": "default", @@ -748,7 +748,7 @@ "id": 84, "name": "PAYMENT_GAS_COSTS", "nodeType": "VariableDeclaration", - "scope": 397, + "scope": 401, "src": "691:51:3", "stateVariable": true, "storageLocation": "default", @@ -805,7 +805,7 @@ "id": 88, "name": "nonce", "nodeType": "VariableDeclaration", - "scope": 397, + "scope": 401, "src": "779:20:3", "stateVariable": true, "storageLocation": "default", @@ -828,9 +828,9 @@ }, { "body": { - "id": 211, + "id": 213, "nodeType": "Block", - "src": "1984:1043:3", + "src": "1984:1127:3", "statements": [ { "assignments": [ @@ -842,7 +842,7 @@ "id": 117, "name": "startGas", "nodeType": "VariableDeclaration", - "scope": 212, + "scope": 214, "src": "1994:16:3", "stateVariable": false, "storageLocation": "default", @@ -874,7 +874,7 @@ "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2591, + "referencedDeclaration": 2647, "src": "2013:7:3", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", @@ -1066,7 +1066,7 @@ "name": "getTransactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 396, + "referencedDeclaration": 400, "src": "2042:18:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$returns$_t_bytes32_$", @@ -1150,7 +1150,7 @@ "name": "checkHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 350, + "referencedDeclaration": 354, "src": "2032:9:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_array$_t_uint8_$dyn_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$returns$__$", @@ -1244,7 +1244,7 @@ "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2591, + "referencedDeclaration": 2647, "src": "2231:7:3", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", @@ -1306,6 +1306,24 @@ "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "4e6f7420656e6f7567682067617320746f20657865637574652073616665207472616e73616374696f6e", + "id": 148, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2275:44:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e7ccb05a0f2c66d12451cdfc6bbab488c38ab704d0f6af9ad18763542e9e5f18", + "typeString": "literal_string \"Not enough gas to execute safe transaction\"" + }, + "value": "Not enough gas to execute safe transaction" } ], "expression": { @@ -1313,23 +1331,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_e7ccb05a0f2c66d12451cdfc6bbab488c38ab704d0f6af9ad18763542e9e5f18", + "typeString": "literal_string \"Not enough gas to execute safe transaction\"" } ], "id": 141, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, + "referencedDeclaration": 2658, "src": "2223:7:3", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 148, + "id": 149, "isConstant": false, "isLValue": false, "isPure": false, @@ -1337,20 +1359,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2223:51:3", + "src": "2223:97:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 149, + "id": 150, "nodeType": "ExpressionStatement", - "src": "2223:51:3" + "src": "2223:97:3" }, { "condition": { "argumentTypes": null, - "id": 157, + "id": 158, "isConstant": false, "isLValue": false, "isPure": false, @@ -1358,18 +1380,18 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "2288:47:3", + "src": "2334:47:3", "subExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 151, + "id": 152, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 90, - "src": "2297:2:3", + "src": "2343:2:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1377,12 +1399,12 @@ }, { "argumentTypes": null, - "id": 152, + "id": 153, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 92, - "src": "2301:5:3", + "src": "2347:5:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1390,12 +1412,12 @@ }, { "argumentTypes": null, - "id": 153, + "id": 154, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 94, - "src": "2308:4:3", + "src": "2354:4:3", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -1403,12 +1425,12 @@ }, { "argumentTypes": null, - "id": 154, + "id": 155, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 96, - "src": "2314:9:3", + "src": "2360:9:3", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -1416,12 +1438,12 @@ }, { "argumentTypes": null, - "id": 155, + "id": 156, "name": "safeTxGas", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 98, - "src": "2325:9:3", + "src": "2371:9:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1451,18 +1473,18 @@ "typeString": "uint256" } ], - "id": 150, + "id": 151, "name": "execute", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 989, - "src": "2289:7:3", + "referencedDeclaration": 1007, + "src": "2335:7:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) returns (bool)" } }, - "id": 156, + "id": 157, "isConstant": false, "isLValue": false, "isPure": false, @@ -1470,7 +1492,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2289:46:3", + "src": "2335:46:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1482,13 +1504,13 @@ } }, "falseBody": null, - "id": 162, + "id": 163, "nodeType": "IfStatement", - "src": "2284:100:3", + "src": "2330:100:3", "trueBody": { - "id": 161, + "id": 162, "nodeType": "Block", - "src": "2337:47:3", + "src": "2383:47:3", "statements": [ { "eventCall": { @@ -1496,18 +1518,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 158, + "id": 159, "name": "ExecutionFailed", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86, - "src": "2356:15:3", + "src": "2402:15:3", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 159, + "id": 160, "isConstant": false, "isLValue": false, "isPure": false, @@ -1515,15 +1537,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2356:17:3", + "src": "2402:17:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 160, + "id": 161, "nodeType": "EmitStatement", - "src": "2351:22:3" + "src": "2397:22:3" } ] } @@ -1535,19 +1557,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 165, + "id": 166, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 163, + "id": 164, "name": "gasPrice", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 102, - "src": "2537:8:3", + "src": "2583:8:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1558,14 +1580,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 164, + "id": 165, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2548:1:3", + "src": "2594:1:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1573,33 +1595,33 @@ }, "value": "0" }, - "src": "2537:12:3", + "src": "2583:12:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 210, + "id": 212, "nodeType": "IfStatement", - "src": "2533:486:3", + "src": "2579:524:3", "trueBody": { - "id": 209, + "id": 211, "nodeType": "Block", - "src": "2551:468:3", + "src": "2597:506:3", "statements": [ { "assignments": [ - 167 + 168 ], "declarations": [ { "constant": false, - "id": 167, + "id": 168, "name": "gasCosts", "nodeType": "VariableDeclaration", - "scope": 212, - "src": "2565:16:3", + "scope": 214, + "src": "2611:16:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1607,10 +1629,10 @@ "typeString": "uint256" }, "typeName": { - "id": 166, + "id": 167, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2565:7:3", + "src": "2611:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1620,7 +1642,7 @@ "visibility": "internal" } ], - "id": 175, + "id": 176, "initialValue": { "argumentTypes": null, "arguments": [ @@ -1630,19 +1652,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 172, + "id": 173, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 169, + "id": 170, "name": "startGas", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 117, - "src": "2598:8:3", + "src": "2644:8:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1655,18 +1677,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 170, + "id": 171, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2591, - "src": "2609:7:3", + "referencedDeclaration": 2647, + "src": "2655:7:3", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 171, + "id": 172, "isConstant": false, "isLValue": false, "isPure": false, @@ -1674,13 +1696,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2609:9:3", + "src": "2655:9:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2598:20:3", + "src": "2644:20:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1688,12 +1710,12 @@ }, { "argumentTypes": null, - "id": 173, + "id": 174, "name": "dataGas", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 100, - "src": "2620:7:3", + "src": "2666:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1711,18 +1733,18 @@ "typeString": "uint256" } ], - "id": 168, + "id": 169, "name": "totalGasCosts", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 230, - "src": "2584:13:3", + "referencedDeclaration": 232, + "src": "2630:13:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 174, + "id": 175, "isConstant": false, "isLValue": false, "isPure": false, @@ -1730,27 +1752,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2584:44:3", + "src": "2630:44:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "2565:63:3" + "src": "2611:63:3" }, { "assignments": [ - 177 + 178 ], "declarations": [ { "constant": false, - "id": 177, + "id": 178, "name": "amount", "nodeType": "VariableDeclaration", - "scope": 212, - "src": "2642:14:3", + "scope": 214, + "src": "2688:14:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1758,10 +1780,10 @@ "typeString": "uint256" }, "typeName": { - "id": 176, + "id": 177, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2642:7:3", + "src": "2688:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1771,26 +1793,26 @@ "visibility": "internal" } ], - "id": 181, + "id": 182, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 180, + "id": 181, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 178, + "id": 179, "name": "gasCosts", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 167, - "src": "2659:8:3", + "referencedDeclaration": 168, + "src": "2705:8:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1800,25 +1822,25 @@ "operator": "*", "rightExpression": { "argumentTypes": null, - "id": 179, + "id": 180, "name": "gasPrice", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 102, - "src": "2670:8:3", + "src": "2716:8:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2659:19:3", + "src": "2705:19:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "2642:36:3" + "src": "2688:36:3" }, { "condition": { @@ -1827,19 +1849,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 186, + "id": 187, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 182, + "id": 183, "name": "gasToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 104, - "src": "2696:8:3", + "src": "2742:8:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1853,14 +1875,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 184, + "id": 185, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2716:1:3", + "src": "2762:1:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1876,20 +1898,20 @@ "typeString": "int_const 0" } ], - "id": 183, + "id": 184, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2708:7:3", + "src": "2754:7:3", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 185, + "id": 186, "isConstant": false, "isLValue": false, "isPure": true, @@ -1897,22 +1919,22 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2708:10:3", + "src": "2754:10:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2696:22:3", + "src": "2742:22:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { - "id": 207, + "id": 209, "nodeType": "Block", - "src": "2852:157:3", + "src": "2898:195:3", "statements": [ { "expression": { @@ -1925,18 +1947,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 201, + "id": 202, "name": "tx", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2610, - "src": "2975:2:3", + "referencedDeclaration": 2666, + "src": "3021:2:3", "typeDescriptions": { "typeIdentifier": "t_magic_transaction", "typeString": "tx" } }, - "id": 202, + "id": 203, "isConstant": false, "isLValue": false, "isPure": false, @@ -1944,7 +1966,7 @@ "memberName": "origin", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2975:9:3", + "src": "3021:9:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1952,12 +1974,12 @@ }, { "argumentTypes": null, - "id": 203, + "id": 204, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 177, - "src": "2986:6:3", + "referencedDeclaration": 178, + "src": "3032:6:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1980,12 +2002,12 @@ "arguments": [ { "argumentTypes": null, - "id": 198, + "id": 199, "name": "gasToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 104, - "src": "2956:8:3", + "src": "3002:8:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1999,18 +2021,18 @@ "typeString": "address" } ], - "id": 197, + "id": 198, "name": "ERC20Token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1685, - "src": "2945:10:3", + "referencedDeclaration": 1720, + "src": "2991:10:3", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ERC20Token_$1685_$", + "typeIdentifier": "t_type$_t_contract$_ERC20Token_$1720_$", "typeString": "type(contract ERC20Token)" } }, - "id": 199, + "id": 200, "isConstant": false, "isLValue": false, "isPure": false, @@ -2018,27 +2040,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2945:20:3", + "src": "2991:20:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20Token_$1685", + "typeIdentifier": "t_contract$_ERC20Token_$1720", "typeString": "contract ERC20Token" } }, - "id": 200, + "id": 201, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transfer", "nodeType": "MemberAccess", - "referencedDeclaration": 1639, - "src": "2945:29:3", + "referencedDeclaration": 1674, + "src": "2991:29:3", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 204, + "id": 205, "isConstant": false, "isLValue": false, "isPure": false, @@ -2046,11 +2068,29 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2945:48:3", + "src": "2991:48:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "436f756c64206e6f74207061792067617320636f737473207769746820746f6b656e", + "id": 206, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3041:36:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_8560a13547eca5648355c8db1a9f8653b6f657d31d476c36bca25e47b45b08f4", + "typeString": "literal_string \"Could not pay gas costs with token\"" + }, + "value": "Could not pay gas costs with token" } ], "expression": { @@ -2058,23 +2098,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_8560a13547eca5648355c8db1a9f8653b6f657d31d476c36bca25e47b45b08f4", + "typeString": "literal_string \"Could not pay gas costs with token\"" } ], - "id": 196, + "id": 197, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "2937:7:3", + "referencedDeclaration": 2658, + "src": "2983:7:3", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 205, + "id": 207, "isConstant": false, "isLValue": false, "isPure": false, @@ -2082,25 +2126,25 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2937:57:3", + "src": "2983:95:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 206, + "id": 208, "nodeType": "ExpressionStatement", - "src": "2937:57:3" + "src": "2983:95:3" } ] }, - "id": 208, + "id": 210, "nodeType": "IfStatement", - "src": "2692:317:3", + "src": "2738:355:3", "trueBody": { - "id": 195, + "id": 196, "nodeType": "Block", - "src": "2720:126:3", + "src": "2766:126:3", "statements": [ { "expression": { @@ -2108,12 +2152,12 @@ "arguments": [ { "argumentTypes": null, - "id": 192, + "id": 193, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 177, - "src": "2824:6:3", + "referencedDeclaration": 178, + "src": "2870:6:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2131,18 +2175,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 187, + "id": 188, "name": "tx", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2610, - "src": "2805:2:3", + "referencedDeclaration": 2666, + "src": "2851:2:3", "typeDescriptions": { "typeIdentifier": "t_magic_transaction", "typeString": "tx" } }, - "id": 190, + "id": 191, "isConstant": false, "isLValue": false, "isPure": false, @@ -2150,13 +2194,13 @@ "memberName": "origin", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2805:9:3", + "src": "2851:9:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 191, + "id": 192, "isConstant": false, "isLValue": false, "isPure": false, @@ -2164,13 +2208,13 @@ "memberName": "transfer", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2805:18:3", + "src": "2851:18:3", "typeDescriptions": { "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256)" } }, - "id": 193, + "id": 194, "isConstant": false, "isLValue": false, "isPure": false, @@ -2178,15 +2222,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2805:26:3", + "src": "2851:26:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 194, + "id": 195, "nodeType": "ExpressionStatement", - "src": "2805:26:3" + "src": "2851:26:3" } ] } @@ -2197,7 +2241,7 @@ ] }, "documentation": "@dev Allows to execute a Safe transaction confirmed by required number of owners.\n @param to Destination address of Safe transaction.\n @param value Ether value of Safe transaction.\n @param data Data payload of Safe transaction.\n @param operation Operation type of Safe transaction.\n @param safeTxGas Gas that should be used for the Safe transaction.\n @param dataGas Gas costs for data used to trigger the safe transaction.\n @param gasPrice Gas price that should be used for the payment calculation.\n @param gasToken Token address (or 0 if ETH) that is used for the payment.\n @param v Array of signature V values sorted by owner addresses.\n @param r Array of signature R values sorted by owner addresses.\n @param s Array of signature S values sorted by owner addresses.", - "id": 212, + "id": 214, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -2213,7 +2257,7 @@ "id": 90, "name": "to", "nodeType": "VariableDeclaration", - "scope": 212, + "scope": 214, "src": "1700:10:3", "stateVariable": false, "storageLocation": "default", @@ -2239,7 +2283,7 @@ "id": 92, "name": "value", "nodeType": "VariableDeclaration", - "scope": 212, + "scope": 214, "src": "1721:13:3", "stateVariable": false, "storageLocation": "default", @@ -2265,7 +2309,7 @@ "id": 94, "name": "data", "nodeType": "VariableDeclaration", - "scope": 212, + "scope": 214, "src": "1745:10:3", "stateVariable": false, "storageLocation": "default", @@ -2291,7 +2335,7 @@ "id": 96, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 212, + "scope": 214, "src": "1766:24:3", "stateVariable": false, "storageLocation": "default", @@ -2319,7 +2363,7 @@ "id": 98, "name": "safeTxGas", "nodeType": "VariableDeclaration", - "scope": 212, + "scope": 214, "src": "1801:17:3", "stateVariable": false, "storageLocation": "default", @@ -2345,7 +2389,7 @@ "id": 100, "name": "dataGas", "nodeType": "VariableDeclaration", - "scope": 212, + "scope": 214, "src": "1828:15:3", "stateVariable": false, "storageLocation": "default", @@ -2371,7 +2415,7 @@ "id": 102, "name": "gasPrice", "nodeType": "VariableDeclaration", - "scope": 212, + "scope": 214, "src": "1853:16:3", "stateVariable": false, "storageLocation": "default", @@ -2397,7 +2441,7 @@ "id": 104, "name": "gasToken", "nodeType": "VariableDeclaration", - "scope": 212, + "scope": 214, "src": "1879:16:3", "stateVariable": false, "storageLocation": "default", @@ -2423,7 +2467,7 @@ "id": 107, "name": "v", "nodeType": "VariableDeclaration", - "scope": 212, + "scope": 214, "src": "1905:9:3", "stateVariable": false, "storageLocation": "default", @@ -2459,7 +2503,7 @@ "id": 110, "name": "r", "nodeType": "VariableDeclaration", - "scope": 212, + "scope": 214, "src": "1925:11:3", "stateVariable": false, "storageLocation": "default", @@ -2495,7 +2539,7 @@ "id": 113, "name": "s", "nodeType": "VariableDeclaration", - "scope": 212, + "scope": 214, "src": "1947:11:3", "stateVariable": false, "storageLocation": "default", @@ -2536,17 +2580,17 @@ "parameters": [], "src": "1984:0:3" }, - "scope": 397, - "src": "1660:1367:3", + "scope": 401, + "src": "1660:1451:3", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 229, + "id": 231, "nodeType": "Block", - "src": "3582:86:3", + "src": "3666:86:3", "statements": [ { "expression": { @@ -2555,7 +2599,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 227, + "id": 229, "isConstant": false, "isLValue": false, "isPure": false, @@ -2566,7 +2610,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 225, + "id": 227, "isConstant": false, "isLValue": false, "isPure": false, @@ -2577,19 +2621,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 223, + "id": 225, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 221, + "id": 223, "name": "executionGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 214, - "src": "3599:12:3", + "referencedDeclaration": 216, + "src": "3683:12:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2599,18 +2643,18 @@ "operator": "+", "rightExpression": { "argumentTypes": null, - "id": 222, + "id": 224, "name": "dataGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 216, - "src": "3614:7:3", + "referencedDeclaration": 218, + "src": "3698:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3599:22:3", + "src": "3683:22:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2620,18 +2664,18 @@ "operator": "+", "rightExpression": { "argumentTypes": null, - "id": 224, + "id": 226, "name": "PAYMENT_GAS_COSTS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 84, - "src": "3624:17:3", + "src": "3708:17:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3599:42:3", + "src": "3683:42:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2641,32 +2685,32 @@ "operator": "+", "rightExpression": { "argumentTypes": null, - "id": 226, + "id": 228, "name": "BASE_TX_GAS_COSTS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 81, - "src": "3644:17:3", + "src": "3728:17:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3599:62:3", + "src": "3683:62:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 220, - "id": 228, + "functionReturnParameters": 222, + "id": 230, "nodeType": "Return", - "src": "3592:69:3" + "src": "3676:69:3" } ] }, "documentation": "@dev Calculates the total gas costs for a safe transaction with the gas costs for the execution of the transaction.\n @param executionGas Gas costs for the execution of the safe transaction.\n @param dataGas Gas costs for data used to trigger the safe transaction.\n @return Total gas costs for the execution (this includes gas costs for the payment to tx.origin, base transaction and payload data).", - "id": 230, + "id": 232, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -2674,16 +2718,16 @@ "name": "totalGasCosts", "nodeType": "FunctionDefinition", "parameters": { - "id": 217, + "id": 219, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 214, + "id": 216, "name": "executionGas", "nodeType": "VariableDeclaration", - "scope": 230, - "src": "3482:20:3", + "scope": 232, + "src": "3566:20:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2691,10 +2735,10 @@ "typeString": "uint256" }, "typeName": { - "id": 213, + "id": 215, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3482:7:3", + "src": "3566:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2705,11 +2749,11 @@ }, { "constant": false, - "id": 216, + "id": 218, "name": "dataGas", "nodeType": "VariableDeclaration", - "scope": 230, - "src": "3504:15:3", + "scope": 232, + "src": "3588:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2717,10 +2761,10 @@ "typeString": "uint256" }, "typeName": { - "id": 215, + "id": 217, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3504:7:3", + "src": "3588:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2730,20 +2774,20 @@ "visibility": "internal" } ], - "src": "3481:39:3" + "src": "3565:39:3" }, "payable": false, "returnParameters": { - "id": 220, + "id": 222, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 219, + "id": 221, "name": "", "nodeType": "VariableDeclaration", - "scope": 230, - "src": "3568:7:3", + "scope": 232, + "src": "3652:7:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2751,10 +2795,10 @@ "typeString": "uint256" }, "typeName": { - "id": 218, + "id": 220, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3568:7:3", + "src": "3652:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2764,32 +2808,32 @@ "visibility": "internal" } ], - "src": "3567:9:3" + "src": "3651:9:3" }, - "scope": 397, - "src": "3459:209:3", + "scope": 401, + "src": "3543:209:3", "stateMutability": "pure", "superFunction": null, "visibility": "public" }, { "body": { - "id": 277, + "id": 279, "nodeType": "Block", - "src": "4738:255:3", + "src": "4822:371:3", "statements": [ { "assignments": [ - 246 + 248 ], "declarations": [ { "constant": false, - "id": 246, + "id": 248, "name": "startGas", "nodeType": "VariableDeclaration", - "scope": 278, - "src": "4748:16:3", + "scope": 280, + "src": "4832:16:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2797,10 +2841,10 @@ "typeString": "uint256" }, "typeName": { - "id": 245, + "id": 247, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4748:7:3", + "src": "4832:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2810,24 +2854,24 @@ "visibility": "internal" } ], - "id": 249, + "id": 251, "initialValue": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], - "id": 247, + "id": 249, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2591, - "src": "4767:7:3", + "referencedDeclaration": 2647, + "src": "4851:7:3", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 248, + "id": 250, "isConstant": false, "isLValue": false, "isPure": false, @@ -2835,14 +2879,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4767:9:3", + "src": "4851:9:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "4748:28:3" + "src": "4832:28:3" }, { "expression": { @@ -2853,12 +2897,12 @@ "arguments": [ { "argumentTypes": null, - "id": 252, + "id": 254, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 232, - "src": "4802:2:3", + "referencedDeclaration": 234, + "src": "4973:2:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2866,12 +2910,12 @@ }, { "argumentTypes": null, - "id": 253, + "id": 255, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 234, - "src": "4806:5:3", + "referencedDeclaration": 236, + "src": "4977:5:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2879,12 +2923,12 @@ }, { "argumentTypes": null, - "id": 254, + "id": 256, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 236, - "src": "4813:4:3", + "referencedDeclaration": 238, + "src": "4984:4:3", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -2892,12 +2936,12 @@ }, { "argumentTypes": null, - "id": 255, + "id": 257, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 238, - "src": "4819:9:3", + "referencedDeclaration": 240, + "src": "4990:9:3", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -2908,18 +2952,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 256, + "id": 258, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2591, - "src": "4830:7:3", + "referencedDeclaration": 2647, + "src": "5001:7:3", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 257, + "id": 259, "isConstant": false, "isLValue": false, "isPure": false, @@ -2927,7 +2971,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4830:9:3", + "src": "5001:9:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2957,18 +3001,18 @@ "typeString": "uint256" } ], - "id": 251, + "id": 253, "name": "execute", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 989, - "src": "4794:7:3", + "referencedDeclaration": 1007, + "src": "4965:7:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) returns (bool)" } }, - "id": 258, + "id": 260, "isConstant": false, "isLValue": false, "isPure": false, @@ -2976,7 +3020,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4794:46:3", + "src": "4965:46:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2990,21 +3034,21 @@ "typeString": "bool" } ], - "id": 250, + "id": 252, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "4786:7:3", + "referencedDeclaration": 2657, + "src": "4957:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 259, + "id": 261, "isConstant": false, "isLValue": false, "isPure": false, @@ -3012,28 +3056,28 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4786:55:3", + "src": "4957:55:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 260, + "id": 262, "nodeType": "ExpressionStatement", - "src": "4786:55:3" + "src": "4957:55:3" }, { "assignments": [ - 262 + 264 ], "declarations": [ { "constant": false, - "id": 262, + "id": 264, "name": "requiredGas", "nodeType": "VariableDeclaration", - "scope": 278, - "src": "4851:19:3", + "scope": 280, + "src": "5022:19:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3041,10 +3085,10 @@ "typeString": "uint256" }, "typeName": { - "id": 261, + "id": 263, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4851:7:3", + "src": "5022:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3054,26 +3098,26 @@ "visibility": "internal" } ], - "id": 267, + "id": 269, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 266, + "id": 268, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 263, + "id": 265, "name": "startGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 246, - "src": "4873:8:3", + "referencedDeclaration": 248, + "src": "5044:8:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3086,18 +3130,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 264, + "id": 266, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2591, - "src": "4884:7:3", + "referencedDeclaration": 2647, + "src": "5055:7:3", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 265, + "id": 267, "isConstant": false, "isLValue": false, "isPure": false, @@ -3105,20 +3149,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4884:9:3", + "src": "5055:9:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4873:20:3", + "src": "5044:20:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "4851:42:3" + "src": "5022:42:3" }, { "expression": { @@ -3132,12 +3176,12 @@ "arguments": [ { "argumentTypes": null, - "id": 272, + "id": 274, "name": "requiredGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 262, - "src": "4972:11:3", + "referencedDeclaration": 264, + "src": "5172:11:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3153,18 +3197,18 @@ ], "expression": { "argumentTypes": null, - "id": 270, + "id": 272, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2585, - "src": "4955:3:3", + "referencedDeclaration": 2641, + "src": "5155:3:3", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, - "id": 271, + "id": 273, "isConstant": false, "isLValue": false, "isPure": true, @@ -3172,13 +3216,13 @@ "memberName": "encodePacked", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "4955:16:3", + "src": "5155:16:3", "typeDescriptions": { "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)" } }, - "id": 273, + "id": 275, "isConstant": false, "isLValue": false, "isPure": false, @@ -3186,7 +3230,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4955:29:3", + "src": "5155:29:3", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -3200,20 +3244,20 @@ "typeString": "bytes memory" } ], - "id": 269, + "id": 271, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "4948:6:3", + "src": "5148:6:3", "typeDescriptions": { "typeIdentifier": "t_type$_t_string_storage_ptr_$", "typeString": "type(string storage pointer)" }, "typeName": "string" }, - "id": 274, + "id": 276, "isConstant": false, "isLValue": false, "isPure": false, @@ -3221,7 +3265,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4948:37:3", + "src": "5148:37:3", "typeDescriptions": { "typeIdentifier": "t_string_memory", "typeString": "string memory" @@ -3235,21 +3279,21 @@ "typeString": "string memory" } ], - "id": 268, + "id": 270, "name": "revert", "nodeType": "Identifier", "overloadedDeclarations": [ - 2603, - 2604 + 2659, + 2660 ], - "referencedDeclaration": 2604, - "src": "4941:6:3", + "referencedDeclaration": 2660, + "src": "5141:6:3", "typeDescriptions": { "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory) pure" } }, - "id": 275, + "id": 277, "isConstant": false, "isLValue": false, "isPure": false, @@ -3257,57 +3301,57 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4941:45:3", + "src": "5141:45:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 276, + "id": 278, "nodeType": "ExpressionStatement", - "src": "4941:45:3" + "src": "5141:45:3" } ] }, "documentation": "@dev Allows to estimate a Safe transaction. \n This method is only meant for estimation purpose, therfore two different protection mechanism against execution in a transaction have been made:\n 1.) The method can only be called from the safe itself\n 2.) The response is returned with a revert\n When estimating set `from` to the address of the safe.\n Since the `estimateGas` function includes refunds, call this method to get an estimated of the costs that are deducted from the safe with `execAndPayTransaction`\n @param to Destination address of Safe transaction.\n @param value Ether value of Safe transaction.\n @param data Data payload of Safe transaction.\n @param operation Operation type of Safe transaction.\n @return Estimate without refunds and overhead fees (base transaction and payload data gas costs).", - "id": 278, + "id": 280, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 241, + "id": 243, "modifierName": { "argumentTypes": null, - "id": 240, + "id": 242, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1618, - "src": "4697:10:3", + "referencedDeclaration": 1653, + "src": "4781:10:3", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "4697:10:3" + "src": "4781:10:3" } ], "name": "requiredTxGas", "nodeType": "FunctionDefinition", "parameters": { - "id": 239, + "id": 241, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 232, + "id": 234, "name": "to", "nodeType": "VariableDeclaration", - "scope": 278, - "src": "4609:10:3", + "scope": 280, + "src": "4693:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3315,10 +3359,10 @@ "typeString": "address" }, "typeName": { - "id": 231, + "id": 233, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4609:7:3", + "src": "4693:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3329,11 +3373,11 @@ }, { "constant": false, - "id": 234, + "id": 236, "name": "value", "nodeType": "VariableDeclaration", - "scope": 278, - "src": "4621:13:3", + "scope": 280, + "src": "4705:13:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3341,10 +3385,10 @@ "typeString": "uint256" }, "typeName": { - "id": 233, + "id": 235, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4621:7:3", + "src": "4705:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3355,11 +3399,11 @@ }, { "constant": false, - "id": 236, + "id": 238, "name": "data", "nodeType": "VariableDeclaration", - "scope": 278, - "src": "4636:10:3", + "scope": 280, + "src": "4720:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3367,10 +3411,10 @@ "typeString": "bytes" }, "typeName": { - "id": 235, + "id": 237, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "4636:5:3", + "src": "4720:5:3", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -3381,11 +3425,11 @@ }, { "constant": false, - "id": 238, + "id": 240, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 278, - "src": "4648:24:3", + "scope": 280, + "src": "4732:24:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3394,11 +3438,11 @@ }, "typeName": { "contractScope": null, - "id": 237, + "id": 239, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 29, - "src": "4648:14:3", + "src": "4732:14:3", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -3408,20 +3452,20 @@ "visibility": "internal" } ], - "src": "4608:65:3" + "src": "4692:65:3" }, "payable": false, "returnParameters": { - "id": 244, + "id": 246, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 243, + "id": 245, "name": "", "nodeType": "VariableDeclaration", - "scope": 278, - "src": "4725:7:3", + "scope": 280, + "src": "4809:7:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3429,10 +3473,10 @@ "typeString": "uint256" }, "typeName": { - "id": 242, + "id": 244, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4725:7:3", + "src": "4809:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3442,32 +3486,32 @@ "visibility": "internal" } ], - "src": "4724:9:3" + "src": "4808:9:3" }, - "scope": 397, - "src": "4586:407:3", + "scope": 401, + "src": "4670:523:3", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 349, + "id": 353, "nodeType": "Block", - "src": "5103:437:3", + "src": "5303:519:3", "statements": [ { "assignments": [ - 293 + 295 ], "declarations": [ { "constant": false, - "id": 293, + "id": 295, "name": "lastOwner", "nodeType": "VariableDeclaration", - "scope": 350, - "src": "5165:17:3", + "scope": 354, + "src": "5365:17:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3475,10 +3519,10 @@ "typeString": "address" }, "typeName": { - "id": 292, + "id": 294, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5165:7:3", + "src": "5365:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3488,21 +3532,21 @@ "visibility": "internal" } ], - "id": 297, + "id": 299, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", - "id": 295, + "id": 297, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5193:1:3", + "src": "5393:1:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3518,20 +3562,20 @@ "typeString": "int_const 0" } ], - "id": 294, + "id": 296, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "5185:7:3", + "src": "5385:7:3", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 296, + "id": 298, "isConstant": false, "isLValue": false, "isPure": true, @@ -3539,25 +3583,25 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5185:10:3", + "src": "5385:10:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "5165:30:3" + "src": "5365:30:3" }, { "assignments": [], "declarations": [ { "constant": false, - "id": 299, + "id": 301, "name": "currentOwner", "nodeType": "VariableDeclaration", - "scope": 350, - "src": "5205:20:3", + "scope": 354, + "src": "5405:20:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3565,10 +3609,10 @@ "typeString": "address" }, "typeName": { - "id": 298, + "id": 300, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5205:7:3", + "src": "5405:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3578,21 +3622,21 @@ "visibility": "internal" } ], - "id": 300, + "id": 302, "initialValue": null, "nodeType": "VariableDeclarationStatement", - "src": "5205:20:3" + "src": "5405:20:3" }, { "assignments": [], "declarations": [ { "constant": false, - "id": 302, + "id": 304, "name": "i", "nodeType": "VariableDeclaration", - "scope": 350, - "src": "5235:9:3", + "scope": 354, + "src": "5435:9:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3600,10 +3644,10 @@ "typeString": "uint256" }, "typeName": { - "id": 301, + "id": 303, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5235:7:3", + "src": "5435:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3613,33 +3657,33 @@ "visibility": "internal" } ], - "id": 303, + "id": 305, "initialValue": null, "nodeType": "VariableDeclarationStatement", - "src": "5235:9:3" + "src": "5435:9:3" }, { "body": { - "id": 347, + "id": 351, "nodeType": "Block", - "src": "5328:206:3", + "src": "5528:288:3", "statements": [ { "expression": { "argumentTypes": null, - "id": 327, + "id": 329, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 314, + "id": 316, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 299, - "src": "5342:12:3", + "referencedDeclaration": 301, + "src": "5542:12:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3652,12 +3696,12 @@ "arguments": [ { "argumentTypes": null, - "id": 316, + "id": 318, "name": "hash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 280, - "src": "5367:4:3", + "referencedDeclaration": 282, + "src": "5567:4:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3667,26 +3711,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 317, + "id": 319, "name": "v", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 283, - "src": "5373:1:3", + "referencedDeclaration": 285, + "src": "5573:1:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", "typeString": "uint8[] memory" } }, - "id": 319, + "id": 321, "indexExpression": { "argumentTypes": null, - "id": 318, + "id": 320, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 302, - "src": "5375:1:3", + "referencedDeclaration": 304, + "src": "5575:1:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3697,7 +3741,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "5373:4:3", + "src": "5573:4:3", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -3707,26 +3751,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 320, + "id": 322, "name": "r", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 286, - "src": "5379:1:3", + "referencedDeclaration": 288, + "src": "5579:1:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", "typeString": "bytes32[] memory" } }, - "id": 322, + "id": 324, "indexExpression": { "argumentTypes": null, - "id": 321, + "id": 323, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 302, - "src": "5381:1:3", + "referencedDeclaration": 304, + "src": "5581:1:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3737,7 +3781,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "5379:4:3", + "src": "5579:4:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3747,26 +3791,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 323, + "id": 325, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 289, - "src": "5385:1:3", + "referencedDeclaration": 291, + "src": "5585:1:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", "typeString": "bytes32[] memory" } }, - "id": 325, + "id": 327, "indexExpression": { "argumentTypes": null, - "id": 324, + "id": 326, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 302, - "src": "5387:1:3", + "referencedDeclaration": 304, + "src": "5587:1:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3777,7 +3821,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "5385:4:3", + "src": "5585:4:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3803,18 +3847,18 @@ "typeString": "bytes32" } ], - "id": 315, + "id": 317, "name": "ecrecover", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2590, - "src": "5357:9:3", + "referencedDeclaration": 2646, + "src": "5557:9:3", "typeDescriptions": { "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)" } }, - "id": 326, + "id": 328, "isConstant": false, "isLValue": false, "isPure": false, @@ -3822,21 +3866,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5357:33:3", + "src": "5557:33:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "5342:48:3", + "src": "5542:48:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 328, + "id": 330, "nodeType": "ExpressionStatement", - "src": "5342:48:3" + "src": "5542:48:3" }, { "expression": { @@ -3848,7 +3892,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 334, + "id": 336, "isConstant": false, "isLValue": false, "isPure": false, @@ -3857,26 +3901,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 330, + "id": 332, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "5412:6:3", + "referencedDeclaration": 1132, + "src": "5612:6:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 332, + "id": 334, "indexExpression": { "argumentTypes": null, - "id": 331, + "id": 333, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 299, - "src": "5419:12:3", + "referencedDeclaration": 301, + "src": "5619:12:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3887,7 +3931,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "5412:20:3", + "src": "5612:20:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3898,14 +3942,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 333, + "id": 335, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5436:1:3", + "src": "5636:1:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3913,11 +3957,29 @@ }, "value": "0" }, - "src": "5412:25:3", + "src": "5612:25:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "5369676e6174757265206e6f742070726f7669646564206279206f776e6572", + "id": 337, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5639:33:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_09247dae670daab7cf1923d3334eea07c14df3c0a8f5233960935c63f47104a9", + "typeString": "literal_string \"Signature not provided by owner\"" + }, + "value": "Signature not provided by owner" } ], "expression": { @@ -3925,23 +3987,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_09247dae670daab7cf1923d3334eea07c14df3c0a8f5233960935c63f47104a9", + "typeString": "literal_string \"Signature not provided by owner\"" } ], - "id": 329, + "id": 331, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "5404:7:3", + "referencedDeclaration": 2658, + "src": "5604:7:3", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 335, + "id": 338, "isConstant": false, "isLValue": false, "isPure": false, @@ -3949,15 +4015,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5404:34:3", + "src": "5604:69:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 336, + "id": 339, "nodeType": "ExpressionStatement", - "src": "5404:34:3" + "src": "5604:69:3" }, { "expression": { @@ -3969,19 +4035,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 340, + "id": 343, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 338, + "id": 341, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 299, - "src": "5460:12:3", + "referencedDeclaration": 301, + "src": "5695:12:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3991,22 +4057,40 @@ "operator": ">", "rightExpression": { "argumentTypes": null, - "id": 339, + "id": 342, "name": "lastOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 293, - "src": "5475:9:3", + "referencedDeclaration": 295, + "src": "5710:9:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "5460:24:3", + "src": "5695:24:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "5369676e61747572657320617265206e6f74206f726465726564206279206f776e65722061646472657373", + "id": 344, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5721:45:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_597a123a1bc14bc9690387ae0fec99721cc18eefa85fa2531a7593a762444235", + "typeString": "literal_string \"Signatures are not ordered by owner address\"" + }, + "value": "Signatures are not ordered by owner address" } ], "expression": { @@ -4014,23 +4098,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_597a123a1bc14bc9690387ae0fec99721cc18eefa85fa2531a7593a762444235", + "typeString": "literal_string \"Signatures are not ordered by owner address\"" } ], - "id": 337, + "id": 340, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "5452:7:3", + "referencedDeclaration": 2658, + "src": "5687:7:3", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 341, + "id": 345, "isConstant": false, "isLValue": false, "isPure": false, @@ -4038,32 +4126,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5452:33:3", + "src": "5687:80:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 342, + "id": 346, "nodeType": "ExpressionStatement", - "src": "5452:33:3" + "src": "5687:80:3" }, { "expression": { "argumentTypes": null, - "id": 345, + "id": 349, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 343, + "id": 347, "name": "lastOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 293, - "src": "5499:9:3", + "referencedDeclaration": 295, + "src": "5781:9:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4073,26 +4161,26 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 344, + "id": 348, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 299, - "src": "5511:12:3", + "referencedDeclaration": 301, + "src": "5793:12:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "5499:24:3", + "src": "5781:24:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 346, + "id": 350, "nodeType": "ExpressionStatement", - "src": "5499:24:3" + "src": "5781:24:3" } ] }, @@ -4102,19 +4190,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 310, + "id": 312, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 308, + "id": 310, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 302, - "src": "5308:1:3", + "referencedDeclaration": 304, + "src": "5508:1:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4124,40 +4212,40 @@ "operator": "<", "rightExpression": { "argumentTypes": null, - "id": 309, + "id": 311, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1118, - "src": "5312:9:3", + "referencedDeclaration": 1136, + "src": "5512:9:3", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "5308:13:3", + "src": "5508:13:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 348, + "id": 352, "initializationExpression": { "expression": { "argumentTypes": null, - "id": 306, + "id": 308, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 304, + "id": 306, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 302, - "src": "5301:1:3", + "referencedDeclaration": 304, + "src": "5501:1:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4168,14 +4256,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "30", - "id": 305, + "id": 307, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5305:1:3", + "src": "5505:1:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -4183,20 +4271,20 @@ }, "value": "0" }, - "src": "5301:5:3", + "src": "5501:5:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 307, + "id": 309, "nodeType": "ExpressionStatement", - "src": "5301:5:3" + "src": "5501:5:3" }, "loopExpression": { "expression": { "argumentTypes": null, - "id": 312, + "id": 314, "isConstant": false, "isLValue": false, "isPure": false, @@ -4204,15 +4292,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "5323:3:3", + "src": "5523:3:3", "subExpression": { "argumentTypes": null, - "id": 311, + "id": 313, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 302, - "src": "5323:1:3", + "referencedDeclaration": 304, + "src": "5523:1:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4223,17 +4311,17 @@ "typeString": "uint256" } }, - "id": 313, + "id": 315, "nodeType": "ExpressionStatement", - "src": "5323:3:3" + "src": "5523:3:3" }, "nodeType": "ForStatement", - "src": "5296:238:3" + "src": "5496:320:3" } ] }, "documentation": null, - "id": 350, + "id": 354, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -4241,16 +4329,16 @@ "name": "checkHash", "nodeType": "FunctionDefinition", "parameters": { - "id": 290, + "id": 292, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 280, + "id": 282, "name": "hash", "nodeType": "VariableDeclaration", - "scope": 350, - "src": "5018:12:3", + "scope": 354, + "src": "5218:12:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4258,10 +4346,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 279, + "id": 281, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "5018:7:3", + "src": "5218:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -4272,11 +4360,11 @@ }, { "constant": false, - "id": 283, + "id": 285, "name": "v", "nodeType": "VariableDeclaration", - "scope": 350, - "src": "5032:9:3", + "scope": 354, + "src": "5232:9:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4285,19 +4373,19 @@ }, "typeName": { "baseType": { - "id": 281, + "id": 283, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "5032:5:3", + "src": "5232:5:3", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "id": 282, + "id": 284, "length": null, "nodeType": "ArrayTypeName", - "src": "5032:7:3", + "src": "5232:7:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr", "typeString": "uint8[]" @@ -4308,11 +4396,11 @@ }, { "constant": false, - "id": 286, + "id": 288, "name": "r", "nodeType": "VariableDeclaration", - "scope": 350, - "src": "5043:11:3", + "scope": 354, + "src": "5243:11:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4321,19 +4409,19 @@ }, "typeName": { "baseType": { - "id": 284, + "id": 286, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "5043:7:3", + "src": "5243:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "id": 285, + "id": 287, "length": null, "nodeType": "ArrayTypeName", - "src": "5043:9:3", + "src": "5243:9:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", "typeString": "bytes32[]" @@ -4344,11 +4432,11 @@ }, { "constant": false, - "id": 289, + "id": 291, "name": "s", "nodeType": "VariableDeclaration", - "scope": 350, - "src": "5056:11:3", + "scope": 354, + "src": "5256:11:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4357,19 +4445,19 @@ }, "typeName": { "baseType": { - "id": 287, + "id": 289, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "5056:7:3", + "src": "5256:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "id": 288, + "id": 290, "length": null, "nodeType": "ArrayTypeName", - "src": "5056:9:3", + "src": "5256:9:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", "typeString": "bytes32[]" @@ -4379,26 +4467,26 @@ "visibility": "internal" } ], - "src": "5017:51:3" + "src": "5217:51:3" }, "payable": false, "returnParameters": { - "id": 291, + "id": 293, "nodeType": "ParameterList", "parameters": [], - "src": "5103:0:3" + "src": "5303:0:3" }, - "scope": 397, - "src": "4999:541:3", + "scope": 401, + "src": "5199:623:3", "stateMutability": "view", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 395, + "id": 399, "nodeType": "Block", - "src": "6464:176:3", + "src": "6746:176:3", "statements": [ { "expression": { @@ -4413,14 +4501,14 @@ { "argumentTypes": null, "hexValue": "30783139", - "id": 377, + "id": 381, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "6526:4:3", + "src": "6808:4:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_25_by_1", @@ -4436,20 +4524,20 @@ "typeString": "int_const 25" } ], - "id": 376, + "id": 380, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "6521:4:3", + "src": "6803:4:3", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes1_$", "typeString": "type(bytes1)" }, "typeName": "byte" }, - "id": 378, + "id": 382, "isConstant": false, "isLValue": false, "isPure": true, @@ -4457,7 +4545,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6521:10:3", + "src": "6803:10:3", "typeDescriptions": { "typeIdentifier": "t_bytes1", "typeString": "bytes1" @@ -4469,14 +4557,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 380, + "id": 384, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "6538:1:3", + "src": "6820:1:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -4492,20 +4580,20 @@ "typeString": "int_const 0" } ], - "id": 379, + "id": 383, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "6533:4:3", + "src": "6815:4:3", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes1_$", "typeString": "type(bytes1)" }, "typeName": "byte" }, - "id": 381, + "id": 385, "isConstant": false, "isLValue": false, "isPure": true, @@ -4513,7 +4601,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6533:7:3", + "src": "6815:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes1", "typeString": "bytes1" @@ -4521,25 +4609,25 @@ }, { "argumentTypes": null, - "id": 382, + "id": 386, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2631, - "src": "6542:4:3", + "referencedDeclaration": 2687, + "src": "6824:4:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafePersonalEdition_$397", + "typeIdentifier": "t_contract$_GnosisSafePersonalEdition_$401", "typeString": "contract GnosisSafePersonalEdition" } }, { "argumentTypes": null, - "id": 383, + "id": 387, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 352, - "src": "6548:2:3", + "referencedDeclaration": 356, + "src": "6830:2:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4547,12 +4635,12 @@ }, { "argumentTypes": null, - "id": 384, + "id": 388, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 354, - "src": "6552:5:3", + "referencedDeclaration": 358, + "src": "6834:5:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4560,12 +4648,12 @@ }, { "argumentTypes": null, - "id": 385, + "id": 389, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 356, - "src": "6559:4:3", + "referencedDeclaration": 360, + "src": "6841:4:3", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -4573,12 +4661,12 @@ }, { "argumentTypes": null, - "id": 386, + "id": 390, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 358, - "src": "6565:9:3", + "referencedDeclaration": 362, + "src": "6847:9:3", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -4586,12 +4674,12 @@ }, { "argumentTypes": null, - "id": 387, + "id": 391, "name": "safeTxGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 360, - "src": "6576:9:3", + "referencedDeclaration": 364, + "src": "6858:9:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4599,12 +4687,12 @@ }, { "argumentTypes": null, - "id": 388, + "id": 392, "name": "dataGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 362, - "src": "6587:7:3", + "referencedDeclaration": 366, + "src": "6869:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4612,12 +4700,12 @@ }, { "argumentTypes": null, - "id": 389, + "id": 393, "name": "gasPrice", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 364, - "src": "6596:8:3", + "referencedDeclaration": 368, + "src": "6878:8:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4625,12 +4713,12 @@ }, { "argumentTypes": null, - "id": 390, + "id": 394, "name": "gasToken", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 366, - "src": "6606:8:3", + "referencedDeclaration": 370, + "src": "6888:8:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4638,12 +4726,12 @@ }, { "argumentTypes": null, - "id": 391, + "id": 395, "name": "_nonce", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 368, - "src": "6616:6:3", + "referencedDeclaration": 372, + "src": "6898:6:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4661,7 +4749,7 @@ "typeString": "bytes1" }, { - "typeIdentifier": "t_contract$_GnosisSafePersonalEdition_$397", + "typeIdentifier": "t_contract$_GnosisSafePersonalEdition_$401", "typeString": "contract GnosisSafePersonalEdition" }, { @@ -4703,18 +4791,18 @@ ], "expression": { "argumentTypes": null, - "id": 374, + "id": 378, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2585, - "src": "6504:3:3", + "referencedDeclaration": 2641, + "src": "6786:3:3", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, - "id": 375, + "id": 379, "isConstant": false, "isLValue": false, "isPure": true, @@ -4722,13 +4810,13 @@ "memberName": "encodePacked", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "6504:16:3", + "src": "6786:16:3", "typeDescriptions": { "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)" } }, - "id": 392, + "id": 396, "isConstant": false, "isLValue": false, "isPure": false, @@ -4736,7 +4824,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6504:119:3", + "src": "6786:119:3", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -4750,18 +4838,18 @@ "typeString": "bytes memory" } ], - "id": 373, + "id": 377, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2592, - "src": "6481:9:3", + "referencedDeclaration": 2648, + "src": "6763:9:3", "typeDescriptions": { "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", "typeString": "function () pure returns (bytes32)" } }, - "id": 393, + "id": 397, "isConstant": false, "isLValue": false, "isPure": false, @@ -4769,21 +4857,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6481:152:3", + "src": "6763:152:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "functionReturnParameters": 372, - "id": 394, + "functionReturnParameters": 376, + "id": 398, "nodeType": "Return", - "src": "6474:159:3" + "src": "6756:159:3" } ] }, "documentation": "@dev Returns hash to be signed by owners.\n @param to Destination address.\n @param value Ether value.\n @param data Data payload.\n @param operation Operation type.\n @param safeTxGas Fas that should be used for the safe transaction.\n @param dataGas Gas costs for data used to trigger the safe transaction.\n @param gasPrice Maximum gas price that should be used for this transaction.\n @param gasToken Token address (or 0 if ETH) that is used for the payment.\n @param _nonce Transaction nonce.\n @return Transaction hash.", - "id": 396, + "id": 400, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -4791,16 +4879,16 @@ "name": "getTransactionHash", "nodeType": "FunctionDefinition", "parameters": { - "id": 369, + "id": 373, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 352, + "id": 356, "name": "to", "nodeType": "VariableDeclaration", - "scope": 396, - "src": "6177:10:3", + "scope": 400, + "src": "6459:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4808,10 +4896,10 @@ "typeString": "address" }, "typeName": { - "id": 351, + "id": 355, "name": "address", "nodeType": "ElementaryTypeName", - "src": "6177:7:3", + "src": "6459:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4822,11 +4910,11 @@ }, { "constant": false, - "id": 354, + "id": 358, "name": "value", "nodeType": "VariableDeclaration", - "scope": 396, - "src": "6198:13:3", + "scope": 400, + "src": "6480:13:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4834,10 +4922,10 @@ "typeString": "uint256" }, "typeName": { - "id": 353, + "id": 357, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "6198:7:3", + "src": "6480:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4848,11 +4936,11 @@ }, { "constant": false, - "id": 356, + "id": 360, "name": "data", "nodeType": "VariableDeclaration", - "scope": 396, - "src": "6222:10:3", + "scope": 400, + "src": "6504:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4860,10 +4948,10 @@ "typeString": "bytes" }, "typeName": { - "id": 355, + "id": 359, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "6222:5:3", + "src": "6504:5:3", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -4874,11 +4962,11 @@ }, { "constant": false, - "id": 358, + "id": 362, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 396, - "src": "6243:24:3", + "scope": 400, + "src": "6525:24:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4887,11 +4975,11 @@ }, "typeName": { "contractScope": null, - "id": 357, + "id": 361, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 29, - "src": "6243:14:3", + "src": "6525:14:3", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -4902,11 +4990,11 @@ }, { "constant": false, - "id": 360, + "id": 364, "name": "safeTxGas", "nodeType": "VariableDeclaration", - "scope": 396, - "src": "6278:17:3", + "scope": 400, + "src": "6560:17:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4914,10 +5002,10 @@ "typeString": "uint256" }, "typeName": { - "id": 359, + "id": 363, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "6278:7:3", + "src": "6560:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4928,11 +5016,11 @@ }, { "constant": false, - "id": 362, + "id": 366, "name": "dataGas", "nodeType": "VariableDeclaration", - "scope": 396, - "src": "6306:15:3", + "scope": 400, + "src": "6588:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4940,10 +5028,10 @@ "typeString": "uint256" }, "typeName": { - "id": 361, + "id": 365, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "6306:7:3", + "src": "6588:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4954,11 +5042,11 @@ }, { "constant": false, - "id": 364, + "id": 368, "name": "gasPrice", "nodeType": "VariableDeclaration", - "scope": 396, - "src": "6332:16:3", + "scope": 400, + "src": "6614:16:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4966,10 +5054,10 @@ "typeString": "uint256" }, "typeName": { - "id": 363, + "id": 367, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "6332:7:3", + "src": "6614:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4980,11 +5068,11 @@ }, { "constant": false, - "id": 366, + "id": 370, "name": "gasToken", "nodeType": "VariableDeclaration", - "scope": 396, - "src": "6359:16:3", + "scope": 400, + "src": "6641:16:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4992,10 +5080,10 @@ "typeString": "address" }, "typeName": { - "id": 365, + "id": 369, "name": "address", "nodeType": "ElementaryTypeName", - "src": "6359:7:3", + "src": "6641:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5006,11 +5094,11 @@ }, { "constant": false, - "id": 368, + "id": 372, "name": "_nonce", "nodeType": "VariableDeclaration", - "scope": 396, - "src": "6385:14:3", + "scope": 400, + "src": "6667:14:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5018,10 +5106,10 @@ "typeString": "uint256" }, "typeName": { - "id": 367, + "id": 371, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "6385:7:3", + "src": "6667:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5031,20 +5119,20 @@ "visibility": "internal" } ], - "src": "6167:238:3" + "src": "6449:238:3" }, "payable": false, "returnParameters": { - "id": 372, + "id": 376, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 371, + "id": 375, "name": "", "nodeType": "VariableDeclaration", - "scope": 396, - "src": "6451:7:3", + "scope": 400, + "src": "6733:7:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5052,10 +5140,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 370, + "id": 374, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "6451:7:3", + "src": "6733:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -5065,29 +5153,29 @@ "visibility": "internal" } ], - "src": "6450:9:3" + "src": "6732:9:3" }, - "scope": 397, - "src": "6140:500:3", + "scope": 401, + "src": "6422:500:3", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 398, - "src": "449:6193:3" + "scope": 402, + "src": "449:6475:3" } ], - "src": "0:6643:3" + "src": "0:6925:3" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafePersonalEdition.sol", "exportedSymbols": { "GnosisSafePersonalEdition": [ - 397 + 401 ] }, - "id": 398, + "id": 402, "nodeType": "SourceUnit", "nodes": [ { @@ -5105,8 +5193,8 @@ "file": "./interfaces/ERC20Token.sol", "id": 66, "nodeType": "ImportDirective", - "scope": 398, - "sourceUnit": 1686, + "scope": 402, + "sourceUnit": 1721, "src": "24:37:3", "symbolAliases": [], "unitAlias": "" @@ -5116,7 +5204,7 @@ "file": "./GnosisSafe.sol", "id": 67, "nodeType": "ImportDirective", - "scope": 398, + "scope": 402, "sourceUnit": 64, "src": "62:26:3", "symbolAliases": [], @@ -5127,8 +5215,8 @@ "file": "./MasterCopy.sol", "id": 68, "nodeType": "ImportDirective", - "scope": 398, - "sourceUnit": 653, + "scope": 402, + "sourceUnit": 663, "src": "89:26:3", "symbolAliases": [], "unitAlias": "" @@ -5142,10 +5230,10 @@ "id": 69, "name": "MasterCopy", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 652, + "referencedDeclaration": 662, "src": "487:10:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_MasterCopy_$652", + "typeIdentifier": "t_contract$_MasterCopy_$662", "typeString": "contract MasterCopy" } }, @@ -5174,22 +5262,22 @@ ], "contractDependencies": [ 63, - 652, - 1100, - 1472, - 1619 + 662, + 1118, + 1504, + 1654 ], "contractKind": "contract", "documentation": "@title Gnosis Safe Personal Edition - A multisignature wallet with support for confirmations using signed messages based on ERC191.\n @author Stefan George - \n @author Richard Meissner - \n @author Ricardo Guilherme Schmidt - (Status Research & Development GmbH) - Gas Token Payment", "fullyImplemented": true, - "id": 397, + "id": 401, "linearizedBaseContracts": [ - 397, + 401, 63, - 1472, - 1100, - 652, - 1619 + 1504, + 1118, + 662, + 1654 ], "name": "GnosisSafePersonalEdition", "nodeType": "ContractDefinition", @@ -5199,7 +5287,7 @@ "id": 75, "name": "NAME", "nodeType": "VariableDeclaration", - "scope": 397, + "scope": 401, "src": "517:60:3", "stateVariable": true, "storageLocation": "default", @@ -5242,7 +5330,7 @@ "id": 78, "name": "VERSION", "nodeType": "VariableDeclaration", - "scope": 397, + "scope": 401, "src": "583:40:3", "stateVariable": true, "storageLocation": "default", @@ -5285,7 +5373,7 @@ "id": 81, "name": "BASE_TX_GAS_COSTS", "nodeType": "VariableDeclaration", - "scope": 397, + "scope": 401, "src": "634:51:3", "stateVariable": true, "storageLocation": "default", @@ -5328,7 +5416,7 @@ "id": 84, "name": "PAYMENT_GAS_COSTS", "nodeType": "VariableDeclaration", - "scope": 397, + "scope": 401, "src": "691:51:3", "stateVariable": true, "storageLocation": "default", @@ -5385,7 +5473,7 @@ "id": 88, "name": "nonce", "nodeType": "VariableDeclaration", - "scope": 397, + "scope": 401, "src": "779:20:3", "stateVariable": true, "storageLocation": "default", @@ -5408,9 +5496,9 @@ }, { "body": { - "id": 211, + "id": 213, "nodeType": "Block", - "src": "1984:1043:3", + "src": "1984:1127:3", "statements": [ { "assignments": [ @@ -5422,7 +5510,7 @@ "id": 117, "name": "startGas", "nodeType": "VariableDeclaration", - "scope": 212, + "scope": 214, "src": "1994:16:3", "stateVariable": false, "storageLocation": "default", @@ -5454,7 +5542,7 @@ "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2591, + "referencedDeclaration": 2647, "src": "2013:7:3", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", @@ -5646,7 +5734,7 @@ "name": "getTransactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 396, + "referencedDeclaration": 400, "src": "2042:18:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$returns$_t_bytes32_$", @@ -5730,7 +5818,7 @@ "name": "checkHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 350, + "referencedDeclaration": 354, "src": "2032:9:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_array$_t_uint8_$dyn_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$returns$__$", @@ -5824,7 +5912,7 @@ "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2591, + "referencedDeclaration": 2647, "src": "2231:7:3", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", @@ -5886,6 +5974,24 @@ "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "4e6f7420656e6f7567682067617320746f20657865637574652073616665207472616e73616374696f6e", + "id": 148, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2275:44:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_e7ccb05a0f2c66d12451cdfc6bbab488c38ab704d0f6af9ad18763542e9e5f18", + "typeString": "literal_string \"Not enough gas to execute safe transaction\"" + }, + "value": "Not enough gas to execute safe transaction" } ], "expression": { @@ -5893,23 +5999,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_e7ccb05a0f2c66d12451cdfc6bbab488c38ab704d0f6af9ad18763542e9e5f18", + "typeString": "literal_string \"Not enough gas to execute safe transaction\"" } ], "id": 141, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, + "referencedDeclaration": 2658, "src": "2223:7:3", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 148, + "id": 149, "isConstant": false, "isLValue": false, "isPure": false, @@ -5917,20 +6027,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2223:51:3", + "src": "2223:97:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 149, + "id": 150, "nodeType": "ExpressionStatement", - "src": "2223:51:3" + "src": "2223:97:3" }, { "condition": { "argumentTypes": null, - "id": 157, + "id": 158, "isConstant": false, "isLValue": false, "isPure": false, @@ -5938,18 +6048,18 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "2288:47:3", + "src": "2334:47:3", "subExpression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 151, + "id": 152, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 90, - "src": "2297:2:3", + "src": "2343:2:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5957,12 +6067,12 @@ }, { "argumentTypes": null, - "id": 152, + "id": 153, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 92, - "src": "2301:5:3", + "src": "2347:5:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5970,12 +6080,12 @@ }, { "argumentTypes": null, - "id": 153, + "id": 154, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 94, - "src": "2308:4:3", + "src": "2354:4:3", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -5983,12 +6093,12 @@ }, { "argumentTypes": null, - "id": 154, + "id": 155, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 96, - "src": "2314:9:3", + "src": "2360:9:3", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -5996,12 +6106,12 @@ }, { "argumentTypes": null, - "id": 155, + "id": 156, "name": "safeTxGas", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 98, - "src": "2325:9:3", + "src": "2371:9:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6031,18 +6141,18 @@ "typeString": "uint256" } ], - "id": 150, + "id": 151, "name": "execute", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 989, - "src": "2289:7:3", + "referencedDeclaration": 1007, + "src": "2335:7:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) returns (bool)" } }, - "id": 156, + "id": 157, "isConstant": false, "isLValue": false, "isPure": false, @@ -6050,7 +6160,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2289:46:3", + "src": "2335:46:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6062,13 +6172,13 @@ } }, "falseBody": null, - "id": 162, + "id": 163, "nodeType": "IfStatement", - "src": "2284:100:3", + "src": "2330:100:3", "trueBody": { - "id": 161, + "id": 162, "nodeType": "Block", - "src": "2337:47:3", + "src": "2383:47:3", "statements": [ { "eventCall": { @@ -6076,18 +6186,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 158, + "id": 159, "name": "ExecutionFailed", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 86, - "src": "2356:15:3", + "src": "2402:15:3", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 159, + "id": 160, "isConstant": false, "isLValue": false, "isPure": false, @@ -6095,15 +6205,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2356:17:3", + "src": "2402:17:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 160, + "id": 161, "nodeType": "EmitStatement", - "src": "2351:22:3" + "src": "2397:22:3" } ] } @@ -6115,19 +6225,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 165, + "id": 166, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 163, + "id": 164, "name": "gasPrice", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 102, - "src": "2537:8:3", + "src": "2583:8:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6138,14 +6248,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 164, + "id": 165, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2548:1:3", + "src": "2594:1:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -6153,33 +6263,33 @@ }, "value": "0" }, - "src": "2537:12:3", + "src": "2583:12:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 210, + "id": 212, "nodeType": "IfStatement", - "src": "2533:486:3", + "src": "2579:524:3", "trueBody": { - "id": 209, + "id": 211, "nodeType": "Block", - "src": "2551:468:3", + "src": "2597:506:3", "statements": [ { "assignments": [ - 167 + 168 ], "declarations": [ { "constant": false, - "id": 167, + "id": 168, "name": "gasCosts", "nodeType": "VariableDeclaration", - "scope": 212, - "src": "2565:16:3", + "scope": 214, + "src": "2611:16:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6187,10 +6297,10 @@ "typeString": "uint256" }, "typeName": { - "id": 166, + "id": 167, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2565:7:3", + "src": "2611:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6200,7 +6310,7 @@ "visibility": "internal" } ], - "id": 175, + "id": 176, "initialValue": { "argumentTypes": null, "arguments": [ @@ -6210,19 +6320,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 172, + "id": 173, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 169, + "id": 170, "name": "startGas", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 117, - "src": "2598:8:3", + "src": "2644:8:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6235,18 +6345,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 170, + "id": 171, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2591, - "src": "2609:7:3", + "referencedDeclaration": 2647, + "src": "2655:7:3", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 171, + "id": 172, "isConstant": false, "isLValue": false, "isPure": false, @@ -6254,13 +6364,13 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2609:9:3", + "src": "2655:9:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2598:20:3", + "src": "2644:20:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6268,12 +6378,12 @@ }, { "argumentTypes": null, - "id": 173, + "id": 174, "name": "dataGas", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 100, - "src": "2620:7:3", + "src": "2666:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6291,18 +6401,18 @@ "typeString": "uint256" } ], - "id": 168, + "id": 169, "name": "totalGasCosts", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 230, - "src": "2584:13:3", + "referencedDeclaration": 232, + "src": "2630:13:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$", "typeString": "function (uint256,uint256) pure returns (uint256)" } }, - "id": 174, + "id": 175, "isConstant": false, "isLValue": false, "isPure": false, @@ -6310,27 +6420,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2584:44:3", + "src": "2630:44:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "2565:63:3" + "src": "2611:63:3" }, { "assignments": [ - 177 + 178 ], "declarations": [ { "constant": false, - "id": 177, + "id": 178, "name": "amount", "nodeType": "VariableDeclaration", - "scope": 212, - "src": "2642:14:3", + "scope": 214, + "src": "2688:14:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6338,10 +6448,10 @@ "typeString": "uint256" }, "typeName": { - "id": 176, + "id": 177, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2642:7:3", + "src": "2688:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6351,26 +6461,26 @@ "visibility": "internal" } ], - "id": 181, + "id": 182, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 180, + "id": 181, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 178, + "id": 179, "name": "gasCosts", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 167, - "src": "2659:8:3", + "referencedDeclaration": 168, + "src": "2705:8:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6380,25 +6490,25 @@ "operator": "*", "rightExpression": { "argumentTypes": null, - "id": 179, + "id": 180, "name": "gasPrice", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 102, - "src": "2670:8:3", + "src": "2716:8:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "2659:19:3", + "src": "2705:19:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "2642:36:3" + "src": "2688:36:3" }, { "condition": { @@ -6407,19 +6517,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 186, + "id": 187, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 182, + "id": 183, "name": "gasToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 104, - "src": "2696:8:3", + "src": "2742:8:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6433,14 +6543,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 184, + "id": 185, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2716:1:3", + "src": "2762:1:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -6456,20 +6566,20 @@ "typeString": "int_const 0" } ], - "id": 183, + "id": 184, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2708:7:3", + "src": "2754:7:3", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 185, + "id": 186, "isConstant": false, "isLValue": false, "isPure": true, @@ -6477,22 +6587,22 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2708:10:3", + "src": "2754:10:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2696:22:3", + "src": "2742:22:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { - "id": 207, + "id": 209, "nodeType": "Block", - "src": "2852:157:3", + "src": "2898:195:3", "statements": [ { "expression": { @@ -6505,18 +6615,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 201, + "id": 202, "name": "tx", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2610, - "src": "2975:2:3", + "referencedDeclaration": 2666, + "src": "3021:2:3", "typeDescriptions": { "typeIdentifier": "t_magic_transaction", "typeString": "tx" } }, - "id": 202, + "id": 203, "isConstant": false, "isLValue": false, "isPure": false, @@ -6524,7 +6634,7 @@ "memberName": "origin", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2975:9:3", + "src": "3021:9:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6532,12 +6642,12 @@ }, { "argumentTypes": null, - "id": 203, + "id": 204, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 177, - "src": "2986:6:3", + "referencedDeclaration": 178, + "src": "3032:6:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6560,12 +6670,12 @@ "arguments": [ { "argumentTypes": null, - "id": 198, + "id": 199, "name": "gasToken", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 104, - "src": "2956:8:3", + "src": "3002:8:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6579,18 +6689,18 @@ "typeString": "address" } ], - "id": 197, + "id": 198, "name": "ERC20Token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1685, - "src": "2945:10:3", + "referencedDeclaration": 1720, + "src": "2991:10:3", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ERC20Token_$1685_$", + "typeIdentifier": "t_type$_t_contract$_ERC20Token_$1720_$", "typeString": "type(contract ERC20Token)" } }, - "id": 199, + "id": 200, "isConstant": false, "isLValue": false, "isPure": false, @@ -6598,27 +6708,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2945:20:3", + "src": "2991:20:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20Token_$1685", + "typeIdentifier": "t_contract$_ERC20Token_$1720", "typeString": "contract ERC20Token" } }, - "id": 200, + "id": 201, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transfer", "nodeType": "MemberAccess", - "referencedDeclaration": 1639, - "src": "2945:29:3", + "referencedDeclaration": 1674, + "src": "2991:29:3", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 204, + "id": 205, "isConstant": false, "isLValue": false, "isPure": false, @@ -6626,11 +6736,29 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2945:48:3", + "src": "2991:48:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "436f756c64206e6f74207061792067617320636f737473207769746820746f6b656e", + "id": 206, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3041:36:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_8560a13547eca5648355c8db1a9f8653b6f657d31d476c36bca25e47b45b08f4", + "typeString": "literal_string \"Could not pay gas costs with token\"" + }, + "value": "Could not pay gas costs with token" } ], "expression": { @@ -6638,23 +6766,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_8560a13547eca5648355c8db1a9f8653b6f657d31d476c36bca25e47b45b08f4", + "typeString": "literal_string \"Could not pay gas costs with token\"" } ], - "id": 196, + "id": 197, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "2937:7:3", + "referencedDeclaration": 2658, + "src": "2983:7:3", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 205, + "id": 207, "isConstant": false, "isLValue": false, "isPure": false, @@ -6662,25 +6794,25 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2937:57:3", + "src": "2983:95:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 206, + "id": 208, "nodeType": "ExpressionStatement", - "src": "2937:57:3" + "src": "2983:95:3" } ] }, - "id": 208, + "id": 210, "nodeType": "IfStatement", - "src": "2692:317:3", + "src": "2738:355:3", "trueBody": { - "id": 195, + "id": 196, "nodeType": "Block", - "src": "2720:126:3", + "src": "2766:126:3", "statements": [ { "expression": { @@ -6688,12 +6820,12 @@ "arguments": [ { "argumentTypes": null, - "id": 192, + "id": 193, "name": "amount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 177, - "src": "2824:6:3", + "referencedDeclaration": 178, + "src": "2870:6:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6711,18 +6843,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 187, + "id": 188, "name": "tx", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2610, - "src": "2805:2:3", + "referencedDeclaration": 2666, + "src": "2851:2:3", "typeDescriptions": { "typeIdentifier": "t_magic_transaction", "typeString": "tx" } }, - "id": 190, + "id": 191, "isConstant": false, "isLValue": false, "isPure": false, @@ -6730,13 +6862,13 @@ "memberName": "origin", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2805:9:3", + "src": "2851:9:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 191, + "id": 192, "isConstant": false, "isLValue": false, "isPure": false, @@ -6744,13 +6876,13 @@ "memberName": "transfer", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2805:18:3", + "src": "2851:18:3", "typeDescriptions": { "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256)" } }, - "id": 193, + "id": 194, "isConstant": false, "isLValue": false, "isPure": false, @@ -6758,15 +6890,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2805:26:3", + "src": "2851:26:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 194, + "id": 195, "nodeType": "ExpressionStatement", - "src": "2805:26:3" + "src": "2851:26:3" } ] } @@ -6777,7 +6909,7 @@ ] }, "documentation": "@dev Allows to execute a Safe transaction confirmed by required number of owners.\n @param to Destination address of Safe transaction.\n @param value Ether value of Safe transaction.\n @param data Data payload of Safe transaction.\n @param operation Operation type of Safe transaction.\n @param safeTxGas Gas that should be used for the Safe transaction.\n @param dataGas Gas costs for data used to trigger the safe transaction.\n @param gasPrice Gas price that should be used for the payment calculation.\n @param gasToken Token address (or 0 if ETH) that is used for the payment.\n @param v Array of signature V values sorted by owner addresses.\n @param r Array of signature R values sorted by owner addresses.\n @param s Array of signature S values sorted by owner addresses.", - "id": 212, + "id": 214, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -6793,7 +6925,7 @@ "id": 90, "name": "to", "nodeType": "VariableDeclaration", - "scope": 212, + "scope": 214, "src": "1700:10:3", "stateVariable": false, "storageLocation": "default", @@ -6819,7 +6951,7 @@ "id": 92, "name": "value", "nodeType": "VariableDeclaration", - "scope": 212, + "scope": 214, "src": "1721:13:3", "stateVariable": false, "storageLocation": "default", @@ -6845,7 +6977,7 @@ "id": 94, "name": "data", "nodeType": "VariableDeclaration", - "scope": 212, + "scope": 214, "src": "1745:10:3", "stateVariable": false, "storageLocation": "default", @@ -6871,7 +7003,7 @@ "id": 96, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 212, + "scope": 214, "src": "1766:24:3", "stateVariable": false, "storageLocation": "default", @@ -6899,7 +7031,7 @@ "id": 98, "name": "safeTxGas", "nodeType": "VariableDeclaration", - "scope": 212, + "scope": 214, "src": "1801:17:3", "stateVariable": false, "storageLocation": "default", @@ -6925,7 +7057,7 @@ "id": 100, "name": "dataGas", "nodeType": "VariableDeclaration", - "scope": 212, + "scope": 214, "src": "1828:15:3", "stateVariable": false, "storageLocation": "default", @@ -6951,7 +7083,7 @@ "id": 102, "name": "gasPrice", "nodeType": "VariableDeclaration", - "scope": 212, + "scope": 214, "src": "1853:16:3", "stateVariable": false, "storageLocation": "default", @@ -6977,7 +7109,7 @@ "id": 104, "name": "gasToken", "nodeType": "VariableDeclaration", - "scope": 212, + "scope": 214, "src": "1879:16:3", "stateVariable": false, "storageLocation": "default", @@ -7003,7 +7135,7 @@ "id": 107, "name": "v", "nodeType": "VariableDeclaration", - "scope": 212, + "scope": 214, "src": "1905:9:3", "stateVariable": false, "storageLocation": "default", @@ -7039,7 +7171,7 @@ "id": 110, "name": "r", "nodeType": "VariableDeclaration", - "scope": 212, + "scope": 214, "src": "1925:11:3", "stateVariable": false, "storageLocation": "default", @@ -7075,7 +7207,7 @@ "id": 113, "name": "s", "nodeType": "VariableDeclaration", - "scope": 212, + "scope": 214, "src": "1947:11:3", "stateVariable": false, "storageLocation": "default", @@ -7116,17 +7248,17 @@ "parameters": [], "src": "1984:0:3" }, - "scope": 397, - "src": "1660:1367:3", + "scope": 401, + "src": "1660:1451:3", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 229, + "id": 231, "nodeType": "Block", - "src": "3582:86:3", + "src": "3666:86:3", "statements": [ { "expression": { @@ -7135,7 +7267,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 227, + "id": 229, "isConstant": false, "isLValue": false, "isPure": false, @@ -7146,7 +7278,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 225, + "id": 227, "isConstant": false, "isLValue": false, "isPure": false, @@ -7157,19 +7289,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 223, + "id": 225, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 221, + "id": 223, "name": "executionGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 214, - "src": "3599:12:3", + "referencedDeclaration": 216, + "src": "3683:12:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7179,18 +7311,18 @@ "operator": "+", "rightExpression": { "argumentTypes": null, - "id": 222, + "id": 224, "name": "dataGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 216, - "src": "3614:7:3", + "referencedDeclaration": 218, + "src": "3698:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3599:22:3", + "src": "3683:22:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7200,18 +7332,18 @@ "operator": "+", "rightExpression": { "argumentTypes": null, - "id": 224, + "id": 226, "name": "PAYMENT_GAS_COSTS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 84, - "src": "3624:17:3", + "src": "3708:17:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3599:42:3", + "src": "3683:42:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7221,32 +7353,32 @@ "operator": "+", "rightExpression": { "argumentTypes": null, - "id": 226, + "id": 228, "name": "BASE_TX_GAS_COSTS", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 81, - "src": "3644:17:3", + "src": "3728:17:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3599:62:3", + "src": "3683:62:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "functionReturnParameters": 220, - "id": 228, + "functionReturnParameters": 222, + "id": 230, "nodeType": "Return", - "src": "3592:69:3" + "src": "3676:69:3" } ] }, "documentation": "@dev Calculates the total gas costs for a safe transaction with the gas costs for the execution of the transaction.\n @param executionGas Gas costs for the execution of the safe transaction.\n @param dataGas Gas costs for data used to trigger the safe transaction.\n @return Total gas costs for the execution (this includes gas costs for the payment to tx.origin, base transaction and payload data).", - "id": 230, + "id": 232, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -7254,16 +7386,16 @@ "name": "totalGasCosts", "nodeType": "FunctionDefinition", "parameters": { - "id": 217, + "id": 219, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 214, + "id": 216, "name": "executionGas", "nodeType": "VariableDeclaration", - "scope": 230, - "src": "3482:20:3", + "scope": 232, + "src": "3566:20:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7271,10 +7403,10 @@ "typeString": "uint256" }, "typeName": { - "id": 213, + "id": 215, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3482:7:3", + "src": "3566:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7285,11 +7417,11 @@ }, { "constant": false, - "id": 216, + "id": 218, "name": "dataGas", "nodeType": "VariableDeclaration", - "scope": 230, - "src": "3504:15:3", + "scope": 232, + "src": "3588:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7297,10 +7429,10 @@ "typeString": "uint256" }, "typeName": { - "id": 215, + "id": 217, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3504:7:3", + "src": "3588:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7310,20 +7442,20 @@ "visibility": "internal" } ], - "src": "3481:39:3" + "src": "3565:39:3" }, "payable": false, "returnParameters": { - "id": 220, + "id": 222, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 219, + "id": 221, "name": "", "nodeType": "VariableDeclaration", - "scope": 230, - "src": "3568:7:3", + "scope": 232, + "src": "3652:7:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7331,10 +7463,10 @@ "typeString": "uint256" }, "typeName": { - "id": 218, + "id": 220, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3568:7:3", + "src": "3652:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7344,32 +7476,32 @@ "visibility": "internal" } ], - "src": "3567:9:3" + "src": "3651:9:3" }, - "scope": 397, - "src": "3459:209:3", + "scope": 401, + "src": "3543:209:3", "stateMutability": "pure", "superFunction": null, "visibility": "public" }, { "body": { - "id": 277, + "id": 279, "nodeType": "Block", - "src": "4738:255:3", + "src": "4822:371:3", "statements": [ { "assignments": [ - 246 + 248 ], "declarations": [ { "constant": false, - "id": 246, + "id": 248, "name": "startGas", "nodeType": "VariableDeclaration", - "scope": 278, - "src": "4748:16:3", + "scope": 280, + "src": "4832:16:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7377,10 +7509,10 @@ "typeString": "uint256" }, "typeName": { - "id": 245, + "id": 247, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4748:7:3", + "src": "4832:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7390,24 +7522,24 @@ "visibility": "internal" } ], - "id": 249, + "id": 251, "initialValue": { "argumentTypes": null, "arguments": [], "expression": { "argumentTypes": [], - "id": 247, + "id": 249, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2591, - "src": "4767:7:3", + "referencedDeclaration": 2647, + "src": "4851:7:3", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 248, + "id": 250, "isConstant": false, "isLValue": false, "isPure": false, @@ -7415,14 +7547,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4767:9:3", + "src": "4851:9:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "4748:28:3" + "src": "4832:28:3" }, { "expression": { @@ -7433,12 +7565,12 @@ "arguments": [ { "argumentTypes": null, - "id": 252, + "id": 254, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 232, - "src": "4802:2:3", + "referencedDeclaration": 234, + "src": "4973:2:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7446,12 +7578,12 @@ }, { "argumentTypes": null, - "id": 253, + "id": 255, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 234, - "src": "4806:5:3", + "referencedDeclaration": 236, + "src": "4977:5:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7459,12 +7591,12 @@ }, { "argumentTypes": null, - "id": 254, + "id": 256, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 236, - "src": "4813:4:3", + "referencedDeclaration": 238, + "src": "4984:4:3", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -7472,12 +7604,12 @@ }, { "argumentTypes": null, - "id": 255, + "id": 257, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 238, - "src": "4819:9:3", + "referencedDeclaration": 240, + "src": "4990:9:3", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -7488,18 +7620,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 256, + "id": 258, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2591, - "src": "4830:7:3", + "referencedDeclaration": 2647, + "src": "5001:7:3", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 257, + "id": 259, "isConstant": false, "isLValue": false, "isPure": false, @@ -7507,7 +7639,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4830:9:3", + "src": "5001:9:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7537,18 +7669,18 @@ "typeString": "uint256" } ], - "id": 251, + "id": 253, "name": "execute", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 989, - "src": "4794:7:3", + "referencedDeclaration": 1007, + "src": "4965:7:3", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) returns (bool)" } }, - "id": 258, + "id": 260, "isConstant": false, "isLValue": false, "isPure": false, @@ -7556,7 +7688,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4794:46:3", + "src": "4965:46:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7570,21 +7702,21 @@ "typeString": "bool" } ], - "id": 250, + "id": 252, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "4786:7:3", + "referencedDeclaration": 2657, + "src": "4957:7:3", "typeDescriptions": { "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", "typeString": "function (bool) pure" } }, - "id": 259, + "id": 261, "isConstant": false, "isLValue": false, "isPure": false, @@ -7592,28 +7724,28 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4786:55:3", + "src": "4957:55:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 260, + "id": 262, "nodeType": "ExpressionStatement", - "src": "4786:55:3" + "src": "4957:55:3" }, { "assignments": [ - 262 + 264 ], "declarations": [ { "constant": false, - "id": 262, + "id": 264, "name": "requiredGas", "nodeType": "VariableDeclaration", - "scope": 278, - "src": "4851:19:3", + "scope": 280, + "src": "5022:19:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7621,10 +7753,10 @@ "typeString": "uint256" }, "typeName": { - "id": 261, + "id": 263, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4851:7:3", + "src": "5022:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7634,26 +7766,26 @@ "visibility": "internal" } ], - "id": 267, + "id": 269, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 266, + "id": 268, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 263, + "id": 265, "name": "startGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 246, - "src": "4873:8:3", + "referencedDeclaration": 248, + "src": "5044:8:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7666,18 +7798,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 264, + "id": 266, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2591, - "src": "4884:7:3", + "referencedDeclaration": 2647, + "src": "5055:7:3", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 265, + "id": 267, "isConstant": false, "isLValue": false, "isPure": false, @@ -7685,20 +7817,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4884:9:3", + "src": "5055:9:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4873:20:3", + "src": "5044:20:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, "nodeType": "VariableDeclarationStatement", - "src": "4851:42:3" + "src": "5022:42:3" }, { "expression": { @@ -7712,12 +7844,12 @@ "arguments": [ { "argumentTypes": null, - "id": 272, + "id": 274, "name": "requiredGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 262, - "src": "4972:11:3", + "referencedDeclaration": 264, + "src": "5172:11:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7733,18 +7865,18 @@ ], "expression": { "argumentTypes": null, - "id": 270, + "id": 272, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2585, - "src": "4955:3:3", + "referencedDeclaration": 2641, + "src": "5155:3:3", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, - "id": 271, + "id": 273, "isConstant": false, "isLValue": false, "isPure": true, @@ -7752,13 +7884,13 @@ "memberName": "encodePacked", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "4955:16:3", + "src": "5155:16:3", "typeDescriptions": { "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)" } }, - "id": 273, + "id": 275, "isConstant": false, "isLValue": false, "isPure": false, @@ -7766,7 +7898,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4955:29:3", + "src": "5155:29:3", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -7780,20 +7912,20 @@ "typeString": "bytes memory" } ], - "id": 269, + "id": 271, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "4948:6:3", + "src": "5148:6:3", "typeDescriptions": { "typeIdentifier": "t_type$_t_string_storage_ptr_$", "typeString": "type(string storage pointer)" }, "typeName": "string" }, - "id": 274, + "id": 276, "isConstant": false, "isLValue": false, "isPure": false, @@ -7801,7 +7933,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4948:37:3", + "src": "5148:37:3", "typeDescriptions": { "typeIdentifier": "t_string_memory", "typeString": "string memory" @@ -7815,21 +7947,21 @@ "typeString": "string memory" } ], - "id": 268, + "id": 270, "name": "revert", "nodeType": "Identifier", "overloadedDeclarations": [ - 2603, - 2604 + 2659, + 2660 ], - "referencedDeclaration": 2604, - "src": "4941:6:3", + "referencedDeclaration": 2660, + "src": "5141:6:3", "typeDescriptions": { "typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$", "typeString": "function (string memory) pure" } }, - "id": 275, + "id": 277, "isConstant": false, "isLValue": false, "isPure": false, @@ -7837,57 +7969,57 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4941:45:3", + "src": "5141:45:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 276, + "id": 278, "nodeType": "ExpressionStatement", - "src": "4941:45:3" + "src": "5141:45:3" } ] }, "documentation": "@dev Allows to estimate a Safe transaction. \n This method is only meant for estimation purpose, therfore two different protection mechanism against execution in a transaction have been made:\n 1.) The method can only be called from the safe itself\n 2.) The response is returned with a revert\n When estimating set `from` to the address of the safe.\n Since the `estimateGas` function includes refunds, call this method to get an estimated of the costs that are deducted from the safe with `execAndPayTransaction`\n @param to Destination address of Safe transaction.\n @param value Ether value of Safe transaction.\n @param data Data payload of Safe transaction.\n @param operation Operation type of Safe transaction.\n @return Estimate without refunds and overhead fees (base transaction and payload data gas costs).", - "id": 278, + "id": 280, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 241, + "id": 243, "modifierName": { "argumentTypes": null, - "id": 240, + "id": 242, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1618, - "src": "4697:10:3", + "referencedDeclaration": 1653, + "src": "4781:10:3", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "4697:10:3" + "src": "4781:10:3" } ], "name": "requiredTxGas", "nodeType": "FunctionDefinition", "parameters": { - "id": 239, + "id": 241, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 232, + "id": 234, "name": "to", "nodeType": "VariableDeclaration", - "scope": 278, - "src": "4609:10:3", + "scope": 280, + "src": "4693:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7895,10 +8027,10 @@ "typeString": "address" }, "typeName": { - "id": 231, + "id": 233, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4609:7:3", + "src": "4693:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7909,11 +8041,11 @@ }, { "constant": false, - "id": 234, + "id": 236, "name": "value", "nodeType": "VariableDeclaration", - "scope": 278, - "src": "4621:13:3", + "scope": 280, + "src": "4705:13:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7921,10 +8053,10 @@ "typeString": "uint256" }, "typeName": { - "id": 233, + "id": 235, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4621:7:3", + "src": "4705:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7935,11 +8067,11 @@ }, { "constant": false, - "id": 236, + "id": 238, "name": "data", "nodeType": "VariableDeclaration", - "scope": 278, - "src": "4636:10:3", + "scope": 280, + "src": "4720:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7947,10 +8079,10 @@ "typeString": "bytes" }, "typeName": { - "id": 235, + "id": 237, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "4636:5:3", + "src": "4720:5:3", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -7961,11 +8093,11 @@ }, { "constant": false, - "id": 238, + "id": 240, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 278, - "src": "4648:24:3", + "scope": 280, + "src": "4732:24:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7974,11 +8106,11 @@ }, "typeName": { "contractScope": null, - "id": 237, + "id": 239, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 29, - "src": "4648:14:3", + "src": "4732:14:3", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -7988,20 +8120,20 @@ "visibility": "internal" } ], - "src": "4608:65:3" + "src": "4692:65:3" }, "payable": false, "returnParameters": { - "id": 244, + "id": 246, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 243, + "id": 245, "name": "", "nodeType": "VariableDeclaration", - "scope": 278, - "src": "4725:7:3", + "scope": 280, + "src": "4809:7:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8009,10 +8141,10 @@ "typeString": "uint256" }, "typeName": { - "id": 242, + "id": 244, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4725:7:3", + "src": "4809:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8022,32 +8154,32 @@ "visibility": "internal" } ], - "src": "4724:9:3" + "src": "4808:9:3" }, - "scope": 397, - "src": "4586:407:3", + "scope": 401, + "src": "4670:523:3", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 349, + "id": 353, "nodeType": "Block", - "src": "5103:437:3", + "src": "5303:519:3", "statements": [ { "assignments": [ - 293 + 295 ], "declarations": [ { "constant": false, - "id": 293, + "id": 295, "name": "lastOwner", "nodeType": "VariableDeclaration", - "scope": 350, - "src": "5165:17:3", + "scope": 354, + "src": "5365:17:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8055,10 +8187,10 @@ "typeString": "address" }, "typeName": { - "id": 292, + "id": 294, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5165:7:3", + "src": "5365:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8068,21 +8200,21 @@ "visibility": "internal" } ], - "id": 297, + "id": 299, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", - "id": 295, + "id": 297, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5193:1:3", + "src": "5393:1:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -8098,20 +8230,20 @@ "typeString": "int_const 0" } ], - "id": 294, + "id": 296, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "5185:7:3", + "src": "5385:7:3", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 296, + "id": 298, "isConstant": false, "isLValue": false, "isPure": true, @@ -8119,25 +8251,25 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5185:10:3", + "src": "5385:10:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "5165:30:3" + "src": "5365:30:3" }, { "assignments": [], "declarations": [ { "constant": false, - "id": 299, + "id": 301, "name": "currentOwner", "nodeType": "VariableDeclaration", - "scope": 350, - "src": "5205:20:3", + "scope": 354, + "src": "5405:20:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8145,10 +8277,10 @@ "typeString": "address" }, "typeName": { - "id": 298, + "id": 300, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5205:7:3", + "src": "5405:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8158,21 +8290,21 @@ "visibility": "internal" } ], - "id": 300, + "id": 302, "initialValue": null, "nodeType": "VariableDeclarationStatement", - "src": "5205:20:3" + "src": "5405:20:3" }, { "assignments": [], "declarations": [ { "constant": false, - "id": 302, + "id": 304, "name": "i", "nodeType": "VariableDeclaration", - "scope": 350, - "src": "5235:9:3", + "scope": 354, + "src": "5435:9:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8180,10 +8312,10 @@ "typeString": "uint256" }, "typeName": { - "id": 301, + "id": 303, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5235:7:3", + "src": "5435:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8193,33 +8325,33 @@ "visibility": "internal" } ], - "id": 303, + "id": 305, "initialValue": null, "nodeType": "VariableDeclarationStatement", - "src": "5235:9:3" + "src": "5435:9:3" }, { "body": { - "id": 347, + "id": 351, "nodeType": "Block", - "src": "5328:206:3", + "src": "5528:288:3", "statements": [ { "expression": { "argumentTypes": null, - "id": 327, + "id": 329, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 314, + "id": 316, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 299, - "src": "5342:12:3", + "referencedDeclaration": 301, + "src": "5542:12:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8232,12 +8364,12 @@ "arguments": [ { "argumentTypes": null, - "id": 316, + "id": 318, "name": "hash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 280, - "src": "5367:4:3", + "referencedDeclaration": 282, + "src": "5567:4:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -8247,26 +8379,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 317, + "id": 319, "name": "v", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 283, - "src": "5373:1:3", + "referencedDeclaration": 285, + "src": "5573:1:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", "typeString": "uint8[] memory" } }, - "id": 319, + "id": 321, "indexExpression": { "argumentTypes": null, - "id": 318, + "id": 320, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 302, - "src": "5375:1:3", + "referencedDeclaration": 304, + "src": "5575:1:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8277,7 +8409,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "5373:4:3", + "src": "5573:4:3", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -8287,26 +8419,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 320, + "id": 322, "name": "r", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 286, - "src": "5379:1:3", + "referencedDeclaration": 288, + "src": "5579:1:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", "typeString": "bytes32[] memory" } }, - "id": 322, + "id": 324, "indexExpression": { "argumentTypes": null, - "id": 321, + "id": 323, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 302, - "src": "5381:1:3", + "referencedDeclaration": 304, + "src": "5581:1:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8317,7 +8449,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "5379:4:3", + "src": "5579:4:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -8327,26 +8459,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 323, + "id": 325, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 289, - "src": "5385:1:3", + "referencedDeclaration": 291, + "src": "5585:1:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", "typeString": "bytes32[] memory" } }, - "id": 325, + "id": 327, "indexExpression": { "argumentTypes": null, - "id": 324, + "id": 326, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 302, - "src": "5387:1:3", + "referencedDeclaration": 304, + "src": "5587:1:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8357,7 +8489,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "5385:4:3", + "src": "5585:4:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -8383,18 +8515,18 @@ "typeString": "bytes32" } ], - "id": 315, + "id": 317, "name": "ecrecover", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2590, - "src": "5357:9:3", + "referencedDeclaration": 2646, + "src": "5557:9:3", "typeDescriptions": { "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)" } }, - "id": 326, + "id": 328, "isConstant": false, "isLValue": false, "isPure": false, @@ -8402,21 +8534,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5357:33:3", + "src": "5557:33:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "5342:48:3", + "src": "5542:48:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 328, + "id": 330, "nodeType": "ExpressionStatement", - "src": "5342:48:3" + "src": "5542:48:3" }, { "expression": { @@ -8428,7 +8560,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 334, + "id": 336, "isConstant": false, "isLValue": false, "isPure": false, @@ -8437,26 +8569,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 330, + "id": 332, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "5412:6:3", + "referencedDeclaration": 1132, + "src": "5612:6:3", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 332, + "id": 334, "indexExpression": { "argumentTypes": null, - "id": 331, + "id": 333, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 299, - "src": "5419:12:3", + "referencedDeclaration": 301, + "src": "5619:12:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8467,7 +8599,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "5412:20:3", + "src": "5612:20:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8478,14 +8610,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 333, + "id": 335, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5436:1:3", + "src": "5636:1:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -8493,11 +8625,29 @@ }, "value": "0" }, - "src": "5412:25:3", + "src": "5612:25:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "5369676e6174757265206e6f742070726f7669646564206279206f776e6572", + "id": 337, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5639:33:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_09247dae670daab7cf1923d3334eea07c14df3c0a8f5233960935c63f47104a9", + "typeString": "literal_string \"Signature not provided by owner\"" + }, + "value": "Signature not provided by owner" } ], "expression": { @@ -8505,23 +8655,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_09247dae670daab7cf1923d3334eea07c14df3c0a8f5233960935c63f47104a9", + "typeString": "literal_string \"Signature not provided by owner\"" } ], - "id": 329, + "id": 331, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "5404:7:3", + "referencedDeclaration": 2658, + "src": "5604:7:3", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 335, + "id": 338, "isConstant": false, "isLValue": false, "isPure": false, @@ -8529,15 +8683,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5404:34:3", + "src": "5604:69:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 336, + "id": 339, "nodeType": "ExpressionStatement", - "src": "5404:34:3" + "src": "5604:69:3" }, { "expression": { @@ -8549,19 +8703,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 340, + "id": 343, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 338, + "id": 341, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 299, - "src": "5460:12:3", + "referencedDeclaration": 301, + "src": "5695:12:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8571,22 +8725,40 @@ "operator": ">", "rightExpression": { "argumentTypes": null, - "id": 339, + "id": 342, "name": "lastOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 293, - "src": "5475:9:3", + "referencedDeclaration": 295, + "src": "5710:9:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "5460:24:3", + "src": "5695:24:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "5369676e61747572657320617265206e6f74206f726465726564206279206f776e65722061646472657373", + "id": 344, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5721:45:3", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_597a123a1bc14bc9690387ae0fec99721cc18eefa85fa2531a7593a762444235", + "typeString": "literal_string \"Signatures are not ordered by owner address\"" + }, + "value": "Signatures are not ordered by owner address" } ], "expression": { @@ -8594,23 +8766,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_597a123a1bc14bc9690387ae0fec99721cc18eefa85fa2531a7593a762444235", + "typeString": "literal_string \"Signatures are not ordered by owner address\"" } ], - "id": 337, + "id": 340, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "5452:7:3", + "referencedDeclaration": 2658, + "src": "5687:7:3", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 341, + "id": 345, "isConstant": false, "isLValue": false, "isPure": false, @@ -8618,32 +8794,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5452:33:3", + "src": "5687:80:3", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 342, + "id": 346, "nodeType": "ExpressionStatement", - "src": "5452:33:3" + "src": "5687:80:3" }, { "expression": { "argumentTypes": null, - "id": 345, + "id": 349, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 343, + "id": 347, "name": "lastOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 293, - "src": "5499:9:3", + "referencedDeclaration": 295, + "src": "5781:9:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8653,26 +8829,26 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 344, + "id": 348, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 299, - "src": "5511:12:3", + "referencedDeclaration": 301, + "src": "5793:12:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "5499:24:3", + "src": "5781:24:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 346, + "id": 350, "nodeType": "ExpressionStatement", - "src": "5499:24:3" + "src": "5781:24:3" } ] }, @@ -8682,19 +8858,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 310, + "id": 312, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 308, + "id": 310, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 302, - "src": "5308:1:3", + "referencedDeclaration": 304, + "src": "5508:1:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8704,40 +8880,40 @@ "operator": "<", "rightExpression": { "argumentTypes": null, - "id": 309, + "id": 311, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1118, - "src": "5312:9:3", + "referencedDeclaration": 1136, + "src": "5512:9:3", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "5308:13:3", + "src": "5508:13:3", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 348, + "id": 352, "initializationExpression": { "expression": { "argumentTypes": null, - "id": 306, + "id": 308, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 304, + "id": 306, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 302, - "src": "5301:1:3", + "referencedDeclaration": 304, + "src": "5501:1:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8748,14 +8924,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "30", - "id": 305, + "id": 307, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5305:1:3", + "src": "5505:1:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -8763,20 +8939,20 @@ }, "value": "0" }, - "src": "5301:5:3", + "src": "5501:5:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 307, + "id": 309, "nodeType": "ExpressionStatement", - "src": "5301:5:3" + "src": "5501:5:3" }, "loopExpression": { "expression": { "argumentTypes": null, - "id": 312, + "id": 314, "isConstant": false, "isLValue": false, "isPure": false, @@ -8784,15 +8960,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "5323:3:3", + "src": "5523:3:3", "subExpression": { "argumentTypes": null, - "id": 311, + "id": 313, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 302, - "src": "5323:1:3", + "referencedDeclaration": 304, + "src": "5523:1:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8803,17 +8979,17 @@ "typeString": "uint256" } }, - "id": 313, + "id": 315, "nodeType": "ExpressionStatement", - "src": "5323:3:3" + "src": "5523:3:3" }, "nodeType": "ForStatement", - "src": "5296:238:3" + "src": "5496:320:3" } ] }, "documentation": null, - "id": 350, + "id": 354, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -8821,16 +8997,16 @@ "name": "checkHash", "nodeType": "FunctionDefinition", "parameters": { - "id": 290, + "id": 292, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 280, + "id": 282, "name": "hash", "nodeType": "VariableDeclaration", - "scope": 350, - "src": "5018:12:3", + "scope": 354, + "src": "5218:12:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8838,10 +9014,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 279, + "id": 281, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "5018:7:3", + "src": "5218:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -8852,11 +9028,11 @@ }, { "constant": false, - "id": 283, + "id": 285, "name": "v", "nodeType": "VariableDeclaration", - "scope": 350, - "src": "5032:9:3", + "scope": 354, + "src": "5232:9:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8865,19 +9041,19 @@ }, "typeName": { "baseType": { - "id": 281, + "id": 283, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "5032:5:3", + "src": "5232:5:3", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "id": 282, + "id": 284, "length": null, "nodeType": "ArrayTypeName", - "src": "5032:7:3", + "src": "5232:7:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr", "typeString": "uint8[]" @@ -8888,11 +9064,11 @@ }, { "constant": false, - "id": 286, + "id": 288, "name": "r", "nodeType": "VariableDeclaration", - "scope": 350, - "src": "5043:11:3", + "scope": 354, + "src": "5243:11:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8901,19 +9077,19 @@ }, "typeName": { "baseType": { - "id": 284, + "id": 286, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "5043:7:3", + "src": "5243:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "id": 285, + "id": 287, "length": null, "nodeType": "ArrayTypeName", - "src": "5043:9:3", + "src": "5243:9:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", "typeString": "bytes32[]" @@ -8924,11 +9100,11 @@ }, { "constant": false, - "id": 289, + "id": 291, "name": "s", "nodeType": "VariableDeclaration", - "scope": 350, - "src": "5056:11:3", + "scope": 354, + "src": "5256:11:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8937,19 +9113,19 @@ }, "typeName": { "baseType": { - "id": 287, + "id": 289, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "5056:7:3", + "src": "5256:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "id": 288, + "id": 290, "length": null, "nodeType": "ArrayTypeName", - "src": "5056:9:3", + "src": "5256:9:3", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", "typeString": "bytes32[]" @@ -8959,26 +9135,26 @@ "visibility": "internal" } ], - "src": "5017:51:3" + "src": "5217:51:3" }, "payable": false, "returnParameters": { - "id": 291, + "id": 293, "nodeType": "ParameterList", "parameters": [], - "src": "5103:0:3" + "src": "5303:0:3" }, - "scope": 397, - "src": "4999:541:3", + "scope": 401, + "src": "5199:623:3", "stateMutability": "view", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 395, + "id": 399, "nodeType": "Block", - "src": "6464:176:3", + "src": "6746:176:3", "statements": [ { "expression": { @@ -8993,14 +9169,14 @@ { "argumentTypes": null, "hexValue": "30783139", - "id": 377, + "id": 381, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "6526:4:3", + "src": "6808:4:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_25_by_1", @@ -9016,20 +9192,20 @@ "typeString": "int_const 25" } ], - "id": 376, + "id": 380, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "6521:4:3", + "src": "6803:4:3", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes1_$", "typeString": "type(bytes1)" }, "typeName": "byte" }, - "id": 378, + "id": 382, "isConstant": false, "isLValue": false, "isPure": true, @@ -9037,7 +9213,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6521:10:3", + "src": "6803:10:3", "typeDescriptions": { "typeIdentifier": "t_bytes1", "typeString": "bytes1" @@ -9049,14 +9225,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 380, + "id": 384, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "6538:1:3", + "src": "6820:1:3", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -9072,20 +9248,20 @@ "typeString": "int_const 0" } ], - "id": 379, + "id": 383, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "6533:4:3", + "src": "6815:4:3", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes1_$", "typeString": "type(bytes1)" }, "typeName": "byte" }, - "id": 381, + "id": 385, "isConstant": false, "isLValue": false, "isPure": true, @@ -9093,7 +9269,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6533:7:3", + "src": "6815:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes1", "typeString": "bytes1" @@ -9101,25 +9277,25 @@ }, { "argumentTypes": null, - "id": 382, + "id": 386, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2631, - "src": "6542:4:3", + "referencedDeclaration": 2687, + "src": "6824:4:3", "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafePersonalEdition_$397", + "typeIdentifier": "t_contract$_GnosisSafePersonalEdition_$401", "typeString": "contract GnosisSafePersonalEdition" } }, { "argumentTypes": null, - "id": 383, + "id": 387, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 352, - "src": "6548:2:3", + "referencedDeclaration": 356, + "src": "6830:2:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9127,12 +9303,12 @@ }, { "argumentTypes": null, - "id": 384, + "id": 388, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 354, - "src": "6552:5:3", + "referencedDeclaration": 358, + "src": "6834:5:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9140,12 +9316,12 @@ }, { "argumentTypes": null, - "id": 385, + "id": 389, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 356, - "src": "6559:4:3", + "referencedDeclaration": 360, + "src": "6841:4:3", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -9153,12 +9329,12 @@ }, { "argumentTypes": null, - "id": 386, + "id": 390, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 358, - "src": "6565:9:3", + "referencedDeclaration": 362, + "src": "6847:9:3", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -9166,12 +9342,12 @@ }, { "argumentTypes": null, - "id": 387, + "id": 391, "name": "safeTxGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 360, - "src": "6576:9:3", + "referencedDeclaration": 364, + "src": "6858:9:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9179,12 +9355,12 @@ }, { "argumentTypes": null, - "id": 388, + "id": 392, "name": "dataGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 362, - "src": "6587:7:3", + "referencedDeclaration": 366, + "src": "6869:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9192,12 +9368,12 @@ }, { "argumentTypes": null, - "id": 389, + "id": 393, "name": "gasPrice", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 364, - "src": "6596:8:3", + "referencedDeclaration": 368, + "src": "6878:8:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9205,12 +9381,12 @@ }, { "argumentTypes": null, - "id": 390, + "id": 394, "name": "gasToken", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 366, - "src": "6606:8:3", + "referencedDeclaration": 370, + "src": "6888:8:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9218,12 +9394,12 @@ }, { "argumentTypes": null, - "id": 391, + "id": 395, "name": "_nonce", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 368, - "src": "6616:6:3", + "referencedDeclaration": 372, + "src": "6898:6:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9241,7 +9417,7 @@ "typeString": "bytes1" }, { - "typeIdentifier": "t_contract$_GnosisSafePersonalEdition_$397", + "typeIdentifier": "t_contract$_GnosisSafePersonalEdition_$401", "typeString": "contract GnosisSafePersonalEdition" }, { @@ -9283,18 +9459,18 @@ ], "expression": { "argumentTypes": null, - "id": 374, + "id": 378, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2585, - "src": "6504:3:3", + "referencedDeclaration": 2641, + "src": "6786:3:3", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, - "id": 375, + "id": 379, "isConstant": false, "isLValue": false, "isPure": true, @@ -9302,13 +9478,13 @@ "memberName": "encodePacked", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "6504:16:3", + "src": "6786:16:3", "typeDescriptions": { "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)" } }, - "id": 392, + "id": 396, "isConstant": false, "isLValue": false, "isPure": false, @@ -9316,7 +9492,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6504:119:3", + "src": "6786:119:3", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -9330,18 +9506,18 @@ "typeString": "bytes memory" } ], - "id": 373, + "id": 377, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2592, - "src": "6481:9:3", + "referencedDeclaration": 2648, + "src": "6763:9:3", "typeDescriptions": { "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", "typeString": "function () pure returns (bytes32)" } }, - "id": 393, + "id": 397, "isConstant": false, "isLValue": false, "isPure": false, @@ -9349,21 +9525,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "6481:152:3", + "src": "6763:152:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "functionReturnParameters": 372, - "id": 394, + "functionReturnParameters": 376, + "id": 398, "nodeType": "Return", - "src": "6474:159:3" + "src": "6756:159:3" } ] }, "documentation": "@dev Returns hash to be signed by owners.\n @param to Destination address.\n @param value Ether value.\n @param data Data payload.\n @param operation Operation type.\n @param safeTxGas Fas that should be used for the safe transaction.\n @param dataGas Gas costs for data used to trigger the safe transaction.\n @param gasPrice Maximum gas price that should be used for this transaction.\n @param gasToken Token address (or 0 if ETH) that is used for the payment.\n @param _nonce Transaction nonce.\n @return Transaction hash.", - "id": 396, + "id": 400, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -9371,16 +9547,16 @@ "name": "getTransactionHash", "nodeType": "FunctionDefinition", "parameters": { - "id": 369, + "id": 373, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 352, + "id": 356, "name": "to", "nodeType": "VariableDeclaration", - "scope": 396, - "src": "6177:10:3", + "scope": 400, + "src": "6459:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9388,10 +9564,10 @@ "typeString": "address" }, "typeName": { - "id": 351, + "id": 355, "name": "address", "nodeType": "ElementaryTypeName", - "src": "6177:7:3", + "src": "6459:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9402,11 +9578,11 @@ }, { "constant": false, - "id": 354, + "id": 358, "name": "value", "nodeType": "VariableDeclaration", - "scope": 396, - "src": "6198:13:3", + "scope": 400, + "src": "6480:13:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9414,10 +9590,10 @@ "typeString": "uint256" }, "typeName": { - "id": 353, + "id": 357, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "6198:7:3", + "src": "6480:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9428,11 +9604,11 @@ }, { "constant": false, - "id": 356, + "id": 360, "name": "data", "nodeType": "VariableDeclaration", - "scope": 396, - "src": "6222:10:3", + "scope": 400, + "src": "6504:10:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9440,10 +9616,10 @@ "typeString": "bytes" }, "typeName": { - "id": 355, + "id": 359, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "6222:5:3", + "src": "6504:5:3", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -9454,11 +9630,11 @@ }, { "constant": false, - "id": 358, + "id": 362, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 396, - "src": "6243:24:3", + "scope": 400, + "src": "6525:24:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9467,11 +9643,11 @@ }, "typeName": { "contractScope": null, - "id": 357, + "id": 361, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 29, - "src": "6243:14:3", + "src": "6525:14:3", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -9482,11 +9658,11 @@ }, { "constant": false, - "id": 360, + "id": 364, "name": "safeTxGas", "nodeType": "VariableDeclaration", - "scope": 396, - "src": "6278:17:3", + "scope": 400, + "src": "6560:17:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9494,10 +9670,10 @@ "typeString": "uint256" }, "typeName": { - "id": 359, + "id": 363, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "6278:7:3", + "src": "6560:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9508,11 +9684,11 @@ }, { "constant": false, - "id": 362, + "id": 366, "name": "dataGas", "nodeType": "VariableDeclaration", - "scope": 396, - "src": "6306:15:3", + "scope": 400, + "src": "6588:15:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9520,10 +9696,10 @@ "typeString": "uint256" }, "typeName": { - "id": 361, + "id": 365, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "6306:7:3", + "src": "6588:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9534,11 +9710,11 @@ }, { "constant": false, - "id": 364, + "id": 368, "name": "gasPrice", "nodeType": "VariableDeclaration", - "scope": 396, - "src": "6332:16:3", + "scope": 400, + "src": "6614:16:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9546,10 +9722,10 @@ "typeString": "uint256" }, "typeName": { - "id": 363, + "id": 367, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "6332:7:3", + "src": "6614:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9560,11 +9736,11 @@ }, { "constant": false, - "id": 366, + "id": 370, "name": "gasToken", "nodeType": "VariableDeclaration", - "scope": 396, - "src": "6359:16:3", + "scope": 400, + "src": "6641:16:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9572,10 +9748,10 @@ "typeString": "address" }, "typeName": { - "id": 365, + "id": 369, "name": "address", "nodeType": "ElementaryTypeName", - "src": "6359:7:3", + "src": "6641:7:3", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9586,11 +9762,11 @@ }, { "constant": false, - "id": 368, + "id": 372, "name": "_nonce", "nodeType": "VariableDeclaration", - "scope": 396, - "src": "6385:14:3", + "scope": 400, + "src": "6667:14:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9598,10 +9774,10 @@ "typeString": "uint256" }, "typeName": { - "id": 367, + "id": 371, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "6385:7:3", + "src": "6667:7:3", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9611,20 +9787,20 @@ "visibility": "internal" } ], - "src": "6167:238:3" + "src": "6449:238:3" }, "payable": false, "returnParameters": { - "id": 372, + "id": 376, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 371, + "id": 375, "name": "", "nodeType": "VariableDeclaration", - "scope": 396, - "src": "6451:7:3", + "scope": 400, + "src": "6733:7:3", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9632,10 +9808,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 370, + "id": 374, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "6451:7:3", + "src": "6733:7:3", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -9645,20 +9821,20 @@ "visibility": "internal" } ], - "src": "6450:9:3" + "src": "6732:9:3" }, - "scope": 397, - "src": "6140:500:3", + "scope": 401, + "src": "6422:500:3", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 398, - "src": "449:6193:3" + "scope": 402, + "src": "449:6475:3" } ], - "src": "0:6643:3" + "src": "0:6925:3" }, "compiler": { "name": "solc", @@ -9668,22 +9844,16 @@ "4": { "events": {}, "links": {}, - "address": "0x7516b591cfd6ba7c22caa25c011d7b815c95fc5d", - "transactionHash": "0x33ad07a6c877666e75a6297bf0c86ba5c1e4ef02e72027337a88a649bc38309b" - }, - "1527316019334": { - "events": {}, - "links": {}, - "address": "0x39aa0fab18dc485e96591b3317ea593feb990da0", - "transactionHash": "0x66ae6f871105a2bab973870a91d508ce3c26f29662aa7a139faf53975c3ba7b7" + "address": "0xd07b0b778cb265e61886c6a037ad0a1ccd605f13", + "transactionHash": "0xf3b9f8c0358d81f3f4d600ad6bd4d01725c1b82c6e8d3a5d5cbf00bf3ab7f935" }, "1527420696956": { "events": {}, "links": {}, - "address": "0x2f6ebb40061dab74d569509841ab8397f77f9168", - "transactionHash": "0x0cb0ab0185325fd4e5ef5dfbf473d6cbb278fa82fcd1a0c0ecc0d1a2b8c0b5af" + "address": "0x58ae455dab5137699c13bc2cf9637714c2172cb6", + "transactionHash": "0xfda1becb511b1d4beeb0f6f7a9d1b95aad7ee26b0d43dfbfb93e244853299a6c" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-27T11:31:46.238Z" + "updatedAt": "2018-05-28T06:08:59.465Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/GnosisSafeTeamEdition.json b/safe-contracts/build/contracts/GnosisSafeTeamEdition.json index b58c25e279..7cffce252a 100644 --- a/safe-contracts/build/contracts/GnosisSafeTeamEdition.json +++ b/safe-contracts/build/contracts/GnosisSafeTeamEdition.json @@ -452,24 +452,24 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50612bc4806100206000396000f300608060405260043610610128576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063153414fa1461012a57806324cd131f146101d45780632b5000411461027e5780632f54bf6e14610344578063468721a71461039f578063610b5925146104575780637de7edef1461049a57806385e332cd146104dd57806386040aa9146105345780638cff6355146105a4578063a04222e1146105fb578063a09e89f5146106d4578063a0e67e2b14610739578063a3f4df7e146107a5578063b2494df314610835578063b7f3358d146108a1578063b91a667f146108d1578063e009cfde14610921578063e318b52b14610984578063e52cb36a14610a07578063e75235b814610a50578063ffa1ad7414610a81575b005b34801561013657600080fd5b506101d2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050610b11565b005b3480156101e057600080fd5b5061027c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050610c41565b005b34801561028a57600080fd5b50610326600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050610ce4565b60405180826000191660001916815260200191505060405180910390f35b34801561035057600080fd5b50610385600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f6c565b604051808215151515815260200191505060405180910390f35b3480156103ab57600080fd5b5061043d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050610fee565b604051808215151515815260200191505060405180910390f35b34801561046357600080fd5b50610498600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061108b565b005b3480156104a657600080fd5b506104db600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611308565b005b3480156104e957600080fd5b506104f26113ab565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561054057600080fd5b506105a2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506113b0565b005b3480156105b057600080fd5b506105b9611636565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561060757600080fd5b506106d260048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061163b565b005b3480156106e057600080fd5b506107236004803603810190808035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611655565b6040518082815260200191505060405180910390f35b34801561074557600080fd5b5061074e61167a565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610791578082015181840152602081019050610776565b505050509050019250505060405180910390f35b3480156107b157600080fd5b506107ba611815565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107fa5780820151818401526020810190506107df565b50505050905090810190601f1680156108275780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561084157600080fd5b5061084a61184e565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561088d578082015181840152602081019050610872565b505050509050019250505060405180910390f35b3480156108ad57600080fd5b506108cf600480360381019080803560ff169060200190929190505050611af5565b005b3480156108dd57600080fd5b5061091f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050611b74565b005b34801561092d57600080fd5b50610982600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e2c565b005b34801561099057600080fd5b50610a05600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061205f565b005b348015610a1357600080fd5b50610a3660048036038101908080356000191690602001909291905050506123f4565b604051808215151515815260200191505060405180910390f35b348015610a5c57600080fd5b50610a65612414565b604051808260ff1660ff16815260200191505060405180910390f35b348015610a8d57600080fd5b50610a9661242b565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610ad6578082015181840152602081019050610abb565b50505050905090810190601f168015610b035780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515610b9757600080fd5b610ba48686868686610ce4565b905060056000826000191660001916815260200190815260200160002060009054906101000a900460ff16151515610bdb57600080fd5b600160066000836000191660001916815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050505050565b6000610c508686868686610ce4565b905060056000826000191660001916815260200190815260200160002060009054906101000a900460ff16151515610c8757600080fd5b610c9081612464565b600160056000836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550610cd1868686865a612689565b1515610cdc57600080fd5b505050505050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f01000000000000000000000000000000000000000000000000000000000000000230888888888860405160200180897effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083835b602083101515610e885780518252602082019150602081019050602083039250610e63565b6001836020036101000a038019825116818451168082178552505050505050905001836002811115610eb657fe5b60ff167f0100000000000000000000000000000000000000000000000000000000000000028152600101828152602001985050505050505050506040516020818303038152906040526040518082805190602001908083835b602083101515610f345780518252602082019150602081019050602083039250610f0f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020905095945050505050565b600080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561107457600080fd5b611081858585855a612689565b9050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156110c557600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156111195750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b151561112457600080fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156111a857600080fd5b60016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561134257600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561136857600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156113ea57600080fd5b8060ff166001600354031015151561140157600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561149a57600080fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360008154809291906001900391905055508060ff16600460009054906101000a900460ff1660ff161415156116315761163081611af5565b5b505050565b600181565b6116458484612786565b61164f8282612a17565b50505050565b6006602052816000526040600020602052806000526040600020600091509150505481565b6060806000806003546040519080825280602002602001820160405280156116b15781602001602082028038833980820191505090505b5092506000915060026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151561180c5780838381518110151561176157fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050818060010192505061171c565b82935050505090565b6040805190810160405280601881526020017f476e6f7369732053616665205465616d2045646974696f6e000000000000000081525081565b606060008060606000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151561196257600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915082806001019350506118bd565b826040519080825280602002602001820160405280156119915781602001602082028038833980820191505090505b5090506000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515611aec57818184815181101515611a4157fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915082806001019350506119fc565b80935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611b2f57600080fd5b6003548160ff1611151515611b4357600080fd5b60018160ff1610151515611b5657600080fd5b80600460006101000a81548160ff021916908360ff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611bae57600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614158015611c025750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1515611c0d57600080fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611c9157600080fd5b60026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003600081548092919060010191905055508060ff16600460009054906101000a900460ff1660ff16141515611e2857611e2781611af5565b5b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611e6657600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611eff57600080fd5b600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561209957600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156120ed5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15156120f857600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561217c57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561221557600080fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b60056020528060005260406000206000915054906101000a900460ff1681565b6000600460009054906101000a900460ff16905090565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b60008060008060066000866000191660001916815260200190815260200160002093506000925060026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156126615760008460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141590503373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806125a15750805b156125fa5780156125f15760008460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b82806001019350505b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691506124ef565b600460009054906101000a900460ff1660ff16831015151561268257600080fd5b5050505050565b6000806000600281111561269957fe5b8460028111156126a557fe5b14156126be576126b787878786612b56565b915061277c565b600160028111156126cb57fe5b8460028111156126d757fe5b14156126ef576126e8878685612b6f565b915061277b565b6126f885612b86565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b600080600080600460009054906101000a900460ff1660ff161415156127ab57600080fd5b84518460ff16111515156127be57600080fd5b60018460ff16101515156127d157600080fd5b60019250600091505b845182101561296e5784828151811015156127f157fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff16141580156128515750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b151561285c57600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156128e057600080fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080925081806001019250506127da565b6001600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550845160038190555083600460006101000a81548160ff021916908360ff1602179055505050505050565b600060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612a9c57600080fd5b6001806000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008273ffffffffffffffffffffffffffffffffffffffff16141515612b5257612b4682825a612b6f565b1515612b5157600080fd5b5b5050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f090509190505600a165627a7a72305820126f5071abe6229c4f90c0e3e3e154b02acfdfd4934694c5270a471081c34f5f0029", - "deployedBytecode": "0x608060405260043610610128576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063153414fa1461012a57806324cd131f146101d45780632b5000411461027e5780632f54bf6e14610344578063468721a71461039f578063610b5925146104575780637de7edef1461049a57806385e332cd146104dd57806386040aa9146105345780638cff6355146105a4578063a04222e1146105fb578063a09e89f5146106d4578063a0e67e2b14610739578063a3f4df7e146107a5578063b2494df314610835578063b7f3358d146108a1578063b91a667f146108d1578063e009cfde14610921578063e318b52b14610984578063e52cb36a14610a07578063e75235b814610a50578063ffa1ad7414610a81575b005b34801561013657600080fd5b506101d2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050610b11565b005b3480156101e057600080fd5b5061027c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050610c41565b005b34801561028a57600080fd5b50610326600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050610ce4565b60405180826000191660001916815260200191505060405180910390f35b34801561035057600080fd5b50610385600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f6c565b604051808215151515815260200191505060405180910390f35b3480156103ab57600080fd5b5061043d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050610fee565b604051808215151515815260200191505060405180910390f35b34801561046357600080fd5b50610498600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061108b565b005b3480156104a657600080fd5b506104db600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611308565b005b3480156104e957600080fd5b506104f26113ab565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561054057600080fd5b506105a2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506113b0565b005b3480156105b057600080fd5b506105b9611636565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561060757600080fd5b506106d260048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061163b565b005b3480156106e057600080fd5b506107236004803603810190808035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611655565b6040518082815260200191505060405180910390f35b34801561074557600080fd5b5061074e61167a565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610791578082015181840152602081019050610776565b505050509050019250505060405180910390f35b3480156107b157600080fd5b506107ba611815565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107fa5780820151818401526020810190506107df565b50505050905090810190601f1680156108275780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561084157600080fd5b5061084a61184e565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561088d578082015181840152602081019050610872565b505050509050019250505060405180910390f35b3480156108ad57600080fd5b506108cf600480360381019080803560ff169060200190929190505050611af5565b005b3480156108dd57600080fd5b5061091f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050611b74565b005b34801561092d57600080fd5b50610982600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e2c565b005b34801561099057600080fd5b50610a05600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061205f565b005b348015610a1357600080fd5b50610a3660048036038101908080356000191690602001909291905050506123f4565b604051808215151515815260200191505060405180910390f35b348015610a5c57600080fd5b50610a65612414565b604051808260ff1660ff16815260200191505060405180910390f35b348015610a8d57600080fd5b50610a9661242b565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610ad6578082015181840152602081019050610abb565b50505050905090810190601f168015610b035780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515610b9757600080fd5b610ba48686868686610ce4565b905060056000826000191660001916815260200190815260200160002060009054906101000a900460ff16151515610bdb57600080fd5b600160066000836000191660001916815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050505050565b6000610c508686868686610ce4565b905060056000826000191660001916815260200190815260200160002060009054906101000a900460ff16151515610c8757600080fd5b610c9081612464565b600160056000836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550610cd1868686865a612689565b1515610cdc57600080fd5b505050505050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f01000000000000000000000000000000000000000000000000000000000000000230888888888860405160200180897effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083835b602083101515610e885780518252602082019150602081019050602083039250610e63565b6001836020036101000a038019825116818451168082178552505050505050905001836002811115610eb657fe5b60ff167f0100000000000000000000000000000000000000000000000000000000000000028152600101828152602001985050505050505050506040516020818303038152906040526040518082805190602001908083835b602083101515610f345780518252602082019150602081019050602083039250610f0f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020905095945050505050565b600080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561107457600080fd5b611081858585855a612689565b9050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156110c557600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156111195750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b151561112457600080fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156111a857600080fd5b60016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561134257600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561136857600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156113ea57600080fd5b8060ff166001600354031015151561140157600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561149a57600080fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360008154809291906001900391905055508060ff16600460009054906101000a900460ff1660ff161415156116315761163081611af5565b5b505050565b600181565b6116458484612786565b61164f8282612a17565b50505050565b6006602052816000526040600020602052806000526040600020600091509150505481565b6060806000806003546040519080825280602002602001820160405280156116b15781602001602082028038833980820191505090505b5092506000915060026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614151561180c5780838381518110151561176157fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050818060010192505061171c565b82935050505090565b6040805190810160405280601881526020017f476e6f7369732053616665205465616d2045646974696f6e000000000000000081525081565b606060008060606000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151561196257600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915082806001019350506118bd565b826040519080825280602002602001820160405280156119915781602001602082028038833980820191505090505b5090506000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515611aec57818184815181101515611a4157fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915082806001019350506119fc565b80935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611b2f57600080fd5b6003548160ff1611151515611b4357600080fd5b60018160ff1610151515611b5657600080fd5b80600460006101000a81548160ff021916908360ff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611bae57600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614158015611c025750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1515611c0d57600080fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611c9157600080fd5b60026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003600081548092919060010191905055508060ff16600460009054906101000a900460ff1660ff16141515611e2857611e2781611af5565b5b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611e6657600080fd5b8073ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611eff57600080fd5b600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561209957600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156120ed5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15156120f857600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561217c57600080fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561221557600080fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b60056020528060005260406000206000915054906101000a900460ff1681565b6000600460009054906101000a900460ff16905090565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b60008060008060066000866000191660001916815260200190815260200160002093506000925060026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156126615760008460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141590503373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614806125a15750805b156125fa5780156125f15760008460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b82806001019350505b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691506124ef565b600460009054906101000a900460ff1660ff16831015151561268257600080fd5b5050505050565b6000806000600281111561269957fe5b8460028111156126a557fe5b14156126be576126b787878786612b56565b915061277c565b600160028111156126cb57fe5b8460028111156126d757fe5b14156126ef576126e8878685612b6f565b915061277b565b6126f885612b86565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b600080600080600460009054906101000a900460ff1660ff161415156127ab57600080fd5b84518460ff16111515156127be57600080fd5b60018460ff16101515156127d157600080fd5b60019250600091505b845182101561296e5784828151811015156127f157fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff16141580156128515750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b151561285c57600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156128e057600080fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080925081806001019250506127da565b6001600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550845160038190555083600460006101000a81548160ff021916908360ff1602179055505050505050565b600060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612a9c57600080fd5b6001806000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008273ffffffffffffffffffffffffffffffffffffffff16141515612b5257612b4682825a612b6f565b1515612b5157600080fd5b5b5050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f090509190505600a165627a7a72305820126f5071abe6229c4f90c0e3e3e154b02acfdfd4934694c5270a471081c34f5f0029", - "sourceMap": "272:3894:4:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;272:3894:4;;;;;;;", - "deployedSourceMap": "272:3894:4:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1263:571;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1263:571:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2276:542;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2276:542:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3835:329;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3835:329:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4841:129:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4841:129:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2522:377:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2522:377:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1235:391;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1235:391:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;626:208:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:208:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;499:55:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;499:55:8;;;;;;;;;;;;;;;;;;;;;;;;;;;2776:573:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2776:573:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;287:54;;8:9:-1;5:2;;;30:1;27;20:12;5:2;287:54:9;;;;;;;;;;;;;;;;;;;;;;;;;;;693:301:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;693:301:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;767:66:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;767:66:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5052:458:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5052:458:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;5052:458:9;;;;;;;;;;;;;;;;;336:56:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;336:56:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;336:56:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4423:738:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4423:738:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;4423:738:8;;;;;;;;;;;;;;;;;4398:318:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4398:318:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;1906:528;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1906:528:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1887:299:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1887:299:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3683:526:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3683:526:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;536:43:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;536:43:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4722:113:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4722:113:9;;;;;;;;;;;;;;;;;;;;;;;;;;;398:40:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;398:40:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;398:40:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1263:571;1576:23;1564:1;1542:6;:18;1549:10;1542:18;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;;1534:32;;;;;;;;1602:53;1621:2;1625:5;1632:4;1638:9;1649:5;1602:18;:53::i;:::-;1576:79;;1746:10;:27;1757:15;1746:27;;;;;;;;;;;;;;;;;;;;;;;;;;;1745:28;1737:37;;;;;;;;1826:1;1784:10;:27;1795:15;1784:27;;;;;;;;;;;;;;;;;:39;1812:10;1784:39;;;;;;;;;;;;;;;:43;;;;1263:571;;;;;;:::o;2276:542::-;2470:23;2496:53;2515:2;2519:5;2526:4;2532:9;2543:5;2496:18;:53::i;:::-;2470:79;;2568:10;:27;2579:15;2568:27;;;;;;;;;;;;;;;;;;;;;;;;;;;2567:28;2559:37;;;;;;;;2606:43;2633:15;2606:26;:43::i;:::-;2742:4;2712:10;:27;2723:15;2712:27;;;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;2764:46;2772:2;2776:5;2783:4;2789:9;2800;2764:7;:46::i;:::-;2756:55;;;;;;;;2276:542;;;;;;:::o;3835:329::-;4038:7;4100:4;4095:10;;4112:1;4107:7;;4116:4;4122:2;4126:5;4133:4;4139:9;4150:5;4078:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4078:78:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;4078:78:4;;;4068:89;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4068:89:4;;;;;;;;;;;;;;;;4061:96;;3835:329;;;;;;;:::o;4841:129:9:-;4918:4;4962:1;4945:6;:13;4952:5;4945:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;;4938:25;;4841:129;;;:::o;2522:377:8:-;2654:12;2762:1;2739:7;:19;2747:10;2739:19;;;;;;;;;;;;;;;;;;;;;;;;;:24;;;;2731:33;;;;;;;;2846:46;2854:2;2858:5;2865:4;2871:9;2882;2846:7;:46::i;:::-;2836:56;;2522:377;;;;;;:::o;1235:391::-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;1401:1:8;1390:6;1382:20;;;;:59;;;;;550:3;1406:35;;1414:6;1406:35;;;;1382:59;1374:68;;;;;;;;1520:1;1501:7;:15;1509:6;1501:15;;;;;;;;;;;;;;;;;;;;;;;;;:20;;;1493:29;;;;;;;;1550:7;:25;550:3;1550:25;;;;;;;;;;;;;;;;;;;;;;;;;1532:7;:15;1540:6;1532:15;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;1613:6;1585:7;:25;550:3;1585:25;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;1235:391;:::o;626:208:5:-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;791:1:5;776:11;:16;;;;768:25;;;;;;;;816:11;803:10;;:24;;;;;;;;;;;;;;;;;;626:208;:::o;499:55:8:-;550:3;499:55;:::o;2776:573:9:-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;3000:10:9;2982:28;;2995:1;2982:10;;:14;:28;;2974:37;;;;;;;;3112:5;3091:26;;:6;:17;3098:9;3091:17;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;3083:35;;;;;;;;3148:6;:13;3155:5;3148:13;;;;;;;;;;;;;;;;;;;;;;;;;3128:6;:17;3135:9;3128:17;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;3187:1;3171:6;:13;3178:5;3171:13;;;;;;;;;;;;;;;;:17;;;;;;;;;;;;;;;;;;3198:10;;:12;;;;;;;;;;;;;;3291:10;3278:23;;:9;;;;;;;;;;;:23;;;;3274:68;;;3315:27;3331:10;3315:15;:27::i;:::-;3274:68;2776:573;;;:::o;287:54::-;337:3;287:54;:::o;693:301:2:-;798:32;810:7;819:10;798:11;:32::i;:::-;965:22;978:2;982:4;965:12;:22::i;:::-;693:301;;;;:::o;767:66:4:-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5052:458:9:-;5118:9;5143:22;5237:13;5264:20;5182:10;;5168:25;;;;;;;;;;;;;;;;;;;;;;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;5168:25:9;;;;5143:50;;5253:1;5237:17;;5287:6;:23;337:3;5287:23;;;;;;;;;;;;;;;;;;;;;;;;;5264:46;;5320:162;337:3;5326:31;;:12;:31;;;;5320:162;;;5388:12;5373:5;5379;5373:12;;;;;;;;;;;;;;;;;:27;;;;;;;;;;;5429:6;:20;5436:12;5429:20;;;;;;;;;;;;;;;;;;;;;;;;;5414:35;;5463:8;;;;;;;5320:162;;;5498:5;5491:12;;5052:458;;;;:::o;336:56:4:-;;;;;;;;;;;;;;;;;;;;:::o;4423:738:8:-;4490:9;4549:19;4582:21;4782:22;4571:1;4549:23;;4606:7;:25;550:3;4606:25;;;;;;;;;;;;;;;;;;;;;;;;;4582:49;;4641:132;550:3;4647:33;;:13;:33;;;;4641:132;;;4712:7;:22;4720:13;4712:22;;;;;;;;;;;;;;;;;;;;;;;;;4696:38;;4748:14;;;;;;;4641:132;;;4821:11;4807:26;;;;;;;;;;;;;;;;;;;;;;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;4807:26:8;;;;4782:51;;4891:1;4877:15;;4918:7;:25;550:3;4918:25;;;;;;;;;;;;;;;;;;;;;;;;;4902:41;;4953:180;550:3;4959:33;;:13;:33;;;;4953:180;;;5029:13;5008:5;5014:11;5008:18;;;;;;;;;;;;;;;;;:34;;;;;;;;;;;5072:7;:22;5080:13;5072:22;;;;;;;;;;;;;;;;;;;;;;;;;5056:38;;5108:14;;;;;;;4953:180;;;5149:5;5142:12;;4423:738;;;;:::o;4398:318:9:-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;4580:10:9;;4566;:24;;;;4558:33;;;;;;;;4675:1;4661:10;:15;;;;4653:24;;;;;;;;4699:10;4687:9;;:22;;;;;;;;;;;;;;;;;;4398:318;:::o;1906:528::-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;2076:1:9;2067:5;:10;;;;:38;;;;;337:3;2081:24;;:5;:24;;;;2067:38;2059:47;;;;;;;;2181:1;2164:6;:13;2171:5;2164:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;2156:27;;;;;;;;2209:6;:23;337:3;2209:23;;;;;;;;;;;;;;;;;;;;;;;;;2193:6;:13;2200:5;2193:13;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;2268:5;2242:6;:23;337:3;2242:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;2283:10;;:12;;;;;;;;;;;;;2376:10;2363:23;;:9;;;;;;;;;;;:23;;;;2359:68;;;2400:27;2416:10;2400:15;:27::i;:::-;2359:68;1906:528;;:::o;1887:299:8:-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;2095:6:8;2064:38;;:7;:19;2072:10;2064:19;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;2056:47;;;;;;;;2135:7;:15;2143:6;2135:15;;;;;;;;;;;;;;;;;;;;;;;;;2113:7;:19;2121:10;2113:19;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;2178:1;2160:7;:15;2168:6;2160:15;;;;;;;;;;;;;;;;:19;;;;;;;;;;;;;;;;;;1887:299;;:::o;3683:526:9:-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;3866:1:9;3854:8;:13;;;;:44;;;;;337:3;3871:27;;:8;:27;;;;3854:44;3846:53;;;;;;;;3977:1;3957:6;:16;3964:8;3957:16;;;;;;;;;;;;;;;;;;;;;;;;;:21;;;3949:30;;;;;;;;4080:8;4059:29;;:6;:17;4066:9;4059:17;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;4051:38;;;;;;;;4118:6;:16;4125:8;4118:16;;;;;;;;;;;;;;;;;;;;;;;;;4099:6;:16;4106:8;4099:16;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;4164:8;4144:6;:17;4151:9;4144:17;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;4201:1;4182:6;:16;4189:8;4182:16;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;3683:526;;;:::o;536:43:4:-;;;;;;;;;;;;;;;;;;;;;;:::o;4722:113:9:-;4791:5;4819:9;;;;;;;;;;;4812:16;;4722:113;:::o;398:40:4:-;;;;;;;;;;;;;;;;;;;;:::o;2824:733::-;2916:37;2993:21;3070:20;3180:19;2956:10;:27;2967:15;2956:27;;;;;;;;;;;;;;;;;2916:67;;3017:1;2993:25;;3093:6;:23;337:3:9;3093:23:4;;;;;;;;;;;;;;;;;;;;;;;;;3070:46;;3126:380;337:3:9;3133:31:4;;:12;:31;;;;3126:380;;;3229:1;3202:9;:23;3212:12;3202:23;;;;;;;;;;;;;;;;:28;;3180:50;;3263:10;3247:26;;:12;:26;;;:44;;;;3277:14;3247:44;3244:203;;;3315:14;3311:88;;;3379:1;3353:9;:23;3363:12;3353:23;;;;;;;;;;;;;;;:27;;;;3311:88;3416:16;;;;;;;3244:203;3475:6;:20;3482:12;3475:20;;;;;;;;;;;;;;;;;;;;;;;;;3460:35;;3126:380;;;3540:9;;;;;;;;;;;3523:26;;:13;:26;;3515:35;;;;;;;;2824:733;;;;;:::o;2905:548:8:-;3036:12;3307:19;3081;3068:32;;;;;;;;:9;:32;;;;;;;;;3064:383;;;3124:35;3136:2;3140:5;3147:4;3153:5;3124:11;:35::i;:::-;3114:45;;3064:383;;;3191:27;3178:40;;;;;;;;:9;:40;;;;;;;;;3174:273;;;3242:36;3262:2;3266:4;3272:5;3242:19;:36::i;:::-;3232:46;;3174:273;;;3329:19;3343:4;3329:13;:19::i;:::-;3307:41;;3387:1;3372:11;:16;;;;3362:26;;3407:29;3424:11;3407:29;;;;;;;;;;;;;;;;;;;;;;3174:273;3064:383;2905:548;;;;;;;;:::o;641:1025:9:-;1132:20;1185:9;1284:13;875:1;862:9;;;;;;;;;;;:14;;;854:23;;;;;;;;984:7;:14;970:10;:28;;;;962:37;;;;;;;;1083:1;1069:10;:15;;;;1061:24;;;;;;;;337:3;1132:38;;1197:1;1185:13;;1180:363;1204:7;:14;1200:1;:18;1180:363;;;1300:7;1308:1;1300:10;;;;;;;;;;;;;;;;;;1284:26;;1341:1;1332:5;:10;;;;:38;;;;;337:3;1346:24;;:5;:24;;;;1332:38;1324:47;;;;;;;;1454:1;1437:6;:13;1444:5;1437:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;1429:27;;;;;;;;1493:5;1470:6;:20;1477:12;1470:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;1527:5;1512:20;;1220:3;;;;;;;1180:363;;;337:3;1552:6;:20;1559:12;1552:20;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;1613:7;:14;1600:10;:27;;;;1649:10;1637:9;;:22;;;;;;;;;;;;;;;;;;641:1025;;;;;:::o;735:333:8:-;849:1;820:7;:25;550:3;820:25;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;812:39;;;;;;;;550:3;861:7;:25;550:3;861:25;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;925:1;919:2;:7;;;;915:146;;;1020:40;1040:2;1044:4;1050:9;1020:19;:40::i;:::-;1012:49;;;;;;;;915:146;735:333;;:::o;3459:309::-;3568:12;3750:1;3747;3740:4;3734:11;3727:4;3721;3717:15;3710:5;3706:2;3699:5;3694:58;3683:69;;3669:93;;;;;;:::o;3774:303::-;3876:12;4059:1;4056;4049:4;4043:11;4036:4;4030;4026:15;4022:2;4015:5;4002:59;3991:70;;3977:94;;;;;:::o;4083:261::-;4152:19;4322:4;4316:11;4309:4;4303;4299:15;4296:1;4289:39;4274:54;;4260:78;;;:::o", - "source": "pragma solidity 0.4.24;\nimport \"./GnosisSafe.sol\";\nimport \"./MasterCopy.sol\";\n\n\n/// @title Gnosis Safe Team Edition - A multisignature wallet with support for confirmations.\n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract GnosisSafeTeamEdition is MasterCopy, GnosisSafe {\n\n string public constant NAME = \"Gnosis Safe Team Edition\";\n string public constant VERSION = \"0.0.1\";\n\n // isExecuted mapping allows to check if a transaction (by hash) was already executed.\n mapping (bytes32 => bool) public isExecuted;\n\n // isApproved mapping allows to check if a transaction (by hash) was confirmed by an owner.\n // uint256 is used to optimize the generated assembly. if 0 then false else true\n mapping (bytes32 => mapping(address => uint256)) public isApproved;\n\n /// @dev Allows to confirm a Safe transaction with a regular transaction.\n /// This can only be done from an owner address.\n /// @param to Destination address of Safe transaction.\n /// @param value Ether value of Safe transaction.\n /// @param data Data payload of Safe transaction.\n /// @param operation Operation type of Safe transaction.\n /// @param nonce Nonce used for this Safe transaction.\n function approveTransactionWithParameters(\n address to, \n uint256 value, \n bytes data, \n Enum.Operation operation, \n uint256 nonce\n )\n public\n {\n // Only Safe owners are allowed to confirm Safe transactions.\n require(owners[msg.sender] != 0);\n bytes32 transactionHash = getTransactionHash(to, value, data, operation, nonce);\n // It should not be possible to confirm an executed transaction\n require(!isExecuted[transactionHash]);\n isApproved[transactionHash][msg.sender] = 1;\n }\n\n /// @dev Allows to execute a Safe transaction confirmed by required number of owners. If the sender is an owner this is automatically confirmed.\n /// @param to Destination address of Safe transaction.\n /// @param value Ether value of Safe transaction.\n /// @param data Data payload of Safe transaction.\n /// @param operation Operation type of Safe transaction.\n /// @param nonce Nonce used for this Safe transaction.\n function execTransactionIfApproved(\n address to, \n uint256 value, \n bytes data, \n Enum.Operation operation, \n uint256 nonce\n )\n public\n {\n bytes32 transactionHash = getTransactionHash(to, value, data, operation, nonce);\n require(!isExecuted[transactionHash]);\n checkAndClearConfirmations(transactionHash);\n // Mark as executed and execute transaction.\n isExecuted[transactionHash] = true;\n require(execute(to, value, data, operation, gasleft()));\n }\n\n function checkAndClearConfirmations(bytes32 transactionHash)\n internal\n {\n mapping(address => uint256) approvals = isApproved[transactionHash];\n uint256 confirmations = 0;\n // Validate threshold is reached.\n address currentOwner = owners[SENTINEL_OWNERS];\n while (currentOwner != SENTINEL_OWNERS) {\n bool ownerConfirmed = approvals[currentOwner] != 0;\n if(currentOwner == msg.sender || ownerConfirmed) {\n if (ownerConfirmed) {\n approvals[currentOwner] = 0;\n }\n confirmations ++;\n }\n currentOwner = owners[currentOwner];\n }\n require(confirmations >= threshold);\n }\n\n /// @dev Returns hash to be signed by owners.\n /// @param to Destination address.\n /// @param value Ether value.\n /// @param data Data payload.\n /// @param operation Operation type.\n /// @param nonce Transaction nonce.\n /// @return Transaction hash.\n function getTransactionHash(\n address to, \n uint256 value, \n bytes data, \n Enum.Operation operation, \n uint256 nonce\n )\n public\n view\n returns (bytes32)\n {\n return keccak256(abi.encodePacked(byte(0x19), byte(0), this, to, value, data, operation, nonce));\n }\n}\n", + "bytecode": "0x608060405234801561001057600080fd5b50613c6b806100206000396000f300608060405260043610610128576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063153414fa1461012a57806324cd131f146101d45780632b5000411461027e5780632f54bf6e14610344578063468721a71461039f578063610b5925146104575780637de7edef1461049a57806385e332cd146104dd57806386040aa9146105345780638cff6355146105a4578063a04222e1146105fb578063a09e89f5146106d4578063a0e67e2b14610739578063a3f4df7e146107a5578063b2494df314610835578063b7f3358d146108a1578063b91a667f146108d1578063e009cfde14610921578063e318b52b14610984578063e52cb36a14610a07578063e75235b814610a50578063ffa1ad7414610a81575b005b34801561013657600080fd5b506101d2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050610b11565b005b3480156101e057600080fd5b5061027c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050610d39565b005b34801561028a57600080fd5b50610326600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050610efa565b60405180826000191660001916815260200191505060405180910390f35b34801561035057600080fd5b50610385600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611182565b604051808215151515815260200191505060405180910390f35b3480156103ab57600080fd5b5061043d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050611204565b604051808215151515815260200191505060405180910390f35b34801561046357600080fd5b50610498600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611330565b005b3480156104a657600080fd5b506104db600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061170e565b005b3480156104e957600080fd5b506104f26118cf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561054057600080fd5b506105a2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506118d4565b005b3480156105b057600080fd5b506105b9611d07565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561060757600080fd5b506106d260048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611d0c565b005b3480156106e057600080fd5b506107236004803603810190808035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d26565b6040518082815260200191505060405180910390f35b34801561074557600080fd5b5061074e611d4b565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610791578082015181840152602081019050610776565b505050509050019250505060405180910390f35b3480156107b157600080fd5b506107ba611ee6565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107fa5780820151818401526020810190506107df565b50505050905090810190601f1680156108275780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561084157600080fd5b5061084a611f1f565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561088d578082015181840152602081019050610872565b505050509050019250505060405180910390f35b3480156108ad57600080fd5b506108cf600480360381019080803560ff1690602001909291905050506121c6565b005b3480156108dd57600080fd5b5061091f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506123f2565b005b34801561092d57600080fd5b50610982600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061280b565b005b34801561099057600080fd5b50610a05600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612b5c565b005b348015610a1357600080fd5b50610a3660048036038101908080356000191690602001909291905050506130e1565b604051808215151515815260200191505060405180910390f35b348015610a5c57600080fd5b50610a65613101565b604051808260ff1660ff16815260200191505060405180910390f35b348015610a8d57600080fd5b50610a96613118565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610ad6578082015181840152602081019050610abb565b50505050905090810190601f168015610b035780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515610c00576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206973206e6f7420616e206f776e65720000000000000000000081525060200191505060405180910390fd5b610c0d8686868686610efa565b905060056000826000191660001916815260200190815260200160002060009054906101000a900460ff16151515610cd3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f53616665207472616e73616374696f6e20616c7265616479206578656375746581526020017f640000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600160066000836000191660001916815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050505050565b6000610d488686868686610efa565b905060056000826000191660001916815260200190815260200160002060009054906101000a900460ff16151515610e0e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f53616665207472616e73616374696f6e20616c7265616479206578656375746581526020017f640000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b610e1781613151565b600160056000836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550610e58868686865a6133df565b1515610ef2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f436f756c64206e6f7420657865637574652073616665207472616e736163746981526020017f6f6e00000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b505050505050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f01000000000000000000000000000000000000000000000000000000000000000230888888888860405160200180897effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083835b60208310151561109e5780518252602082019150602081019050602083039250611079565b6001836020036101000a0380198251168184511680821785525050505050509050018360028111156110cc57fe5b60ff167f0100000000000000000000000000000000000000000000000000000000000000028152600101828152602001985050505050505050506040516020818303038152906040526040518082805190602001908083835b60208310151561114a5780518252602082019150602081019050602083039250611125565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020905095945050505050565b600080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515611319576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206181526020017f6e20656e61626c6564206d6f64756c650000000000000000000000000000000081525060400191505060405180910390fd5b611326858585855a6133df565b9050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156113f9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415801561144d5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15156114c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f496e76616c6964206d6f64756c6520616464726573732070726f76696465640081525060200191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156115ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4d6f64756c652068617320616c7265616479206265656e20616464656400000081525060200191505060405180910390fd5b60016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156117d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561188c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f496e76616c6964206d617374657220636f707920616464726573732070726f7681526020017f696465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561199d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b8060ff1660016003540310151515611a43576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001807f4e6577206f776e657220636f756e74206e6565647320746f206265206c61726781526020017f6572207468616e206e6577207468726573686f6c64000000000000000000000081525060400191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611b6b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f496e76616c696420707265764f776e65722c206f776e6572207061697220707281526020017f6f7669646564000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360008154809291906001900391905055508060ff16600460009054906101000a900460ff1660ff16141515611d0257611d01816121c6565b5b505050565b600181565b611d1684846134dc565b611d2082826139c6565b50505050565b6006602052816000526040600020602052806000526040600020600091509150505481565b606080600080600354604051908082528060200260200182016040528015611d825781602001602082028038833980820191505090505b5092506000915060026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515611edd57808383815181101515611e3257fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508180600101925050611ded565b82935050505090565b6040805190810160405280601881526020017f476e6f7369732053616665205465616d2045646974696f6e000000000000000081525081565b606060008060606000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151561203357600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050611f8e565b826040519080825280602002602001820160405280156120625781602001602082028038833980820191505090505b5090506000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156121bd5781818481518110151561211257fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915082806001019350506120cd565b80935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561228f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b6003548160ff1611151515612332576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f5468726573686f6c642063616e6e6f7420657863656564206f776e657220636f81526020017f756e74000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60018160ff16101515156123d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f5468726573686f6c64206e6565647320746f206265206772656174657220746881526020017f616e20300000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b80600460006101000a81548160ff021916908360ff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156124bb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff161415801561250f5750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1515612583576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612670576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4164647265737320697320616c726561647920616e206f776e6572000000000081525060200191505060405180910390fd5b60026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003600081548092919060010191905055508060ff16600460009054906101000a900460ff1660ff1614151561280757612806816121c6565b5b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156128d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156129fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001807f496e76616c696420707265764d6f64756c652c206d6f64756c6520706169722081526020017f70726f766964656400000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612c25576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614158015612c795750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515612ced576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612dda576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4164647265737320697320616c726561647920616e206f776e6572000000000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612f02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f496e76616c696420707265764f776e65722c206f776e6572207061697220707281526020017f6f7669646564000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b60056020528060005260406000206000915054906101000a900460ff1681565b6000600460009054906101000a900460ff16905090565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b60008060008060066000866000191660001916815260200190815260200160002093506000925060026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151561334e5760008460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141590503373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148061328e5750805b156132e75780156132de5760008460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b82806001019350505b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691506131dc565b600460009054906101000a900460ff1660ff1683101515156133d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f4e6f7420656e6f75676820636f6e6669726d6174696f6e73000000000000000081525060200191505060405180910390fd5b5050505050565b600080600060028111156133ef57fe5b8460028111156133fb57fe5b14156134145761340d87878786613bfd565b91506134d2565b6001600281111561342157fe5b84600281111561342d57fe5b14156134455761343e878685613c16565b91506134d1565b61344e85613c2d565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b600080600080600460009054906101000a900460ff1660ff1614151561356a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f4f776e657273206861766520616c7265616479206265656e207365747570000081525060200191505060405180910390fd5b84518460ff161115151561360c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f5468726573686f6c642063616e6e6f7420657863656564206f776e657220636f81526020017f756e74000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60018460ff16101515156136ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f5468726573686f6c64206e6565647320746f206265206772656174657220746881526020017f616e20300000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60019250600091505b845182101561391d5784828151811015156136ce57fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff161415801561372e5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15156137a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561388f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4475706c6963617465206f776e657220616464726573732070726f766964656481525060200191505060405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080925081806001019250506136b7565b6001600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550845160038190555083600460006101000a81548160ff021916908360ff1602179055505050505050565b600060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515613ada576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f4d6f64756c6573206861766520616c7265616479206265656e20696e6974696181526020017f6c697a656400000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6001806000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008273ffffffffffffffffffffffffffffffffffffffff16141515613bf957613b8482825a613c16565b1515613bf8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f436f756c64206e6f742066696e69736820696e697469616c697a6174696f6e0081525060200191505060405180910390fd5b5b5050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f090509190505600a165627a7a72305820222ec0cbb1dc5a7c0c570f770cbbb4bbcf1d7c62befbfacf1bfe99b26012df1b0029", + "deployedBytecode": "0x608060405260043610610128576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063153414fa1461012a57806324cd131f146101d45780632b5000411461027e5780632f54bf6e14610344578063468721a71461039f578063610b5925146104575780637de7edef1461049a57806385e332cd146104dd57806386040aa9146105345780638cff6355146105a4578063a04222e1146105fb578063a09e89f5146106d4578063a0e67e2b14610739578063a3f4df7e146107a5578063b2494df314610835578063b7f3358d146108a1578063b91a667f146108d1578063e009cfde14610921578063e318b52b14610984578063e52cb36a14610a07578063e75235b814610a50578063ffa1ad7414610a81575b005b34801561013657600080fd5b506101d2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050610b11565b005b3480156101e057600080fd5b5061027c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050610d39565b005b34801561028a57600080fd5b50610326600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050610efa565b60405180826000191660001916815260200191505060405180910390f35b34801561035057600080fd5b50610385600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611182565b604051808215151515815260200191505060405180910390f35b3480156103ab57600080fd5b5061043d600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190505050611204565b604051808215151515815260200191505060405180910390f35b34801561046357600080fd5b50610498600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611330565b005b3480156104a657600080fd5b506104db600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061170e565b005b3480156104e957600080fd5b506104f26118cf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561054057600080fd5b506105a2600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506118d4565b005b3480156105b057600080fd5b506105b9611d07565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561060757600080fd5b506106d260048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611d0c565b005b3480156106e057600080fd5b506107236004803603810190808035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611d26565b6040518082815260200191505060405180910390f35b34801561074557600080fd5b5061074e611d4b565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610791578082015181840152602081019050610776565b505050509050019250505060405180910390f35b3480156107b157600080fd5b506107ba611ee6565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156107fa5780820151818401526020810190506107df565b50505050905090810190601f1680156108275780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561084157600080fd5b5061084a611f1f565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561088d578082015181840152602081019050610872565b505050509050019250505060405180910390f35b3480156108ad57600080fd5b506108cf600480360381019080803560ff1690602001909291905050506121c6565b005b3480156108dd57600080fd5b5061091f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506123f2565b005b34801561092d57600080fd5b50610982600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061280b565b005b34801561099057600080fd5b50610a05600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612b5c565b005b348015610a1357600080fd5b50610a3660048036038101908080356000191690602001909291905050506130e1565b604051808215151515815260200191505060405180910390f35b348015610a5c57600080fd5b50610a65613101565b604051808260ff1660ff16815260200191505060405180910390f35b348015610a8d57600080fd5b50610a96613118565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610ad6578082015181840152602081019050610abb565b50505050905090810190601f168015610b035780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b600080600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515610c00576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f53656e646572206973206e6f7420616e206f776e65720000000000000000000081525060200191505060405180910390fd5b610c0d8686868686610efa565b905060056000826000191660001916815260200190815260200160002060009054906101000a900460ff16151515610cd3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f53616665207472616e73616374696f6e20616c7265616479206578656375746581526020017f640000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600160066000836000191660001916815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050505050565b6000610d488686868686610efa565b905060056000826000191660001916815260200190815260200160002060009054906101000a900460ff16151515610e0e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f53616665207472616e73616374696f6e20616c7265616479206578656375746581526020017f640000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b610e1781613151565b600160056000836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550610e58868686865a6133df565b1515610ef2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f436f756c64206e6f7420657865637574652073616665207472616e736163746981526020017f6f6e00000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b505050505050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f01000000000000000000000000000000000000000000000000000000000000000230888888888860405160200180897effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083835b60208310151561109e5780518252602082019150602081019050602083039250611079565b6001836020036101000a0380198251168184511680821785525050505050509050018360028111156110cc57fe5b60ff167f0100000000000000000000000000000000000000000000000000000000000000028152600101828152602001985050505050505050506040516020818303038152906040526040518082805190602001908083835b60208310151561114a5780518252602082019150602081019050602083039250611125565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020905095945050505050565b600080600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b600080600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151515611319576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206181526020017f6e20656e61626c6564206d6f64756c650000000000000000000000000000000081525060400191505060405180910390fd5b611326858585855a6133df565b9050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156113f9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415801561144d5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15156114c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f496e76616c6964206d6f64756c6520616464726573732070726f76696465640081525060200191505060405180910390fd5b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156115ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4d6f64756c652068617320616c7265616479206265656e20616464656400000081525060200191505060405180910390fd5b60016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156117d7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561188c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f496e76616c6964206d617374657220636f707920616464726573732070726f7681526020017f696465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561199d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b8060ff1660016003540310151515611a43576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001807f4e6577206f776e657220636f756e74206e6565647320746f206265206c61726781526020017f6572207468616e206e6577207468726573686f6c64000000000000000000000081525060400191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611b6b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f496e76616c696420707265764f776e65722c206f776e6572207061697220707281526020017f6f7669646564000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600360008154809291906001900391905055508060ff16600460009054906101000a900460ff1660ff16141515611d0257611d01816121c6565b5b505050565b600181565b611d1684846134dc565b611d2082826139c6565b50505050565b6006602052816000526040600020602052806000526040600020600091509150505481565b606080600080600354604051908082528060200260200182016040528015611d825781602001602082028038833980820191505090505b5092506000915060026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515611edd57808383815181101515611e3257fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508180600101925050611ded565b82935050505090565b6040805190810160405280601881526020017f476e6f7369732053616665205465616d2045646974696f6e000000000000000081525081565b606060008060606000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151561203357600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050611f8e565b826040519080825280602002602001820160405280156120625781602001602082028038833980820191505090505b5090506000925060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156121bd5781818481518110151561211257fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915082806001019350506120cd565b80935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561228f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b6003548160ff1611151515612332576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f5468726573686f6c642063616e6e6f7420657863656564206f776e657220636f81526020017f756e74000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60018160ff16101515156123d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f5468726573686f6c64206e6565647320746f206265206772656174657220746881526020017f616e20300000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b80600460006101000a81548160ff021916908360ff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156124bb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff161415801561250f5750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1515612583576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612670576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4164647265737320697320616c726561647920616e206f776e6572000000000081525060200191505060405180910390fd5b60026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506003600081548092919060010191905055508060ff16600460009054906101000a900460ff1660ff1614151561280757612806816121c6565b5b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156128d4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156129fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001807f496e76616c696420707265764d6f64756c652c206d6f64756c6520706169722081526020017f70726f766964656400000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600160008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515612c25576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614158015612c795750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515612ced576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612dda576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4164647265737320697320616c726561647920616e206f776e6572000000000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515612f02576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f496e76616c696420707265764f776e65722c206f776e6572207061697220707281526020017f6f7669646564000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b60056020528060005260406000206000915054906101000a900460ff1681565b6000600460009054906101000a900460ff16905090565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b60008060008060066000866000191660001916815260200190815260200160002093506000925060026000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151561334e5760008460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141590503373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16148061328e5750805b156132e75780156132de5760008460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b82806001019350505b600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691506131dc565b600460009054906101000a900460ff1660ff1683101515156133d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f4e6f7420656e6f75676820636f6e6669726d6174696f6e73000000000000000081525060200191505060405180910390fd5b5050505050565b600080600060028111156133ef57fe5b8460028111156133fb57fe5b14156134145761340d87878786613bfd565b91506134d2565b6001600281111561342157fe5b84600281111561342d57fe5b14156134455761343e878685613c16565b91506134d1565b61344e85613c2d565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b600080600080600460009054906101000a900460ff1660ff1614151561356a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f4f776e657273206861766520616c7265616479206265656e207365747570000081525060200191505060405180910390fd5b84518460ff161115151561360c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f5468726573686f6c642063616e6e6f7420657863656564206f776e657220636f81526020017f756e74000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60018460ff16101515156136ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f5468726573686f6c64206e6565647320746f206265206772656174657220746881526020017f616e20300000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60019250600091505b845182101561391d5784828151811015156136ce57fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff161415801561372e5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15156137a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561388f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4475706c6963617465206f776e657220616464726573732070726f766964656481525060200191505060405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080925081806001019250506136b7565b6001600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550845160038190555083600460006101000a81548160ff021916908360ff1602179055505050505050565b600060016000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515613ada576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f4d6f64756c6573206861766520616c7265616479206265656e20696e6974696181526020017f6c697a656400000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6001806000600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008273ffffffffffffffffffffffffffffffffffffffff16141515613bf957613b8482825a613c16565b1515613bf8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f436f756c64206e6f742066696e69736820696e697469616c697a6174696f6e0081525060200191505060405180910390fd5b5b5050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f090509190505600a165627a7a72305820222ec0cbb1dc5a7c0c570f770cbbb4bbcf1d7c62befbfacf1bfe99b26012df1b0029", + "sourceMap": "272:4060:4:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;272:4060:4;;;;;;;", + "deployedSourceMap": "272:4060:4:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1263:634;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1263:634:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2339:617;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2339:617:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4001:329;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4001:329:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5374:129:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5374:129:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2710:429:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2710:429:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1311:459;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1311:459:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;626:248:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:248:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;499:55:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;499:55:8;;;;;;;;;;;;;;;;;;;;;;;;;;;3024:672:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3024:672:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;287:54;;8:9:-1;5:2;;;30:1;27;20:12;5:2;287:54:9;;;;;;;;;;;;;;;;;;;;;;;;;;;693:301:2;;8:9:-1;5:2;;;30:1;27;20:12;5:2;693:301:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;767:66:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;767:66:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5585:458:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5585:458:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;5585:458:9;;;;;;;;;;;;;;;;;336:56:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;336:56:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;336:56:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4663:738:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4663:738:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;4663:738:8;;;;;;;;;;;;;;;;;4852:397:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4852:397:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;2089:593;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2089:593:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2031:343:8;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2031:343:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4030:633:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4030:633:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;536:43:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;536:43:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5255:113:9;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5255:113:9;;;;;;;;;;;;;;;;;;;;;;;;;;;398:40:4;;8:9:-1;5:2;;;30:1;27;20:12;5:2;398:40:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;398:40:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1263:634;1602:23;1564:1;1542:6;:18;1549:10;1542:18;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;;1534:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1628:53;1647:2;1651:5;1658:4;1664:9;1675:5;1628:18;:53::i;:::-;1602:79;;1772:10;:27;1783:15;1772:27;;;;;;;;;;;;;;;;;;;;;;;;;;;1771:28;1763:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1889:1;1847:10;:27;1858:15;1847:27;;;;;;;;;;;;;;;;;:39;1875:10;1847:39;;;;;;;;;;;;;;;:43;;;;1263:634;;;;;;:::o;2339:617::-;2533:23;2559:53;2578:2;2582:5;2589:4;2595:9;2606:5;2559:18;:53::i;:::-;2533:79;;2631:10;:27;2642:15;2631:27;;;;;;;;;;;;;;;;;;;;;;;;;;;2630:28;2622:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2706:43;2733:15;2706:26;:43::i;:::-;2842:4;2812:10;:27;2823:15;2812:27;;;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;2864:46;2872:2;2876:5;2883:4;2889:9;2900;2864:7;:46::i;:::-;2856:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2339:617;;;;;;:::o;4001:329::-;4204:7;4266:4;4261:10;;4278:1;4273:7;;4282:4;4288:2;4292:5;4299:4;4305:9;4316:5;4244:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4244:78:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;4244:78:4;;;4234:89;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4234:89:4;;;;;;;;;;;;;;;;4227:96;;4001:329;;;;;;;:::o;5374:129:9:-;5451:4;5495:1;5478:6;:13;5485:5;5478:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;;5471:25;;5374:129;;;:::o;2710:429:8:-;2842:12;2950:1;2927:7;:19;2935:10;2927:19;;;;;;;;;;;;;;;;;;;;;;;;;:24;;;;2919:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3086:46;3094:2;3098:5;3105:4;3111:9;3122;3086:7;:46::i;:::-;3076:56;;2710:429;;;;;;:::o;1311:459::-;244:4:13;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1477:1:8;1466:6;1458:20;;;;:59;;;;;550:3;1482:35;;1490:6;1482:35;;;;1458:59;1450:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1631:1;1612:7;:15;1620:6;1612:15;;;;;;;;;;;;;;;;;;;;;;;;;:20;;;1604:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1694:7;:25;550:3;1694:25;;;;;;;;;;;;;;;;;;;;;;;;;1676:7;:15;1684:6;1676:15;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;1757:6;1729:7;:25;550:3;1729:25;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;1311:459;:::o;626:248:5:-;244:4:13;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;791:1:5;776:11;:16;;;;768:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;856:11;843:10;;:24;;;;;;;;;;;;;;;;;;626:248;:::o;499:55:8:-;550:3;499:55;:::o;3024:672:9:-;244:4:13;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3248:10:9;3230:28;;3243:1;3230:10;;:14;:28;;3222:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3417:5;3396:26;;:6;:17;3403:9;3396:17;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;3388:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3495:6;:13;3502:5;3495:13;;;;;;;;;;;;;;;;;;;;;;;;;3475:6;:17;3482:9;3475:17;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;3534:1;3518:6;:13;3525:5;3518:13;;;;;;;;;;;;;;;;:17;;;;;;;;;;;;;;;;;;3545:10;;:12;;;;;;;;;;;;;;3638:10;3625:23;;:9;;;;;;;;;;;:23;;;;3621:68;;;3662:27;3678:10;3662:15;:27::i;:::-;3621:68;3024:672;;;:::o;287:54::-;337:3;287:54;:::o;693:301:2:-;798:32;810:7;819:10;798:11;:32::i;:::-;965:22;978:2;982:4;965:12;:22::i;:::-;693:301;;;;:::o;767:66:4:-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5585:458:9:-;5651:9;5676:22;5770:13;5797:20;5715:10;;5701:25;;;;;;;;;;;;;;;;;;;;;;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;5701:25:9;;;;5676:50;;5786:1;5770:17;;5820:6;:23;337:3;5820:23;;;;;;;;;;;;;;;;;;;;;;;;;5797:46;;5853:162;337:3;5859:31;;:12;:31;;;;5853:162;;;5921:12;5906:5;5912;5906:12;;;;;;;;;;;;;;;;;:27;;;;;;;;;;;5962:6;:20;5969:12;5962:20;;;;;;;;;;;;;;;;;;;;;;;;;5947:35;;5996:8;;;;;;;5853:162;;;6031:5;6024:12;;5585:458;;;;:::o;336:56:4:-;;;;;;;;;;;;;;;;;;;;:::o;4663:738:8:-;4730:9;4789:19;4822:21;5022:22;4811:1;4789:23;;4846:7;:25;550:3;4846:25;;;;;;;;;;;;;;;;;;;;;;;;;4822:49;;4881:132;550:3;4887:33;;:13;:33;;;;4881:132;;;4952:7;:22;4960:13;4952:22;;;;;;;;;;;;;;;;;;;;;;;;;4936:38;;4988:14;;;;;;;4881:132;;;5061:11;5047:26;;;;;;;;;;;;;;;;;;;;;;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;5047:26:8;;;;5022:51;;5131:1;5117:15;;5158:7;:25;550:3;5158:25;;;;;;;;;;;;;;;;;;;;;;;;;5142:41;;5193:180;550:3;5199:33;;:13;:33;;;;5193:180;;;5269:13;5248:5;5254:11;5248:18;;;;;;;;;;;;;;;;;:34;;;;;;;;;;;5312:7;:22;5320:13;5312:22;;;;;;;;;;;;;;;;;;;;;;;;;5296:38;;5348:14;;;;;;;5193:180;;;5389:5;5382:12;;4663:738;;;;:::o;4852:397:9:-;244:4:13;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5034:10:9;;5020;:24;;;;5012:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5168:1;5154:10;:15;;;;5146:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5232:10;5220:9;;:22;;;;;;;;;;;;;;;;;;4852:397;:::o;2089:593::-;244:4:13;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2259:1:9;2250:5;:10;;;;:38;;;;;337:3;2264:24;;:5;:24;;;;2250:38;2242:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2398:1;2381:6;:13;2388:5;2381:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;2373:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2457:6;:23;337:3;2457:23;;;;;;;;;;;;;;;;;;;;;;;;;2441:6;:13;2448:5;2441:13;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;2516:5;2490:6;:23;337:3;2490:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;2531:10;;:12;;;;;;;;;;;;;2624:10;2611:23;;:9;;;;;;;;;;;:23;;;;2607:68;;;2648:27;2664:10;2648:15;:27::i;:::-;2607:68;2089:593;;:::o;2031:343:8:-;244:4:13;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2239:6:8;2208:38;;:7;:19;2216:10;2208:19;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;2200:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2323:7;:15;2331:6;2323:15;;;;;;;;;;;;;;;;;;;;;;;;;2301:7;:19;2309:10;2301:19;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;2366:1;2348:7;:15;2356:6;2348:15;;;;;;;;;;;;;;;;:19;;;;;;;;;;;;;;;;;;2031:343;;:::o;4030:633:9:-;244:4:13;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4213:1:9;4201:8;:13;;;;:44;;;;;337:3;4218:27;;:8;:27;;;;4201:44;4193:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4358:1;4338:6;:16;4345:8;4338:16;;;;;;;;;;;;;;;;;;;;;;;;;:21;;;4330:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4492:8;4471:29;;:6;:17;4478:9;4471:17;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;4463:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4572:6;:16;4579:8;4572:16;;;;;;;;;;;;;;;;;;;;;;;;;4553:6;:16;4560:8;4553:16;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;4618:8;4598:6;:17;4605:9;4598:17;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;4655:1;4636:6;:16;4643:8;4636:16;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;4030:633;;;:::o;536:43:4:-;;;;;;;;;;;;;;;;;;;;;;:::o;5255:113:9:-;5324:5;5352:9;;;;;;;;;;;5345:16;;5255:113;:::o;398:40:4:-;;;;;;;;;;;;;;;;;;;;:::o;2962:761::-;3054:37;3131:21;3208:20;3318:19;3094:10;:27;3105:15;3094:27;;;;;;;;;;;;;;;;;3054:67;;3155:1;3131:25;;3231:6;:23;337:3:9;3231:23:4;;;;;;;;;;;;;;;;;;;;;;;;;3208:46;;3264:380;337:3:9;3271:31:4;;:12;:31;;;;3264:380;;;3367:1;3340:9;:23;3350:12;3340:23;;;;;;;;;;;;;;;;:28;;3318:50;;3401:10;3385:26;;:12;:26;;;:44;;;;3415:14;3385:44;3382:203;;;3453:14;3449:88;;;3517:1;3491:9;:23;3501:12;3491:23;;;;;;;;;;;;;;;:27;;;;3449:88;3554:16;;;;;;;3382:203;3613:6;:20;3620:12;3613:20;;;;;;;;;;;;;;;;;;;;;;;;;3598:35;;3264:380;;;3678:9;;;;;;;;;;;3661:26;;:13;:26;;3653:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2962:761;;;;;:::o;3145:548:8:-;3276:12;3547:19;3321;3308:32;;;;;;;;:9;:32;;;;;;;;;3304:383;;;3364:35;3376:2;3380:5;3387:4;3393:5;3364:11;:35::i;:::-;3354:45;;3304:383;;;3431:27;3418:40;;;;;;;;:9;:40;;;;;;;;;3414:273;;;3482:36;3502:2;3506:4;3512:5;3482:19;:36::i;:::-;3472:46;;3414:273;;;3569:19;3583:4;3569:13;:19::i;:::-;3547:41;;3627:1;3612:11;:16;;;;3602:26;;3647:29;3664:11;3647:29;;;;;;;;;;;;;;;;;;;;;;3414:273;3304:383;3145:548;;;;;;;;:::o;641:1208:9:-;1245:20;1298:9;1397:13;875:1;862:9;;;;;;;;;;;:14;;;854:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1018:7;:14;1004:10;:28;;;;996:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1156:1;1142:10;:15;;;;1134:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;337:3;1245:38;;1310:1;1298:13;;1293:433;1317:7;:14;1313:1;:18;1293:433;;;1413:7;1421:1;1413:10;;;;;;;;;;;;;;;;;;1397:26;;1454:1;1445:5;:10;;;;:38;;;;;337:3;1459:24;;:5;:24;;;;1445:38;1437:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1601:1;1584:6;:13;1591:5;1584:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;1576:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1676:5;1653:6;:20;1660:12;1653:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;1710:5;1695:20;;1333:3;;;;;;;1293:433;;;337:3;1735:6;:20;1742:12;1735:20;;;;;;;;;;;;;;;;:38;;;;;;;;;;;;;;;;;;1796:7;:14;1783:10;:27;;;;1832:10;1820:9;;:22;;;;;;;;;;;;;;;;;;641:1208;;;;;:::o;735:409:8:-;849:1;820:7;:25;550:3;820:25;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;812:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;550:3;902:7;:25;550:3;902:25;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;966:1;960:2;:7;;;;956:181;;;1061:40;1081:2;1085:4;1091:9;1061:19;:40::i;:::-;1053:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;956:181;735:409;;:::o;3699:309::-;3808:12;3990:1;3987;3980:4;3974:11;3967:4;3961;3957:15;3950:5;3946:2;3939:5;3934:58;3923:69;;3909:93;;;;;;:::o;4014:303::-;4116:12;4299:1;4296;4289:4;4283:11;4276:4;4270;4266:15;4262:2;4255:5;4242:59;4231:70;;4217:94;;;;;:::o;4323:261::-;4392:19;4562:4;4556:11;4549:4;4543;4539:15;4536:1;4529:39;4514:54;;4500:78;;;:::o", + "source": "pragma solidity 0.4.24;\nimport \"./GnosisSafe.sol\";\nimport \"./MasterCopy.sol\";\n\n\n/// @title Gnosis Safe Team Edition - A multisignature wallet with support for confirmations.\n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract GnosisSafeTeamEdition is MasterCopy, GnosisSafe {\n\n string public constant NAME = \"Gnosis Safe Team Edition\";\n string public constant VERSION = \"0.0.1\";\n\n // isExecuted mapping allows to check if a transaction (by hash) was already executed.\n mapping (bytes32 => bool) public isExecuted;\n\n // isApproved mapping allows to check if a transaction (by hash) was confirmed by an owner.\n // uint256 is used to optimize the generated assembly. if 0 then false else true\n mapping (bytes32 => mapping(address => uint256)) public isApproved;\n\n /// @dev Allows to confirm a Safe transaction with a regular transaction.\n /// This can only be done from an owner address.\n /// @param to Destination address of Safe transaction.\n /// @param value Ether value of Safe transaction.\n /// @param data Data payload of Safe transaction.\n /// @param operation Operation type of Safe transaction.\n /// @param nonce Nonce used for this Safe transaction.\n function approveTransactionWithParameters(\n address to, \n uint256 value, \n bytes data, \n Enum.Operation operation, \n uint256 nonce\n )\n public\n {\n // Only Safe owners are allowed to confirm Safe transactions.\n require(owners[msg.sender] != 0, \"Sender is not an owner\");\n bytes32 transactionHash = getTransactionHash(to, value, data, operation, nonce);\n // It should not be possible to confirm an executed transaction\n require(!isExecuted[transactionHash], \"Safe transaction already executed\");\n isApproved[transactionHash][msg.sender] = 1;\n }\n\n /// @dev Allows to execute a Safe transaction confirmed by required number of owners. If the sender is an owner this is automatically confirmed.\n /// @param to Destination address of Safe transaction.\n /// @param value Ether value of Safe transaction.\n /// @param data Data payload of Safe transaction.\n /// @param operation Operation type of Safe transaction.\n /// @param nonce Nonce used for this Safe transaction.\n function execTransactionIfApproved(\n address to, \n uint256 value, \n bytes data, \n Enum.Operation operation, \n uint256 nonce\n )\n public\n {\n bytes32 transactionHash = getTransactionHash(to, value, data, operation, nonce);\n require(!isExecuted[transactionHash], \"Safe transaction already executed\");\n checkAndClearConfirmations(transactionHash);\n // Mark as executed and execute transaction.\n isExecuted[transactionHash] = true;\n require(execute(to, value, data, operation, gasleft()), \"Could not execute safe transaction\");\n }\n\n function checkAndClearConfirmations(bytes32 transactionHash)\n internal\n {\n mapping(address => uint256) approvals = isApproved[transactionHash];\n uint256 confirmations = 0;\n // Validate threshold is reached.\n address currentOwner = owners[SENTINEL_OWNERS];\n while (currentOwner != SENTINEL_OWNERS) {\n bool ownerConfirmed = approvals[currentOwner] != 0;\n if(currentOwner == msg.sender || ownerConfirmed) {\n if (ownerConfirmed) {\n approvals[currentOwner] = 0;\n }\n confirmations ++;\n }\n currentOwner = owners[currentOwner];\n }\n require(confirmations >= threshold, \"Not enough confirmations\");\n }\n\n /// @dev Returns hash to be signed by owners.\n /// @param to Destination address.\n /// @param value Ether value.\n /// @param data Data payload.\n /// @param operation Operation type.\n /// @param nonce Transaction nonce.\n /// @return Transaction hash.\n function getTransactionHash(\n address to, \n uint256 value, \n bytes data, \n Enum.Operation operation, \n uint256 nonce\n )\n public\n view\n returns (bytes32)\n {\n return keccak256(abi.encodePacked(byte(0x19), byte(0), this, to, value, data, operation, nonce));\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafeTeamEdition.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafeTeamEdition.sol", "exportedSymbols": { "GnosisSafeTeamEdition": [ - 626 + 635 ] }, - "id": 627, + "id": 636, "nodeType": "SourceUnit", "nodes": [ { - "id": 399, + "id": 403, "literals": [ "solidity", "0.4", @@ -481,9 +481,9 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", "file": "./GnosisSafe.sol", - "id": 400, + "id": 404, "nodeType": "ImportDirective", - "scope": 627, + "scope": 636, "sourceUnit": 64, "src": "24:26:4", "symbolAliases": [], @@ -492,10 +492,10 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/MasterCopy.sol", "file": "./MasterCopy.sol", - "id": 401, + "id": 405, "nodeType": "ImportDirective", - "scope": 627, - "sourceUnit": 653, + "scope": 636, + "sourceUnit": 663, "src": "51:26:4", "symbolAliases": [], "unitAlias": "" @@ -506,17 +506,17 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 402, + "id": 406, "name": "MasterCopy", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 652, + "referencedDeclaration": 662, "src": "306:10:4", "typeDescriptions": { - "typeIdentifier": "t_contract$_MasterCopy_$652", + "typeIdentifier": "t_contract$_MasterCopy_$662", "typeString": "contract MasterCopy" } }, - "id": 403, + "id": 407, "nodeType": "InheritanceSpecifier", "src": "306:10:4" }, @@ -524,7 +524,7 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 404, + "id": 408, "name": "GnosisSafe", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 63, @@ -534,39 +534,39 @@ "typeString": "contract GnosisSafe" } }, - "id": 405, + "id": 409, "nodeType": "InheritanceSpecifier", "src": "318:10:4" } ], "contractDependencies": [ 63, - 652, - 1100, - 1472, - 1619 + 662, + 1118, + 1504, + 1654 ], "contractKind": "contract", "documentation": "@title Gnosis Safe Team Edition - A multisignature wallet with support for confirmations.\n @author Stefan George - \n @author Richard Meissner - ", "fullyImplemented": true, - "id": 626, + "id": 635, "linearizedBaseContracts": [ - 626, + 635, 63, - 1472, - 1100, - 652, - 1619 + 1504, + 1118, + 662, + 1654 ], "name": "GnosisSafeTeamEdition", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, - "id": 408, + "id": 412, "name": "NAME", "nodeType": "VariableDeclaration", - "scope": 626, + "scope": 635, "src": "336:56:4", "stateVariable": true, "storageLocation": "default", @@ -575,7 +575,7 @@ "typeString": "string" }, "typeName": { - "id": 406, + "id": 410, "name": "string", "nodeType": "ElementaryTypeName", "src": "336:6:4", @@ -587,7 +587,7 @@ "value": { "argumentTypes": null, "hexValue": "476e6f7369732053616665205465616d2045646974696f6e", - "id": 407, + "id": 411, "isConstant": false, "isLValue": false, "isPure": true, @@ -606,10 +606,10 @@ }, { "constant": true, - "id": 411, + "id": 415, "name": "VERSION", "nodeType": "VariableDeclaration", - "scope": 626, + "scope": 635, "src": "398:40:4", "stateVariable": true, "storageLocation": "default", @@ -618,7 +618,7 @@ "typeString": "string" }, "typeName": { - "id": 409, + "id": 413, "name": "string", "nodeType": "ElementaryTypeName", "src": "398:6:4", @@ -630,7 +630,7 @@ "value": { "argumentTypes": null, "hexValue": "302e302e31", - "id": 410, + "id": 414, "isConstant": false, "isLValue": false, "isPure": true, @@ -649,10 +649,10 @@ }, { "constant": false, - "id": 415, + "id": 419, "name": "isExecuted", "nodeType": "VariableDeclaration", - "scope": 626, + "scope": 635, "src": "536:43:4", "stateVariable": true, "storageLocation": "default", @@ -661,9 +661,9 @@ "typeString": "mapping(bytes32 => bool)" }, "typeName": { - "id": 414, + "id": 418, "keyType": { - "id": 412, + "id": 416, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "545:7:4", @@ -679,7 +679,7 @@ "typeString": "mapping(bytes32 => bool)" }, "valueType": { - "id": 413, + "id": 417, "name": "bool", "nodeType": "ElementaryTypeName", "src": "556:4:4", @@ -694,10 +694,10 @@ }, { "constant": false, - "id": 421, + "id": 425, "name": "isApproved", "nodeType": "VariableDeclaration", - "scope": 626, + "scope": 635, "src": "767:66:4", "stateVariable": true, "storageLocation": "default", @@ -706,9 +706,9 @@ "typeString": "mapping(bytes32 => mapping(address => uint256))" }, "typeName": { - "id": 420, + "id": 424, "keyType": { - "id": 416, + "id": 420, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "776:7:4", @@ -724,9 +724,9 @@ "typeString": "mapping(bytes32 => mapping(address => uint256))" }, "valueType": { - "id": 419, + "id": 423, "keyType": { - "id": 417, + "id": 421, "name": "address", "nodeType": "ElementaryTypeName", "src": "795:7:4", @@ -742,7 +742,7 @@ "typeString": "mapping(address => uint256)" }, "valueType": { - "id": 418, + "id": 422, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "806:7:4", @@ -758,9 +758,9 @@ }, { "body": { - "id": 469, + "id": 475, "nodeType": "Block", - "src": "1454:380:4", + "src": "1454:443:4", "statements": [ { "expression": { @@ -772,7 +772,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 440, + "id": 444, "isConstant": false, "isLValue": false, "isPure": false, @@ -781,34 +781,34 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 435, + "id": 439, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, + "referencedDeclaration": 1132, "src": "1542:6:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 438, + "id": 442, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 436, + "id": 440, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2598, + "referencedDeclaration": 2654, "src": "1549:3:4", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 437, + "id": 441, "isConstant": false, "isLValue": false, "isPure": false, @@ -838,7 +838,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 439, + "id": 443, "isConstant": false, "isLValue": false, "isPure": true, @@ -858,6 +858,24 @@ "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "53656e646572206973206e6f7420616e206f776e6572", + "id": 445, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1567:24:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_b22a5f47ffb62866097c90f90b5b53f76973769c84a10c62e12a07eb2ba1ef4a", + "typeString": "literal_string \"Sender is not an owner\"" + }, + "value": "Sender is not an owner" } ], "expression": { @@ -865,23 +883,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_b22a5f47ffb62866097c90f90b5b53f76973769c84a10c62e12a07eb2ba1ef4a", + "typeString": "literal_string \"Sender is not an owner\"" } ], - "id": 434, + "id": 438, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, + "referencedDeclaration": 2658, "src": "1534:7:4", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 441, + "id": 446, "isConstant": false, "isLValue": false, "isPure": false, @@ -889,28 +911,28 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1534:32:4", + "src": "1534:58:4", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 442, + "id": 447, "nodeType": "ExpressionStatement", - "src": "1534:32:4" + "src": "1534:58:4" }, { "assignments": [ - 444 + 449 ], "declarations": [ { "constant": false, - "id": 444, + "id": 449, "name": "transactionHash", "nodeType": "VariableDeclaration", - "scope": 470, - "src": "1576:23:4", + "scope": 476, + "src": "1602:23:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -918,10 +940,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 443, + "id": 448, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1576:7:4", + "src": "1602:7:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -931,18 +953,18 @@ "visibility": "internal" } ], - "id": 452, + "id": 457, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 446, + "id": 451, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 423, - "src": "1621:2:4", + "referencedDeclaration": 427, + "src": "1647:2:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -950,12 +972,12 @@ }, { "argumentTypes": null, - "id": 447, + "id": 452, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 425, - "src": "1625:5:4", + "referencedDeclaration": 429, + "src": "1651:5:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -963,12 +985,12 @@ }, { "argumentTypes": null, - "id": 448, + "id": 453, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 427, - "src": "1632:4:4", + "referencedDeclaration": 431, + "src": "1658:4:4", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -976,12 +998,12 @@ }, { "argumentTypes": null, - "id": 449, + "id": 454, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 429, - "src": "1638:9:4", + "referencedDeclaration": 433, + "src": "1664:9:4", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -989,12 +1011,12 @@ }, { "argumentTypes": null, - "id": 450, + "id": 455, "name": "nonce", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 431, - "src": "1649:5:4", + "referencedDeclaration": 435, + "src": "1675:5:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1024,18 +1046,18 @@ "typeString": "uint256" } ], - "id": 445, + "id": 450, "name": "getTransactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 625, - "src": "1602:18:4", + "referencedDeclaration": 634, + "src": "1628:18:4", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bytes32_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) view returns (bytes32)" } }, - "id": 451, + "id": 456, "isConstant": false, "isLValue": false, "isPure": false, @@ -1043,14 +1065,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1602:53:4", + "src": "1628:53:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "VariableDeclarationStatement", - "src": "1576:79:4" + "src": "1602:79:4" }, { "expression": { @@ -1058,7 +1080,7 @@ "arguments": [ { "argumentTypes": null, - "id": 457, + "id": 462, "isConstant": false, "isLValue": false, "isPure": false, @@ -1066,31 +1088,31 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "1745:28:4", + "src": "1771:28:4", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 454, + "id": 459, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 415, - "src": "1746:10:4", + "referencedDeclaration": 419, + "src": "1772:10:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 456, + "id": 461, "indexExpression": { "argumentTypes": null, - "id": 455, + "id": 460, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 444, - "src": "1757:15:4", + "referencedDeclaration": 449, + "src": "1783:15:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1101,7 +1123,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1746:27:4", + "src": "1772:27:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1111,6 +1133,24 @@ "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "53616665207472616e73616374696f6e20616c7265616479206578656375746564", + "id": 463, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1801:35:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_78cc689035dd21cb903fbad8327952ddf83800cf1115919ff1ad2be36eed70db", + "typeString": "literal_string \"Safe transaction already executed\"" + }, + "value": "Safe transaction already executed" } ], "expression": { @@ -1118,23 +1158,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_78cc689035dd21cb903fbad8327952ddf83800cf1115919ff1ad2be36eed70db", + "typeString": "literal_string \"Safe transaction already executed\"" } ], - "id": 453, + "id": 458, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "1737:7:4", + "referencedDeclaration": 2658, + "src": "1763:7:4", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 458, + "id": 464, "isConstant": false, "isLValue": false, "isPure": false, @@ -1142,20 +1186,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1737:37:4", + "src": "1763:74:4", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 459, + "id": 465, "nodeType": "ExpressionStatement", - "src": "1737:37:4" + "src": "1763:74:4" }, { "expression": { "argumentTypes": null, - "id": 467, + "id": 473, "isConstant": false, "isLValue": false, "isPure": false, @@ -1166,26 +1210,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 460, + "id": 466, "name": "isApproved", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 421, - "src": "1784:10:4", + "referencedDeclaration": 425, + "src": "1847:10:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(bytes32 => mapping(address => uint256))" } }, - "id": 464, + "id": 470, "indexExpression": { "argumentTypes": null, - "id": 461, + "id": 467, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 444, - "src": "1795:15:4", + "referencedDeclaration": 449, + "src": "1858:15:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1196,29 +1240,29 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1784:27:4", + "src": "1847:27:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 465, + "id": 471, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 462, + "id": 468, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2598, - "src": "1812:3:4", + "referencedDeclaration": 2654, + "src": "1875:3:4", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 463, + "id": 469, "isConstant": false, "isLValue": false, "isPure": false, @@ -1226,7 +1270,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1812:10:4", + "src": "1875:10:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1237,7 +1281,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1784:39:4", + "src": "1847:39:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1248,14 +1292,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "31", - "id": 466, + "id": 472, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1826:1:4", + "src": "1889:1:4", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -1263,20 +1307,20 @@ }, "value": "1" }, - "src": "1784:43:4", + "src": "1847:43:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 468, + "id": 474, "nodeType": "ExpressionStatement", - "src": "1784:43:4" + "src": "1847:43:4" } ] }, "documentation": "@dev Allows to confirm a Safe transaction with a regular transaction.\n This can only be done from an owner address.\n @param to Destination address of Safe transaction.\n @param value Ether value of Safe transaction.\n @param data Data payload of Safe transaction.\n @param operation Operation type of Safe transaction.\n @param nonce Nonce used for this Safe transaction.", - "id": 470, + "id": 476, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -1284,15 +1328,15 @@ "name": "approveTransactionWithParameters", "nodeType": "FunctionDefinition", "parameters": { - "id": 432, + "id": 436, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 423, + "id": 427, "name": "to", "nodeType": "VariableDeclaration", - "scope": 470, + "scope": 476, "src": "1314:10:4", "stateVariable": false, "storageLocation": "default", @@ -1301,7 +1345,7 @@ "typeString": "address" }, "typeName": { - "id": 422, + "id": 426, "name": "address", "nodeType": "ElementaryTypeName", "src": "1314:7:4", @@ -1315,10 +1359,10 @@ }, { "constant": false, - "id": 425, + "id": 429, "name": "value", "nodeType": "VariableDeclaration", - "scope": 470, + "scope": 476, "src": "1335:13:4", "stateVariable": false, "storageLocation": "default", @@ -1327,7 +1371,7 @@ "typeString": "uint256" }, "typeName": { - "id": 424, + "id": 428, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1335:7:4", @@ -1341,10 +1385,10 @@ }, { "constant": false, - "id": 427, + "id": 431, "name": "data", "nodeType": "VariableDeclaration", - "scope": 470, + "scope": 476, "src": "1359:10:4", "stateVariable": false, "storageLocation": "default", @@ -1353,7 +1397,7 @@ "typeString": "bytes" }, "typeName": { - "id": 426, + "id": 430, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1359:5:4", @@ -1367,10 +1411,10 @@ }, { "constant": false, - "id": 429, + "id": 433, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 470, + "scope": 476, "src": "1380:24:4", "stateVariable": false, "storageLocation": "default", @@ -1380,7 +1424,7 @@ }, "typeName": { "contractScope": null, - "id": 428, + "id": 432, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 29, @@ -1395,10 +1439,10 @@ }, { "constant": false, - "id": 431, + "id": 435, "name": "nonce", "nodeType": "VariableDeclaration", - "scope": 470, + "scope": 476, "src": "1415:13:4", "stateVariable": false, "storageLocation": "default", @@ -1407,7 +1451,7 @@ "typeString": "uint256" }, "typeName": { - "id": 430, + "id": 434, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1415:7:4", @@ -1424,35 +1468,35 @@ }, "payable": false, "returnParameters": { - "id": 433, + "id": 437, "nodeType": "ParameterList", "parameters": [], "src": "1454:0:4" }, - "scope": 626, - "src": "1263:571:4", + "scope": 635, + "src": "1263:634:4", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 521, + "id": 529, "nodeType": "Block", - "src": "2460:358:4", + "src": "2523:433:4", "statements": [ { "assignments": [ - 484 + 490 ], "declarations": [ { "constant": false, - "id": 484, + "id": 490, "name": "transactionHash", "nodeType": "VariableDeclaration", - "scope": 522, - "src": "2470:23:4", + "scope": 530, + "src": "2533:23:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1460,10 +1504,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 483, + "id": 489, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "2470:7:4", + "src": "2533:7:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1473,18 +1517,18 @@ "visibility": "internal" } ], - "id": 492, + "id": 498, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 486, + "id": 492, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 472, - "src": "2515:2:4", + "referencedDeclaration": 478, + "src": "2578:2:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1492,12 +1536,12 @@ }, { "argumentTypes": null, - "id": 487, + "id": 493, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 474, - "src": "2519:5:4", + "referencedDeclaration": 480, + "src": "2582:5:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1505,12 +1549,12 @@ }, { "argumentTypes": null, - "id": 488, + "id": 494, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 476, - "src": "2526:4:4", + "referencedDeclaration": 482, + "src": "2589:4:4", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -1518,12 +1562,12 @@ }, { "argumentTypes": null, - "id": 489, + "id": 495, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 478, - "src": "2532:9:4", + "referencedDeclaration": 484, + "src": "2595:9:4", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -1531,12 +1575,12 @@ }, { "argumentTypes": null, - "id": 490, + "id": 496, "name": "nonce", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 480, - "src": "2543:5:4", + "referencedDeclaration": 486, + "src": "2606:5:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1566,18 +1610,18 @@ "typeString": "uint256" } ], - "id": 485, + "id": 491, "name": "getTransactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 625, - "src": "2496:18:4", + "referencedDeclaration": 634, + "src": "2559:18:4", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bytes32_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) view returns (bytes32)" } }, - "id": 491, + "id": 497, "isConstant": false, "isLValue": false, "isPure": false, @@ -1585,14 +1629,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2496:53:4", + "src": "2559:53:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "VariableDeclarationStatement", - "src": "2470:79:4" + "src": "2533:79:4" }, { "expression": { @@ -1600,7 +1644,7 @@ "arguments": [ { "argumentTypes": null, - "id": 497, + "id": 503, "isConstant": false, "isLValue": false, "isPure": false, @@ -1608,31 +1652,31 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "2567:28:4", + "src": "2630:28:4", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 494, + "id": 500, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 415, - "src": "2568:10:4", + "referencedDeclaration": 419, + "src": "2631:10:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 496, + "id": 502, "indexExpression": { "argumentTypes": null, - "id": 495, + "id": 501, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 484, - "src": "2579:15:4", + "referencedDeclaration": 490, + "src": "2642:15:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1643,7 +1687,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2568:27:4", + "src": "2631:27:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1653,6 +1697,24 @@ "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "53616665207472616e73616374696f6e20616c7265616479206578656375746564", + "id": 504, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2660:35:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_78cc689035dd21cb903fbad8327952ddf83800cf1115919ff1ad2be36eed70db", + "typeString": "literal_string \"Safe transaction already executed\"" + }, + "value": "Safe transaction already executed" } ], "expression": { @@ -1660,23 +1722,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_78cc689035dd21cb903fbad8327952ddf83800cf1115919ff1ad2be36eed70db", + "typeString": "literal_string \"Safe transaction already executed\"" } ], - "id": 493, + "id": 499, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "2559:7:4", + "referencedDeclaration": 2658, + "src": "2622:7:4", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 498, + "id": 505, "isConstant": false, "isLValue": false, "isPure": false, @@ -1684,15 +1750,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2559:37:4", + "src": "2622:74:4", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 499, + "id": 506, "nodeType": "ExpressionStatement", - "src": "2559:37:4" + "src": "2622:74:4" }, { "expression": { @@ -1700,12 +1766,12 @@ "arguments": [ { "argumentTypes": null, - "id": 501, + "id": 508, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 484, - "src": "2633:15:4", + "referencedDeclaration": 490, + "src": "2733:15:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1719,18 +1785,18 @@ "typeString": "bytes32" } ], - "id": 500, + "id": 507, "name": "checkAndClearConfirmations", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 591, - "src": "2606:26:4", + "referencedDeclaration": 600, + "src": "2706:26:4", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$__$", "typeString": "function (bytes32)" } }, - "id": 502, + "id": 509, "isConstant": false, "isLValue": false, "isPure": false, @@ -1738,20 +1804,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2606:43:4", + "src": "2706:43:4", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 503, + "id": 510, "nodeType": "ExpressionStatement", - "src": "2606:43:4" + "src": "2706:43:4" }, { "expression": { "argumentTypes": null, - "id": 508, + "id": 515, "isConstant": false, "isLValue": false, "isPure": false, @@ -1760,26 +1826,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 504, + "id": 511, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 415, - "src": "2712:10:4", + "referencedDeclaration": 419, + "src": "2812:10:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 506, + "id": 513, "indexExpression": { "argumentTypes": null, - "id": 505, + "id": 512, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 484, - "src": "2723:15:4", + "referencedDeclaration": 490, + "src": "2823:15:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1790,7 +1856,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2712:27:4", + "src": "2812:27:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1801,14 +1867,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 507, + "id": 514, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "2742:4:4", + "src": "2842:4:4", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -1816,15 +1882,15 @@ }, "value": "true" }, - "src": "2712:34:4", + "src": "2812:34:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 509, + "id": 516, "nodeType": "ExpressionStatement", - "src": "2712:34:4" + "src": "2812:34:4" }, { "expression": { @@ -1835,12 +1901,12 @@ "arguments": [ { "argumentTypes": null, - "id": 512, + "id": 519, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 472, - "src": "2772:2:4", + "referencedDeclaration": 478, + "src": "2872:2:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1848,12 +1914,12 @@ }, { "argumentTypes": null, - "id": 513, + "id": 520, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 474, - "src": "2776:5:4", + "referencedDeclaration": 480, + "src": "2876:5:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1861,12 +1927,12 @@ }, { "argumentTypes": null, - "id": 514, + "id": 521, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 476, - "src": "2783:4:4", + "referencedDeclaration": 482, + "src": "2883:4:4", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -1874,12 +1940,12 @@ }, { "argumentTypes": null, - "id": 515, + "id": 522, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 478, - "src": "2789:9:4", + "referencedDeclaration": 484, + "src": "2889:9:4", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -1890,18 +1956,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 516, + "id": 523, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2591, - "src": "2800:7:4", + "referencedDeclaration": 2647, + "src": "2900:7:4", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 517, + "id": 524, "isConstant": false, "isLValue": false, "isPure": false, @@ -1909,7 +1975,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2800:9:4", + "src": "2900:9:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1939,18 +2005,18 @@ "typeString": "uint256" } ], - "id": 511, + "id": 518, "name": "execute", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 989, - "src": "2764:7:4", + "referencedDeclaration": 1007, + "src": "2864:7:4", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) returns (bool)" } }, - "id": 518, + "id": 525, "isConstant": false, "isLValue": false, "isPure": false, @@ -1958,11 +2024,29 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2764:46:4", + "src": "2864:46:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "436f756c64206e6f7420657865637574652073616665207472616e73616374696f6e", + "id": 526, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2912:36:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_d12b254798790cac45e0b54201b0ecf8f3257f9e4c1cfc4633e272006616c878", + "typeString": "literal_string \"Could not execute safe transaction\"" + }, + "value": "Could not execute safe transaction" } ], "expression": { @@ -1970,23 +2054,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_d12b254798790cac45e0b54201b0ecf8f3257f9e4c1cfc4633e272006616c878", + "typeString": "literal_string \"Could not execute safe transaction\"" } ], - "id": 510, + "id": 517, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "2756:7:4", + "referencedDeclaration": 2658, + "src": "2856:7:4", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 519, + "id": 527, "isConstant": false, "isLValue": false, "isPure": false, @@ -1994,20 +2082,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2756:55:4", + "src": "2856:93:4", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 520, + "id": 528, "nodeType": "ExpressionStatement", - "src": "2756:55:4" + "src": "2856:93:4" } ] }, "documentation": "@dev Allows to execute a Safe transaction confirmed by required number of owners. If the sender is an owner this is automatically confirmed.\n @param to Destination address of Safe transaction.\n @param value Ether value of Safe transaction.\n @param data Data payload of Safe transaction.\n @param operation Operation type of Safe transaction.\n @param nonce Nonce used for this Safe transaction.", - "id": 522, + "id": 530, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -2015,16 +2103,16 @@ "name": "execTransactionIfApproved", "nodeType": "FunctionDefinition", "parameters": { - "id": 481, + "id": 487, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 472, + "id": 478, "name": "to", "nodeType": "VariableDeclaration", - "scope": 522, - "src": "2320:10:4", + "scope": 530, + "src": "2383:10:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2032,10 +2120,10 @@ "typeString": "address" }, "typeName": { - "id": 471, + "id": 477, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2320:7:4", + "src": "2383:7:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2046,11 +2134,11 @@ }, { "constant": false, - "id": 474, + "id": 480, "name": "value", "nodeType": "VariableDeclaration", - "scope": 522, - "src": "2341:13:4", + "scope": 530, + "src": "2404:13:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2058,10 +2146,10 @@ "typeString": "uint256" }, "typeName": { - "id": 473, + "id": 479, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2341:7:4", + "src": "2404:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2072,11 +2160,11 @@ }, { "constant": false, - "id": 476, + "id": 482, "name": "data", "nodeType": "VariableDeclaration", - "scope": 522, - "src": "2365:10:4", + "scope": 530, + "src": "2428:10:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2084,10 +2172,10 @@ "typeString": "bytes" }, "typeName": { - "id": 475, + "id": 481, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "2365:5:4", + "src": "2428:5:4", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -2098,11 +2186,11 @@ }, { "constant": false, - "id": 478, + "id": 484, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 522, - "src": "2386:24:4", + "scope": 530, + "src": "2449:24:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2111,11 +2199,11 @@ }, "typeName": { "contractScope": null, - "id": 477, + "id": 483, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 29, - "src": "2386:14:4", + "src": "2449:14:4", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -2126,11 +2214,11 @@ }, { "constant": false, - "id": 480, + "id": 486, "name": "nonce", "nodeType": "VariableDeclaration", - "scope": 522, - "src": "2421:13:4", + "scope": 530, + "src": "2484:13:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2138,10 +2226,10 @@ "typeString": "uint256" }, "typeName": { - "id": 479, + "id": 485, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2421:7:4", + "src": "2484:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2151,39 +2239,39 @@ "visibility": "internal" } ], - "src": "2310:130:4" + "src": "2373:130:4" }, "payable": false, "returnParameters": { - "id": 482, + "id": 488, "nodeType": "ParameterList", "parameters": [], - "src": "2460:0:4" + "src": "2523:0:4" }, - "scope": 626, - "src": "2276:542:4", + "scope": 635, + "src": "2339:617:4", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 590, + "id": 599, "nodeType": "Block", - "src": "2906:651:4", + "src": "3044:679:4", "statements": [ { "assignments": [ - 530 + 538 ], "declarations": [ { "constant": false, - "id": 530, + "id": 538, "name": "approvals", "nodeType": "VariableDeclaration", - "scope": 591, - "src": "2916:37:4", + "scope": 600, + "src": "3054:37:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2191,28 +2279,28 @@ "typeString": "mapping(address => uint256)" }, "typeName": { - "id": 529, + "id": 537, "keyType": { - "id": 527, + "id": 535, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2924:7:4", + "src": "3062:7:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "2916:27:4", + "src": "3054:27:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" }, "valueType": { - "id": 528, + "id": 536, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2935:7:4", + "src": "3073:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2223,31 +2311,31 @@ "visibility": "internal" } ], - "id": 534, + "id": 542, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 531, + "id": 539, "name": "isApproved", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 421, - "src": "2956:10:4", + "referencedDeclaration": 425, + "src": "3094:10:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(bytes32 => mapping(address => uint256))" } }, - "id": 533, + "id": 541, "indexExpression": { "argumentTypes": null, - "id": 532, + "id": 540, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 524, - "src": "2967:15:4", + "referencedDeclaration": 532, + "src": "3105:15:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2258,27 +2346,27 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2956:27:4", + "src": "3094:27:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "nodeType": "VariableDeclarationStatement", - "src": "2916:67:4" + "src": "3054:67:4" }, { "assignments": [ - 536 + 544 ], "declarations": [ { "constant": false, - "id": 536, + "id": 544, "name": "confirmations", "nodeType": "VariableDeclaration", - "scope": 591, - "src": "2993:21:4", + "scope": 600, + "src": "3131:21:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2286,10 +2374,10 @@ "typeString": "uint256" }, "typeName": { - "id": 535, + "id": 543, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2993:7:4", + "src": "3131:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2299,18 +2387,18 @@ "visibility": "internal" } ], - "id": 538, + "id": 546, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 537, + "id": 545, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3017:1:4", + "src": "3155:1:4", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -2319,20 +2407,20 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "2993:25:4" + "src": "3131:25:4" }, { "assignments": [ - 540 + 548 ], "declarations": [ { "constant": false, - "id": 540, + "id": 548, "name": "currentOwner", "nodeType": "VariableDeclaration", - "scope": 591, - "src": "3070:20:4", + "scope": 600, + "src": "3208:20:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2340,10 +2428,10 @@ "typeString": "address" }, "typeName": { - "id": 539, + "id": 547, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3070:7:4", + "src": "3208:7:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2353,31 +2441,31 @@ "visibility": "internal" } ], - "id": 544, + "id": 552, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 541, + "id": 549, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "3093:6:4", + "referencedDeclaration": 1132, + "src": "3231:6:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 543, + "id": 551, "indexExpression": { "argumentTypes": null, - "id": 542, + "id": 550, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1110, - "src": "3100:15:4", + "referencedDeclaration": 1128, + "src": "3238:15:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2388,33 +2476,33 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3093:23:4", + "src": "3231:23:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "3070:46:4" + "src": "3208:46:4" }, { "body": { - "id": 582, + "id": 590, "nodeType": "Block", - "src": "3166:340:4", + "src": "3304:340:4", "statements": [ { "assignments": [ - 549 + 557 ], "declarations": [ { "constant": false, - "id": 549, + "id": 557, "name": "ownerConfirmed", "nodeType": "VariableDeclaration", - "scope": 591, - "src": "3180:19:4", + "scope": 600, + "src": "3318:19:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2422,10 +2510,10 @@ "typeString": "bool" }, "typeName": { - "id": 548, + "id": 556, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "3180:4:4", + "src": "3318:4:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2435,14 +2523,14 @@ "visibility": "internal" } ], - "id": 555, + "id": 563, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 554, + "id": 562, "isConstant": false, "isLValue": false, "isPure": false, @@ -2451,26 +2539,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 550, + "id": 558, "name": "approvals", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 530, - "src": "3202:9:4", + "referencedDeclaration": 538, + "src": "3340:9:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 552, + "id": 560, "indexExpression": { "argumentTypes": null, - "id": 551, + "id": 559, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 540, - "src": "3212:12:4", + "referencedDeclaration": 548, + "src": "3350:12:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2481,7 +2569,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3202:23:4", + "src": "3340:23:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2492,14 +2580,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 553, + "id": 561, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3229:1:4", + "src": "3367:1:4", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -2507,14 +2595,14 @@ }, "value": "0" }, - "src": "3202:28:4", + "src": "3340:28:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "VariableDeclarationStatement", - "src": "3180:50:4" + "src": "3318:50:4" }, { "condition": { @@ -2523,7 +2611,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 561, + "id": 569, "isConstant": false, "isLValue": false, "isPure": false, @@ -2534,19 +2622,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 559, + "id": 567, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 556, + "id": 564, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 540, - "src": "3247:12:4", + "referencedDeclaration": 548, + "src": "3385:12:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2558,18 +2646,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 557, + "id": 565, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2598, - "src": "3263:3:4", + "referencedDeclaration": 2654, + "src": "3401:3:4", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 558, + "id": 566, "isConstant": false, "isLValue": false, "isPure": false, @@ -2577,13 +2665,13 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3263:10:4", + "src": "3401:10:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "3247:26:4", + "src": "3385:26:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2593,59 +2681,59 @@ "operator": "||", "rightExpression": { "argumentTypes": null, - "id": 560, + "id": 568, "name": "ownerConfirmed", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 549, - "src": "3277:14:4", + "referencedDeclaration": 557, + "src": "3415:14:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "3247:44:4", + "src": "3385:44:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 575, + "id": 583, "nodeType": "IfStatement", - "src": "3244:203:4", + "src": "3382:203:4", "trueBody": { - "id": 574, + "id": 582, "nodeType": "Block", - "src": "3293:154:4", + "src": "3431:154:4", "statements": [ { "condition": { "argumentTypes": null, - "id": 562, + "id": 570, "name": "ownerConfirmed", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 549, - "src": "3315:14:4", + "referencedDeclaration": 557, + "src": "3453:14:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 570, + "id": 578, "nodeType": "IfStatement", - "src": "3311:88:4", + "src": "3449:88:4", "trueBody": { - "id": 569, + "id": 577, "nodeType": "Block", - "src": "3331:68:4", + "src": "3469:68:4", "statements": [ { "expression": { "argumentTypes": null, - "id": 567, + "id": 575, "isConstant": false, "isLValue": false, "isPure": false, @@ -2654,26 +2742,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 563, + "id": 571, "name": "approvals", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 530, - "src": "3353:9:4", + "referencedDeclaration": 538, + "src": "3491:9:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 565, + "id": 573, "indexExpression": { "argumentTypes": null, - "id": 564, + "id": 572, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 540, - "src": "3363:12:4", + "referencedDeclaration": 548, + "src": "3501:12:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2684,7 +2772,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "3353:23:4", + "src": "3491:23:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2695,14 +2783,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "30", - "id": 566, + "id": 574, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3379:1:4", + "src": "3517:1:4", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -2710,15 +2798,15 @@ }, "value": "0" }, - "src": "3353:27:4", + "src": "3491:27:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 568, + "id": 576, "nodeType": "ExpressionStatement", - "src": "3353:27:4" + "src": "3491:27:4" } ] } @@ -2726,7 +2814,7 @@ { "expression": { "argumentTypes": null, - "id": 572, + "id": 580, "isConstant": false, "isLValue": false, "isPure": false, @@ -2734,15 +2822,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "3416:16:4", + "src": "3554:16:4", "subExpression": { "argumentTypes": null, - "id": 571, + "id": 579, "name": "confirmations", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 536, - "src": "3416:13:4", + "referencedDeclaration": 544, + "src": "3554:13:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2753,9 +2841,9 @@ "typeString": "uint256" } }, - "id": 573, + "id": 581, "nodeType": "ExpressionStatement", - "src": "3416:16:4" + "src": "3554:16:4" } ] } @@ -2763,19 +2851,19 @@ { "expression": { "argumentTypes": null, - "id": 580, + "id": 588, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 576, + "id": 584, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 540, - "src": "3460:12:4", + "referencedDeclaration": 548, + "src": "3598:12:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2787,26 +2875,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 577, + "id": 585, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "3475:6:4", + "referencedDeclaration": 1132, + "src": "3613:6:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 579, + "id": 587, "indexExpression": { "argumentTypes": null, - "id": 578, + "id": 586, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 540, - "src": "3482:12:4", + "referencedDeclaration": 548, + "src": "3620:12:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2817,21 +2905,21 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3475:20:4", + "src": "3613:20:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "3460:35:4", + "src": "3598:35:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 581, + "id": 589, "nodeType": "ExpressionStatement", - "src": "3460:35:4" + "src": "3598:35:4" } ] }, @@ -2841,19 +2929,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 547, + "id": 555, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 545, + "id": 553, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 540, - "src": "3133:12:4", + "referencedDeclaration": 548, + "src": "3271:12:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2863,26 +2951,26 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 546, + "id": 554, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1110, - "src": "3149:15:4", + "referencedDeclaration": 1128, + "src": "3287:15:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "3133:31:4", + "src": "3271:31:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 583, + "id": 591, "nodeType": "WhileStatement", - "src": "3126:380:4" + "src": "3264:380:4" }, { "expression": { @@ -2894,19 +2982,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 587, + "id": 595, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 585, + "id": 593, "name": "confirmations", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 536, - "src": "3523:13:4", + "referencedDeclaration": 544, + "src": "3661:13:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2916,22 +3004,40 @@ "operator": ">=", "rightExpression": { "argumentTypes": null, - "id": 586, + "id": 594, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1118, - "src": "3540:9:4", + "referencedDeclaration": 1136, + "src": "3678:9:4", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "3523:26:4", + "src": "3661:26:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "4e6f7420656e6f75676820636f6e6669726d6174696f6e73", + "id": 596, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3689:26:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_b345da2aaad39251196728cc7926bed93e890843c2a47c2cdd1122427d828094", + "typeString": "literal_string \"Not enough confirmations\"" + }, + "value": "Not enough confirmations" } ], "expression": { @@ -2939,23 +3045,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_b345da2aaad39251196728cc7926bed93e890843c2a47c2cdd1122427d828094", + "typeString": "literal_string \"Not enough confirmations\"" } ], - "id": 584, + "id": 592, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "3515:7:4", + "referencedDeclaration": 2658, + "src": "3653:7:4", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 588, + "id": 597, "isConstant": false, "isLValue": false, "isPure": false, @@ -2963,20 +3073,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3515:35:4", + "src": "3653:63:4", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 589, + "id": 598, "nodeType": "ExpressionStatement", - "src": "3515:35:4" + "src": "3653:63:4" } ] }, "documentation": null, - "id": 591, + "id": 600, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -2984,16 +3094,16 @@ "name": "checkAndClearConfirmations", "nodeType": "FunctionDefinition", "parameters": { - "id": 525, + "id": 533, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 524, + "id": 532, "name": "transactionHash", "nodeType": "VariableDeclaration", - "scope": 591, - "src": "2860:23:4", + "scope": 600, + "src": "2998:23:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3001,10 +3111,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 523, + "id": 531, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "2860:7:4", + "src": "2998:7:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3014,26 +3124,26 @@ "visibility": "internal" } ], - "src": "2859:25:4" + "src": "2997:25:4" }, "payable": false, "returnParameters": { - "id": 526, + "id": 534, "nodeType": "ParameterList", "parameters": [], - "src": "2906:0:4" + "src": "3044:0:4" }, - "scope": 626, - "src": "2824:733:4", + "scope": 635, + "src": "2962:761:4", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 624, + "id": 633, "nodeType": "Block", - "src": "4051:113:4", + "src": "4217:113:4", "statements": [ { "expression": { @@ -3048,14 +3158,14 @@ { "argumentTypes": null, "hexValue": "30783139", - "id": 610, + "id": 619, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4100:4:4", + "src": "4266:4:4", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_25_by_1", @@ -3071,20 +3181,20 @@ "typeString": "int_const 25" } ], - "id": 609, + "id": 618, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "4095:4:4", + "src": "4261:4:4", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes1_$", "typeString": "type(bytes1)" }, "typeName": "byte" }, - "id": 611, + "id": 620, "isConstant": false, "isLValue": false, "isPure": true, @@ -3092,7 +3202,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4095:10:4", + "src": "4261:10:4", "typeDescriptions": { "typeIdentifier": "t_bytes1", "typeString": "bytes1" @@ -3104,14 +3214,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 613, + "id": 622, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4112:1:4", + "src": "4278:1:4", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3127,20 +3237,20 @@ "typeString": "int_const 0" } ], - "id": 612, + "id": 621, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "4107:4:4", + "src": "4273:4:4", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes1_$", "typeString": "type(bytes1)" }, "typeName": "byte" }, - "id": 614, + "id": 623, "isConstant": false, "isLValue": false, "isPure": true, @@ -3148,7 +3258,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4107:7:4", + "src": "4273:7:4", "typeDescriptions": { "typeIdentifier": "t_bytes1", "typeString": "bytes1" @@ -3156,25 +3266,25 @@ }, { "argumentTypes": null, - "id": 615, + "id": 624, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2633, - "src": "4116:4:4", + "referencedDeclaration": 2689, + "src": "4282:4:4", "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafeTeamEdition_$626", + "typeIdentifier": "t_contract$_GnosisSafeTeamEdition_$635", "typeString": "contract GnosisSafeTeamEdition" } }, { "argumentTypes": null, - "id": 616, + "id": 625, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 593, - "src": "4122:2:4", + "referencedDeclaration": 602, + "src": "4288:2:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3182,12 +3292,12 @@ }, { "argumentTypes": null, - "id": 617, + "id": 626, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 595, - "src": "4126:5:4", + "referencedDeclaration": 604, + "src": "4292:5:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3195,12 +3305,12 @@ }, { "argumentTypes": null, - "id": 618, + "id": 627, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 597, - "src": "4133:4:4", + "referencedDeclaration": 606, + "src": "4299:4:4", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -3208,12 +3318,12 @@ }, { "argumentTypes": null, - "id": 619, + "id": 628, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 599, - "src": "4139:9:4", + "referencedDeclaration": 608, + "src": "4305:9:4", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -3221,12 +3331,12 @@ }, { "argumentTypes": null, - "id": 620, + "id": 629, "name": "nonce", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 601, - "src": "4150:5:4", + "referencedDeclaration": 610, + "src": "4316:5:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3244,7 +3354,7 @@ "typeString": "bytes1" }, { - "typeIdentifier": "t_contract$_GnosisSafeTeamEdition_$626", + "typeIdentifier": "t_contract$_GnosisSafeTeamEdition_$635", "typeString": "contract GnosisSafeTeamEdition" }, { @@ -3270,18 +3380,18 @@ ], "expression": { "argumentTypes": null, - "id": 607, + "id": 616, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2585, - "src": "4078:3:4", + "referencedDeclaration": 2641, + "src": "4244:3:4", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, - "id": 608, + "id": 617, "isConstant": false, "isLValue": false, "isPure": true, @@ -3289,13 +3399,13 @@ "memberName": "encodePacked", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "4078:16:4", + "src": "4244:16:4", "typeDescriptions": { "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)" } }, - "id": 621, + "id": 630, "isConstant": false, "isLValue": false, "isPure": false, @@ -3303,7 +3413,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4078:78:4", + "src": "4244:78:4", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -3317,18 +3427,18 @@ "typeString": "bytes memory" } ], - "id": 606, + "id": 615, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2592, - "src": "4068:9:4", + "referencedDeclaration": 2648, + "src": "4234:9:4", "typeDescriptions": { "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", "typeString": "function () pure returns (bytes32)" } }, - "id": 622, + "id": 631, "isConstant": false, "isLValue": false, "isPure": false, @@ -3336,21 +3446,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4068:89:4", + "src": "4234:89:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "functionReturnParameters": 605, - "id": 623, + "functionReturnParameters": 614, + "id": 632, "nodeType": "Return", - "src": "4061:96:4" + "src": "4227:96:4" } ] }, "documentation": "@dev Returns hash to be signed by owners.\n @param to Destination address.\n @param value Ether value.\n @param data Data payload.\n @param operation Operation type.\n @param nonce Transaction nonce.\n @return Transaction hash.", - "id": 625, + "id": 634, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -3358,16 +3468,16 @@ "name": "getTransactionHash", "nodeType": "FunctionDefinition", "parameters": { - "id": 602, + "id": 611, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 593, + "id": 602, "name": "to", "nodeType": "VariableDeclaration", - "scope": 625, - "src": "3872:10:4", + "scope": 634, + "src": "4038:10:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3375,10 +3485,10 @@ "typeString": "address" }, "typeName": { - "id": 592, + "id": 601, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3872:7:4", + "src": "4038:7:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3389,11 +3499,11 @@ }, { "constant": false, - "id": 595, + "id": 604, "name": "value", "nodeType": "VariableDeclaration", - "scope": 625, - "src": "3893:13:4", + "scope": 634, + "src": "4059:13:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3401,10 +3511,10 @@ "typeString": "uint256" }, "typeName": { - "id": 594, + "id": 603, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3893:7:4", + "src": "4059:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3415,11 +3525,11 @@ }, { "constant": false, - "id": 597, + "id": 606, "name": "data", "nodeType": "VariableDeclaration", - "scope": 625, - "src": "3917:10:4", + "scope": 634, + "src": "4083:10:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3427,10 +3537,10 @@ "typeString": "bytes" }, "typeName": { - "id": 596, + "id": 605, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "3917:5:4", + "src": "4083:5:4", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -3441,11 +3551,11 @@ }, { "constant": false, - "id": 599, + "id": 608, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 625, - "src": "3938:24:4", + "scope": 634, + "src": "4104:24:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3454,11 +3564,11 @@ }, "typeName": { "contractScope": null, - "id": 598, + "id": 607, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 29, - "src": "3938:14:4", + "src": "4104:14:4", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -3469,11 +3579,11 @@ }, { "constant": false, - "id": 601, + "id": 610, "name": "nonce", "nodeType": "VariableDeclaration", - "scope": 625, - "src": "3973:13:4", + "scope": 634, + "src": "4139:13:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3481,10 +3591,10 @@ "typeString": "uint256" }, "typeName": { - "id": 600, + "id": 609, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3973:7:4", + "src": "4139:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3494,20 +3604,20 @@ "visibility": "internal" } ], - "src": "3862:130:4" + "src": "4028:130:4" }, "payable": false, "returnParameters": { - "id": 605, + "id": 614, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 604, + "id": 613, "name": "", "nodeType": "VariableDeclaration", - "scope": 625, - "src": "4038:7:4", + "scope": 634, + "src": "4204:7:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3515,10 +3625,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 603, + "id": 612, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "4038:7:4", + "src": "4204:7:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3528,33 +3638,33 @@ "visibility": "internal" } ], - "src": "4037:9:4" + "src": "4203:9:4" }, - "scope": 626, - "src": "3835:329:4", + "scope": 635, + "src": "4001:329:4", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 627, - "src": "272:3894:4" + "scope": 636, + "src": "272:4060:4" } ], - "src": "0:4167:4" + "src": "0:4333:4" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafeTeamEdition.sol", "exportedSymbols": { "GnosisSafeTeamEdition": [ - 626 + 635 ] }, - "id": 627, + "id": 636, "nodeType": "SourceUnit", "nodes": [ { - "id": 399, + "id": 403, "literals": [ "solidity", "0.4", @@ -3566,9 +3676,9 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/GnosisSafe.sol", "file": "./GnosisSafe.sol", - "id": 400, + "id": 404, "nodeType": "ImportDirective", - "scope": 627, + "scope": 636, "sourceUnit": 64, "src": "24:26:4", "symbolAliases": [], @@ -3577,10 +3687,10 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/MasterCopy.sol", "file": "./MasterCopy.sol", - "id": 401, + "id": 405, "nodeType": "ImportDirective", - "scope": 627, - "sourceUnit": 653, + "scope": 636, + "sourceUnit": 663, "src": "51:26:4", "symbolAliases": [], "unitAlias": "" @@ -3591,17 +3701,17 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 402, + "id": 406, "name": "MasterCopy", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 652, + "referencedDeclaration": 662, "src": "306:10:4", "typeDescriptions": { - "typeIdentifier": "t_contract$_MasterCopy_$652", + "typeIdentifier": "t_contract$_MasterCopy_$662", "typeString": "contract MasterCopy" } }, - "id": 403, + "id": 407, "nodeType": "InheritanceSpecifier", "src": "306:10:4" }, @@ -3609,7 +3719,7 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 404, + "id": 408, "name": "GnosisSafe", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 63, @@ -3619,39 +3729,39 @@ "typeString": "contract GnosisSafe" } }, - "id": 405, + "id": 409, "nodeType": "InheritanceSpecifier", "src": "318:10:4" } ], "contractDependencies": [ 63, - 652, - 1100, - 1472, - 1619 + 662, + 1118, + 1504, + 1654 ], "contractKind": "contract", "documentation": "@title Gnosis Safe Team Edition - A multisignature wallet with support for confirmations.\n @author Stefan George - \n @author Richard Meissner - ", "fullyImplemented": true, - "id": 626, + "id": 635, "linearizedBaseContracts": [ - 626, + 635, 63, - 1472, - 1100, - 652, - 1619 + 1504, + 1118, + 662, + 1654 ], "name": "GnosisSafeTeamEdition", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, - "id": 408, + "id": 412, "name": "NAME", "nodeType": "VariableDeclaration", - "scope": 626, + "scope": 635, "src": "336:56:4", "stateVariable": true, "storageLocation": "default", @@ -3660,7 +3770,7 @@ "typeString": "string" }, "typeName": { - "id": 406, + "id": 410, "name": "string", "nodeType": "ElementaryTypeName", "src": "336:6:4", @@ -3672,7 +3782,7 @@ "value": { "argumentTypes": null, "hexValue": "476e6f7369732053616665205465616d2045646974696f6e", - "id": 407, + "id": 411, "isConstant": false, "isLValue": false, "isPure": true, @@ -3691,10 +3801,10 @@ }, { "constant": true, - "id": 411, + "id": 415, "name": "VERSION", "nodeType": "VariableDeclaration", - "scope": 626, + "scope": 635, "src": "398:40:4", "stateVariable": true, "storageLocation": "default", @@ -3703,7 +3813,7 @@ "typeString": "string" }, "typeName": { - "id": 409, + "id": 413, "name": "string", "nodeType": "ElementaryTypeName", "src": "398:6:4", @@ -3715,7 +3825,7 @@ "value": { "argumentTypes": null, "hexValue": "302e302e31", - "id": 410, + "id": 414, "isConstant": false, "isLValue": false, "isPure": true, @@ -3734,10 +3844,10 @@ }, { "constant": false, - "id": 415, + "id": 419, "name": "isExecuted", "nodeType": "VariableDeclaration", - "scope": 626, + "scope": 635, "src": "536:43:4", "stateVariable": true, "storageLocation": "default", @@ -3746,9 +3856,9 @@ "typeString": "mapping(bytes32 => bool)" }, "typeName": { - "id": 414, + "id": 418, "keyType": { - "id": 412, + "id": 416, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "545:7:4", @@ -3764,7 +3874,7 @@ "typeString": "mapping(bytes32 => bool)" }, "valueType": { - "id": 413, + "id": 417, "name": "bool", "nodeType": "ElementaryTypeName", "src": "556:4:4", @@ -3779,10 +3889,10 @@ }, { "constant": false, - "id": 421, + "id": 425, "name": "isApproved", "nodeType": "VariableDeclaration", - "scope": 626, + "scope": 635, "src": "767:66:4", "stateVariable": true, "storageLocation": "default", @@ -3791,9 +3901,9 @@ "typeString": "mapping(bytes32 => mapping(address => uint256))" }, "typeName": { - "id": 420, + "id": 424, "keyType": { - "id": 416, + "id": 420, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "776:7:4", @@ -3809,9 +3919,9 @@ "typeString": "mapping(bytes32 => mapping(address => uint256))" }, "valueType": { - "id": 419, + "id": 423, "keyType": { - "id": 417, + "id": 421, "name": "address", "nodeType": "ElementaryTypeName", "src": "795:7:4", @@ -3827,7 +3937,7 @@ "typeString": "mapping(address => uint256)" }, "valueType": { - "id": 418, + "id": 422, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "806:7:4", @@ -3843,9 +3953,9 @@ }, { "body": { - "id": 469, + "id": 475, "nodeType": "Block", - "src": "1454:380:4", + "src": "1454:443:4", "statements": [ { "expression": { @@ -3857,7 +3967,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 440, + "id": 444, "isConstant": false, "isLValue": false, "isPure": false, @@ -3866,34 +3976,34 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 435, + "id": 439, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, + "referencedDeclaration": 1132, "src": "1542:6:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 438, + "id": 442, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 436, + "id": 440, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2598, + "referencedDeclaration": 2654, "src": "1549:3:4", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 437, + "id": 441, "isConstant": false, "isLValue": false, "isPure": false, @@ -3923,7 +4033,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 439, + "id": 443, "isConstant": false, "isLValue": false, "isPure": true, @@ -3943,6 +4053,24 @@ "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "53656e646572206973206e6f7420616e206f776e6572", + "id": 445, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1567:24:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_b22a5f47ffb62866097c90f90b5b53f76973769c84a10c62e12a07eb2ba1ef4a", + "typeString": "literal_string \"Sender is not an owner\"" + }, + "value": "Sender is not an owner" } ], "expression": { @@ -3950,23 +4078,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_b22a5f47ffb62866097c90f90b5b53f76973769c84a10c62e12a07eb2ba1ef4a", + "typeString": "literal_string \"Sender is not an owner\"" } ], - "id": 434, + "id": 438, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, + "referencedDeclaration": 2658, "src": "1534:7:4", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 441, + "id": 446, "isConstant": false, "isLValue": false, "isPure": false, @@ -3974,28 +4106,28 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1534:32:4", + "src": "1534:58:4", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 442, + "id": 447, "nodeType": "ExpressionStatement", - "src": "1534:32:4" + "src": "1534:58:4" }, { "assignments": [ - 444 + 449 ], "declarations": [ { "constant": false, - "id": 444, + "id": 449, "name": "transactionHash", "nodeType": "VariableDeclaration", - "scope": 470, - "src": "1576:23:4", + "scope": 476, + "src": "1602:23:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4003,10 +4135,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 443, + "id": 448, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1576:7:4", + "src": "1602:7:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -4016,18 +4148,18 @@ "visibility": "internal" } ], - "id": 452, + "id": 457, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 446, + "id": 451, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 423, - "src": "1621:2:4", + "referencedDeclaration": 427, + "src": "1647:2:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4035,12 +4167,12 @@ }, { "argumentTypes": null, - "id": 447, + "id": 452, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 425, - "src": "1625:5:4", + "referencedDeclaration": 429, + "src": "1651:5:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4048,12 +4180,12 @@ }, { "argumentTypes": null, - "id": 448, + "id": 453, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 427, - "src": "1632:4:4", + "referencedDeclaration": 431, + "src": "1658:4:4", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -4061,12 +4193,12 @@ }, { "argumentTypes": null, - "id": 449, + "id": 454, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 429, - "src": "1638:9:4", + "referencedDeclaration": 433, + "src": "1664:9:4", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -4074,12 +4206,12 @@ }, { "argumentTypes": null, - "id": 450, + "id": 455, "name": "nonce", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 431, - "src": "1649:5:4", + "referencedDeclaration": 435, + "src": "1675:5:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4109,18 +4241,18 @@ "typeString": "uint256" } ], - "id": 445, + "id": 450, "name": "getTransactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 625, - "src": "1602:18:4", + "referencedDeclaration": 634, + "src": "1628:18:4", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bytes32_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) view returns (bytes32)" } }, - "id": 451, + "id": 456, "isConstant": false, "isLValue": false, "isPure": false, @@ -4128,14 +4260,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1602:53:4", + "src": "1628:53:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "VariableDeclarationStatement", - "src": "1576:79:4" + "src": "1602:79:4" }, { "expression": { @@ -4143,7 +4275,7 @@ "arguments": [ { "argumentTypes": null, - "id": 457, + "id": 462, "isConstant": false, "isLValue": false, "isPure": false, @@ -4151,31 +4283,31 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "1745:28:4", + "src": "1771:28:4", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 454, + "id": 459, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 415, - "src": "1746:10:4", + "referencedDeclaration": 419, + "src": "1772:10:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 456, + "id": 461, "indexExpression": { "argumentTypes": null, - "id": 455, + "id": 460, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 444, - "src": "1757:15:4", + "referencedDeclaration": 449, + "src": "1783:15:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -4186,7 +4318,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1746:27:4", + "src": "1772:27:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4196,6 +4328,24 @@ "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "53616665207472616e73616374696f6e20616c7265616479206578656375746564", + "id": 463, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1801:35:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_78cc689035dd21cb903fbad8327952ddf83800cf1115919ff1ad2be36eed70db", + "typeString": "literal_string \"Safe transaction already executed\"" + }, + "value": "Safe transaction already executed" } ], "expression": { @@ -4203,23 +4353,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_78cc689035dd21cb903fbad8327952ddf83800cf1115919ff1ad2be36eed70db", + "typeString": "literal_string \"Safe transaction already executed\"" } ], - "id": 453, + "id": 458, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "1737:7:4", + "referencedDeclaration": 2658, + "src": "1763:7:4", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 458, + "id": 464, "isConstant": false, "isLValue": false, "isPure": false, @@ -4227,20 +4381,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1737:37:4", + "src": "1763:74:4", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 459, + "id": 465, "nodeType": "ExpressionStatement", - "src": "1737:37:4" + "src": "1763:74:4" }, { "expression": { "argumentTypes": null, - "id": 467, + "id": 473, "isConstant": false, "isLValue": false, "isPure": false, @@ -4251,26 +4405,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 460, + "id": 466, "name": "isApproved", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 421, - "src": "1784:10:4", + "referencedDeclaration": 425, + "src": "1847:10:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(bytes32 => mapping(address => uint256))" } }, - "id": 464, + "id": 470, "indexExpression": { "argumentTypes": null, - "id": 461, + "id": 467, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 444, - "src": "1795:15:4", + "referencedDeclaration": 449, + "src": "1858:15:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -4281,29 +4435,29 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1784:27:4", + "src": "1847:27:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 465, + "id": 471, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 462, + "id": 468, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2598, - "src": "1812:3:4", + "referencedDeclaration": 2654, + "src": "1875:3:4", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 463, + "id": 469, "isConstant": false, "isLValue": false, "isPure": false, @@ -4311,7 +4465,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1812:10:4", + "src": "1875:10:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4322,7 +4476,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1784:39:4", + "src": "1847:39:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4333,14 +4487,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "31", - "id": 466, + "id": 472, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1826:1:4", + "src": "1889:1:4", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -4348,20 +4502,20 @@ }, "value": "1" }, - "src": "1784:43:4", + "src": "1847:43:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 468, + "id": 474, "nodeType": "ExpressionStatement", - "src": "1784:43:4" + "src": "1847:43:4" } ] }, "documentation": "@dev Allows to confirm a Safe transaction with a regular transaction.\n This can only be done from an owner address.\n @param to Destination address of Safe transaction.\n @param value Ether value of Safe transaction.\n @param data Data payload of Safe transaction.\n @param operation Operation type of Safe transaction.\n @param nonce Nonce used for this Safe transaction.", - "id": 470, + "id": 476, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -4369,15 +4523,15 @@ "name": "approveTransactionWithParameters", "nodeType": "FunctionDefinition", "parameters": { - "id": 432, + "id": 436, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 423, + "id": 427, "name": "to", "nodeType": "VariableDeclaration", - "scope": 470, + "scope": 476, "src": "1314:10:4", "stateVariable": false, "storageLocation": "default", @@ -4386,7 +4540,7 @@ "typeString": "address" }, "typeName": { - "id": 422, + "id": 426, "name": "address", "nodeType": "ElementaryTypeName", "src": "1314:7:4", @@ -4400,10 +4554,10 @@ }, { "constant": false, - "id": 425, + "id": 429, "name": "value", "nodeType": "VariableDeclaration", - "scope": 470, + "scope": 476, "src": "1335:13:4", "stateVariable": false, "storageLocation": "default", @@ -4412,7 +4566,7 @@ "typeString": "uint256" }, "typeName": { - "id": 424, + "id": 428, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1335:7:4", @@ -4426,10 +4580,10 @@ }, { "constant": false, - "id": 427, + "id": 431, "name": "data", "nodeType": "VariableDeclaration", - "scope": 470, + "scope": 476, "src": "1359:10:4", "stateVariable": false, "storageLocation": "default", @@ -4438,7 +4592,7 @@ "typeString": "bytes" }, "typeName": { - "id": 426, + "id": 430, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1359:5:4", @@ -4452,10 +4606,10 @@ }, { "constant": false, - "id": 429, + "id": 433, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 470, + "scope": 476, "src": "1380:24:4", "stateVariable": false, "storageLocation": "default", @@ -4465,7 +4619,7 @@ }, "typeName": { "contractScope": null, - "id": 428, + "id": 432, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 29, @@ -4480,10 +4634,10 @@ }, { "constant": false, - "id": 431, + "id": 435, "name": "nonce", "nodeType": "VariableDeclaration", - "scope": 470, + "scope": 476, "src": "1415:13:4", "stateVariable": false, "storageLocation": "default", @@ -4492,7 +4646,7 @@ "typeString": "uint256" }, "typeName": { - "id": 430, + "id": 434, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1415:7:4", @@ -4509,35 +4663,35 @@ }, "payable": false, "returnParameters": { - "id": 433, + "id": 437, "nodeType": "ParameterList", "parameters": [], "src": "1454:0:4" }, - "scope": 626, - "src": "1263:571:4", + "scope": 635, + "src": "1263:634:4", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 521, + "id": 529, "nodeType": "Block", - "src": "2460:358:4", + "src": "2523:433:4", "statements": [ { "assignments": [ - 484 + 490 ], "declarations": [ { "constant": false, - "id": 484, + "id": 490, "name": "transactionHash", "nodeType": "VariableDeclaration", - "scope": 522, - "src": "2470:23:4", + "scope": 530, + "src": "2533:23:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4545,10 +4699,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 483, + "id": 489, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "2470:7:4", + "src": "2533:7:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -4558,18 +4712,18 @@ "visibility": "internal" } ], - "id": 492, + "id": 498, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 486, + "id": 492, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 472, - "src": "2515:2:4", + "referencedDeclaration": 478, + "src": "2578:2:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4577,12 +4731,12 @@ }, { "argumentTypes": null, - "id": 487, + "id": 493, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 474, - "src": "2519:5:4", + "referencedDeclaration": 480, + "src": "2582:5:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4590,12 +4744,12 @@ }, { "argumentTypes": null, - "id": 488, + "id": 494, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 476, - "src": "2526:4:4", + "referencedDeclaration": 482, + "src": "2589:4:4", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -4603,12 +4757,12 @@ }, { "argumentTypes": null, - "id": 489, + "id": 495, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 478, - "src": "2532:9:4", + "referencedDeclaration": 484, + "src": "2595:9:4", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -4616,12 +4770,12 @@ }, { "argumentTypes": null, - "id": 490, + "id": 496, "name": "nonce", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 480, - "src": "2543:5:4", + "referencedDeclaration": 486, + "src": "2606:5:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4651,18 +4805,18 @@ "typeString": "uint256" } ], - "id": 485, + "id": 491, "name": "getTransactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 625, - "src": "2496:18:4", + "referencedDeclaration": 634, + "src": "2559:18:4", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bytes32_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) view returns (bytes32)" } }, - "id": 491, + "id": 497, "isConstant": false, "isLValue": false, "isPure": false, @@ -4670,14 +4824,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2496:53:4", + "src": "2559:53:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "VariableDeclarationStatement", - "src": "2470:79:4" + "src": "2533:79:4" }, { "expression": { @@ -4685,7 +4839,7 @@ "arguments": [ { "argumentTypes": null, - "id": 497, + "id": 503, "isConstant": false, "isLValue": false, "isPure": false, @@ -4693,31 +4847,31 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "2567:28:4", + "src": "2630:28:4", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 494, + "id": 500, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 415, - "src": "2568:10:4", + "referencedDeclaration": 419, + "src": "2631:10:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 496, + "id": 502, "indexExpression": { "argumentTypes": null, - "id": 495, + "id": 501, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 484, - "src": "2579:15:4", + "referencedDeclaration": 490, + "src": "2642:15:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -4728,7 +4882,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2568:27:4", + "src": "2631:27:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4738,6 +4892,24 @@ "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "53616665207472616e73616374696f6e20616c7265616479206578656375746564", + "id": 504, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2660:35:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_78cc689035dd21cb903fbad8327952ddf83800cf1115919ff1ad2be36eed70db", + "typeString": "literal_string \"Safe transaction already executed\"" + }, + "value": "Safe transaction already executed" } ], "expression": { @@ -4745,23 +4917,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_78cc689035dd21cb903fbad8327952ddf83800cf1115919ff1ad2be36eed70db", + "typeString": "literal_string \"Safe transaction already executed\"" } ], - "id": 493, + "id": 499, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "2559:7:4", + "referencedDeclaration": 2658, + "src": "2622:7:4", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 498, + "id": 505, "isConstant": false, "isLValue": false, "isPure": false, @@ -4769,15 +4945,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2559:37:4", + "src": "2622:74:4", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 499, + "id": 506, "nodeType": "ExpressionStatement", - "src": "2559:37:4" + "src": "2622:74:4" }, { "expression": { @@ -4785,12 +4961,12 @@ "arguments": [ { "argumentTypes": null, - "id": 501, + "id": 508, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 484, - "src": "2633:15:4", + "referencedDeclaration": 490, + "src": "2733:15:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -4804,18 +4980,18 @@ "typeString": "bytes32" } ], - "id": 500, + "id": 507, "name": "checkAndClearConfirmations", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 591, - "src": "2606:26:4", + "referencedDeclaration": 600, + "src": "2706:26:4", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$__$", "typeString": "function (bytes32)" } }, - "id": 502, + "id": 509, "isConstant": false, "isLValue": false, "isPure": false, @@ -4823,20 +4999,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2606:43:4", + "src": "2706:43:4", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 503, + "id": 510, "nodeType": "ExpressionStatement", - "src": "2606:43:4" + "src": "2706:43:4" }, { "expression": { "argumentTypes": null, - "id": 508, + "id": 515, "isConstant": false, "isLValue": false, "isPure": false, @@ -4845,26 +5021,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 504, + "id": 511, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 415, - "src": "2712:10:4", + "referencedDeclaration": 419, + "src": "2812:10:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 506, + "id": 513, "indexExpression": { "argumentTypes": null, - "id": 505, + "id": 512, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 484, - "src": "2723:15:4", + "referencedDeclaration": 490, + "src": "2823:15:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -4875,7 +5051,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2712:27:4", + "src": "2812:27:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4886,14 +5062,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 507, + "id": 514, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "2742:4:4", + "src": "2842:4:4", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -4901,15 +5077,15 @@ }, "value": "true" }, - "src": "2712:34:4", + "src": "2812:34:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 509, + "id": 516, "nodeType": "ExpressionStatement", - "src": "2712:34:4" + "src": "2812:34:4" }, { "expression": { @@ -4920,12 +5096,12 @@ "arguments": [ { "argumentTypes": null, - "id": 512, + "id": 519, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 472, - "src": "2772:2:4", + "referencedDeclaration": 478, + "src": "2872:2:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4933,12 +5109,12 @@ }, { "argumentTypes": null, - "id": 513, + "id": 520, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 474, - "src": "2776:5:4", + "referencedDeclaration": 480, + "src": "2876:5:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4946,12 +5122,12 @@ }, { "argumentTypes": null, - "id": 514, + "id": 521, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 476, - "src": "2783:4:4", + "referencedDeclaration": 482, + "src": "2883:4:4", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -4959,12 +5135,12 @@ }, { "argumentTypes": null, - "id": 515, + "id": 522, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 478, - "src": "2789:9:4", + "referencedDeclaration": 484, + "src": "2889:9:4", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -4975,18 +5151,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 516, + "id": 523, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2591, - "src": "2800:7:4", + "referencedDeclaration": 2647, + "src": "2900:7:4", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 517, + "id": 524, "isConstant": false, "isLValue": false, "isPure": false, @@ -4994,7 +5170,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2800:9:4", + "src": "2900:9:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5024,18 +5200,18 @@ "typeString": "uint256" } ], - "id": 511, + "id": 518, "name": "execute", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 989, - "src": "2764:7:4", + "referencedDeclaration": 1007, + "src": "2864:7:4", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) returns (bool)" } }, - "id": 518, + "id": 525, "isConstant": false, "isLValue": false, "isPure": false, @@ -5043,11 +5219,29 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2764:46:4", + "src": "2864:46:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "436f756c64206e6f7420657865637574652073616665207472616e73616374696f6e", + "id": 526, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2912:36:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_d12b254798790cac45e0b54201b0ecf8f3257f9e4c1cfc4633e272006616c878", + "typeString": "literal_string \"Could not execute safe transaction\"" + }, + "value": "Could not execute safe transaction" } ], "expression": { @@ -5055,23 +5249,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_d12b254798790cac45e0b54201b0ecf8f3257f9e4c1cfc4633e272006616c878", + "typeString": "literal_string \"Could not execute safe transaction\"" } ], - "id": 510, + "id": 517, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "2756:7:4", + "referencedDeclaration": 2658, + "src": "2856:7:4", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 519, + "id": 527, "isConstant": false, "isLValue": false, "isPure": false, @@ -5079,20 +5277,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2756:55:4", + "src": "2856:93:4", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 520, + "id": 528, "nodeType": "ExpressionStatement", - "src": "2756:55:4" + "src": "2856:93:4" } ] }, "documentation": "@dev Allows to execute a Safe transaction confirmed by required number of owners. If the sender is an owner this is automatically confirmed.\n @param to Destination address of Safe transaction.\n @param value Ether value of Safe transaction.\n @param data Data payload of Safe transaction.\n @param operation Operation type of Safe transaction.\n @param nonce Nonce used for this Safe transaction.", - "id": 522, + "id": 530, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -5100,16 +5298,16 @@ "name": "execTransactionIfApproved", "nodeType": "FunctionDefinition", "parameters": { - "id": 481, + "id": 487, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 472, + "id": 478, "name": "to", "nodeType": "VariableDeclaration", - "scope": 522, - "src": "2320:10:4", + "scope": 530, + "src": "2383:10:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5117,10 +5315,10 @@ "typeString": "address" }, "typeName": { - "id": 471, + "id": 477, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2320:7:4", + "src": "2383:7:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5131,11 +5329,11 @@ }, { "constant": false, - "id": 474, + "id": 480, "name": "value", "nodeType": "VariableDeclaration", - "scope": 522, - "src": "2341:13:4", + "scope": 530, + "src": "2404:13:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5143,10 +5341,10 @@ "typeString": "uint256" }, "typeName": { - "id": 473, + "id": 479, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2341:7:4", + "src": "2404:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5157,11 +5355,11 @@ }, { "constant": false, - "id": 476, + "id": 482, "name": "data", "nodeType": "VariableDeclaration", - "scope": 522, - "src": "2365:10:4", + "scope": 530, + "src": "2428:10:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5169,10 +5367,10 @@ "typeString": "bytes" }, "typeName": { - "id": 475, + "id": 481, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "2365:5:4", + "src": "2428:5:4", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -5183,11 +5381,11 @@ }, { "constant": false, - "id": 478, + "id": 484, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 522, - "src": "2386:24:4", + "scope": 530, + "src": "2449:24:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5196,11 +5394,11 @@ }, "typeName": { "contractScope": null, - "id": 477, + "id": 483, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 29, - "src": "2386:14:4", + "src": "2449:14:4", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -5211,11 +5409,11 @@ }, { "constant": false, - "id": 480, + "id": 486, "name": "nonce", "nodeType": "VariableDeclaration", - "scope": 522, - "src": "2421:13:4", + "scope": 530, + "src": "2484:13:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5223,10 +5421,10 @@ "typeString": "uint256" }, "typeName": { - "id": 479, + "id": 485, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2421:7:4", + "src": "2484:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5236,39 +5434,39 @@ "visibility": "internal" } ], - "src": "2310:130:4" + "src": "2373:130:4" }, "payable": false, "returnParameters": { - "id": 482, + "id": 488, "nodeType": "ParameterList", "parameters": [], - "src": "2460:0:4" + "src": "2523:0:4" }, - "scope": 626, - "src": "2276:542:4", + "scope": 635, + "src": "2339:617:4", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 590, + "id": 599, "nodeType": "Block", - "src": "2906:651:4", + "src": "3044:679:4", "statements": [ { "assignments": [ - 530 + 538 ], "declarations": [ { "constant": false, - "id": 530, + "id": 538, "name": "approvals", "nodeType": "VariableDeclaration", - "scope": 591, - "src": "2916:37:4", + "scope": 600, + "src": "3054:37:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5276,28 +5474,28 @@ "typeString": "mapping(address => uint256)" }, "typeName": { - "id": 529, + "id": 537, "keyType": { - "id": 527, + "id": 535, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2924:7:4", + "src": "3062:7:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "Mapping", - "src": "2916:27:4", + "src": "3054:27:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" }, "valueType": { - "id": 528, + "id": 536, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2935:7:4", + "src": "3073:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5308,31 +5506,31 @@ "visibility": "internal" } ], - "id": 534, + "id": 542, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 531, + "id": 539, "name": "isApproved", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 421, - "src": "2956:10:4", + "referencedDeclaration": 425, + "src": "3094:10:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_uint256_$_$", "typeString": "mapping(bytes32 => mapping(address => uint256))" } }, - "id": 533, + "id": 541, "indexExpression": { "argumentTypes": null, - "id": 532, + "id": 540, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 524, - "src": "2967:15:4", + "referencedDeclaration": 532, + "src": "3105:15:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -5343,27 +5541,27 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2956:27:4", + "src": "3094:27:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, "nodeType": "VariableDeclarationStatement", - "src": "2916:67:4" + "src": "3054:67:4" }, { "assignments": [ - 536 + 544 ], "declarations": [ { "constant": false, - "id": 536, + "id": 544, "name": "confirmations", "nodeType": "VariableDeclaration", - "scope": 591, - "src": "2993:21:4", + "scope": 600, + "src": "3131:21:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5371,10 +5569,10 @@ "typeString": "uint256" }, "typeName": { - "id": 535, + "id": 543, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2993:7:4", + "src": "3131:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5384,18 +5582,18 @@ "visibility": "internal" } ], - "id": 538, + "id": 546, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 537, + "id": 545, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3017:1:4", + "src": "3155:1:4", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -5404,20 +5602,20 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "2993:25:4" + "src": "3131:25:4" }, { "assignments": [ - 540 + 548 ], "declarations": [ { "constant": false, - "id": 540, + "id": 548, "name": "currentOwner", "nodeType": "VariableDeclaration", - "scope": 591, - "src": "3070:20:4", + "scope": 600, + "src": "3208:20:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5425,10 +5623,10 @@ "typeString": "address" }, "typeName": { - "id": 539, + "id": 547, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3070:7:4", + "src": "3208:7:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5438,31 +5636,31 @@ "visibility": "internal" } ], - "id": 544, + "id": 552, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 541, + "id": 549, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "3093:6:4", + "referencedDeclaration": 1132, + "src": "3231:6:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 543, + "id": 551, "indexExpression": { "argumentTypes": null, - "id": 542, + "id": 550, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1110, - "src": "3100:15:4", + "referencedDeclaration": 1128, + "src": "3238:15:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5473,33 +5671,33 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3093:23:4", + "src": "3231:23:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "3070:46:4" + "src": "3208:46:4" }, { "body": { - "id": 582, + "id": 590, "nodeType": "Block", - "src": "3166:340:4", + "src": "3304:340:4", "statements": [ { "assignments": [ - 549 + 557 ], "declarations": [ { "constant": false, - "id": 549, + "id": 557, "name": "ownerConfirmed", "nodeType": "VariableDeclaration", - "scope": 591, - "src": "3180:19:4", + "scope": 600, + "src": "3318:19:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5507,10 +5705,10 @@ "typeString": "bool" }, "typeName": { - "id": 548, + "id": 556, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "3180:4:4", + "src": "3318:4:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5520,14 +5718,14 @@ "visibility": "internal" } ], - "id": 555, + "id": 563, "initialValue": { "argumentTypes": null, "commonType": { "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 554, + "id": 562, "isConstant": false, "isLValue": false, "isPure": false, @@ -5536,26 +5734,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 550, + "id": 558, "name": "approvals", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 530, - "src": "3202:9:4", + "referencedDeclaration": 538, + "src": "3340:9:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 552, + "id": 560, "indexExpression": { "argumentTypes": null, - "id": 551, + "id": 559, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 540, - "src": "3212:12:4", + "referencedDeclaration": 548, + "src": "3350:12:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5566,7 +5764,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3202:23:4", + "src": "3340:23:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5577,14 +5775,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 553, + "id": 561, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3229:1:4", + "src": "3367:1:4", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -5592,14 +5790,14 @@ }, "value": "0" }, - "src": "3202:28:4", + "src": "3340:28:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "nodeType": "VariableDeclarationStatement", - "src": "3180:50:4" + "src": "3318:50:4" }, { "condition": { @@ -5608,7 +5806,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 561, + "id": 569, "isConstant": false, "isLValue": false, "isPure": false, @@ -5619,19 +5817,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 559, + "id": 567, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 556, + "id": 564, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 540, - "src": "3247:12:4", + "referencedDeclaration": 548, + "src": "3385:12:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5643,18 +5841,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 557, + "id": 565, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2598, - "src": "3263:3:4", + "referencedDeclaration": 2654, + "src": "3401:3:4", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 558, + "id": 566, "isConstant": false, "isLValue": false, "isPure": false, @@ -5662,13 +5860,13 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3263:10:4", + "src": "3401:10:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "3247:26:4", + "src": "3385:26:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5678,59 +5876,59 @@ "operator": "||", "rightExpression": { "argumentTypes": null, - "id": 560, + "id": 568, "name": "ownerConfirmed", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 549, - "src": "3277:14:4", + "referencedDeclaration": 557, + "src": "3415:14:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "3247:44:4", + "src": "3385:44:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 575, + "id": 583, "nodeType": "IfStatement", - "src": "3244:203:4", + "src": "3382:203:4", "trueBody": { - "id": 574, + "id": 582, "nodeType": "Block", - "src": "3293:154:4", + "src": "3431:154:4", "statements": [ { "condition": { "argumentTypes": null, - "id": 562, + "id": 570, "name": "ownerConfirmed", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 549, - "src": "3315:14:4", + "referencedDeclaration": 557, + "src": "3453:14:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 570, + "id": 578, "nodeType": "IfStatement", - "src": "3311:88:4", + "src": "3449:88:4", "trueBody": { - "id": 569, + "id": 577, "nodeType": "Block", - "src": "3331:68:4", + "src": "3469:68:4", "statements": [ { "expression": { "argumentTypes": null, - "id": 567, + "id": 575, "isConstant": false, "isLValue": false, "isPure": false, @@ -5739,26 +5937,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 563, + "id": 571, "name": "approvals", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 530, - "src": "3353:9:4", + "referencedDeclaration": 538, + "src": "3491:9:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$", "typeString": "mapping(address => uint256)" } }, - "id": 565, + "id": 573, "indexExpression": { "argumentTypes": null, - "id": 564, + "id": 572, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 540, - "src": "3363:12:4", + "referencedDeclaration": 548, + "src": "3501:12:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5769,7 +5967,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "3353:23:4", + "src": "3491:23:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5780,14 +5978,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "30", - "id": 566, + "id": 574, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3379:1:4", + "src": "3517:1:4", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -5795,15 +5993,15 @@ }, "value": "0" }, - "src": "3353:27:4", + "src": "3491:27:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 568, + "id": 576, "nodeType": "ExpressionStatement", - "src": "3353:27:4" + "src": "3491:27:4" } ] } @@ -5811,7 +6009,7 @@ { "expression": { "argumentTypes": null, - "id": 572, + "id": 580, "isConstant": false, "isLValue": false, "isPure": false, @@ -5819,15 +6017,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "3416:16:4", + "src": "3554:16:4", "subExpression": { "argumentTypes": null, - "id": 571, + "id": 579, "name": "confirmations", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 536, - "src": "3416:13:4", + "referencedDeclaration": 544, + "src": "3554:13:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5838,9 +6036,9 @@ "typeString": "uint256" } }, - "id": 573, + "id": 581, "nodeType": "ExpressionStatement", - "src": "3416:16:4" + "src": "3554:16:4" } ] } @@ -5848,19 +6046,19 @@ { "expression": { "argumentTypes": null, - "id": 580, + "id": 588, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 576, + "id": 584, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 540, - "src": "3460:12:4", + "referencedDeclaration": 548, + "src": "3598:12:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5872,26 +6070,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 577, + "id": 585, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "3475:6:4", + "referencedDeclaration": 1132, + "src": "3613:6:4", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 579, + "id": 587, "indexExpression": { "argumentTypes": null, - "id": 578, + "id": 586, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 540, - "src": "3482:12:4", + "referencedDeclaration": 548, + "src": "3620:12:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5902,21 +6100,21 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3475:20:4", + "src": "3613:20:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "3460:35:4", + "src": "3598:35:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 581, + "id": 589, "nodeType": "ExpressionStatement", - "src": "3460:35:4" + "src": "3598:35:4" } ] }, @@ -5926,19 +6124,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 547, + "id": 555, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 545, + "id": 553, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 540, - "src": "3133:12:4", + "referencedDeclaration": 548, + "src": "3271:12:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5948,26 +6146,26 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 546, + "id": 554, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1110, - "src": "3149:15:4", + "referencedDeclaration": 1128, + "src": "3287:15:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "3133:31:4", + "src": "3271:31:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 583, + "id": 591, "nodeType": "WhileStatement", - "src": "3126:380:4" + "src": "3264:380:4" }, { "expression": { @@ -5979,19 +6177,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 587, + "id": 595, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 585, + "id": 593, "name": "confirmations", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 536, - "src": "3523:13:4", + "referencedDeclaration": 544, + "src": "3661:13:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6001,22 +6199,40 @@ "operator": ">=", "rightExpression": { "argumentTypes": null, - "id": 586, + "id": 594, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1118, - "src": "3540:9:4", + "referencedDeclaration": 1136, + "src": "3678:9:4", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "3523:26:4", + "src": "3661:26:4", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "4e6f7420656e6f75676820636f6e6669726d6174696f6e73", + "id": 596, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3689:26:4", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_b345da2aaad39251196728cc7926bed93e890843c2a47c2cdd1122427d828094", + "typeString": "literal_string \"Not enough confirmations\"" + }, + "value": "Not enough confirmations" } ], "expression": { @@ -6024,23 +6240,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_b345da2aaad39251196728cc7926bed93e890843c2a47c2cdd1122427d828094", + "typeString": "literal_string \"Not enough confirmations\"" } ], - "id": 584, + "id": 592, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "3515:7:4", + "referencedDeclaration": 2658, + "src": "3653:7:4", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 588, + "id": 597, "isConstant": false, "isLValue": false, "isPure": false, @@ -6048,20 +6268,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3515:35:4", + "src": "3653:63:4", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 589, + "id": 598, "nodeType": "ExpressionStatement", - "src": "3515:35:4" + "src": "3653:63:4" } ] }, "documentation": null, - "id": 591, + "id": 600, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -6069,16 +6289,16 @@ "name": "checkAndClearConfirmations", "nodeType": "FunctionDefinition", "parameters": { - "id": 525, + "id": 533, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 524, + "id": 532, "name": "transactionHash", "nodeType": "VariableDeclaration", - "scope": 591, - "src": "2860:23:4", + "scope": 600, + "src": "2998:23:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6086,10 +6306,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 523, + "id": 531, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "2860:7:4", + "src": "2998:7:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -6099,26 +6319,26 @@ "visibility": "internal" } ], - "src": "2859:25:4" + "src": "2997:25:4" }, "payable": false, "returnParameters": { - "id": 526, + "id": 534, "nodeType": "ParameterList", "parameters": [], - "src": "2906:0:4" + "src": "3044:0:4" }, - "scope": 626, - "src": "2824:733:4", + "scope": 635, + "src": "2962:761:4", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 624, + "id": 633, "nodeType": "Block", - "src": "4051:113:4", + "src": "4217:113:4", "statements": [ { "expression": { @@ -6133,14 +6353,14 @@ { "argumentTypes": null, "hexValue": "30783139", - "id": 610, + "id": 619, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4100:4:4", + "src": "4266:4:4", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_25_by_1", @@ -6156,20 +6376,20 @@ "typeString": "int_const 25" } ], - "id": 609, + "id": 618, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "4095:4:4", + "src": "4261:4:4", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes1_$", "typeString": "type(bytes1)" }, "typeName": "byte" }, - "id": 611, + "id": 620, "isConstant": false, "isLValue": false, "isPure": true, @@ -6177,7 +6397,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4095:10:4", + "src": "4261:10:4", "typeDescriptions": { "typeIdentifier": "t_bytes1", "typeString": "bytes1" @@ -6189,14 +6409,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 613, + "id": 622, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4112:1:4", + "src": "4278:1:4", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -6212,20 +6432,20 @@ "typeString": "int_const 0" } ], - "id": 612, + "id": 621, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "4107:4:4", + "src": "4273:4:4", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes1_$", "typeString": "type(bytes1)" }, "typeName": "byte" }, - "id": 614, + "id": 623, "isConstant": false, "isLValue": false, "isPure": true, @@ -6233,7 +6453,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4107:7:4", + "src": "4273:7:4", "typeDescriptions": { "typeIdentifier": "t_bytes1", "typeString": "bytes1" @@ -6241,25 +6461,25 @@ }, { "argumentTypes": null, - "id": 615, + "id": 624, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2633, - "src": "4116:4:4", + "referencedDeclaration": 2689, + "src": "4282:4:4", "typeDescriptions": { - "typeIdentifier": "t_contract$_GnosisSafeTeamEdition_$626", + "typeIdentifier": "t_contract$_GnosisSafeTeamEdition_$635", "typeString": "contract GnosisSafeTeamEdition" } }, { "argumentTypes": null, - "id": 616, + "id": 625, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 593, - "src": "4122:2:4", + "referencedDeclaration": 602, + "src": "4288:2:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6267,12 +6487,12 @@ }, { "argumentTypes": null, - "id": 617, + "id": 626, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 595, - "src": "4126:5:4", + "referencedDeclaration": 604, + "src": "4292:5:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6280,12 +6500,12 @@ }, { "argumentTypes": null, - "id": 618, + "id": 627, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 597, - "src": "4133:4:4", + "referencedDeclaration": 606, + "src": "4299:4:4", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -6293,12 +6513,12 @@ }, { "argumentTypes": null, - "id": 619, + "id": 628, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 599, - "src": "4139:9:4", + "referencedDeclaration": 608, + "src": "4305:9:4", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -6306,12 +6526,12 @@ }, { "argumentTypes": null, - "id": 620, + "id": 629, "name": "nonce", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 601, - "src": "4150:5:4", + "referencedDeclaration": 610, + "src": "4316:5:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6329,7 +6549,7 @@ "typeString": "bytes1" }, { - "typeIdentifier": "t_contract$_GnosisSafeTeamEdition_$626", + "typeIdentifier": "t_contract$_GnosisSafeTeamEdition_$635", "typeString": "contract GnosisSafeTeamEdition" }, { @@ -6355,18 +6575,18 @@ ], "expression": { "argumentTypes": null, - "id": 607, + "id": 616, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2585, - "src": "4078:3:4", + "referencedDeclaration": 2641, + "src": "4244:3:4", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, - "id": 608, + "id": 617, "isConstant": false, "isLValue": false, "isPure": true, @@ -6374,13 +6594,13 @@ "memberName": "encodePacked", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "4078:16:4", + "src": "4244:16:4", "typeDescriptions": { "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)" } }, - "id": 621, + "id": 630, "isConstant": false, "isLValue": false, "isPure": false, @@ -6388,7 +6608,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4078:78:4", + "src": "4244:78:4", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -6402,18 +6622,18 @@ "typeString": "bytes memory" } ], - "id": 606, + "id": 615, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2592, - "src": "4068:9:4", + "referencedDeclaration": 2648, + "src": "4234:9:4", "typeDescriptions": { "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", "typeString": "function () pure returns (bytes32)" } }, - "id": 622, + "id": 631, "isConstant": false, "isLValue": false, "isPure": false, @@ -6421,21 +6641,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4068:89:4", + "src": "4234:89:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "functionReturnParameters": 605, - "id": 623, + "functionReturnParameters": 614, + "id": 632, "nodeType": "Return", - "src": "4061:96:4" + "src": "4227:96:4" } ] }, "documentation": "@dev Returns hash to be signed by owners.\n @param to Destination address.\n @param value Ether value.\n @param data Data payload.\n @param operation Operation type.\n @param nonce Transaction nonce.\n @return Transaction hash.", - "id": 625, + "id": 634, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -6443,16 +6663,16 @@ "name": "getTransactionHash", "nodeType": "FunctionDefinition", "parameters": { - "id": 602, + "id": 611, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 593, + "id": 602, "name": "to", "nodeType": "VariableDeclaration", - "scope": 625, - "src": "3872:10:4", + "scope": 634, + "src": "4038:10:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6460,10 +6680,10 @@ "typeString": "address" }, "typeName": { - "id": 592, + "id": 601, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3872:7:4", + "src": "4038:7:4", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6474,11 +6694,11 @@ }, { "constant": false, - "id": 595, + "id": 604, "name": "value", "nodeType": "VariableDeclaration", - "scope": 625, - "src": "3893:13:4", + "scope": 634, + "src": "4059:13:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6486,10 +6706,10 @@ "typeString": "uint256" }, "typeName": { - "id": 594, + "id": 603, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3893:7:4", + "src": "4059:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6500,11 +6720,11 @@ }, { "constant": false, - "id": 597, + "id": 606, "name": "data", "nodeType": "VariableDeclaration", - "scope": 625, - "src": "3917:10:4", + "scope": 634, + "src": "4083:10:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6512,10 +6732,10 @@ "typeString": "bytes" }, "typeName": { - "id": 596, + "id": 605, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "3917:5:4", + "src": "4083:5:4", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -6526,11 +6746,11 @@ }, { "constant": false, - "id": 599, + "id": 608, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 625, - "src": "3938:24:4", + "scope": 634, + "src": "4104:24:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6539,11 +6759,11 @@ }, "typeName": { "contractScope": null, - "id": 598, + "id": 607, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 29, - "src": "3938:14:4", + "src": "4104:14:4", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -6554,11 +6774,11 @@ }, { "constant": false, - "id": 601, + "id": 610, "name": "nonce", "nodeType": "VariableDeclaration", - "scope": 625, - "src": "3973:13:4", + "scope": 634, + "src": "4139:13:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6566,10 +6786,10 @@ "typeString": "uint256" }, "typeName": { - "id": 600, + "id": 609, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3973:7:4", + "src": "4139:7:4", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6579,20 +6799,20 @@ "visibility": "internal" } ], - "src": "3862:130:4" + "src": "4028:130:4" }, "payable": false, "returnParameters": { - "id": 605, + "id": 614, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 604, + "id": 613, "name": "", "nodeType": "VariableDeclaration", - "scope": 625, - "src": "4038:7:4", + "scope": 634, + "src": "4204:7:4", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6600,10 +6820,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 603, + "id": 612, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "4038:7:4", + "src": "4204:7:4", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -6613,20 +6833,20 @@ "visibility": "internal" } ], - "src": "4037:9:4" + "src": "4203:9:4" }, - "scope": 626, - "src": "3835:329:4", + "scope": 635, + "src": "4001:329:4", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 627, - "src": "272:3894:4" + "scope": 636, + "src": "272:4060:4" } ], - "src": "0:4167:4" + "src": "0:4333:4" }, "compiler": { "name": "solc", @@ -6636,22 +6856,16 @@ "4": { "events": {}, "links": {}, - "address": "0x2c4aed3a457a6c22b69e3c265e8ea2f1c63c3a22", - "transactionHash": "0xadc1acb04257fdd33996d12fb7aacca9dd0bbd4791091cadba4feb42d58d84b7" - }, - "1527316019334": { - "events": {}, - "links": {}, - "address": "0x8a0005965449a50c878f81366c85b1b8ed684cd9", - "transactionHash": "0xb4a3d52a904d829e91e4502b2b0659cbfd5a90dd2af4c90f9d488e4e3f3b47d2" + "address": "0x49177854cc884e0fbdadf69f3ddd255b4693b525", + "transactionHash": "0x230882f0b4bfda1e180148b9dfabcaca88e1d7dc267b00e3680563d5fe43e403" }, "1527420696956": { "events": {}, "links": {}, - "address": "0x60c424968c3dc4ff9130b80591c0b97dda690b66", - "transactionHash": "0x304ee33d69762c466c689bbea9fcce594bfafd1cbad5482e75be43ad24ca200f" + "address": "0x951aad4e4620ce64d8c072f551fcaed12425fe85", + "transactionHash": "0x1817ac338c1a78b56552121e12b7bc3e6968e8d9fdfa73c48dd482bfa1cc2827" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-27T11:31:46.251Z" + "updatedAt": "2018-05-28T06:08:59.455Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/MasterCopy.json b/safe-contracts/build/contracts/MasterCopy.json index 5d41f32aa6..ebdb526c01 100644 --- a/safe-contracts/build/contracts/MasterCopy.json +++ b/safe-contracts/build/contracts/MasterCopy.json @@ -16,24 +16,24 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50610158806100206000396000f300608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680637de7edef14610046575b600080fd5b34801561005257600080fd5b50610087600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610089565b005b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156100c357600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156100e957600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505600a165627a7a72305820af102433b8ccec4f2f22acc2112a110b3e5e8a3a9a6410aebbe25fc9281607660029", - "deployedBytecode": "0x608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680637de7edef14610046575b600080fd5b34801561005257600080fd5b50610087600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610089565b005b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156100c357600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156100e957600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505600a165627a7a72305820af102433b8ccec4f2f22acc2112a110b3e5e8a3a9a6410aebbe25fc9281607660029", - "sourceMap": "203:633:5:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;203:633:5;;;;;;;", - "deployedSourceMap": "203:633:5:-;;;;;;;;;;;;;;;;;;;;;;;;626:208;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:208:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;791:1:5;776:11;:16;;;;768:25;;;;;;;;816:11;803:10;;:24;;;;;;;;;;;;;;;;;;626:208;:::o", - "source": "pragma solidity 0.4.24;\nimport \"./SelfAuthorized.sol\";\n\n\n/// @title MasterCopy - Base for master copy contracts (should always be first super contract)\n/// @author Richard Meissner - \ncontract MasterCopy is SelfAuthorized {\n // masterCopy always needs to be first declared variable, to ensure that it is at the same location as in the Proxy contract.\n // It should also always be ensured that the address is stored alone (uses a full word)\n address masterCopy;\n\n /// @dev Allows to upgrade the contract. This can only be done via a Safe transaction.\n /// @param _masterCopy New contract address.\n function changeMasterCopy(address _masterCopy)\n public\n authorized\n {\n // Master copy address cannot be null.\n require(_masterCopy != 0);\n masterCopy = _masterCopy;\n }\n}\n", + "bytecode": "0x608060405234801561001057600080fd5b50610276806100206000396000f300608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680637de7edef14610046575b600080fd5b34801561005257600080fd5b50610087600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610089565b005b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610152576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610207576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f496e76616c6964206d617374657220636f707920616464726573732070726f7681526020017f696465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505600a165627a7a72305820243ca7a44eb0464a47c14309cc3a29e407df6e966674981a787df22c0d9280220029", + "deployedBytecode": "0x608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680637de7edef14610046575b600080fd5b34801561005257600080fd5b50610087600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610089565b005b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610152576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610207576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f496e76616c6964206d617374657220636f707920616464726573732070726f7681526020017f696465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505600a165627a7a72305820243ca7a44eb0464a47c14309cc3a29e407df6e966674981a787df22c0d9280220029", + "sourceMap": "203:673:5:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;203:673:5;;;;;;;", + "deployedSourceMap": "203:673:5:-;;;;;;;;;;;;;;;;;;;;;;;;626:248;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:248:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;244:4:13;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;791:1:5;776:11;:16;;;;768:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;856:11;843:10;;:24;;;;;;;;;;;;;;;;;;626:248;:::o", + "source": "pragma solidity 0.4.24;\nimport \"./SelfAuthorized.sol\";\n\n\n/// @title MasterCopy - Base for master copy contracts (should always be first super contract)\n/// @author Richard Meissner - \ncontract MasterCopy is SelfAuthorized {\n // masterCopy always needs to be first declared variable, to ensure that it is at the same location as in the Proxy contract.\n // It should also always be ensured that the address is stored alone (uses a full word)\n address masterCopy;\n\n /// @dev Allows to upgrade the contract. This can only be done via a Safe transaction.\n /// @param _masterCopy New contract address.\n function changeMasterCopy(address _masterCopy)\n public\n authorized\n {\n // Master copy address cannot be null.\n require(_masterCopy != 0, \"Invalid master copy address provided\");\n masterCopy = _masterCopy;\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/MasterCopy.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/MasterCopy.sol", "exportedSymbols": { "MasterCopy": [ - 652 + 662 ] }, - "id": 653, + "id": 663, "nodeType": "SourceUnit", "nodes": [ { - "id": 628, + "id": 637, "literals": [ "solidity", "0.4", @@ -45,10 +45,10 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/SelfAuthorized.sol", "file": "./SelfAuthorized.sol", - "id": 629, + "id": 638, "nodeType": "ImportDirective", - "scope": 653, - "sourceUnit": 1620, + "scope": 663, + "sourceUnit": 1655, "src": "24:30:5", "symbolAliases": [], "unitAlias": "" @@ -59,41 +59,41 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 630, + "id": 639, "name": "SelfAuthorized", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1619, + "referencedDeclaration": 1654, "src": "226:14:5", "typeDescriptions": { - "typeIdentifier": "t_contract$_SelfAuthorized_$1619", + "typeIdentifier": "t_contract$_SelfAuthorized_$1654", "typeString": "contract SelfAuthorized" } }, - "id": 631, + "id": 640, "nodeType": "InheritanceSpecifier", "src": "226:14:5" } ], "contractDependencies": [ - 1619 + 1654 ], "contractKind": "contract", "documentation": "@title MasterCopy - Base for master copy contracts (should always be first super contract)\n @author Richard Meissner - ", "fullyImplemented": true, - "id": 652, + "id": 662, "linearizedBaseContracts": [ - 652, - 1619 + 662, + 1654 ], "name": "MasterCopy", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, - "id": 633, + "id": 642, "name": "masterCopy", "nodeType": "VariableDeclaration", - "scope": 652, + "scope": 662, "src": "465:18:5", "stateVariable": true, "storageLocation": "default", @@ -102,7 +102,7 @@ "typeString": "address" }, "typeName": { - "id": 632, + "id": 641, "name": "address", "nodeType": "ElementaryTypeName", "src": "465:7:5", @@ -116,9 +116,9 @@ }, { "body": { - "id": 650, + "id": 660, "nodeType": "Block", - "src": "711:123:5", + "src": "711:163:5", "statements": [ { "expression": { @@ -130,18 +130,18 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 643, + "id": 652, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 641, + "id": 650, "name": "_masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 635, + "referencedDeclaration": 644, "src": "776:11:5", "typeDescriptions": { "typeIdentifier": "t_address", @@ -153,7 +153,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 642, + "id": 651, "isConstant": false, "isLValue": false, "isPure": true, @@ -173,6 +173,24 @@ "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "496e76616c6964206d617374657220636f707920616464726573732070726f7669646564", + "id": 653, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "794:38:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_108d84599042957b954e89d43b52f80be89321dfc114a37800028eba58dafc87", + "typeString": "literal_string \"Invalid master copy address provided\"" + }, + "value": "Invalid master copy address provided" } ], "expression": { @@ -180,23 +198,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_108d84599042957b954e89d43b52f80be89321dfc114a37800028eba58dafc87", + "typeString": "literal_string \"Invalid master copy address provided\"" } ], - "id": 640, + "id": 649, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, + "referencedDeclaration": 2658, "src": "768:7:5", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 644, + "id": 654, "isConstant": false, "isLValue": false, "isPure": false, @@ -204,32 +226,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "768:25:5", + "src": "768:65:5", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 645, + "id": 655, "nodeType": "ExpressionStatement", - "src": "768:25:5" + "src": "768:65:5" }, { "expression": { "argumentTypes": null, - "id": 648, + "id": 658, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 646, + "id": 656, "name": "masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 633, - "src": "803:10:5", + "referencedDeclaration": 642, + "src": "843:10:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -239,45 +261,45 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 647, + "id": 657, "name": "_masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 635, - "src": "816:11:5", + "referencedDeclaration": 644, + "src": "856:11:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "803:24:5", + "src": "843:24:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 649, + "id": 659, "nodeType": "ExpressionStatement", - "src": "803:24:5" + "src": "843:24:5" } ] }, "documentation": "@dev Allows to upgrade the contract. This can only be done via a Safe transaction.\n @param _masterCopy New contract address.", - "id": 651, + "id": 661, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 638, + "id": 647, "modifierName": { "argumentTypes": null, - "id": 637, + "id": 646, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1618, + "referencedDeclaration": 1653, "src": "696:10:5", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", @@ -291,15 +313,15 @@ "name": "changeMasterCopy", "nodeType": "FunctionDefinition", "parameters": { - "id": 636, + "id": 645, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 635, + "id": 644, "name": "_masterCopy", "nodeType": "VariableDeclaration", - "scope": 651, + "scope": 661, "src": "652:19:5", "stateVariable": false, "storageLocation": "default", @@ -308,7 +330,7 @@ "typeString": "address" }, "typeName": { - "id": 634, + "id": 643, "name": "address", "nodeType": "ElementaryTypeName", "src": "652:7:5", @@ -325,36 +347,36 @@ }, "payable": false, "returnParameters": { - "id": 639, + "id": 648, "nodeType": "ParameterList", "parameters": [], "src": "711:0:5" }, - "scope": 652, - "src": "626:208:5", + "scope": 662, + "src": "626:248:5", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 653, - "src": "203:633:5" + "scope": 663, + "src": "203:673:5" } ], - "src": "0:837:5" + "src": "0:877:5" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/MasterCopy.sol", "exportedSymbols": { "MasterCopy": [ - 652 + 662 ] }, - "id": 653, + "id": 663, "nodeType": "SourceUnit", "nodes": [ { - "id": 628, + "id": 637, "literals": [ "solidity", "0.4", @@ -366,10 +388,10 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/SelfAuthorized.sol", "file": "./SelfAuthorized.sol", - "id": 629, + "id": 638, "nodeType": "ImportDirective", - "scope": 653, - "sourceUnit": 1620, + "scope": 663, + "sourceUnit": 1655, "src": "24:30:5", "symbolAliases": [], "unitAlias": "" @@ -380,41 +402,41 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 630, + "id": 639, "name": "SelfAuthorized", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1619, + "referencedDeclaration": 1654, "src": "226:14:5", "typeDescriptions": { - "typeIdentifier": "t_contract$_SelfAuthorized_$1619", + "typeIdentifier": "t_contract$_SelfAuthorized_$1654", "typeString": "contract SelfAuthorized" } }, - "id": 631, + "id": 640, "nodeType": "InheritanceSpecifier", "src": "226:14:5" } ], "contractDependencies": [ - 1619 + 1654 ], "contractKind": "contract", "documentation": "@title MasterCopy - Base for master copy contracts (should always be first super contract)\n @author Richard Meissner - ", "fullyImplemented": true, - "id": 652, + "id": 662, "linearizedBaseContracts": [ - 652, - 1619 + 662, + 1654 ], "name": "MasterCopy", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, - "id": 633, + "id": 642, "name": "masterCopy", "nodeType": "VariableDeclaration", - "scope": 652, + "scope": 662, "src": "465:18:5", "stateVariable": true, "storageLocation": "default", @@ -423,7 +445,7 @@ "typeString": "address" }, "typeName": { - "id": 632, + "id": 641, "name": "address", "nodeType": "ElementaryTypeName", "src": "465:7:5", @@ -437,9 +459,9 @@ }, { "body": { - "id": 650, + "id": 660, "nodeType": "Block", - "src": "711:123:5", + "src": "711:163:5", "statements": [ { "expression": { @@ -451,18 +473,18 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 643, + "id": 652, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 641, + "id": 650, "name": "_masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 635, + "referencedDeclaration": 644, "src": "776:11:5", "typeDescriptions": { "typeIdentifier": "t_address", @@ -474,7 +496,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 642, + "id": 651, "isConstant": false, "isLValue": false, "isPure": true, @@ -494,6 +516,24 @@ "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "496e76616c6964206d617374657220636f707920616464726573732070726f7669646564", + "id": 653, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "794:38:5", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_108d84599042957b954e89d43b52f80be89321dfc114a37800028eba58dafc87", + "typeString": "literal_string \"Invalid master copy address provided\"" + }, + "value": "Invalid master copy address provided" } ], "expression": { @@ -501,23 +541,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_108d84599042957b954e89d43b52f80be89321dfc114a37800028eba58dafc87", + "typeString": "literal_string \"Invalid master copy address provided\"" } ], - "id": 640, + "id": 649, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, + "referencedDeclaration": 2658, "src": "768:7:5", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 644, + "id": 654, "isConstant": false, "isLValue": false, "isPure": false, @@ -525,32 +569,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "768:25:5", + "src": "768:65:5", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 645, + "id": 655, "nodeType": "ExpressionStatement", - "src": "768:25:5" + "src": "768:65:5" }, { "expression": { "argumentTypes": null, - "id": 648, + "id": 658, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 646, + "id": 656, "name": "masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 633, - "src": "803:10:5", + "referencedDeclaration": 642, + "src": "843:10:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -560,45 +604,45 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 647, + "id": 657, "name": "_masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 635, - "src": "816:11:5", + "referencedDeclaration": 644, + "src": "856:11:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "803:24:5", + "src": "843:24:5", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 649, + "id": 659, "nodeType": "ExpressionStatement", - "src": "803:24:5" + "src": "843:24:5" } ] }, "documentation": "@dev Allows to upgrade the contract. This can only be done via a Safe transaction.\n @param _masterCopy New contract address.", - "id": 651, + "id": 661, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 638, + "id": 647, "modifierName": { "argumentTypes": null, - "id": 637, + "id": 646, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1618, + "referencedDeclaration": 1653, "src": "696:10:5", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", @@ -612,15 +656,15 @@ "name": "changeMasterCopy", "nodeType": "FunctionDefinition", "parameters": { - "id": 636, + "id": 645, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 635, + "id": 644, "name": "_masterCopy", "nodeType": "VariableDeclaration", - "scope": 651, + "scope": 661, "src": "652:19:5", "stateVariable": false, "storageLocation": "default", @@ -629,7 +673,7 @@ "typeString": "address" }, "typeName": { - "id": 634, + "id": 643, "name": "address", "nodeType": "ElementaryTypeName", "src": "652:7:5", @@ -646,23 +690,23 @@ }, "payable": false, "returnParameters": { - "id": 639, + "id": 648, "nodeType": "ParameterList", "parameters": [], "src": "711:0:5" }, - "scope": 652, - "src": "626:208:5", + "scope": 662, + "src": "626:248:5", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 653, - "src": "203:633:5" + "scope": 663, + "src": "203:673:5" } ], - "src": "0:837:5" + "src": "0:877:5" }, "compiler": { "name": "solc", @@ -670,5 +714,5 @@ }, "networks": {}, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-27T11:12:45.579Z" + "updatedAt": "2018-05-28T05:59:52.701Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/Migrations.json b/safe-contracts/build/contracts/Migrations.json index a7baf88bdf..f182f637da 100644 --- a/safe-contracts/build/contracts/Migrations.json +++ b/safe-contracts/build/contracts/Migrations.json @@ -74,14 +74,14 @@ "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Migrations.sol", "exportedSymbols": { "Migrations": [ - 709 + 719 ] }, - "id": 710, + "id": 720, "nodeType": "SourceUnit", "nodes": [ { - "id": 654, + "id": 664, "literals": [ "solidity", "^", @@ -97,19 +97,19 @@ "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 709, + "id": 719, "linearizedBaseContracts": [ - 709 + 719 ], "name": "Migrations", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, - "id": 656, + "id": 666, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 709, + "scope": 719, "src": "51:20:6", "stateVariable": true, "storageLocation": "default", @@ -118,7 +118,7 @@ "typeString": "address" }, "typeName": { - "id": 655, + "id": 665, "name": "address", "nodeType": "ElementaryTypeName", "src": "51:7:6", @@ -132,10 +132,10 @@ }, { "constant": false, - "id": 658, + "id": 668, "name": "last_completed_migration", "nodeType": "VariableDeclaration", - "scope": 709, + "scope": 719, "src": "77:36:6", "stateVariable": true, "storageLocation": "default", @@ -144,7 +144,7 @@ "typeString": "uint256" }, "typeName": { - "id": 657, + "id": 667, "name": "uint", "nodeType": "ElementaryTypeName", "src": "77:4:6", @@ -158,7 +158,7 @@ }, { "body": { - "id": 666, + "id": 676, "nodeType": "Block", "src": "142:43:6", "statements": [ @@ -169,7 +169,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 663, + "id": 673, "isConstant": false, "isLValue": false, "isPure": false, @@ -178,18 +178,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 660, + "id": 670, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2598, + "referencedDeclaration": 2654, "src": "156:3:6", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 661, + "id": 671, "isConstant": false, "isLValue": false, "isPure": false, @@ -207,11 +207,11 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 662, + "id": 672, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 656, + "referencedDeclaration": 666, "src": "170:5:6", "typeDescriptions": { "typeIdentifier": "t_address", @@ -225,11 +225,11 @@ } }, "falseBody": null, - "id": 665, + "id": 675, "nodeType": "IfStatement", "src": "152:26:6", "trueBody": { - "id": 664, + "id": 674, "nodeType": "PlaceholderStatement", "src": "177:1:6" } @@ -237,11 +237,11 @@ ] }, "documentation": null, - "id": 667, + "id": 677, "name": "restricted", "nodeType": "ModifierDefinition", "parameters": { - "id": 659, + "id": 669, "nodeType": "ParameterList", "parameters": [], "src": "139:2:6" @@ -251,25 +251,25 @@ }, { "body": { - "id": 675, + "id": 685, "nodeType": "Block", "src": "224:35:6", "statements": [ { "expression": { "argumentTypes": null, - "id": 673, + "id": 683, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 670, + "id": 680, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 656, + "referencedDeclaration": 666, "src": "234:5:6", "typeDescriptions": { "typeIdentifier": "t_address", @@ -282,18 +282,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 671, + "id": 681, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2598, + "referencedDeclaration": 2654, "src": "242:3:6", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 672, + "id": 682, "isConstant": false, "isLValue": false, "isPure": false, @@ -313,14 +313,14 @@ "typeString": "address" } }, - "id": 674, + "id": 684, "nodeType": "ExpressionStatement", "src": "234:18:6" } ] }, "documentation": null, - "id": 676, + "id": 686, "implemented": true, "isConstructor": true, "isDeclaredConst": false, @@ -328,19 +328,19 @@ "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 668, + "id": 678, "nodeType": "ParameterList", "parameters": [], "src": "202:2:6" }, "payable": false, "returnParameters": { - "id": 669, + "id": 679, "nodeType": "ParameterList", "parameters": [], "src": "224:0:6" }, - "scope": 709, + "scope": 719, "src": "191:68:6", "stateMutability": "nonpayable", "superFunction": null, @@ -348,25 +348,25 @@ }, { "body": { - "id": 687, + "id": 697, "nodeType": "Block", "src": "341:53:6", "statements": [ { "expression": { "argumentTypes": null, - "id": 685, + "id": 695, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 683, + "id": 693, "name": "last_completed_migration", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 658, + "referencedDeclaration": 668, "src": "351:24:6", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -377,11 +377,11 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 684, + "id": 694, "name": "completed", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 678, + "referencedDeclaration": 688, "src": "378:9:6", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -394,28 +394,28 @@ "typeString": "uint256" } }, - "id": 686, + "id": 696, "nodeType": "ExpressionStatement", "src": "351:36:6" } ] }, "documentation": null, - "id": 688, + "id": 698, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 681, + "id": 691, "modifierName": { "argumentTypes": null, - "id": 680, + "id": 690, "name": "restricted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 667, + "referencedDeclaration": 677, "src": "326:10:6", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", @@ -429,15 +429,15 @@ "name": "setCompleted", "nodeType": "FunctionDefinition", "parameters": { - "id": 679, + "id": 689, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 678, + "id": 688, "name": "completed", "nodeType": "VariableDeclaration", - "scope": 688, + "scope": 698, "src": "287:14:6", "stateVariable": false, "storageLocation": "default", @@ -446,7 +446,7 @@ "typeString": "uint256" }, "typeName": { - "id": 677, + "id": 687, "name": "uint", "nodeType": "ElementaryTypeName", "src": "287:4:6", @@ -463,12 +463,12 @@ }, "payable": false, "returnParameters": { - "id": 682, + "id": 692, "nodeType": "ParameterList", "parameters": [], "src": "341:0:6" }, - "scope": 709, + "scope": 719, "src": "265:129:6", "stateMutability": "nonpayable", "superFunction": null, @@ -476,37 +476,37 @@ }, { "body": { - "id": 707, + "id": 717, "nodeType": "Block", "src": "476:119:6", "statements": [ { "assignments": [ - 696 + 706 ], "declarations": [ { "constant": false, - "id": 696, + "id": 706, "name": "upgraded", "nodeType": "VariableDeclaration", - "scope": 708, + "scope": 718, "src": "486:19:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Migrations_$709", + "typeIdentifier": "t_contract$_Migrations_$719", "typeString": "contract Migrations" }, "typeName": { "contractScope": null, - "id": 695, + "id": 705, "name": "Migrations", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 709, + "referencedDeclaration": 719, "src": "486:10:6", "typeDescriptions": { - "typeIdentifier": "t_contract$_Migrations_$709", + "typeIdentifier": "t_contract$_Migrations_$719", "typeString": "contract Migrations" } }, @@ -514,17 +514,17 @@ "visibility": "internal" } ], - "id": 700, + "id": 710, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 698, + "id": 708, "name": "new_address", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 690, + "referencedDeclaration": 700, "src": "519:11:6", "typeDescriptions": { "typeIdentifier": "t_address", @@ -539,18 +539,18 @@ "typeString": "address" } ], - "id": 697, + "id": 707, "name": "Migrations", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 709, + "referencedDeclaration": 719, "src": "508:10:6", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Migrations_$709_$", + "typeIdentifier": "t_type$_t_contract$_Migrations_$719_$", "typeString": "type(contract Migrations)" } }, - "id": 699, + "id": 709, "isConstant": false, "isLValue": false, "isPure": false, @@ -560,7 +560,7 @@ "nodeType": "FunctionCall", "src": "508:23:6", "typeDescriptions": { - "typeIdentifier": "t_contract$_Migrations_$709", + "typeIdentifier": "t_contract$_Migrations_$719", "typeString": "contract Migrations" } }, @@ -573,11 +573,11 @@ "arguments": [ { "argumentTypes": null, - "id": 704, + "id": 714, "name": "last_completed_migration", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 658, + "referencedDeclaration": 668, "src": "563:24:6", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -594,32 +594,32 @@ ], "expression": { "argumentTypes": null, - "id": 701, + "id": 711, "name": "upgraded", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 696, + "referencedDeclaration": 706, "src": "541:8:6", "typeDescriptions": { - "typeIdentifier": "t_contract$_Migrations_$709", + "typeIdentifier": "t_contract$_Migrations_$719", "typeString": "contract Migrations" } }, - "id": 703, + "id": 713, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "setCompleted", "nodeType": "MemberAccess", - "referencedDeclaration": 688, + "referencedDeclaration": 698, "src": "541:21:6", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256) external" } }, - "id": 705, + "id": 715, "isConstant": false, "isLValue": false, "isPure": false, @@ -633,28 +633,28 @@ "typeString": "tuple()" } }, - "id": 706, + "id": 716, "nodeType": "ExpressionStatement", "src": "541:47:6" } ] }, "documentation": null, - "id": 708, + "id": 718, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 693, + "id": 703, "modifierName": { "argumentTypes": null, - "id": 692, + "id": 702, "name": "restricted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 667, + "referencedDeclaration": 677, "src": "461:10:6", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", @@ -668,15 +668,15 @@ "name": "upgrade", "nodeType": "FunctionDefinition", "parameters": { - "id": 691, + "id": 701, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 690, + "id": 700, "name": "new_address", "nodeType": "VariableDeclaration", - "scope": 708, + "scope": 718, "src": "417:19:6", "stateVariable": false, "storageLocation": "default", @@ -685,7 +685,7 @@ "typeString": "address" }, "typeName": { - "id": 689, + "id": 699, "name": "address", "nodeType": "ElementaryTypeName", "src": "417:7:6", @@ -702,19 +702,19 @@ }, "payable": false, "returnParameters": { - "id": 694, + "id": 704, "nodeType": "ParameterList", "parameters": [], "src": "476:0:6" }, - "scope": 709, + "scope": 719, "src": "400:195:6", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 710, + "scope": 720, "src": "25:572:6" } ], @@ -724,14 +724,14 @@ "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Migrations.sol", "exportedSymbols": { "Migrations": [ - 709 + 719 ] }, - "id": 710, + "id": 720, "nodeType": "SourceUnit", "nodes": [ { - "id": 654, + "id": 664, "literals": [ "solidity", "^", @@ -747,19 +747,19 @@ "contractKind": "contract", "documentation": null, "fullyImplemented": true, - "id": 709, + "id": 719, "linearizedBaseContracts": [ - 709 + 719 ], "name": "Migrations", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, - "id": 656, + "id": 666, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 709, + "scope": 719, "src": "51:20:6", "stateVariable": true, "storageLocation": "default", @@ -768,7 +768,7 @@ "typeString": "address" }, "typeName": { - "id": 655, + "id": 665, "name": "address", "nodeType": "ElementaryTypeName", "src": "51:7:6", @@ -782,10 +782,10 @@ }, { "constant": false, - "id": 658, + "id": 668, "name": "last_completed_migration", "nodeType": "VariableDeclaration", - "scope": 709, + "scope": 719, "src": "77:36:6", "stateVariable": true, "storageLocation": "default", @@ -794,7 +794,7 @@ "typeString": "uint256" }, "typeName": { - "id": 657, + "id": 667, "name": "uint", "nodeType": "ElementaryTypeName", "src": "77:4:6", @@ -808,7 +808,7 @@ }, { "body": { - "id": 666, + "id": 676, "nodeType": "Block", "src": "142:43:6", "statements": [ @@ -819,7 +819,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 663, + "id": 673, "isConstant": false, "isLValue": false, "isPure": false, @@ -828,18 +828,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 660, + "id": 670, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2598, + "referencedDeclaration": 2654, "src": "156:3:6", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 661, + "id": 671, "isConstant": false, "isLValue": false, "isPure": false, @@ -857,11 +857,11 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 662, + "id": 672, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 656, + "referencedDeclaration": 666, "src": "170:5:6", "typeDescriptions": { "typeIdentifier": "t_address", @@ -875,11 +875,11 @@ } }, "falseBody": null, - "id": 665, + "id": 675, "nodeType": "IfStatement", "src": "152:26:6", "trueBody": { - "id": 664, + "id": 674, "nodeType": "PlaceholderStatement", "src": "177:1:6" } @@ -887,11 +887,11 @@ ] }, "documentation": null, - "id": 667, + "id": 677, "name": "restricted", "nodeType": "ModifierDefinition", "parameters": { - "id": 659, + "id": 669, "nodeType": "ParameterList", "parameters": [], "src": "139:2:6" @@ -901,25 +901,25 @@ }, { "body": { - "id": 675, + "id": 685, "nodeType": "Block", "src": "224:35:6", "statements": [ { "expression": { "argumentTypes": null, - "id": 673, + "id": 683, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 670, + "id": 680, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 656, + "referencedDeclaration": 666, "src": "234:5:6", "typeDescriptions": { "typeIdentifier": "t_address", @@ -932,18 +932,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 671, + "id": 681, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2598, + "referencedDeclaration": 2654, "src": "242:3:6", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 672, + "id": 682, "isConstant": false, "isLValue": false, "isPure": false, @@ -963,14 +963,14 @@ "typeString": "address" } }, - "id": 674, + "id": 684, "nodeType": "ExpressionStatement", "src": "234:18:6" } ] }, "documentation": null, - "id": 676, + "id": 686, "implemented": true, "isConstructor": true, "isDeclaredConst": false, @@ -978,19 +978,19 @@ "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 668, + "id": 678, "nodeType": "ParameterList", "parameters": [], "src": "202:2:6" }, "payable": false, "returnParameters": { - "id": 669, + "id": 679, "nodeType": "ParameterList", "parameters": [], "src": "224:0:6" }, - "scope": 709, + "scope": 719, "src": "191:68:6", "stateMutability": "nonpayable", "superFunction": null, @@ -998,25 +998,25 @@ }, { "body": { - "id": 687, + "id": 697, "nodeType": "Block", "src": "341:53:6", "statements": [ { "expression": { "argumentTypes": null, - "id": 685, + "id": 695, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 683, + "id": 693, "name": "last_completed_migration", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 658, + "referencedDeclaration": 668, "src": "351:24:6", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -1027,11 +1027,11 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 684, + "id": 694, "name": "completed", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 678, + "referencedDeclaration": 688, "src": "378:9:6", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -1044,28 +1044,28 @@ "typeString": "uint256" } }, - "id": 686, + "id": 696, "nodeType": "ExpressionStatement", "src": "351:36:6" } ] }, "documentation": null, - "id": 688, + "id": 698, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 681, + "id": 691, "modifierName": { "argumentTypes": null, - "id": 680, + "id": 690, "name": "restricted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 667, + "referencedDeclaration": 677, "src": "326:10:6", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", @@ -1079,15 +1079,15 @@ "name": "setCompleted", "nodeType": "FunctionDefinition", "parameters": { - "id": 679, + "id": 689, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 678, + "id": 688, "name": "completed", "nodeType": "VariableDeclaration", - "scope": 688, + "scope": 698, "src": "287:14:6", "stateVariable": false, "storageLocation": "default", @@ -1096,7 +1096,7 @@ "typeString": "uint256" }, "typeName": { - "id": 677, + "id": 687, "name": "uint", "nodeType": "ElementaryTypeName", "src": "287:4:6", @@ -1113,12 +1113,12 @@ }, "payable": false, "returnParameters": { - "id": 682, + "id": 692, "nodeType": "ParameterList", "parameters": [], "src": "341:0:6" }, - "scope": 709, + "scope": 719, "src": "265:129:6", "stateMutability": "nonpayable", "superFunction": null, @@ -1126,37 +1126,37 @@ }, { "body": { - "id": 707, + "id": 717, "nodeType": "Block", "src": "476:119:6", "statements": [ { "assignments": [ - 696 + 706 ], "declarations": [ { "constant": false, - "id": 696, + "id": 706, "name": "upgraded", "nodeType": "VariableDeclaration", - "scope": 708, + "scope": 718, "src": "486:19:6", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Migrations_$709", + "typeIdentifier": "t_contract$_Migrations_$719", "typeString": "contract Migrations" }, "typeName": { "contractScope": null, - "id": 695, + "id": 705, "name": "Migrations", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 709, + "referencedDeclaration": 719, "src": "486:10:6", "typeDescriptions": { - "typeIdentifier": "t_contract$_Migrations_$709", + "typeIdentifier": "t_contract$_Migrations_$719", "typeString": "contract Migrations" } }, @@ -1164,17 +1164,17 @@ "visibility": "internal" } ], - "id": 700, + "id": 710, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 698, + "id": 708, "name": "new_address", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 690, + "referencedDeclaration": 700, "src": "519:11:6", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1189,18 +1189,18 @@ "typeString": "address" } ], - "id": 697, + "id": 707, "name": "Migrations", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 709, + "referencedDeclaration": 719, "src": "508:10:6", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_Migrations_$709_$", + "typeIdentifier": "t_type$_t_contract$_Migrations_$719_$", "typeString": "type(contract Migrations)" } }, - "id": 699, + "id": 709, "isConstant": false, "isLValue": false, "isPure": false, @@ -1210,7 +1210,7 @@ "nodeType": "FunctionCall", "src": "508:23:6", "typeDescriptions": { - "typeIdentifier": "t_contract$_Migrations_$709", + "typeIdentifier": "t_contract$_Migrations_$719", "typeString": "contract Migrations" } }, @@ -1223,11 +1223,11 @@ "arguments": [ { "argumentTypes": null, - "id": 704, + "id": 714, "name": "last_completed_migration", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 658, + "referencedDeclaration": 668, "src": "563:24:6", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -1244,32 +1244,32 @@ ], "expression": { "argumentTypes": null, - "id": 701, + "id": 711, "name": "upgraded", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 696, + "referencedDeclaration": 706, "src": "541:8:6", "typeDescriptions": { - "typeIdentifier": "t_contract$_Migrations_$709", + "typeIdentifier": "t_contract$_Migrations_$719", "typeString": "contract Migrations" } }, - "id": 703, + "id": 713, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "setCompleted", "nodeType": "MemberAccess", - "referencedDeclaration": 688, + "referencedDeclaration": 698, "src": "541:21:6", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$", "typeString": "function (uint256) external" } }, - "id": 705, + "id": 715, "isConstant": false, "isLValue": false, "isPure": false, @@ -1283,28 +1283,28 @@ "typeString": "tuple()" } }, - "id": 706, + "id": 716, "nodeType": "ExpressionStatement", "src": "541:47:6" } ] }, "documentation": null, - "id": 708, + "id": 718, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 693, + "id": 703, "modifierName": { "argumentTypes": null, - "id": 692, + "id": 702, "name": "restricted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 667, + "referencedDeclaration": 677, "src": "461:10:6", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", @@ -1318,15 +1318,15 @@ "name": "upgrade", "nodeType": "FunctionDefinition", "parameters": { - "id": 691, + "id": 701, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 690, + "id": 700, "name": "new_address", "nodeType": "VariableDeclaration", - "scope": 708, + "scope": 718, "src": "417:19:6", "stateVariable": false, "storageLocation": "default", @@ -1335,7 +1335,7 @@ "typeString": "address" }, "typeName": { - "id": 689, + "id": 699, "name": "address", "nodeType": "ElementaryTypeName", "src": "417:7:6", @@ -1352,19 +1352,19 @@ }, "payable": false, "returnParameters": { - "id": 694, + "id": 704, "nodeType": "ParameterList", "parameters": [], "src": "476:0:6" }, - "scope": 709, + "scope": 719, "src": "400:195:6", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 710, + "scope": 720, "src": "25:572:6" } ], @@ -1378,22 +1378,16 @@ "4": { "events": {}, "links": {}, - "address": "0x310ed4914d3d280593bdd91cd25f3010cef95c8f", - "transactionHash": "0x77ed51dc2aaa3502d11556785f91f9a1ec7102c4ab4d9fd24b163a12d46664ed" - }, - "1527316019334": { - "events": {}, - "links": {}, - "address": "0x9511a1770d3700a42a922080cf7f2f20db4d9c05", - "transactionHash": "0x3215566e4282c1fe81a9e093b0fa684ce647015b0e43446042c71426709d8170" + "address": "0xc5c55f0cb09881e18e507e904c73c6db48f88616", + "transactionHash": "0xf83653e8ebe550e4eb2bcee2ddc8134fd1b04816395503cb8ea90dfddc649c07" }, "1527420696956": { "events": {}, "links": {}, - "address": "0x03b6c37cb58fdaec2b5f7e9f9ed58a7525ef79d7", - "transactionHash": "0xb6a19a7a679a1474c09c651e4151421f210afa3f47effed019d4c0206144ee5f" + "address": "0xf73d9d696980438e73abe252b508f2db3ad4c72b", + "transactionHash": "0x91576b3419f784105bdd4f493f68d2cc6f57975bd21641a7433eb6e705180b3b" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-27T11:31:46.343Z" + "updatedAt": "2018-05-28T06:08:59.489Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/Module.json b/safe-contracts/build/contracts/Module.json index 0f0669675d..da3adb7a7f 100644 --- a/safe-contracts/build/contracts/Module.json +++ b/safe-contracts/build/contracts/Module.json @@ -30,24 +30,24 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50610202806100206000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063481c6a75146100515780637de7edef146100a8575b600080fd5b34801561005d57600080fd5b506100666100eb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156100b457600080fd5b506100e9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610111565b005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561016d57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561019357600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505600a165627a7a723058201e28a6acfe6922717722c910e51de720875c6e665112c8866ae58ba4fc613f1b0029", - "deployedBytecode": "0x60806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063481c6a75146100515780637de7edef146100a8575b600080fd5b34801561005d57600080fd5b506100666100eb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156100b457600080fd5b506100e9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610111565b005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561016d57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561019357600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505600a165627a7a723058201e28a6acfe6922717722c910e51de720875c6e665112c8866ae58ba4fc613f1b0029", - "sourceMap": "225:437:7:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;225:437:7;;;;;;;", - "deployedSourceMap": "225:437:7:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;262:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;262:28:7;;;;;;;;;;;;;;;;;;;;;;;;;;;626:208:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:208:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;262:28:7;;;;;;;;;;;;;:::o;626:208:5:-;359:7:7;;;;;;;;;;;337:30;;:10;:30;;;329:39;;;;;;;;791:1:5;776:11;:16;;;;768:25;;;;;;;;816:11;803:10;;:24;;;;;;;;;;;;;;;;;;626:208;:::o", - "source": "pragma solidity 0.4.24;\nimport \"./MasterCopy.sol\";\nimport \"./ModuleManager.sol\";\n\n\n/// @title Module - Base class for modules.\n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract Module is MasterCopy {\n\n ModuleManager public manager;\n\n modifier authorized() {\n require(msg.sender == address(manager));\n _;\n }\n\n function setManager()\n internal\n {\n // manager can only be 0 at initalization of contract.\n // Check ensures that setup function can only be called once.\n require(address(manager) == 0);\n manager = ModuleManager(msg.sender);\n }\n}\n", + "bytecode": "0x608060405234801561001057600080fd5b50610320806100206000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063481c6a75146100515780637de7edef146100a8575b600080fd5b34801561005d57600080fd5b506100666100eb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156100b457600080fd5b506100e9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610111565b005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156101fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206d81526020017f616e61676572000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156102b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f496e76616c6964206d617374657220636f707920616464726573732070726f7681526020017f696465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505600a165627a7a723058209e7f23d7b73f9e5b09e154410dde0c89b8f5a21c14b2641881da29e7c93cea470029", + "deployedBytecode": "0x60806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063481c6a75146100515780637de7edef146100a8575b600080fd5b34801561005d57600080fd5b506100666100eb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156100b457600080fd5b506100e9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610111565b005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156101fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206d81526020017f616e61676572000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141515156102b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f496e76616c6964206d617374657220636f707920616464726573732070726f7681526020017f696465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505600a165627a7a723058209e7f23d7b73f9e5b09e154410dde0c89b8f5a21c14b2641881da29e7c93cea470029", + "sourceMap": "225:511:7:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;225:511:7;;;;;;;", + "deployedSourceMap": "225:511:7:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;262:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;262:28:7;;;;;;;;;;;;;;;;;;;;;;;;;;;626:248:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:248:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;262:28:7;;;;;;;;;;;;;:::o;626:248:5:-;359:7:7;;;;;;;;;;;337:30;;:10;:30;;;329:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;791:1:5;776:11;:16;;;;768:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;856:11;843:10;;:24;;;;;;;;;;;;;;;;;;626:248;:::o", + "source": "pragma solidity 0.4.24;\nimport \"./MasterCopy.sol\";\nimport \"./ModuleManager.sol\";\n\n\n/// @title Module - Base class for modules.\n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract Module is MasterCopy {\n\n ModuleManager public manager;\n\n modifier authorized() {\n require(msg.sender == address(manager), \"Method can only be called from manager\");\n _;\n }\n\n function setManager()\n internal\n {\n // manager can only be 0 at initalization of contract.\n // Check ensures that setup function can only be called once.\n require(address(manager) == 0, \"Manager has already been set\");\n manager = ModuleManager(msg.sender);\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "exportedSymbols": { "Module": [ - 750 + 762 ] }, - "id": 751, + "id": 763, "nodeType": "SourceUnit", "nodes": [ { - "id": 711, + "id": 721, "literals": [ "solidity", "0.4", @@ -59,10 +59,10 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/MasterCopy.sol", "file": "./MasterCopy.sol", - "id": 712, + "id": 722, "nodeType": "ImportDirective", - "scope": 751, - "sourceUnit": 653, + "scope": 763, + "sourceUnit": 663, "src": "24:26:7", "symbolAliases": [], "unitAlias": "" @@ -70,10 +70,10 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ModuleManager.sol", "file": "./ModuleManager.sol", - "id": 713, + "id": 723, "nodeType": "ImportDirective", - "scope": 751, - "sourceUnit": 1101, + "scope": 763, + "sourceUnit": 1119, "src": "51:29:7", "symbolAliases": [], "unitAlias": "" @@ -84,59 +84,59 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 714, + "id": 724, "name": "MasterCopy", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 652, + "referencedDeclaration": 662, "src": "244:10:7", "typeDescriptions": { - "typeIdentifier": "t_contract$_MasterCopy_$652", + "typeIdentifier": "t_contract$_MasterCopy_$662", "typeString": "contract MasterCopy" } }, - "id": 715, + "id": 725, "nodeType": "InheritanceSpecifier", "src": "244:10:7" } ], "contractDependencies": [ - 652, - 1619 + 662, + 1654 ], "contractKind": "contract", "documentation": "@title Module - Base class for modules.\n @author Stefan George - \n @author Richard Meissner - ", "fullyImplemented": true, - "id": 750, + "id": 762, "linearizedBaseContracts": [ - 750, - 652, - 1619 + 762, + 662, + 1654 ], "name": "Module", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, - "id": 717, + "id": 727, "name": "manager", "nodeType": "VariableDeclaration", - "scope": 750, + "scope": 762, "src": "262:28:7", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" }, "typeName": { "contractScope": null, - "id": 716, + "id": 726, "name": "ModuleManager", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1100, + "referencedDeclaration": 1118, "src": "262:13:7", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } }, @@ -145,9 +145,9 @@ }, { "body": { - "id": 729, + "id": 740, "nodeType": "Block", - "src": "319:67:7", + "src": "319:109:7", "statements": [ { "expression": { @@ -159,7 +159,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 725, + "id": 735, "isConstant": false, "isLValue": false, "isPure": false, @@ -168,18 +168,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 720, + "id": 730, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2598, + "referencedDeclaration": 2654, "src": "337:3:7", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 721, + "id": 731, "isConstant": false, "isLValue": false, "isPure": false, @@ -200,14 +200,14 @@ "arguments": [ { "argumentTypes": null, - "id": 723, + "id": 733, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 717, + "referencedDeclaration": 727, "src": "359:7:7", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } } @@ -215,11 +215,11 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } ], - "id": 722, + "id": 732, "isConstant": false, "isLValue": false, "isPure": true, @@ -232,7 +232,7 @@ }, "typeName": "address" }, - "id": 724, + "id": 734, "isConstant": false, "isLValue": false, "isPure": false, @@ -251,6 +251,24 @@ "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206d616e61676572", + "id": 736, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "369:40:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_f857f17fb7e241a141cb689ce417fc402008e9655fbe55c721e32587b5d510de", + "typeString": "literal_string \"Method can only be called from manager\"" + }, + "value": "Method can only be called from manager" } ], "expression": { @@ -258,23 +276,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_f857f17fb7e241a141cb689ce417fc402008e9655fbe55c721e32587b5d510de", + "typeString": "literal_string \"Method can only be called from manager\"" } ], - "id": 719, + "id": 729, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, + "referencedDeclaration": 2658, "src": "329:7:7", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 726, + "id": 737, "isConstant": false, "isLValue": false, "isPure": false, @@ -282,41 +304,41 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "329:39:7", + "src": "329:81:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 727, + "id": 738, "nodeType": "ExpressionStatement", - "src": "329:39:7" + "src": "329:81:7" }, { - "id": 728, + "id": 739, "nodeType": "PlaceholderStatement", - "src": "378:1:7" + "src": "420:1:7" } ] }, "documentation": null, - "id": 730, + "id": 741, "name": "authorized", "nodeType": "ModifierDefinition", "parameters": { - "id": 718, + "id": 728, "nodeType": "ParameterList", "parameters": [], "src": "316:2:7" }, - "src": "297:89:7", + "src": "297:131:7", "visibility": "internal" }, { "body": { - "id": 748, + "id": 760, "nodeType": "Block", - "src": "435:225:7", + "src": "477:257:7", "statements": [ { "expression": { @@ -328,7 +350,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 738, + "id": 749, "isConstant": false, "isLValue": false, "isPure": false, @@ -338,14 +360,14 @@ "arguments": [ { "argumentTypes": null, - "id": 735, + "id": 746, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 717, - "src": "594:7:7", + "referencedDeclaration": 727, + "src": "636:7:7", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } } @@ -353,24 +375,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } ], - "id": 734, + "id": 745, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "586:7:7", + "src": "628:7:7", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 736, + "id": 747, "isConstant": false, "isLValue": false, "isPure": false, @@ -378,7 +400,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "586:16:7", + "src": "628:16:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -389,14 +411,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 737, + "id": 748, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "606:1:7", + "src": "648:1:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -404,11 +426,29 @@ }, "value": "0" }, - "src": "586:21:7", + "src": "628:21:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "4d616e616765722068617320616c7265616479206265656e20736574", + "id": 750, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "651:30:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_5b4e79257e154cde85ff5a3cf5bf48eb2c3921f8c031de73d371d41be013f3cc", + "typeString": "literal_string \"Manager has already been set\"" + }, + "value": "Manager has already been set" } ], "expression": { @@ -416,23 +456,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_5b4e79257e154cde85ff5a3cf5bf48eb2c3921f8c031de73d371d41be013f3cc", + "typeString": "literal_string \"Manager has already been set\"" } ], - "id": 733, + "id": 744, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "578:7:7", + "referencedDeclaration": 2658, + "src": "620:7:7", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 739, + "id": 751, "isConstant": false, "isLValue": false, "isPure": false, @@ -440,34 +484,34 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "578:30:7", + "src": "620:62:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 740, + "id": 752, "nodeType": "ExpressionStatement", - "src": "578:30:7" + "src": "620:62:7" }, { "expression": { "argumentTypes": null, - "id": 746, + "id": 758, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 741, + "id": 753, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 717, - "src": "618:7:7", + "referencedDeclaration": 727, + "src": "692:7:7", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } }, @@ -480,18 +524,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 743, + "id": 755, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2598, - "src": "642:3:7", + "referencedDeclaration": 2654, + "src": "716:3:7", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 744, + "id": 756, "isConstant": false, "isLValue": false, "isPure": false, @@ -499,7 +543,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "642:10:7", + "src": "716:10:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -513,18 +557,18 @@ "typeString": "address" } ], - "id": 742, + "id": 754, "name": "ModuleManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1100, - "src": "628:13:7", + "referencedDeclaration": 1118, + "src": "702:13:7", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ModuleManager_$1100_$", + "typeIdentifier": "t_type$_t_contract$_ModuleManager_$1118_$", "typeString": "type(contract ModuleManager)" } }, - "id": 745, + "id": 757, "isConstant": false, "isLValue": false, "isPure": false, @@ -532,26 +576,26 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "628:25:7", + "src": "702:25:7", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } }, - "src": "618:35:7", + "src": "692:35:7", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } }, - "id": 747, + "id": 759, "nodeType": "ExpressionStatement", - "src": "618:35:7" + "src": "692:35:7" } ] }, "documentation": null, - "id": 749, + "id": 761, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -559,43 +603,43 @@ "name": "setManager", "nodeType": "FunctionDefinition", "parameters": { - "id": 731, + "id": 742, "nodeType": "ParameterList", "parameters": [], - "src": "411:2:7" + "src": "453:2:7" }, "payable": false, "returnParameters": { - "id": 732, + "id": 743, "nodeType": "ParameterList", "parameters": [], - "src": "435:0:7" + "src": "477:0:7" }, - "scope": 750, - "src": "392:268:7", + "scope": 762, + "src": "434:300:7", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" } ], - "scope": 751, - "src": "225:437:7" + "scope": 763, + "src": "225:511:7" } ], - "src": "0:663:7" + "src": "0:737:7" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "exportedSymbols": { "Module": [ - 750 + 762 ] }, - "id": 751, + "id": 763, "nodeType": "SourceUnit", "nodes": [ { - "id": 711, + "id": 721, "literals": [ "solidity", "0.4", @@ -607,10 +651,10 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/MasterCopy.sol", "file": "./MasterCopy.sol", - "id": 712, + "id": 722, "nodeType": "ImportDirective", - "scope": 751, - "sourceUnit": 653, + "scope": 763, + "sourceUnit": 663, "src": "24:26:7", "symbolAliases": [], "unitAlias": "" @@ -618,10 +662,10 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ModuleManager.sol", "file": "./ModuleManager.sol", - "id": 713, + "id": 723, "nodeType": "ImportDirective", - "scope": 751, - "sourceUnit": 1101, + "scope": 763, + "sourceUnit": 1119, "src": "51:29:7", "symbolAliases": [], "unitAlias": "" @@ -632,59 +676,59 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 714, + "id": 724, "name": "MasterCopy", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 652, + "referencedDeclaration": 662, "src": "244:10:7", "typeDescriptions": { - "typeIdentifier": "t_contract$_MasterCopy_$652", + "typeIdentifier": "t_contract$_MasterCopy_$662", "typeString": "contract MasterCopy" } }, - "id": 715, + "id": 725, "nodeType": "InheritanceSpecifier", "src": "244:10:7" } ], "contractDependencies": [ - 652, - 1619 + 662, + 1654 ], "contractKind": "contract", "documentation": "@title Module - Base class for modules.\n @author Stefan George - \n @author Richard Meissner - ", "fullyImplemented": true, - "id": 750, + "id": 762, "linearizedBaseContracts": [ - 750, - 652, - 1619 + 762, + 662, + 1654 ], "name": "Module", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, - "id": 717, + "id": 727, "name": "manager", "nodeType": "VariableDeclaration", - "scope": 750, + "scope": 762, "src": "262:28:7", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" }, "typeName": { "contractScope": null, - "id": 716, + "id": 726, "name": "ModuleManager", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1100, + "referencedDeclaration": 1118, "src": "262:13:7", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } }, @@ -693,9 +737,9 @@ }, { "body": { - "id": 729, + "id": 740, "nodeType": "Block", - "src": "319:67:7", + "src": "319:109:7", "statements": [ { "expression": { @@ -707,7 +751,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 725, + "id": 735, "isConstant": false, "isLValue": false, "isPure": false, @@ -716,18 +760,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 720, + "id": 730, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2598, + "referencedDeclaration": 2654, "src": "337:3:7", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 721, + "id": 731, "isConstant": false, "isLValue": false, "isPure": false, @@ -748,14 +792,14 @@ "arguments": [ { "argumentTypes": null, - "id": 723, + "id": 733, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 717, + "referencedDeclaration": 727, "src": "359:7:7", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } } @@ -763,11 +807,11 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } ], - "id": 722, + "id": 732, "isConstant": false, "isLValue": false, "isPure": true, @@ -780,7 +824,7 @@ }, "typeName": "address" }, - "id": 724, + "id": 734, "isConstant": false, "isLValue": false, "isPure": false, @@ -799,6 +843,24 @@ "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206d616e61676572", + "id": 736, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "369:40:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_f857f17fb7e241a141cb689ce417fc402008e9655fbe55c721e32587b5d510de", + "typeString": "literal_string \"Method can only be called from manager\"" + }, + "value": "Method can only be called from manager" } ], "expression": { @@ -806,23 +868,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_f857f17fb7e241a141cb689ce417fc402008e9655fbe55c721e32587b5d510de", + "typeString": "literal_string \"Method can only be called from manager\"" } ], - "id": 719, + "id": 729, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, + "referencedDeclaration": 2658, "src": "329:7:7", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 726, + "id": 737, "isConstant": false, "isLValue": false, "isPure": false, @@ -830,41 +896,41 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "329:39:7", + "src": "329:81:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 727, + "id": 738, "nodeType": "ExpressionStatement", - "src": "329:39:7" + "src": "329:81:7" }, { - "id": 728, + "id": 739, "nodeType": "PlaceholderStatement", - "src": "378:1:7" + "src": "420:1:7" } ] }, "documentation": null, - "id": 730, + "id": 741, "name": "authorized", "nodeType": "ModifierDefinition", "parameters": { - "id": 718, + "id": 728, "nodeType": "ParameterList", "parameters": [], "src": "316:2:7" }, - "src": "297:89:7", + "src": "297:131:7", "visibility": "internal" }, { "body": { - "id": 748, + "id": 760, "nodeType": "Block", - "src": "435:225:7", + "src": "477:257:7", "statements": [ { "expression": { @@ -876,7 +942,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 738, + "id": 749, "isConstant": false, "isLValue": false, "isPure": false, @@ -886,14 +952,14 @@ "arguments": [ { "argumentTypes": null, - "id": 735, + "id": 746, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 717, - "src": "594:7:7", + "referencedDeclaration": 727, + "src": "636:7:7", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } } @@ -901,24 +967,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } ], - "id": 734, + "id": 745, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "586:7:7", + "src": "628:7:7", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 736, + "id": 747, "isConstant": false, "isLValue": false, "isPure": false, @@ -926,7 +992,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "586:16:7", + "src": "628:16:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -937,14 +1003,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 737, + "id": 748, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "606:1:7", + "src": "648:1:7", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -952,11 +1018,29 @@ }, "value": "0" }, - "src": "586:21:7", + "src": "628:21:7", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "4d616e616765722068617320616c7265616479206265656e20736574", + "id": 750, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "651:30:7", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_5b4e79257e154cde85ff5a3cf5bf48eb2c3921f8c031de73d371d41be013f3cc", + "typeString": "literal_string \"Manager has already been set\"" + }, + "value": "Manager has already been set" } ], "expression": { @@ -964,23 +1048,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_5b4e79257e154cde85ff5a3cf5bf48eb2c3921f8c031de73d371d41be013f3cc", + "typeString": "literal_string \"Manager has already been set\"" } ], - "id": 733, + "id": 744, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "578:7:7", + "referencedDeclaration": 2658, + "src": "620:7:7", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 739, + "id": 751, "isConstant": false, "isLValue": false, "isPure": false, @@ -988,34 +1076,34 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "578:30:7", + "src": "620:62:7", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 740, + "id": 752, "nodeType": "ExpressionStatement", - "src": "578:30:7" + "src": "620:62:7" }, { "expression": { "argumentTypes": null, - "id": 746, + "id": 758, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 741, + "id": 753, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 717, - "src": "618:7:7", + "referencedDeclaration": 727, + "src": "692:7:7", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } }, @@ -1028,18 +1116,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 743, + "id": 755, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2598, - "src": "642:3:7", + "referencedDeclaration": 2654, + "src": "716:3:7", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 744, + "id": 756, "isConstant": false, "isLValue": false, "isPure": false, @@ -1047,7 +1135,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "642:10:7", + "src": "716:10:7", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1061,18 +1149,18 @@ "typeString": "address" } ], - "id": 742, + "id": 754, "name": "ModuleManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1100, - "src": "628:13:7", + "referencedDeclaration": 1118, + "src": "702:13:7", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ModuleManager_$1100_$", + "typeIdentifier": "t_type$_t_contract$_ModuleManager_$1118_$", "typeString": "type(contract ModuleManager)" } }, - "id": 745, + "id": 757, "isConstant": false, "isLValue": false, "isPure": false, @@ -1080,26 +1168,26 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "628:25:7", + "src": "702:25:7", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } }, - "src": "618:35:7", + "src": "692:35:7", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } }, - "id": 747, + "id": 759, "nodeType": "ExpressionStatement", - "src": "618:35:7" + "src": "692:35:7" } ] }, "documentation": null, - "id": 749, + "id": 761, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -1107,30 +1195,30 @@ "name": "setManager", "nodeType": "FunctionDefinition", "parameters": { - "id": 731, + "id": 742, "nodeType": "ParameterList", "parameters": [], - "src": "411:2:7" + "src": "453:2:7" }, "payable": false, "returnParameters": { - "id": 732, + "id": 743, "nodeType": "ParameterList", "parameters": [], - "src": "435:0:7" + "src": "477:0:7" }, - "scope": 750, - "src": "392:268:7", + "scope": 762, + "src": "434:300:7", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" } ], - "scope": 751, - "src": "225:437:7" + "scope": 763, + "src": "225:511:7" } ], - "src": "0:663:7" + "src": "0:737:7" }, "compiler": { "name": "solc", @@ -1138,5 +1226,5 @@ }, "networks": {}, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-27T11:12:45.579Z" + "updatedAt": "2018-05-28T05:59:52.702Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/ModuleManager.json b/safe-contracts/build/contracts/ModuleManager.json index 240aef1617..a04684d750 100644 --- a/safe-contracts/build/contracts/ModuleManager.json +++ b/safe-contracts/build/contracts/ModuleManager.json @@ -138,24 +138,24 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50610d8f806100206000396000f300608060405260043610610083576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063468721a714610085578063610b59251461013d57806385e332cd14610180578063a3f4df7e146101d7578063b2494df314610267578063e009cfde146102d3578063ffa1ad7414610336575b005b34801561009157600080fd5b50610123600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff1690602001909291905050506103c6565b604051808215151515815260200191505060405180910390f35b34801561014957600080fd5b5061017e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610462565b005b34801561018c57600080fd5b506101956106db565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101e357600080fd5b506101ec6106e0565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561022c578082015181840152602081019050610211565b50505050905090810190601f1680156102595780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561027357600080fd5b5061027c610719565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156102bf5780820151818401526020810190506102a4565b505050509050019250505060405180910390f35b3480156102df57600080fd5b50610334600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109bc565b005b34801561034257600080fd5b5061034b610beb565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561038b578082015181840152602081019050610370565b50505050905090810190601f1680156103b85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000806000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561044b57600080fd5b610458858585855a610c24565b9050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561049c57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156104f05750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15156104fb57600080fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561057e57600080fd5b600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b6040805190810160405280600e81526020017f4d6f64756c65204d616e6167657200000000000000000000000000000000000081525081565b6060600080606060009250600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151561082b576000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050610787565b8260405190808252806020026020018201604052801561085a5781602001602082028038833980820191505090505b50905060009250600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156109b35781818481518110151561090957fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915082806001019350506108c4565b80935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156109f657600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610a8e57600080fd5b6000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b60008060006002811115610c3457fe5b846002811115610c4057fe5b1415610c5957610c5287878786610d21565b9150610d17565b60016002811115610c6657fe5b846002811115610c7257fe5b1415610c8a57610c83878685610d3a565b9150610d16565b610c9385610d51565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f090509190505600a165627a7a72305820433f31b2330c2467d55766d21a1ebc4edbb89e459704843222ec9c2d5e0f8c000029", - "deployedBytecode": "0x608060405260043610610083576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063468721a714610085578063610b59251461013d57806385e332cd14610180578063a3f4df7e146101d7578063b2494df314610267578063e009cfde146102d3578063ffa1ad7414610336575b005b34801561009157600080fd5b50610123600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff1690602001909291905050506103c6565b604051808215151515815260200191505060405180910390f35b34801561014957600080fd5b5061017e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610462565b005b34801561018c57600080fd5b506101956106db565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101e357600080fd5b506101ec6106e0565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561022c578082015181840152602081019050610211565b50505050905090810190601f1680156102595780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561027357600080fd5b5061027c610719565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156102bf5780820151818401526020810190506102a4565b505050509050019250505060405180910390f35b3480156102df57600080fd5b50610334600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109bc565b005b34801561034257600080fd5b5061034b610beb565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561038b578082015181840152602081019050610370565b50505050905090810190601f1680156103b85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000806000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415151561044b57600080fd5b610458858585855a610c24565b9050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561049c57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156104f05750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b15156104fb57600080fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561057e57600080fd5b600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b6040805190810160405280600e81526020017f4d6f64756c65204d616e6167657200000000000000000000000000000000000081525081565b6060600080606060009250600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614151561082b576000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050610787565b8260405190808252806020026020018201604052801561085a5781602001602082028038833980820191505090505b50905060009250600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415156109b35781818481518110151561090957fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16915082806001019350506108c4565b80935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156109f657600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610a8e57600080fd5b6000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b60008060006002811115610c3457fe5b846002811115610c4057fe5b1415610c5957610c5287878786610d21565b9150610d17565b60016002811115610c6657fe5b846002811115610c7257fe5b1415610c8a57610c83878685610d3a565b9150610d16565b610c9385610d51565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f090509190505600a165627a7a72305820433f31b2330c2467d55766d21a1ebc4edbb89e459704843222ec9c2d5e0f8c000029", - "sourceMap": "303:4860:8:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;303:4860:8;;;;;;;", - "deployedSourceMap": "303:4860:8:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2522:377;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2522:377:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1235:391;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1235:391:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;499:55;;8:9:-1;5:2;;;30:1;27;20:12;5:2;499:55:8;;;;;;;;;;;;;;;;;;;;;;;;;;;401:46;;8:9:-1;5:2;;;30:1;27;20:12;5:2;401:46:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;401:46:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4423:738;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4423:738:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;4423:738:8;;;;;;;;;;;;;;;;;1887:299;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1887:299:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;453:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;453:40:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;453:40:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2522:377;2654:12;2762:1;2739:7;:19;2747:10;2739:19;;;;;;;;;;;;;;;;;;;;;;;;;:24;;;;2731:33;;;;;;;;2846:46;2854:2;2858:5;2865:4;2871:9;2882;2846:7;:46::i;:::-;2836:56;;2522:377;;;;;;:::o;1235:391::-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;1401:1:8;1390:6;1382:20;;;;:59;;;;;550:3;1406:35;;1414:6;1406:35;;;;1382:59;1374:68;;;;;;;;1520:1;1501:7;:15;1509:6;1501:15;;;;;;;;;;;;;;;;;;;;;;;;;:20;;;1493:29;;;;;;;;1550:7;:25;550:3;1550:25;;;;;;;;;;;;;;;;;;;;;;;;;1532:7;:15;1540:6;1532:15;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;1613:6;1585:7;:25;550:3;1585:25;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;1235:391;:::o;499:55::-;550:3;499:55;:::o;401:46::-;;;;;;;;;;;;;;;;;;;;:::o;4423:738::-;4490:9;4549:19;4582:21;4782:22;4571:1;4549:23;;4606:7;:25;550:3;4606:25;;;;;;;;;;;;;;;;;;;;;;;;;4582:49;;4641:132;550:3;4647:33;;:13;:33;;;;4641:132;;;4712:7;:22;4720:13;4712:22;;;;;;;;;;;;;;;;;;;;;;;;;4696:38;;4748:14;;;;;;;4641:132;;;4821:11;4807:26;;;;;;;;;;;;;;;;;;;;;;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;4807:26:8;;;;4782:51;;4891:1;4877:15;;4918:7;:25;550:3;4918:25;;;;;;;;;;;;;;;;;;;;;;;;;4902:41;;4953:180;550:3;4959:33;;:13;:33;;;;4953:180;;;5029:13;5008:5;5014:11;5008:18;;;;;;;;;;;;;;;;;:34;;;;;;;;;;;5072:7;:22;5080:13;5072:22;;;;;;;;;;;;;;;;;;;;;;;;;5056:38;;5108:14;;;;;;;4953:180;;;5149:5;5142:12;;4423:738;;;;:::o;1887:299::-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;2095:6:8;2064:38;;:7;:19;2072:10;2064:19;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;2056:47;;;;;;;;2135:7;:15;2143:6;2135:15;;;;;;;;;;;;;;;;;;;;;;;;;2113:7;:19;2121:10;2113:19;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;2178:1;2160:7;:15;2168:6;2160:15;;;;;;;;;;;;;;;;:19;;;;;;;;;;;;;;;;;;1887:299;;:::o;453:40::-;;;;;;;;;;;;;;;;;;;;:::o;2905:548::-;3036:12;3307:19;3081;3068:32;;;;;;;;:9;:32;;;;;;;;;3064:383;;;3124:35;3136:2;3140:5;3147:4;3153:5;3124:11;:35::i;:::-;3114:45;;3064:383;;;3191:27;3178:40;;;;;;;;:9;:40;;;;;;;;;3174:273;;;3242:36;3262:2;3266:4;3272:5;3242:19;:36::i;:::-;3232:46;;3174:273;;;3329:19;3343:4;3329:13;:19::i;:::-;3307:41;;3387:1;3372:11;:16;;;;3362:26;;3407:29;3424:11;3407:29;;;;;;;;;;;;;;;;;;;;;;3174:273;3064:383;2905:548;;;;;;;;:::o;3459:309::-;3568:12;3750:1;3747;3740:4;3734:11;3727:4;3721;3717:15;3710:5;3706:2;3699:5;3694:58;3683:69;;3669:93;;;;;;:::o;3774:303::-;3876:12;4059:1;4056;4049:4;4043:11;4036:4;4030;4026:15;4022:2;4015:5;4002:59;3991:70;;3977:94;;;;;:::o;4083:261::-;4152:19;4322:4;4316:11;4309:4;4303;4299:15;4296:1;4289:39;4274:54;;4260:78;;;:::o", - "source": "pragma solidity 0.4.24;\nimport \"./Module.sol\";\nimport \"./MasterCopy.sol\";\nimport \"./Enum.sol\";\n\n\n/// @title Module Manager - A contract that manages modules that can execute transactions via this contract\n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract ModuleManager is SelfAuthorized {\n\n event ContractCreation(address newContract);\n\n string public constant NAME = \"Module Manager\";\n string public constant VERSION = \"0.0.1\";\n address public constant SENTINEL_MODULES = address(0x1);\n\n mapping (address => address) internal modules;\n\n /// @dev Fallback function accepts Ether transactions.\n function ()\n external\n payable\n {\n\n }\n\n function setupModules(address to, bytes data)\n internal\n {\n require(modules[SENTINEL_MODULES] == 0);\n modules[SENTINEL_MODULES] = SENTINEL_MODULES;\n if (to != 0)\n // Setup has to complete successfully or transaction fails.\n require(executeDelegateCall(to, data, gasleft()));\n }\n\n /// @dev Allows to add a module to the whitelist.\n /// This can only be done via a Safe transaction.\n /// @param module Module to be whitelisted.\n function enableModule(Module module)\n public\n authorized\n {\n // Module address cannot be null or sentinel.\n require(address(module) != 0 && address(module) != SENTINEL_MODULES);\n // Module cannot be added twice.\n require(modules[module] == 0);\n modules[module] = modules[SENTINEL_MODULES];\n modules[SENTINEL_MODULES] = module;\n }\n\n /// @dev Allows to remove a module from the whitelist.\n /// This can only be done via a Safe transaction.\n /// @param prevModule Module that pointed to the module to be removed in the linked list\n /// @param module Module to be removed.\n function disableModule(Module prevModule, Module module)\n public\n authorized\n {\n // Validate module address corresponds to module index.\n require(modules[prevModule] == address(module));\n modules[prevModule] = modules[module];\n modules[module] = 0;\n }\n\n /// @dev Allows a Module to execute a Safe transaction without any further confirmations.\n /// @param to Destination address of module transaction.\n /// @param value Ether value of module transaction.\n /// @param data Data payload of module transaction.\n /// @param operation Operation type of module transaction.\n function execTransactionFromModule(address to, uint256 value, bytes data, Enum.Operation operation)\n public\n returns (bool success)\n {\n // Only whitelisted modules are allowed.\n require(modules[msg.sender] != 0);\n // Execute transaction without further confirmations.\n success = execute(to, value, data, operation, gasleft());\n }\n\n function execute(address to, uint256 value, bytes data, Enum.Operation operation, uint256 txGas)\n internal\n returns (bool success)\n {\n if (operation == Enum.Operation.Call)\n success = executeCall(to, value, data, txGas);\n else if (operation == Enum.Operation.DelegateCall)\n success = executeDelegateCall(to, data, txGas);\n else {\n address newContract = executeCreate(data);\n success = newContract != 0;\n emit ContractCreation(newContract);\n }\n }\n\n function executeCall(address to, uint256 value, bytes data, uint256 txGas)\n internal\n returns (bool success)\n {\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n success := call(txGas, to, value, add(data, 0x20), mload(data), 0, 0)\n }\n }\n\n function executeDelegateCall(address to, bytes data, uint256 txGas)\n internal\n returns (bool success)\n {\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n success := delegatecall(txGas, to, add(data, 0x20), mload(data), 0, 0)\n }\n }\n\n function executeCreate(bytes data)\n internal\n returns (address newContract)\n {\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n newContract := create(0, add(data, 0x20), mload(data))\n }\n }\n\n /// @dev Returns array of modules.\n /// @return Array of modules.\n function getModules()\n public\n view\n returns (address[])\n {\n // Calculate module count\n uint256 moduleCount = 0;\n address currentModule = modules[SENTINEL_MODULES];\n while(currentModule != SENTINEL_MODULES) {\n currentModule = modules[currentModule];\n moduleCount ++;\n }\n address[] memory array = new address[](moduleCount);\n\n // populate return array\n moduleCount = 0;\n currentModule = modules[SENTINEL_MODULES];\n while(currentModule != SENTINEL_MODULES) {\n array[moduleCount] = currentModule;\n currentModule = modules[currentModule];\n moduleCount ++;\n }\n return array;\n }\n}\n", + "bytecode": "0x608060405234801561001057600080fd5b5061109d806100206000396000f300608060405260043610610083576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063468721a714610085578063610b59251461013d57806385e332cd14610180578063a3f4df7e146101d7578063b2494df314610267578063e009cfde146102d3578063ffa1ad7414610336575b005b34801561009157600080fd5b50610123600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff1690602001909291905050506103c6565b604051808215151515815260200191505060405180910390f35b34801561014957600080fd5b5061017e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506104f1565b005b34801561018c57600080fd5b506101956108cb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101e357600080fd5b506101ec6108d0565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561022c578082015181840152602081019050610211565b50505050905090810190601f1680156102595780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561027357600080fd5b5061027c610909565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156102bf5780820151818401526020810190506102a4565b505050509050019250505060405180910390f35b3480156102df57600080fd5b50610334600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610bac565b005b34801561034257600080fd5b5061034b610ef9565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561038b578082015181840152602081019050610370565b50505050905090810190601f1680156103b85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000806000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515156104da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206181526020017f6e20656e61626c6564206d6f64756c650000000000000000000000000000000081525060400191505060405180910390fd5b6104e7858585855a610f32565b9050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156105ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415801561060e5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515610682576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f496e76616c6964206d6f64756c6520616464726573732070726f76696465640081525060200191505060405180910390fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561076e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4d6f64756c652068617320616c7265616479206265656e20616464656400000081525060200191505060405180910390fd5b600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b6040805190810160405280600e81526020017f4d6f64756c65204d616e6167657200000000000000000000000000000000000081525081565b6060600080606060009250600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515610a1b576000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050610977565b82604051908082528060200260200182016040528015610a4a5781602001602082028038833980820191505090505b50905060009250600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515610ba357818184815181101515610af957fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050610ab4565b80935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610c75576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610d9c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001807f496e76616c696420707265764d6f64756c652c206d6f64756c6520706169722081526020017f70726f766964656400000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b60008060006002811115610f4257fe5b846002811115610f4e57fe5b1415610f6757610f608787878661102f565b9150611025565b60016002811115610f7457fe5b846002811115610f8057fe5b1415610f9857610f91878685611048565b9150611024565b610fa18561105f565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f090509190505600a165627a7a7230582064e1429e38089b60111fc239d8ee944fd8ed2024c4abbbd20e6d6508f25e601e0029", + "deployedBytecode": "0x608060405260043610610083576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063468721a714610085578063610b59251461013d57806385e332cd14610180578063a3f4df7e146101d7578063b2494df314610267578063e009cfde146102d3578063ffa1ad7414610336575b005b34801561009157600080fd5b50610123600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff1690602001909291905050506103c6565b604051808215151515815260200191505060405180910390f35b34801561014957600080fd5b5061017e600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506104f1565b005b34801561018c57600080fd5b506101956108cb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101e357600080fd5b506101ec6108d0565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561022c578082015181840152602081019050610211565b50505050905090810190601f1680156102595780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561027357600080fd5b5061027c610909565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156102bf5780820151818401526020810190506102a4565b505050509050019250505060405180910390f35b3480156102df57600080fd5b50610334600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610bac565b005b34801561034257600080fd5b5061034b610ef9565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561038b578082015181840152602081019050610370565b50505050905090810190601f1680156103b85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000806000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515156104da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260308152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206181526020017f6e20656e61626c6564206d6f64756c650000000000000000000000000000000081525060400191505060405180910390fd5b6104e7858585855a610f32565b9050949350505050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156105ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415801561060e5750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515610682576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f496e76616c6964206d6f64756c6520616464726573732070726f76696465640081525060200191505060405180910390fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561076e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4d6f64756c652068617320616c7265616479206265656e20616464656400000081525060200191505060405180910390fd5b600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600181565b6040805190810160405280600e81526020017f4d6f64756c65204d616e6167657200000000000000000000000000000000000081525081565b6060600080606060009250600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515610a1b576000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050610977565b82604051908082528060200260200182016040528015610a4a5781602001602082028038833980820191505090505b50905060009250600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691505b600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141515610ba357818184815181101515610af957fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1691508280600101935050610ab4565b80935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610c75576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610d9c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001807f496e76616c696420707265764d6f64756c652c206d6f64756c6520706169722081526020017f70726f766964656400000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b60008060006002811115610f4257fe5b846002811115610f4e57fe5b1415610f6757610f608787878661102f565b9150611025565b60016002811115610f7457fe5b846002811115610f8057fe5b1415610f9857610f91878685611048565b9150611024565b610fa18561105f565b905060008173ffffffffffffffffffffffffffffffffffffffff16141591507f4db17dd5e4732fb6da34a148104a592783ca119a1e7bb8829eba6cbadef0b51181604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a15b5b5095945050505050565b6000806000845160208601878987f19050949350505050565b60008060008451602086018786f490509392505050565b60008151602083016000f090509190505600a165627a7a7230582064e1429e38089b60111fc239d8ee944fd8ed2024c4abbbd20e6d6508f25e601e0029", + "sourceMap": "303:5100:8:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;303:5100:8;;;;;;;", + "deployedSourceMap": "303:5100:8:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2710:429;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2710:429:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1311:459;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1311:459:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;499:55;;8:9:-1;5:2;;;30:1;27;20:12;5:2;499:55:8;;;;;;;;;;;;;;;;;;;;;;;;;;;401:46;;8:9:-1;5:2;;;30:1;27;20:12;5:2;401:46:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;401:46:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4663:738;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4663:738:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;4663:738:8;;;;;;;;;;;;;;;;;2031:343;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2031:343:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;453:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;453:40:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;453:40:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2710:429;2842:12;2950:1;2927:7;:19;2935:10;2927:19;;;;;;;;;;;;;;;;;;;;;;;;;:24;;;;2919:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3086:46;3094:2;3098:5;3105:4;3111:9;3122;3086:7;:46::i;:::-;3076:56;;2710:429;;;;;;:::o;1311:459::-;244:4:13;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1477:1:8;1466:6;1458:20;;;;:59;;;;;550:3;1482:35;;1490:6;1482:35;;;;1458:59;1450:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1631:1;1612:7;:15;1620:6;1612:15;;;;;;;;;;;;;;;;;;;;;;;;;:20;;;1604:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1694:7;:25;550:3;1694:25;;;;;;;;;;;;;;;;;;;;;;;;;1676:7;:15;1684:6;1676:15;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;1757:6;1729:7;:25;550:3;1729:25;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;1311:459;:::o;499:55::-;550:3;499:55;:::o;401:46::-;;;;;;;;;;;;;;;;;;;;:::o;4663:738::-;4730:9;4789:19;4822:21;5022:22;4811:1;4789:23;;4846:7;:25;550:3;4846:25;;;;;;;;;;;;;;;;;;;;;;;;;4822:49;;4881:132;550:3;4887:33;;:13;:33;;;;4881:132;;;4952:7;:22;4960:13;4952:22;;;;;;;;;;;;;;;;;;;;;;;;;4936:38;;4988:14;;;;;;;4881:132;;;5061:11;5047:26;;;;;;;;;;;;;;;;;;;;;;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;5047:26:8;;;;5022:51;;5131:1;5117:15;;5158:7;:25;550:3;5158:25;;;;;;;;;;;;;;;;;;;;;;;;;5142:41;;5193:180;550:3;5199:33;;:13;:33;;;;5193:180;;;5269:13;5248:5;5254:11;5248:18;;;;;;;;;;;;;;;;;:34;;;;;;;;;;;5312:7;:22;5320:13;5312:22;;;;;;;;;;;;;;;;;;;;;;;;;5296:38;;5348:14;;;;;;;5193:180;;;5389:5;5382:12;;4663:738;;;;:::o;2031:343::-;244:4:13;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2239:6:8;2208:38;;:7;:19;2216:10;2208:19;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;2200:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2323:7;:15;2331:6;2323:15;;;;;;;;;;;;;;;;;;;;;;;;;2301:7;:19;2309:10;2301:19;;;;;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;2366:1;2348:7;:15;2356:6;2348:15;;;;;;;;;;;;;;;;:19;;;;;;;;;;;;;;;;;;2031:343;;:::o;453:40::-;;;;;;;;;;;;;;;;;;;;:::o;3145:548::-;3276:12;3547:19;3321;3308:32;;;;;;;;:9;:32;;;;;;;;;3304:383;;;3364:35;3376:2;3380:5;3387:4;3393:5;3364:11;:35::i;:::-;3354:45;;3304:383;;;3431:27;3418:40;;;;;;;;:9;:40;;;;;;;;;3414:273;;;3482:36;3502:2;3506:4;3512:5;3482:19;:36::i;:::-;3472:46;;3414:273;;;3569:19;3583:4;3569:13;:19::i;:::-;3547:41;;3627:1;3612:11;:16;;;;3602:26;;3647:29;3664:11;3647:29;;;;;;;;;;;;;;;;;;;;;;3414:273;3304:383;3145:548;;;;;;;;:::o;3699:309::-;3808:12;3990:1;3987;3980:4;3974:11;3967:4;3961;3957:15;3950:5;3946:2;3939:5;3934:58;3923:69;;3909:93;;;;;;:::o;4014:303::-;4116:12;4299:1;4296;4289:4;4283:11;4276:4;4270;4266:15;4262:2;4255:5;4242:59;4231:70;;4217:94;;;;;:::o;4323:261::-;4392:19;4562:4;4556:11;4549:4;4543;4539:15;4536:1;4529:39;4514:54;;4500:78;;;:::o", + "source": "pragma solidity 0.4.24;\nimport \"./Module.sol\";\nimport \"./MasterCopy.sol\";\nimport \"./Enum.sol\";\n\n\n/// @title Module Manager - A contract that manages modules that can execute transactions via this contract\n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract ModuleManager is SelfAuthorized {\n\n event ContractCreation(address newContract);\n\n string public constant NAME = \"Module Manager\";\n string public constant VERSION = \"0.0.1\";\n address public constant SENTINEL_MODULES = address(0x1);\n\n mapping (address => address) internal modules;\n\n /// @dev Fallback function accepts Ether transactions.\n function ()\n external\n payable\n {\n\n }\n\n function setupModules(address to, bytes data)\n internal\n {\n require(modules[SENTINEL_MODULES] == 0, \"Modules have already been initialized\");\n modules[SENTINEL_MODULES] = SENTINEL_MODULES;\n if (to != 0)\n // Setup has to complete successfully or transaction fails.\n require(executeDelegateCall(to, data, gasleft()), \"Could not finish initialization\");\n }\n\n /// @dev Allows to add a module to the whitelist.\n /// This can only be done via a Safe transaction.\n /// @param module Module to be whitelisted.\n function enableModule(Module module)\n public\n authorized\n {\n // Module address cannot be null or sentinel.\n require(address(module) != 0 && address(module) != SENTINEL_MODULES, \"Invalid module address provided\");\n // Module cannot be added twice.\n require(modules[module] == 0, \"Module has already been added\");\n modules[module] = modules[SENTINEL_MODULES];\n modules[SENTINEL_MODULES] = module;\n }\n\n /// @dev Allows to remove a module from the whitelist.\n /// This can only be done via a Safe transaction.\n /// @param prevModule Module that pointed to the module to be removed in the linked list\n /// @param module Module to be removed.\n function disableModule(Module prevModule, Module module)\n public\n authorized\n {\n // Validate module address corresponds to module index.\n require(modules[prevModule] == address(module), \"Invalid prevModule, module pair provided\");\n modules[prevModule] = modules[module];\n modules[module] = 0;\n }\n\n /// @dev Allows a Module to execute a Safe transaction without any further confirmations.\n /// @param to Destination address of module transaction.\n /// @param value Ether value of module transaction.\n /// @param data Data payload of module transaction.\n /// @param operation Operation type of module transaction.\n function execTransactionFromModule(address to, uint256 value, bytes data, Enum.Operation operation)\n public\n returns (bool success)\n {\n // Only whitelisted modules are allowed.\n require(modules[msg.sender] != 0, \"Method can only be called from an enabled module\");\n // Execute transaction without further confirmations.\n success = execute(to, value, data, operation, gasleft());\n }\n\n function execute(address to, uint256 value, bytes data, Enum.Operation operation, uint256 txGas)\n internal\n returns (bool success)\n {\n if (operation == Enum.Operation.Call)\n success = executeCall(to, value, data, txGas);\n else if (operation == Enum.Operation.DelegateCall)\n success = executeDelegateCall(to, data, txGas);\n else {\n address newContract = executeCreate(data);\n success = newContract != 0;\n emit ContractCreation(newContract);\n }\n }\n\n function executeCall(address to, uint256 value, bytes data, uint256 txGas)\n internal\n returns (bool success)\n {\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n success := call(txGas, to, value, add(data, 0x20), mload(data), 0, 0)\n }\n }\n\n function executeDelegateCall(address to, bytes data, uint256 txGas)\n internal\n returns (bool success)\n {\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n success := delegatecall(txGas, to, add(data, 0x20), mload(data), 0, 0)\n }\n }\n\n function executeCreate(bytes data)\n internal\n returns (address newContract)\n {\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n newContract := create(0, add(data, 0x20), mload(data))\n }\n }\n\n /// @dev Returns array of modules.\n /// @return Array of modules.\n function getModules()\n public\n view\n returns (address[])\n {\n // Calculate module count\n uint256 moduleCount = 0;\n address currentModule = modules[SENTINEL_MODULES];\n while(currentModule != SENTINEL_MODULES) {\n currentModule = modules[currentModule];\n moduleCount ++;\n }\n address[] memory array = new address[](moduleCount);\n\n // populate return array\n moduleCount = 0;\n currentModule = modules[SENTINEL_MODULES];\n while(currentModule != SENTINEL_MODULES) {\n array[moduleCount] = currentModule;\n currentModule = modules[currentModule];\n moduleCount ++;\n }\n return array;\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ModuleManager.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ModuleManager.sol", "exportedSymbols": { "ModuleManager": [ - 1100 + 1118 ] }, - "id": 1101, + "id": 1119, "nodeType": "SourceUnit", "nodes": [ { - "id": 752, + "id": 764, "literals": [ "solidity", "0.4", @@ -167,10 +167,10 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "file": "./Module.sol", - "id": 753, + "id": 765, "nodeType": "ImportDirective", - "scope": 1101, - "sourceUnit": 751, + "scope": 1119, + "sourceUnit": 763, "src": "24:22:8", "symbolAliases": [], "unitAlias": "" @@ -178,10 +178,10 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/MasterCopy.sol", "file": "./MasterCopy.sol", - "id": 754, + "id": 766, "nodeType": "ImportDirective", - "scope": 1101, - "sourceUnit": 653, + "scope": 1119, + "sourceUnit": 663, "src": "47:26:8", "symbolAliases": [], "unitAlias": "" @@ -189,9 +189,9 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Enum.sol", "file": "./Enum.sol", - "id": 755, + "id": 767, "nodeType": "ImportDirective", - "scope": 1101, + "scope": 1119, "sourceUnit": 31, "src": "74:20:8", "symbolAliases": [], @@ -203,31 +203,31 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 756, + "id": 768, "name": "SelfAuthorized", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1619, + "referencedDeclaration": 1654, "src": "329:14:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_SelfAuthorized_$1619", + "typeIdentifier": "t_contract$_SelfAuthorized_$1654", "typeString": "contract SelfAuthorized" } }, - "id": 757, + "id": 769, "nodeType": "InheritanceSpecifier", "src": "329:14:8" } ], "contractDependencies": [ - 1619 + 1654 ], "contractKind": "contract", "documentation": "@title Module Manager - A contract that manages modules that can execute transactions via this contract\n @author Stefan George - \n @author Richard Meissner - ", "fullyImplemented": true, - "id": 1100, + "id": 1118, "linearizedBaseContracts": [ - 1100, - 1619 + 1118, + 1654 ], "name": "ModuleManager", "nodeType": "ContractDefinition", @@ -235,20 +235,20 @@ { "anonymous": false, "documentation": null, - "id": 761, + "id": 773, "name": "ContractCreation", "nodeType": "EventDefinition", "parameters": { - "id": 760, + "id": 772, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 759, + "id": 771, "indexed": false, "name": "newContract", "nodeType": "VariableDeclaration", - "scope": 761, + "scope": 773, "src": "374:19:8", "stateVariable": false, "storageLocation": "default", @@ -257,7 +257,7 @@ "typeString": "address" }, "typeName": { - "id": 758, + "id": 770, "name": "address", "nodeType": "ElementaryTypeName", "src": "374:7:8", @@ -276,10 +276,10 @@ }, { "constant": true, - "id": 764, + "id": 776, "name": "NAME", "nodeType": "VariableDeclaration", - "scope": 1100, + "scope": 1118, "src": "401:46:8", "stateVariable": true, "storageLocation": "default", @@ -288,7 +288,7 @@ "typeString": "string" }, "typeName": { - "id": 762, + "id": 774, "name": "string", "nodeType": "ElementaryTypeName", "src": "401:6:8", @@ -300,7 +300,7 @@ "value": { "argumentTypes": null, "hexValue": "4d6f64756c65204d616e61676572", - "id": 763, + "id": 775, "isConstant": false, "isLValue": false, "isPure": true, @@ -319,10 +319,10 @@ }, { "constant": true, - "id": 767, + "id": 779, "name": "VERSION", "nodeType": "VariableDeclaration", - "scope": 1100, + "scope": 1118, "src": "453:40:8", "stateVariable": true, "storageLocation": "default", @@ -331,7 +331,7 @@ "typeString": "string" }, "typeName": { - "id": 765, + "id": 777, "name": "string", "nodeType": "ElementaryTypeName", "src": "453:6:8", @@ -343,7 +343,7 @@ "value": { "argumentTypes": null, "hexValue": "302e302e31", - "id": 766, + "id": 778, "isConstant": false, "isLValue": false, "isPure": true, @@ -362,10 +362,10 @@ }, { "constant": true, - "id": 772, + "id": 784, "name": "SENTINEL_MODULES", "nodeType": "VariableDeclaration", - "scope": 1100, + "scope": 1118, "src": "499:55:8", "stateVariable": true, "storageLocation": "default", @@ -374,7 +374,7 @@ "typeString": "address" }, "typeName": { - "id": 768, + "id": 780, "name": "address", "nodeType": "ElementaryTypeName", "src": "499:7:8", @@ -389,7 +389,7 @@ { "argumentTypes": null, "hexValue": "307831", - "id": 770, + "id": 782, "isConstant": false, "isLValue": false, "isPure": true, @@ -412,7 +412,7 @@ "typeString": "int_const 1" } ], - "id": 769, + "id": 781, "isConstant": false, "isLValue": false, "isPure": true, @@ -425,7 +425,7 @@ }, "typeName": "address" }, - "id": 771, + "id": 783, "isConstant": false, "isLValue": false, "isPure": true, @@ -443,10 +443,10 @@ }, { "constant": false, - "id": 776, + "id": 788, "name": "modules", "nodeType": "VariableDeclaration", - "scope": 1100, + "scope": 1118, "src": "561:45:8", "stateVariable": true, "storageLocation": "default", @@ -455,9 +455,9 @@ "typeString": "mapping(address => address)" }, "typeName": { - "id": 775, + "id": 787, "keyType": { - "id": 773, + "id": 785, "name": "address", "nodeType": "ElementaryTypeName", "src": "570:7:8", @@ -473,7 +473,7 @@ "typeString": "mapping(address => address)" }, "valueType": { - "id": 774, + "id": 786, "name": "address", "nodeType": "ElementaryTypeName", "src": "581:7:8", @@ -488,13 +488,13 @@ }, { "body": { - "id": 779, + "id": 791, "nodeType": "Block", "src": "721:8:8", "statements": [] }, "documentation": "@dev Fallback function accepts Ether transactions.", - "id": 780, + "id": 792, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -502,19 +502,19 @@ "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 777, + "id": 789, "nodeType": "ParameterList", "parameters": [], "src": "681:2:8" }, "payable": true, "returnParameters": { - "id": 778, + "id": 790, "nodeType": "ParameterList", "parameters": [], "src": "721:0:8" }, - "scope": 1100, + "scope": 1118, "src": "672:57:8", "stateMutability": "payable", "superFunction": null, @@ -522,9 +522,9 @@ }, { "body": { - "id": 814, + "id": 828, "nodeType": "Block", - "src": "802:266:8", + "src": "802:342:8", "statements": [ { "expression": { @@ -536,7 +536,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 792, + "id": 804, "isConstant": false, "isLValue": false, "isPure": false, @@ -545,25 +545,25 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 788, + "id": 800, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 776, + "referencedDeclaration": 788, "src": "820:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 790, + "id": 802, "indexExpression": { "argumentTypes": null, - "id": 789, + "id": 801, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 772, + "referencedDeclaration": 784, "src": "828:16:8", "typeDescriptions": { "typeIdentifier": "t_address", @@ -586,7 +586,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 791, + "id": 803, "isConstant": false, "isLValue": false, "isPure": true, @@ -606,6 +606,24 @@ "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "4d6f64756c6573206861766520616c7265616479206265656e20696e697469616c697a6564", + "id": 805, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "852:39:8", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_1e0428ffa69bff65645154a36d5017c238f946ddaf89430d30eec813f30bdd77", + "typeString": "literal_string \"Modules have already been initialized\"" + }, + "value": "Modules have already been initialized" } ], "expression": { @@ -613,23 +631,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_1e0428ffa69bff65645154a36d5017c238f946ddaf89430d30eec813f30bdd77", + "typeString": "literal_string \"Modules have already been initialized\"" } ], - "id": 787, + "id": 799, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, + "referencedDeclaration": 2658, "src": "812:7:8", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 793, + "id": 806, "isConstant": false, "isLValue": false, "isPure": false, @@ -637,20 +659,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "812:39:8", + "src": "812:80:8", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 794, + "id": 807, "nodeType": "ExpressionStatement", - "src": "812:39:8" + "src": "812:80:8" }, { "expression": { "argumentTypes": null, - "id": 799, + "id": 812, "isConstant": false, "isLValue": false, "isPure": false, @@ -659,26 +681,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 795, + "id": 808, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 776, - "src": "861:7:8", + "referencedDeclaration": 788, + "src": "902:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 797, + "id": 810, "indexExpression": { "argumentTypes": null, - "id": 796, + "id": 809, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 772, - "src": "869:16:8", + "referencedDeclaration": 784, + "src": "910:16:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -689,7 +711,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "861:25:8", + "src": "902:25:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -699,26 +721,26 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 798, + "id": 811, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 772, - "src": "889:16:8", + "referencedDeclaration": 784, + "src": "930:16:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "861:44:8", + "src": "902:44:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 800, + "id": 813, "nodeType": "ExpressionStatement", - "src": "861:44:8" + "src": "902:44:8" }, { "condition": { @@ -727,19 +749,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 803, + "id": 816, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 801, + "id": 814, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 782, - "src": "919:2:8", + "referencedDeclaration": 794, + "src": "960:2:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -750,14 +772,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 802, + "id": 815, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "925:1:8", + "src": "966:1:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -765,16 +787,16 @@ }, "value": "0" }, - "src": "919:7:8", + "src": "960:7:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 813, + "id": 827, "nodeType": "IfStatement", - "src": "915:146:8", + "src": "956:181:8", "trueBody": { "expression": { "argumentTypes": null, @@ -784,12 +806,12 @@ "arguments": [ { "argumentTypes": null, - "id": 806, + "id": 819, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 782, - "src": "1040:2:8", + "referencedDeclaration": 794, + "src": "1081:2:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -797,12 +819,12 @@ }, { "argumentTypes": null, - "id": 807, + "id": 820, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 784, - "src": "1044:4:8", + "referencedDeclaration": 796, + "src": "1085:4:8", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -813,18 +835,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 808, + "id": 821, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2591, - "src": "1050:7:8", + "referencedDeclaration": 2647, + "src": "1091:7:8", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 809, + "id": 822, "isConstant": false, "isLValue": false, "isPure": false, @@ -832,7 +854,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1050:9:8", + "src": "1091:9:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -854,18 +876,18 @@ "typeString": "uint256" } ], - "id": 805, + "id": 818, "name": "executeDelegateCall", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1017, - "src": "1020:19:8", + "referencedDeclaration": 1035, + "src": "1061:19:8", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,bytes memory,uint256) returns (bool)" } }, - "id": 810, + "id": 823, "isConstant": false, "isLValue": false, "isPure": false, @@ -873,11 +895,29 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1020:40:8", + "src": "1061:40:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "436f756c64206e6f742066696e69736820696e697469616c697a6174696f6e", + "id": 824, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1103:33:8", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_7913a3f9168bf3e458e3f42eb08db5c4b33f44228d345660887090b75e24c6aa", + "typeString": "literal_string \"Could not finish initialization\"" + }, + "value": "Could not finish initialization" } ], "expression": { @@ -885,23 +925,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_7913a3f9168bf3e458e3f42eb08db5c4b33f44228d345660887090b75e24c6aa", + "typeString": "literal_string \"Could not finish initialization\"" } ], - "id": 804, + "id": 817, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "1012:7:8", + "referencedDeclaration": 2658, + "src": "1053:7:8", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 811, + "id": 825, "isConstant": false, "isLValue": false, "isPure": false, @@ -909,21 +953,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1012:49:8", + "src": "1053:84:8", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 812, + "id": 826, "nodeType": "ExpressionStatement", - "src": "1012:49:8" + "src": "1053:84:8" } } ] }, "documentation": null, - "id": 815, + "id": 829, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -931,15 +975,15 @@ "name": "setupModules", "nodeType": "FunctionDefinition", "parameters": { - "id": 785, + "id": 797, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 782, + "id": 794, "name": "to", "nodeType": "VariableDeclaration", - "scope": 815, + "scope": 829, "src": "757:10:8", "stateVariable": false, "storageLocation": "default", @@ -948,7 +992,7 @@ "typeString": "address" }, "typeName": { - "id": 781, + "id": 793, "name": "address", "nodeType": "ElementaryTypeName", "src": "757:7:8", @@ -962,10 +1006,10 @@ }, { "constant": false, - "id": 784, + "id": 796, "name": "data", "nodeType": "VariableDeclaration", - "scope": 815, + "scope": 829, "src": "769:10:8", "stateVariable": false, "storageLocation": "default", @@ -974,7 +1018,7 @@ "typeString": "bytes" }, "typeName": { - "id": 783, + "id": 795, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "769:5:8", @@ -991,22 +1035,22 @@ }, "payable": false, "returnParameters": { - "id": 786, + "id": 798, "nodeType": "ParameterList", "parameters": [], "src": "802:0:8" }, - "scope": 1100, - "src": "735:333:8", + "scope": 1118, + "src": "735:409:8", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 858, + "id": 874, "nodeType": "Block", - "src": "1310:316:8", + "src": "1386:384:8", "statements": [ { "expression": { @@ -1018,7 +1062,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 833, + "id": 847, "isConstant": false, "isLValue": false, "isPure": false, @@ -1029,7 +1073,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 827, + "id": 841, "isConstant": false, "isLValue": false, "isPure": false, @@ -1039,14 +1083,14 @@ "arguments": [ { "argumentTypes": null, - "id": 824, + "id": 838, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 817, - "src": "1390:6:8", + "referencedDeclaration": 831, + "src": "1466:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } } @@ -1054,24 +1098,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } ], - "id": 823, + "id": 837, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1382:7:8", + "src": "1458:7:8", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 825, + "id": 839, "isConstant": false, "isLValue": false, "isPure": false, @@ -1079,7 +1123,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1382:15:8", + "src": "1458:15:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1090,14 +1134,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 826, + "id": 840, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1401:1:8", + "src": "1477:1:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1105,7 +1149,7 @@ }, "value": "0" }, - "src": "1382:20:8", + "src": "1458:20:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1119,7 +1163,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 832, + "id": 846, "isConstant": false, "isLValue": false, "isPure": false, @@ -1129,14 +1173,14 @@ "arguments": [ { "argumentTypes": null, - "id": 829, + "id": 843, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 817, - "src": "1414:6:8", + "referencedDeclaration": 831, + "src": "1490:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } } @@ -1144,24 +1188,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } ], - "id": 828, + "id": 842, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1406:7:8", + "src": "1482:7:8", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 830, + "id": 844, "isConstant": false, "isLValue": false, "isPure": false, @@ -1169,7 +1213,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1406:15:8", + "src": "1482:15:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1179,28 +1223,46 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 831, + "id": 845, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 772, - "src": "1425:16:8", + "referencedDeclaration": 784, + "src": "1501:16:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1406:35:8", + "src": "1482:35:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "1382:59:8", + "src": "1458:59:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "496e76616c6964206d6f64756c6520616464726573732070726f7669646564", + "id": 848, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1519:33:8", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_8c2199b479423c52a835dfe8b0f2e9eb4c1ec1069ba198ccc38077a4a88a5c00", + "typeString": "literal_string \"Invalid module address provided\"" + }, + "value": "Invalid module address provided" } ], "expression": { @@ -1208,23 +1270,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_8c2199b479423c52a835dfe8b0f2e9eb4c1ec1069ba198ccc38077a4a88a5c00", + "typeString": "literal_string \"Invalid module address provided\"" } ], - "id": 822, + "id": 836, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "1374:7:8", + "referencedDeclaration": 2658, + "src": "1450:7:8", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 834, + "id": 849, "isConstant": false, "isLValue": false, "isPure": false, @@ -1232,15 +1298,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1374:68:8", + "src": "1450:103:8", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 835, + "id": 850, "nodeType": "ExpressionStatement", - "src": "1374:68:8" + "src": "1450:103:8" }, { "expression": { @@ -1252,7 +1318,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 841, + "id": 856, "isConstant": false, "isLValue": false, "isPure": false, @@ -1261,28 +1327,28 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 837, + "id": 852, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 776, - "src": "1501:7:8", + "referencedDeclaration": 788, + "src": "1612:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 839, + "id": 854, "indexExpression": { "argumentTypes": null, - "id": 838, + "id": 853, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 817, - "src": "1509:6:8", + "referencedDeclaration": 831, + "src": "1620:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } }, @@ -1291,7 +1357,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1501:15:8", + "src": "1612:15:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1302,14 +1368,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 840, + "id": 855, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1520:1:8", + "src": "1631:1:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1317,11 +1383,29 @@ }, "value": "0" }, - "src": "1501:20:8", + "src": "1612:20:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "4d6f64756c652068617320616c7265616479206265656e206164646564", + "id": 857, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1634:31:8", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ae2b4ea52eaf6de3fb2d8a64b7555be2dfd285b837a62821bf24e7dc6f329450", + "typeString": "literal_string \"Module has already been added\"" + }, + "value": "Module has already been added" } ], "expression": { @@ -1329,23 +1413,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ae2b4ea52eaf6de3fb2d8a64b7555be2dfd285b837a62821bf24e7dc6f329450", + "typeString": "literal_string \"Module has already been added\"" } ], - "id": 836, + "id": 851, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "1493:7:8", + "referencedDeclaration": 2658, + "src": "1604:7:8", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 842, + "id": 858, "isConstant": false, "isLValue": false, "isPure": false, @@ -1353,20 +1441,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1493:29:8", + "src": "1604:62:8", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 843, + "id": 859, "nodeType": "ExpressionStatement", - "src": "1493:29:8" + "src": "1604:62:8" }, { "expression": { "argumentTypes": null, - "id": 850, + "id": 866, "isConstant": false, "isLValue": false, "isPure": false, @@ -1375,28 +1463,28 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 844, + "id": 860, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 776, - "src": "1532:7:8", + "referencedDeclaration": 788, + "src": "1676:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 846, + "id": 862, "indexExpression": { "argumentTypes": null, - "id": 845, + "id": 861, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 817, - "src": "1540:6:8", + "referencedDeclaration": 831, + "src": "1684:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } }, @@ -1405,7 +1493,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1532:15:8", + "src": "1676:15:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1417,26 +1505,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 847, + "id": 863, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 776, - "src": "1550:7:8", + "referencedDeclaration": 788, + "src": "1694:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 849, + "id": 865, "indexExpression": { "argumentTypes": null, - "id": 848, + "id": 864, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 772, - "src": "1558:16:8", + "referencedDeclaration": 784, + "src": "1702:16:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1447,26 +1535,26 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1550:25:8", + "src": "1694:25:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1532:43:8", + "src": "1676:43:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 851, + "id": 867, "nodeType": "ExpressionStatement", - "src": "1532:43:8" + "src": "1676:43:8" }, { "expression": { "argumentTypes": null, - "id": 856, + "id": 872, "isConstant": false, "isLValue": false, "isPure": false, @@ -1475,26 +1563,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 852, + "id": 868, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 776, - "src": "1585:7:8", + "referencedDeclaration": 788, + "src": "1729:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 854, + "id": 870, "indexExpression": { "argumentTypes": null, - "id": 853, + "id": 869, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 772, - "src": "1593:16:8", + "referencedDeclaration": 784, + "src": "1737:16:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1505,7 +1593,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1585:25:8", + "src": "1729:25:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1515,83 +1603,83 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 855, + "id": 871, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 817, - "src": "1613:6:8", + "referencedDeclaration": 831, + "src": "1757:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } }, - "src": "1585:34:8", + "src": "1729:34:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 857, + "id": 873, "nodeType": "ExpressionStatement", - "src": "1585:34:8" + "src": "1729:34:8" } ] }, "documentation": "@dev Allows to add a module to the whitelist.\n This can only be done via a Safe transaction.\n @param module Module to be whitelisted.", - "id": 859, + "id": 875, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 820, + "id": 834, "modifierName": { "argumentTypes": null, - "id": 819, + "id": 833, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1618, - "src": "1295:10:8", + "referencedDeclaration": 1653, + "src": "1371:10:8", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1295:10:8" + "src": "1371:10:8" } ], "name": "enableModule", "nodeType": "FunctionDefinition", "parameters": { - "id": 818, + "id": 832, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 817, + "id": 831, "name": "module", "nodeType": "VariableDeclaration", - "scope": 859, - "src": "1257:13:8", + "scope": 875, + "src": "1333:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" }, "typeName": { "contractScope": null, - "id": 816, + "id": 830, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 750, - "src": "1257:6:8", + "referencedDeclaration": 762, + "src": "1333:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } }, @@ -1599,26 +1687,26 @@ "visibility": "internal" } ], - "src": "1256:15:8" + "src": "1332:15:8" }, "payable": false, "returnParameters": { - "id": 821, + "id": 835, "nodeType": "ParameterList", "parameters": [], - "src": "1310:0:8" + "src": "1386:0:8" }, - "scope": 1100, - "src": "1235:391:8", + "scope": 1118, + "src": "1311:459:8", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 892, + "id": 909, "nodeType": "Block", - "src": "1982:204:8", + "src": "2126:248:8", "statements": [ { "expression": { @@ -1630,7 +1718,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 875, + "id": 891, "isConstant": false, "isLValue": false, "isPure": false, @@ -1639,28 +1727,28 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 869, + "id": 885, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 776, - "src": "2064:7:8", + "referencedDeclaration": 788, + "src": "2208:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 871, + "id": 887, "indexExpression": { "argumentTypes": null, - "id": 870, + "id": 886, "name": "prevModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 861, - "src": "2072:10:8", + "referencedDeclaration": 877, + "src": "2216:10:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } }, @@ -1669,7 +1757,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2064:19:8", + "src": "2208:19:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1682,14 +1770,14 @@ "arguments": [ { "argumentTypes": null, - "id": 873, + "id": 889, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 863, - "src": "2095:6:8", + "referencedDeclaration": 879, + "src": "2239:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } } @@ -1697,24 +1785,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } ], - "id": 872, + "id": 888, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2087:7:8", + "src": "2231:7:8", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 874, + "id": 890, "isConstant": false, "isLValue": false, "isPure": false, @@ -1722,17 +1810,35 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2087:15:8", + "src": "2231:15:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2064:38:8", + "src": "2208:38:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "496e76616c696420707265764d6f64756c652c206d6f64756c6520706169722070726f7669646564", + "id": 892, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2248:42:8", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_5caa315f9c5cf61be71c182eef2dc9ef7b6ce6b42c320d36694e1d23e09c287e", + "typeString": "literal_string \"Invalid prevModule, module pair provided\"" + }, + "value": "Invalid prevModule, module pair provided" } ], "expression": { @@ -1740,23 +1846,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_5caa315f9c5cf61be71c182eef2dc9ef7b6ce6b42c320d36694e1d23e09c287e", + "typeString": "literal_string \"Invalid prevModule, module pair provided\"" } ], - "id": 868, + "id": 884, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "2056:7:8", + "referencedDeclaration": 2658, + "src": "2200:7:8", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 876, + "id": 893, "isConstant": false, "isLValue": false, "isPure": false, @@ -1764,20 +1874,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2056:47:8", + "src": "2200:91:8", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 877, + "id": 894, "nodeType": "ExpressionStatement", - "src": "2056:47:8" + "src": "2200:91:8" }, { "expression": { "argumentTypes": null, - "id": 884, + "id": 901, "isConstant": false, "isLValue": false, "isPure": false, @@ -1786,28 +1896,28 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 878, + "id": 895, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 776, - "src": "2113:7:8", + "referencedDeclaration": 788, + "src": "2301:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 880, + "id": 897, "indexExpression": { "argumentTypes": null, - "id": 879, + "id": 896, "name": "prevModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 861, - "src": "2121:10:8", + "referencedDeclaration": 877, + "src": "2309:10:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } }, @@ -1816,7 +1926,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2113:19:8", + "src": "2301:19:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1828,28 +1938,28 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 881, + "id": 898, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 776, - "src": "2135:7:8", + "referencedDeclaration": 788, + "src": "2323:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 883, + "id": 900, "indexExpression": { "argumentTypes": null, - "id": 882, + "id": 899, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 863, - "src": "2143:6:8", + "referencedDeclaration": 879, + "src": "2331:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } }, @@ -1858,26 +1968,26 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2135:15:8", + "src": "2323:15:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2113:37:8", + "src": "2301:37:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 885, + "id": 902, "nodeType": "ExpressionStatement", - "src": "2113:37:8" + "src": "2301:37:8" }, { "expression": { "argumentTypes": null, - "id": 890, + "id": 907, "isConstant": false, "isLValue": false, "isPure": false, @@ -1886,28 +1996,28 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 886, + "id": 903, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 776, - "src": "2160:7:8", + "referencedDeclaration": 788, + "src": "2348:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 888, + "id": 905, "indexExpression": { "argumentTypes": null, - "id": 887, + "id": 904, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 863, - "src": "2168:6:8", + "referencedDeclaration": 879, + "src": "2356:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } }, @@ -1916,7 +2026,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2160:15:8", + "src": "2348:15:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1927,14 +2037,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "30", - "id": 889, + "id": 906, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2178:1:8", + "src": "2366:1:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1942,72 +2052,72 @@ }, "value": "0" }, - "src": "2160:19:8", + "src": "2348:19:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 891, + "id": 908, "nodeType": "ExpressionStatement", - "src": "2160:19:8" + "src": "2348:19:8" } ] }, "documentation": "@dev Allows to remove a module from the whitelist.\n This can only be done via a Safe transaction.\n @param prevModule Module that pointed to the module to be removed in the linked list\n @param module Module to be removed.", - "id": 893, + "id": 910, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 866, + "id": 882, "modifierName": { "argumentTypes": null, - "id": 865, + "id": 881, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1618, - "src": "1967:10:8", + "referencedDeclaration": 1653, + "src": "2111:10:8", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1967:10:8" + "src": "2111:10:8" } ], "name": "disableModule", "nodeType": "FunctionDefinition", "parameters": { - "id": 864, + "id": 880, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 861, + "id": 877, "name": "prevModule", "nodeType": "VariableDeclaration", - "scope": 893, - "src": "1910:17:8", + "scope": 910, + "src": "2054:17:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" }, "typeName": { "contractScope": null, - "id": 860, + "id": 876, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 750, - "src": "1910:6:8", + "referencedDeclaration": 762, + "src": "2054:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } }, @@ -2016,26 +2126,26 @@ }, { "constant": false, - "id": 863, + "id": 879, "name": "module", "nodeType": "VariableDeclaration", - "scope": 893, - "src": "1929:13:8", + "scope": 910, + "src": "2073:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" }, "typeName": { "contractScope": null, - "id": 862, + "id": 878, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 750, - "src": "1929:6:8", + "referencedDeclaration": 762, + "src": "2073:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } }, @@ -2043,26 +2153,26 @@ "visibility": "internal" } ], - "src": "1909:34:8" + "src": "2053:34:8" }, "payable": false, "returnParameters": { - "id": 867, + "id": 883, "nodeType": "ParameterList", "parameters": [], - "src": "1982:0:8" + "src": "2126:0:8" }, - "scope": 1100, - "src": "1887:299:8", + "scope": 1118, + "src": "2031:343:8", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 926, + "id": 944, "nodeType": "Block", - "src": "2672:227:8", + "src": "2860:279:8", "statements": [ { "expression": { @@ -2074,7 +2184,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 912, + "id": 929, "isConstant": false, "isLValue": false, "isPure": false, @@ -2083,34 +2193,34 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 907, + "id": 924, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 776, - "src": "2739:7:8", + "referencedDeclaration": 788, + "src": "2927:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 910, + "id": 927, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 908, + "id": 925, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2598, - "src": "2747:3:8", + "referencedDeclaration": 2654, + "src": "2935:3:8", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 909, + "id": 926, "isConstant": false, "isLValue": false, "isPure": false, @@ -2118,7 +2228,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2747:10:8", + "src": "2935:10:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2129,7 +2239,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2739:19:8", + "src": "2927:19:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2140,14 +2250,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 911, + "id": 928, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2762:1:8", + "src": "2950:1:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -2155,11 +2265,29 @@ }, "value": "0" }, - "src": "2739:24:8", + "src": "2927:24:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d20616e20656e61626c6564206d6f64756c65", + "id": 930, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2953:50:8", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_cd36462b17a97c5a3df33333c859d5933a4fb7f5e1a0750f5def8eb51f3272e4", + "typeString": "literal_string \"Method can only be called from an enabled module\"" + }, + "value": "Method can only be called from an enabled module" } ], "expression": { @@ -2167,23 +2295,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_cd36462b17a97c5a3df33333c859d5933a4fb7f5e1a0750f5def8eb51f3272e4", + "typeString": "literal_string \"Method can only be called from an enabled module\"" } ], - "id": 906, + "id": 923, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "2731:7:8", + "referencedDeclaration": 2658, + "src": "2919:7:8", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 913, + "id": 931, "isConstant": false, "isLValue": false, "isPure": false, @@ -2191,32 +2323,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2731:33:8", + "src": "2919:85:8", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 914, + "id": 932, "nodeType": "ExpressionStatement", - "src": "2731:33:8" + "src": "2919:85:8" }, { "expression": { "argumentTypes": null, - "id": 924, + "id": 942, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 915, + "id": 933, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 904, - "src": "2836:7:8", + "referencedDeclaration": 921, + "src": "3076:7:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2229,12 +2361,12 @@ "arguments": [ { "argumentTypes": null, - "id": 917, + "id": 935, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 895, - "src": "2854:2:8", + "referencedDeclaration": 912, + "src": "3094:2:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2242,12 +2374,12 @@ }, { "argumentTypes": null, - "id": 918, + "id": 936, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 897, - "src": "2858:5:8", + "referencedDeclaration": 914, + "src": "3098:5:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2255,12 +2387,12 @@ }, { "argumentTypes": null, - "id": 919, + "id": 937, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 899, - "src": "2865:4:8", + "referencedDeclaration": 916, + "src": "3105:4:8", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -2268,12 +2400,12 @@ }, { "argumentTypes": null, - "id": 920, + "id": 938, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 901, - "src": "2871:9:8", + "referencedDeclaration": 918, + "src": "3111:9:8", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -2284,18 +2416,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 921, + "id": 939, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2591, - "src": "2882:7:8", + "referencedDeclaration": 2647, + "src": "3122:7:8", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 922, + "id": 940, "isConstant": false, "isLValue": false, "isPure": false, @@ -2303,7 +2435,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2882:9:8", + "src": "3122:9:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2333,18 +2465,18 @@ "typeString": "uint256" } ], - "id": 916, + "id": 934, "name": "execute", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 989, - "src": "2846:7:8", + "referencedDeclaration": 1007, + "src": "3086:7:8", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) returns (bool)" } }, - "id": 923, + "id": 941, "isConstant": false, "isLValue": false, "isPure": false, @@ -2352,26 +2484,26 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2846:46:8", + "src": "3086:46:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "2836:56:8", + "src": "3076:56:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 925, + "id": 943, "nodeType": "ExpressionStatement", - "src": "2836:56:8" + "src": "3076:56:8" } ] }, "documentation": "@dev Allows a Module to execute a Safe transaction without any further confirmations.\n @param to Destination address of module transaction.\n @param value Ether value of module transaction.\n @param data Data payload of module transaction.\n @param operation Operation type of module transaction.", - "id": 927, + "id": 945, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -2379,16 +2511,16 @@ "name": "execTransactionFromModule", "nodeType": "FunctionDefinition", "parameters": { - "id": 902, + "id": 919, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 895, + "id": 912, "name": "to", "nodeType": "VariableDeclaration", - "scope": 927, - "src": "2557:10:8", + "scope": 945, + "src": "2745:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2396,10 +2528,10 @@ "typeString": "address" }, "typeName": { - "id": 894, + "id": 911, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2557:7:8", + "src": "2745:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2410,11 +2542,11 @@ }, { "constant": false, - "id": 897, + "id": 914, "name": "value", "nodeType": "VariableDeclaration", - "scope": 927, - "src": "2569:13:8", + "scope": 945, + "src": "2757:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2422,10 +2554,10 @@ "typeString": "uint256" }, "typeName": { - "id": 896, + "id": 913, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2569:7:8", + "src": "2757:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2436,11 +2568,11 @@ }, { "constant": false, - "id": 899, + "id": 916, "name": "data", "nodeType": "VariableDeclaration", - "scope": 927, - "src": "2584:10:8", + "scope": 945, + "src": "2772:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2448,10 +2580,10 @@ "typeString": "bytes" }, "typeName": { - "id": 898, + "id": 915, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "2584:5:8", + "src": "2772:5:8", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -2462,11 +2594,11 @@ }, { "constant": false, - "id": 901, + "id": 918, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 927, - "src": "2596:24:8", + "scope": 945, + "src": "2784:24:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2475,11 +2607,11 @@ }, "typeName": { "contractScope": null, - "id": 900, + "id": 917, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 29, - "src": "2596:14:8", + "src": "2784:14:8", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -2489,20 +2621,20 @@ "visibility": "internal" } ], - "src": "2556:65:8" + "src": "2744:65:8" }, "payable": false, "returnParameters": { - "id": 905, + "id": 922, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 904, + "id": 921, "name": "success", "nodeType": "VariableDeclaration", - "scope": 927, - "src": "2654:12:8", + "scope": 945, + "src": "2842:12:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2510,10 +2642,10 @@ "typeString": "bool" }, "typeName": { - "id": 903, + "id": 920, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "2654:4:8", + "src": "2842:4:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2523,19 +2655,19 @@ "visibility": "internal" } ], - "src": "2653:14:8" + "src": "2841:14:8" }, - "scope": 1100, - "src": "2522:377:8", + "scope": 1118, + "src": "2710:429:8", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 988, + "id": 1006, "nodeType": "Block", - "src": "3054:399:8", + "src": "3294:399:8", "statements": [ { "condition": { @@ -2544,19 +2676,19 @@ "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, - "id": 946, + "id": 964, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 942, + "id": 960, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 935, - "src": "3068:9:8", + "referencedDeclaration": 953, + "src": "3308:9:8", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -2570,18 +2702,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 943, + "id": 961, "name": "Enum", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 30, - "src": "3081:4:8", + "src": "3321:4:8", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_Enum_$30_$", "typeString": "type(contract Enum)" } }, - "id": 944, + "id": 962, "isConstant": false, "isLValue": false, "isPure": false, @@ -2589,13 +2721,13 @@ "memberName": "Operation", "nodeType": "MemberAccess", "referencedDeclaration": 29, - "src": "3081:14:8", + "src": "3321:14:8", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_Operation_$29_$", "typeString": "type(enum Enum.Operation)" } }, - "id": 945, + "id": 963, "isConstant": false, "isLValue": false, "isPure": true, @@ -2603,13 +2735,13 @@ "memberName": "Call", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3081:19:8", + "src": "3321:19:8", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, - "src": "3068:32:8", + "src": "3308:32:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2622,19 +2754,19 @@ "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, - "id": 960, + "id": 978, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 956, + "id": 974, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 935, - "src": "3178:9:8", + "referencedDeclaration": 953, + "src": "3418:9:8", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -2648,18 +2780,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 957, + "id": 975, "name": "Enum", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 30, - "src": "3191:4:8", + "src": "3431:4:8", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_Enum_$30_$", "typeString": "type(contract Enum)" } }, - "id": 958, + "id": 976, "isConstant": false, "isLValue": false, "isPure": false, @@ -2667,13 +2799,13 @@ "memberName": "Operation", "nodeType": "MemberAccess", "referencedDeclaration": 29, - "src": "3191:14:8", + "src": "3431:14:8", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_Operation_$29_$", "typeString": "type(enum Enum.Operation)" } }, - "id": 959, + "id": 977, "isConstant": false, "isLValue": false, "isPure": true, @@ -2681,35 +2813,35 @@ "memberName": "DelegateCall", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3191:27:8", + "src": "3431:27:8", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, - "src": "3178:40:8", + "src": "3418:40:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { - "id": 985, + "id": 1003, "nodeType": "Block", - "src": "3293:154:8", + "src": "3533:154:8", "statements": [ { "assignments": [ - 970 + 988 ], "declarations": [ { "constant": false, - "id": 970, + "id": 988, "name": "newContract", "nodeType": "VariableDeclaration", - "scope": 989, - "src": "3307:19:8", + "scope": 1007, + "src": "3547:19:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2717,10 +2849,10 @@ "typeString": "address" }, "typeName": { - "id": 969, + "id": 987, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3307:7:8", + "src": "3547:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2730,18 +2862,18 @@ "visibility": "internal" } ], - "id": 974, + "id": 992, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 972, + "id": 990, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 933, - "src": "3343:4:8", + "referencedDeclaration": 951, + "src": "3583:4:8", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -2755,18 +2887,18 @@ "typeString": "bytes memory" } ], - "id": 971, + "id": 989, "name": "executeCreate", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1026, - "src": "3329:13:8", + "referencedDeclaration": 1044, + "src": "3569:13:8", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$_t_address_$", "typeString": "function (bytes memory) returns (address)" } }, - "id": 973, + "id": 991, "isConstant": false, "isLValue": false, "isPure": false, @@ -2774,31 +2906,31 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3329:19:8", + "src": "3569:19:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "3307:41:8" + "src": "3547:41:8" }, { "expression": { "argumentTypes": null, - "id": 979, + "id": 997, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 975, + "id": 993, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 940, - "src": "3362:7:8", + "referencedDeclaration": 958, + "src": "3602:7:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2812,19 +2944,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 978, + "id": 996, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 976, + "id": 994, "name": "newContract", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 970, - "src": "3372:11:8", + "referencedDeclaration": 988, + "src": "3612:11:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2835,14 +2967,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 977, + "id": 995, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3387:1:8", + "src": "3627:1:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -2850,21 +2982,21 @@ }, "value": "0" }, - "src": "3372:16:8", + "src": "3612:16:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "3362:26:8", + "src": "3602:26:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 980, + "id": 998, "nodeType": "ExpressionStatement", - "src": "3362:26:8" + "src": "3602:26:8" }, { "eventCall": { @@ -2872,12 +3004,12 @@ "arguments": [ { "argumentTypes": null, - "id": 982, + "id": 1000, "name": "newContract", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 970, - "src": "3424:11:8", + "referencedDeclaration": 988, + "src": "3664:11:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2891,18 +3023,18 @@ "typeString": "address" } ], - "id": 981, + "id": 999, "name": "ContractCreation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 761, - "src": "3407:16:8", + "referencedDeclaration": 773, + "src": "3647:16:8", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, - "id": 983, + "id": 1001, "isConstant": false, "isLValue": false, "isPure": false, @@ -2910,37 +3042,37 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3407:29:8", + "src": "3647:29:8", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 984, + "id": 1002, "nodeType": "EmitStatement", - "src": "3402:34:8" + "src": "3642:34:8" } ] }, - "id": 986, + "id": 1004, "nodeType": "IfStatement", - "src": "3174:273:8", + "src": "3414:273:8", "trueBody": { "expression": { "argumentTypes": null, - "id": 967, + "id": 985, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 961, + "id": 979, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 940, - "src": "3232:7:8", + "referencedDeclaration": 958, + "src": "3472:7:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2953,12 +3085,12 @@ "arguments": [ { "argumentTypes": null, - "id": 963, + "id": 981, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 929, - "src": "3262:2:8", + "referencedDeclaration": 947, + "src": "3502:2:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2966,12 +3098,12 @@ }, { "argumentTypes": null, - "id": 964, + "id": 982, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 933, - "src": "3266:4:8", + "referencedDeclaration": 951, + "src": "3506:4:8", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -2979,12 +3111,12 @@ }, { "argumentTypes": null, - "id": 965, + "id": 983, "name": "txGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 937, - "src": "3272:5:8", + "referencedDeclaration": 955, + "src": "3512:5:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3006,18 +3138,18 @@ "typeString": "uint256" } ], - "id": 962, + "id": 980, "name": "executeDelegateCall", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1017, - "src": "3242:19:8", + "referencedDeclaration": 1035, + "src": "3482:19:8", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,bytes memory,uint256) returns (bool)" } }, - "id": 966, + "id": 984, "isConstant": false, "isLValue": false, "isPure": false, @@ -3025,42 +3157,42 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3242:36:8", + "src": "3482:36:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "3232:46:8", + "src": "3472:46:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 968, + "id": 986, "nodeType": "ExpressionStatement", - "src": "3232:46:8" + "src": "3472:46:8" } }, - "id": 987, + "id": 1005, "nodeType": "IfStatement", - "src": "3064:383:8", + "src": "3304:383:8", "trueBody": { "expression": { "argumentTypes": null, - "id": 954, + "id": 972, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 947, + "id": 965, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 940, - "src": "3114:7:8", + "referencedDeclaration": 958, + "src": "3354:7:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3073,12 +3205,12 @@ "arguments": [ { "argumentTypes": null, - "id": 949, + "id": 967, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 929, - "src": "3136:2:8", + "referencedDeclaration": 947, + "src": "3376:2:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3086,12 +3218,12 @@ }, { "argumentTypes": null, - "id": 950, + "id": 968, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 931, - "src": "3140:5:8", + "referencedDeclaration": 949, + "src": "3380:5:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3099,12 +3231,12 @@ }, { "argumentTypes": null, - "id": 951, + "id": 969, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 933, - "src": "3147:4:8", + "referencedDeclaration": 951, + "src": "3387:4:8", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -3112,12 +3244,12 @@ }, { "argumentTypes": null, - "id": 952, + "id": 970, "name": "txGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 937, - "src": "3153:5:8", + "referencedDeclaration": 955, + "src": "3393:5:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3143,18 +3275,18 @@ "typeString": "uint256" } ], - "id": 948, + "id": 966, "name": "executeCall", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1004, - "src": "3124:11:8", + "referencedDeclaration": 1022, + "src": "3364:11:8", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,uint256) returns (bool)" } }, - "id": 953, + "id": 971, "isConstant": false, "isLValue": false, "isPure": false, @@ -3162,27 +3294,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3124:35:8", + "src": "3364:35:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "3114:45:8", + "src": "3354:45:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 955, + "id": 973, "nodeType": "ExpressionStatement", - "src": "3114:45:8" + "src": "3354:45:8" } } ] }, "documentation": null, - "id": 989, + "id": 1007, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -3190,16 +3322,16 @@ "name": "execute", "nodeType": "FunctionDefinition", "parameters": { - "id": 938, + "id": 956, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 929, + "id": 947, "name": "to", "nodeType": "VariableDeclaration", - "scope": 989, - "src": "2922:10:8", + "scope": 1007, + "src": "3162:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3207,10 +3339,10 @@ "typeString": "address" }, "typeName": { - "id": 928, + "id": 946, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2922:7:8", + "src": "3162:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3221,11 +3353,11 @@ }, { "constant": false, - "id": 931, + "id": 949, "name": "value", "nodeType": "VariableDeclaration", - "scope": 989, - "src": "2934:13:8", + "scope": 1007, + "src": "3174:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3233,10 +3365,10 @@ "typeString": "uint256" }, "typeName": { - "id": 930, + "id": 948, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2934:7:8", + "src": "3174:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3247,11 +3379,11 @@ }, { "constant": false, - "id": 933, + "id": 951, "name": "data", "nodeType": "VariableDeclaration", - "scope": 989, - "src": "2949:10:8", + "scope": 1007, + "src": "3189:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3259,10 +3391,10 @@ "typeString": "bytes" }, "typeName": { - "id": 932, + "id": 950, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "2949:5:8", + "src": "3189:5:8", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -3273,11 +3405,11 @@ }, { "constant": false, - "id": 935, + "id": 953, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 989, - "src": "2961:24:8", + "scope": 1007, + "src": "3201:24:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3286,11 +3418,11 @@ }, "typeName": { "contractScope": null, - "id": 934, + "id": 952, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 29, - "src": "2961:14:8", + "src": "3201:14:8", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -3301,11 +3433,11 @@ }, { "constant": false, - "id": 937, + "id": 955, "name": "txGas", "nodeType": "VariableDeclaration", - "scope": 989, - "src": "2987:13:8", + "scope": 1007, + "src": "3227:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3313,10 +3445,10 @@ "typeString": "uint256" }, "typeName": { - "id": 936, + "id": 954, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2987:7:8", + "src": "3227:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3326,20 +3458,20 @@ "visibility": "internal" } ], - "src": "2921:80:8" + "src": "3161:80:8" }, "payable": false, "returnParameters": { - "id": 941, + "id": 959, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 940, + "id": 958, "name": "success", "nodeType": "VariableDeclaration", - "scope": 989, - "src": "3036:12:8", + "scope": 1007, + "src": "3276:12:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3347,10 +3479,10 @@ "typeString": "bool" }, "typeName": { - "id": 939, + "id": 957, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "3036:4:8", + "src": "3276:4:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3360,86 +3492,86 @@ "visibility": "internal" } ], - "src": "3035:14:8" + "src": "3275:14:8" }, - "scope": 1100, - "src": "2905:548:8", + "scope": 1118, + "src": "3145:548:8", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1003, + "id": 1021, "nodeType": "Block", - "src": "3586:182:8", + "src": "3826:182:8", "statements": [ { "externalReferences": [ { "data": { - "declaration": 995, + "declaration": 1013, "isOffset": false, "isSlot": false, - "src": "3740:4:8", + "src": "3980:4:8", "valueSize": 1 } }, { "data": { - "declaration": 995, + "declaration": 1013, "isOffset": false, "isSlot": false, - "src": "3721:4:8", + "src": "3961:4:8", "valueSize": 1 } }, { "success": { - "declaration": 1000, + "declaration": 1018, "isOffset": false, "isSlot": false, - "src": "3683:7:8", + "src": "3923:7:8", "valueSize": 1 } }, { "txGas": { - "declaration": 997, + "declaration": 1015, "isOffset": false, "isSlot": false, - "src": "3699:5:8", + "src": "3939:5:8", "valueSize": 1 } }, { "to": { - "declaration": 991, + "declaration": 1009, "isOffset": false, "isSlot": false, - "src": "3706:2:8", + "src": "3946:2:8", "valueSize": 1 } }, { "value": { - "declaration": 993, + "declaration": 1011, "isOffset": false, "isSlot": false, - "src": "3710:5:8", + "src": "3950:5:8", "valueSize": 1 } } ], - "id": 1002, + "id": 1020, "nodeType": "InlineAssembly", "operations": "{\n success := call(txGas, to, value, add(data, 0x20), mload(data), 0, 0)\n}", - "src": "3660:108:8" + "src": "3900:108:8" } ] }, "documentation": null, - "id": 1004, + "id": 1022, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -3447,16 +3579,16 @@ "name": "executeCall", "nodeType": "FunctionDefinition", "parameters": { - "id": 998, + "id": 1016, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 991, + "id": 1009, "name": "to", "nodeType": "VariableDeclaration", - "scope": 1004, - "src": "3480:10:8", + "scope": 1022, + "src": "3720:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3464,10 +3596,10 @@ "typeString": "address" }, "typeName": { - "id": 990, + "id": 1008, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3480:7:8", + "src": "3720:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3478,11 +3610,11 @@ }, { "constant": false, - "id": 993, + "id": 1011, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1004, - "src": "3492:13:8", + "scope": 1022, + "src": "3732:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3490,10 +3622,10 @@ "typeString": "uint256" }, "typeName": { - "id": 992, + "id": 1010, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3492:7:8", + "src": "3732:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3504,11 +3636,11 @@ }, { "constant": false, - "id": 995, + "id": 1013, "name": "data", "nodeType": "VariableDeclaration", - "scope": 1004, - "src": "3507:10:8", + "scope": 1022, + "src": "3747:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3516,10 +3648,10 @@ "typeString": "bytes" }, "typeName": { - "id": 994, + "id": 1012, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "3507:5:8", + "src": "3747:5:8", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -3530,11 +3662,11 @@ }, { "constant": false, - "id": 997, + "id": 1015, "name": "txGas", "nodeType": "VariableDeclaration", - "scope": 1004, - "src": "3519:13:8", + "scope": 1022, + "src": "3759:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3542,10 +3674,10 @@ "typeString": "uint256" }, "typeName": { - "id": 996, + "id": 1014, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3519:7:8", + "src": "3759:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3555,20 +3687,20 @@ "visibility": "internal" } ], - "src": "3479:54:8" + "src": "3719:54:8" }, "payable": false, "returnParameters": { - "id": 1001, + "id": 1019, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1000, + "id": 1018, "name": "success", "nodeType": "VariableDeclaration", - "scope": 1004, - "src": "3568:12:8", + "scope": 1022, + "src": "3808:12:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3576,10 +3708,10 @@ "typeString": "bool" }, "typeName": { - "id": 999, + "id": 1017, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "3568:4:8", + "src": "3808:4:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3589,77 +3721,77 @@ "visibility": "internal" } ], - "src": "3567:14:8" + "src": "3807:14:8" }, - "scope": 1100, - "src": "3459:309:8", + "scope": 1118, + "src": "3699:309:8", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1016, + "id": 1034, "nodeType": "Block", - "src": "3894:183:8", + "src": "4134:183:8", "statements": [ { "externalReferences": [ { "data": { - "declaration": 1008, + "declaration": 1026, "isOffset": false, "isSlot": false, - "src": "4049:4:8", + "src": "4289:4:8", "valueSize": 1 } }, { "data": { - "declaration": 1008, + "declaration": 1026, "isOffset": false, "isSlot": false, - "src": "4030:4:8", + "src": "4270:4:8", "valueSize": 1 } }, { "success": { - "declaration": 1013, + "declaration": 1031, "isOffset": false, "isSlot": false, - "src": "3991:7:8", + "src": "4231:7:8", "valueSize": 1 } }, { "txGas": { - "declaration": 1010, + "declaration": 1028, "isOffset": false, "isSlot": false, - "src": "4015:5:8", + "src": "4255:5:8", "valueSize": 1 } }, { "to": { - "declaration": 1006, + "declaration": 1024, "isOffset": false, "isSlot": false, - "src": "4022:2:8", + "src": "4262:2:8", "valueSize": 1 } } ], - "id": 1015, + "id": 1033, "nodeType": "InlineAssembly", "operations": "{\n success := delegatecall(txGas, to, add(data, 0x20), mload(data), 0, 0)\n}", - "src": "3968:109:8" + "src": "4208:109:8" } ] }, "documentation": null, - "id": 1017, + "id": 1035, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -3667,16 +3799,16 @@ "name": "executeDelegateCall", "nodeType": "FunctionDefinition", "parameters": { - "id": 1011, + "id": 1029, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1006, + "id": 1024, "name": "to", "nodeType": "VariableDeclaration", - "scope": 1017, - "src": "3803:10:8", + "scope": 1035, + "src": "4043:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3684,10 +3816,10 @@ "typeString": "address" }, "typeName": { - "id": 1005, + "id": 1023, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3803:7:8", + "src": "4043:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3698,11 +3830,11 @@ }, { "constant": false, - "id": 1008, + "id": 1026, "name": "data", "nodeType": "VariableDeclaration", - "scope": 1017, - "src": "3815:10:8", + "scope": 1035, + "src": "4055:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3710,10 +3842,10 @@ "typeString": "bytes" }, "typeName": { - "id": 1007, + "id": 1025, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "3815:5:8", + "src": "4055:5:8", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -3724,11 +3856,11 @@ }, { "constant": false, - "id": 1010, + "id": 1028, "name": "txGas", "nodeType": "VariableDeclaration", - "scope": 1017, - "src": "3827:13:8", + "scope": 1035, + "src": "4067:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3736,10 +3868,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1009, + "id": 1027, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3827:7:8", + "src": "4067:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3749,20 +3881,20 @@ "visibility": "internal" } ], - "src": "3802:39:8" + "src": "4042:39:8" }, "payable": false, "returnParameters": { - "id": 1014, + "id": 1032, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1013, + "id": 1031, "name": "success", "nodeType": "VariableDeclaration", - "scope": 1017, - "src": "3876:12:8", + "scope": 1035, + "src": "4116:12:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3770,10 +3902,10 @@ "typeString": "bool" }, "typeName": { - "id": 1012, + "id": 1030, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "3876:4:8", + "src": "4116:4:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3783,59 +3915,59 @@ "visibility": "internal" } ], - "src": "3875:14:8" + "src": "4115:14:8" }, - "scope": 1100, - "src": "3774:303:8", + "scope": 1118, + "src": "4014:303:8", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1025, + "id": 1043, "nodeType": "Block", - "src": "4177:167:8", + "src": "4417:167:8", "statements": [ { "externalReferences": [ { "newContract": { - "declaration": 1022, + "declaration": 1040, "isOffset": false, "isSlot": false, - "src": "4274:11:8", + "src": "4514:11:8", "valueSize": 1 } }, { "data": { - "declaration": 1019, + "declaration": 1037, "isOffset": false, "isSlot": false, - "src": "4303:4:8", + "src": "4543:4:8", "valueSize": 1 } }, { "data": { - "declaration": 1019, + "declaration": 1037, "isOffset": false, "isSlot": false, - "src": "4322:4:8", + "src": "4562:4:8", "valueSize": 1 } } ], - "id": 1024, + "id": 1042, "nodeType": "InlineAssembly", "operations": "{\n newContract := create(0, add(data, 0x20), mload(data))\n}", - "src": "4251:93:8" + "src": "4491:93:8" } ] }, "documentation": null, - "id": 1026, + "id": 1044, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -3843,16 +3975,16 @@ "name": "executeCreate", "nodeType": "FunctionDefinition", "parameters": { - "id": 1020, + "id": 1038, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1019, + "id": 1037, "name": "data", "nodeType": "VariableDeclaration", - "scope": 1026, - "src": "4106:10:8", + "scope": 1044, + "src": "4346:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3860,10 +3992,10 @@ "typeString": "bytes" }, "typeName": { - "id": 1018, + "id": 1036, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "4106:5:8", + "src": "4346:5:8", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -3873,20 +4005,20 @@ "visibility": "internal" } ], - "src": "4105:12:8" + "src": "4345:12:8" }, "payable": false, "returnParameters": { - "id": 1023, + "id": 1041, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1022, + "id": 1040, "name": "newContract", "nodeType": "VariableDeclaration", - "scope": 1026, - "src": "4152:19:8", + "scope": 1044, + "src": "4392:19:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3894,10 +4026,10 @@ "typeString": "address" }, "typeName": { - "id": 1021, + "id": 1039, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4152:7:8", + "src": "4392:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3907,32 +4039,32 @@ "visibility": "internal" } ], - "src": "4151:21:8" + "src": "4391:21:8" }, - "scope": 1100, - "src": "4083:261:8", + "scope": 1118, + "src": "4323:261:8", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1098, + "id": 1116, "nodeType": "Block", - "src": "4505:656:8", + "src": "4745:656:8", "statements": [ { "assignments": [ - 1033 + 1051 ], "declarations": [ { "constant": false, - "id": 1033, + "id": 1051, "name": "moduleCount", "nodeType": "VariableDeclaration", - "scope": 1099, - "src": "4549:19:8", + "scope": 1117, + "src": "4789:19:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3940,10 +4072,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1032, + "id": 1050, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4549:7:8", + "src": "4789:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3953,18 +4085,18 @@ "visibility": "internal" } ], - "id": 1035, + "id": 1053, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 1034, + "id": 1052, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4571:1:8", + "src": "4811:1:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3973,20 +4105,20 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "4549:23:8" + "src": "4789:23:8" }, { "assignments": [ - 1037 + 1055 ], "declarations": [ { "constant": false, - "id": 1037, + "id": 1055, "name": "currentModule", "nodeType": "VariableDeclaration", - "scope": 1099, - "src": "4582:21:8", + "scope": 1117, + "src": "4822:21:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3994,10 +4126,10 @@ "typeString": "address" }, "typeName": { - "id": 1036, + "id": 1054, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4582:7:8", + "src": "4822:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4007,31 +4139,31 @@ "visibility": "internal" } ], - "id": 1041, + "id": 1059, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1038, + "id": 1056, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 776, - "src": "4606:7:8", + "referencedDeclaration": 788, + "src": "4846:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1040, + "id": 1058, "indexExpression": { "argumentTypes": null, - "id": 1039, + "id": 1057, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 772, - "src": "4614:16:8", + "referencedDeclaration": 784, + "src": "4854:16:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4042,37 +4174,37 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4606:25:8", + "src": "4846:25:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "4582:49:8" + "src": "4822:49:8" }, { "body": { - "id": 1054, + "id": 1072, "nodeType": "Block", - "src": "4682:91:8", + "src": "4922:91:8", "statements": [ { "expression": { "argumentTypes": null, - "id": 1049, + "id": 1067, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1045, + "id": 1063, "name": "currentModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1037, - "src": "4696:13:8", + "referencedDeclaration": 1055, + "src": "4936:13:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4084,26 +4216,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1046, + "id": 1064, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 776, - "src": "4712:7:8", + "referencedDeclaration": 788, + "src": "4952:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1048, + "id": 1066, "indexExpression": { "argumentTypes": null, - "id": 1047, + "id": 1065, "name": "currentModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1037, - "src": "4720:13:8", + "referencedDeclaration": 1055, + "src": "4960:13:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4114,26 +4246,26 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4712:22:8", + "src": "4952:22:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4696:38:8", + "src": "4936:38:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1050, + "id": 1068, "nodeType": "ExpressionStatement", - "src": "4696:38:8" + "src": "4936:38:8" }, { "expression": { "argumentTypes": null, - "id": 1052, + "id": 1070, "isConstant": false, "isLValue": false, "isPure": false, @@ -4141,15 +4273,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "4748:14:8", + "src": "4988:14:8", "subExpression": { "argumentTypes": null, - "id": 1051, + "id": 1069, "name": "moduleCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1033, - "src": "4748:11:8", + "referencedDeclaration": 1051, + "src": "4988:11:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4160,9 +4292,9 @@ "typeString": "uint256" } }, - "id": 1053, + "id": 1071, "nodeType": "ExpressionStatement", - "src": "4748:14:8" + "src": "4988:14:8" } ] }, @@ -4172,19 +4304,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1044, + "id": 1062, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1042, + "id": 1060, "name": "currentModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1037, - "src": "4647:13:8", + "referencedDeclaration": 1055, + "src": "4887:13:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4194,39 +4326,39 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 1043, + "id": 1061, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 772, - "src": "4664:16:8", + "referencedDeclaration": 784, + "src": "4904:16:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4647:33:8", + "src": "4887:33:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 1055, + "id": 1073, "nodeType": "WhileStatement", - "src": "4641:132:8" + "src": "4881:132:8" }, { "assignments": [ - 1059 + 1077 ], "declarations": [ { "constant": false, - "id": 1059, + "id": 1077, "name": "array", "nodeType": "VariableDeclaration", - "scope": 1099, - "src": "4782:22:8", + "scope": 1117, + "src": "5022:22:8", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -4235,19 +4367,19 @@ }, "typeName": { "baseType": { - "id": 1057, + "id": 1075, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4782:7:8", + "src": "5022:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1058, + "id": 1076, "length": null, "nodeType": "ArrayTypeName", - "src": "4782:9:8", + "src": "5022:9:8", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -4257,18 +4389,18 @@ "visibility": "internal" } ], - "id": 1065, + "id": 1083, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 1063, + "id": 1081, "name": "moduleCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1033, - "src": "4821:11:8", + "referencedDeclaration": 1051, + "src": "5061:11:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4282,39 +4414,39 @@ "typeString": "uint256" } ], - "id": 1062, + "id": 1080, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", - "src": "4807:13:8", + "src": "5047:13:8", "typeDescriptions": { "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_$", "typeString": "function (uint256) pure returns (address[] memory)" }, "typeName": { "baseType": { - "id": 1060, + "id": 1078, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4811:7:8", + "src": "5051:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1061, + "id": 1079, "length": null, "nodeType": "ArrayTypeName", - "src": "4811:9:8", + "src": "5051:9:8", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" } } }, - "id": 1064, + "id": 1082, "isConstant": false, "isLValue": false, "isPure": false, @@ -4322,31 +4454,31 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4807:26:8", + "src": "5047:26:8", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory", "typeString": "address[] memory" } }, "nodeType": "VariableDeclarationStatement", - "src": "4782:51:8" + "src": "5022:51:8" }, { "expression": { "argumentTypes": null, - "id": 1068, + "id": 1086, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1066, + "id": 1084, "name": "moduleCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1033, - "src": "4877:11:8", + "referencedDeclaration": 1051, + "src": "5117:11:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4357,14 +4489,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "30", - "id": 1067, + "id": 1085, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4891:1:8", + "src": "5131:1:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -4372,32 +4504,32 @@ }, "value": "0" }, - "src": "4877:15:8", + "src": "5117:15:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1069, + "id": 1087, "nodeType": "ExpressionStatement", - "src": "4877:15:8" + "src": "5117:15:8" }, { "expression": { "argumentTypes": null, - "id": 1074, + "id": 1092, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1070, + "id": 1088, "name": "currentModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1037, - "src": "4902:13:8", + "referencedDeclaration": 1055, + "src": "5142:13:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4409,26 +4541,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1071, + "id": 1089, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 776, - "src": "4918:7:8", + "referencedDeclaration": 788, + "src": "5158:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1073, + "id": 1091, "indexExpression": { "argumentTypes": null, - "id": 1072, + "id": 1090, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 772, - "src": "4926:16:8", + "referencedDeclaration": 784, + "src": "5166:16:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4439,32 +4571,32 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4918:25:8", + "src": "5158:25:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4902:41:8", + "src": "5142:41:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1075, + "id": 1093, "nodeType": "ExpressionStatement", - "src": "4902:41:8" + "src": "5142:41:8" }, { "body": { - "id": 1094, + "id": 1112, "nodeType": "Block", - "src": "4994:139:8", + "src": "5234:139:8", "statements": [ { "expression": { "argumentTypes": null, - "id": 1083, + "id": 1101, "isConstant": false, "isLValue": false, "isPure": false, @@ -4473,26 +4605,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1079, + "id": 1097, "name": "array", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1059, - "src": "5008:5:8", + "referencedDeclaration": 1077, + "src": "5248:5:8", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1081, + "id": 1099, "indexExpression": { "argumentTypes": null, - "id": 1080, + "id": 1098, "name": "moduleCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1033, - "src": "5014:11:8", + "referencedDeclaration": 1051, + "src": "5254:11:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4503,7 +4635,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "5008:18:8", + "src": "5248:18:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4513,43 +4645,43 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1082, + "id": 1100, "name": "currentModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1037, - "src": "5029:13:8", + "referencedDeclaration": 1055, + "src": "5269:13:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "5008:34:8", + "src": "5248:34:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1084, + "id": 1102, "nodeType": "ExpressionStatement", - "src": "5008:34:8" + "src": "5248:34:8" }, { "expression": { "argumentTypes": null, - "id": 1089, + "id": 1107, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1085, + "id": 1103, "name": "currentModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1037, - "src": "5056:13:8", + "referencedDeclaration": 1055, + "src": "5296:13:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4561,26 +4693,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1086, + "id": 1104, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 776, - "src": "5072:7:8", + "referencedDeclaration": 788, + "src": "5312:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1088, + "id": 1106, "indexExpression": { "argumentTypes": null, - "id": 1087, + "id": 1105, "name": "currentModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1037, - "src": "5080:13:8", + "referencedDeclaration": 1055, + "src": "5320:13:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4591,26 +4723,26 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "5072:22:8", + "src": "5312:22:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "5056:38:8", + "src": "5296:38:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1090, + "id": 1108, "nodeType": "ExpressionStatement", - "src": "5056:38:8" + "src": "5296:38:8" }, { "expression": { "argumentTypes": null, - "id": 1092, + "id": 1110, "isConstant": false, "isLValue": false, "isPure": false, @@ -4618,15 +4750,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "5108:14:8", + "src": "5348:14:8", "subExpression": { "argumentTypes": null, - "id": 1091, + "id": 1109, "name": "moduleCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1033, - "src": "5108:11:8", + "referencedDeclaration": 1051, + "src": "5348:11:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4637,9 +4769,9 @@ "typeString": "uint256" } }, - "id": 1093, + "id": 1111, "nodeType": "ExpressionStatement", - "src": "5108:14:8" + "src": "5348:14:8" } ] }, @@ -4649,19 +4781,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1078, + "id": 1096, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1076, + "id": 1094, "name": "currentModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1037, - "src": "4959:13:8", + "referencedDeclaration": 1055, + "src": "5199:13:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4671,50 +4803,50 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 1077, + "id": 1095, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 772, - "src": "4976:16:8", + "referencedDeclaration": 784, + "src": "5216:16:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4959:33:8", + "src": "5199:33:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 1095, + "id": 1113, "nodeType": "WhileStatement", - "src": "4953:180:8" + "src": "5193:180:8" }, { "expression": { "argumentTypes": null, - "id": 1096, + "id": 1114, "name": "array", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1059, - "src": "5149:5:8", + "referencedDeclaration": 1077, + "src": "5389:5:8", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "functionReturnParameters": 1031, - "id": 1097, + "functionReturnParameters": 1049, + "id": 1115, "nodeType": "Return", - "src": "5142:12:8" + "src": "5382:12:8" } ] }, "documentation": "@dev Returns array of modules.\n @return Array of modules.", - "id": 1099, + "id": 1117, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -4722,23 +4854,23 @@ "name": "getModules", "nodeType": "FunctionDefinition", "parameters": { - "id": 1027, + "id": 1045, "nodeType": "ParameterList", "parameters": [], - "src": "4442:2:8" + "src": "4682:2:8" }, "payable": false, "returnParameters": { - "id": 1031, + "id": 1049, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1030, + "id": 1048, "name": "", "nodeType": "VariableDeclaration", - "scope": 1099, - "src": "4490:9:8", + "scope": 1117, + "src": "4730:9:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4747,19 +4879,19 @@ }, "typeName": { "baseType": { - "id": 1028, + "id": 1046, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4490:7:8", + "src": "4730:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1029, + "id": 1047, "length": null, "nodeType": "ArrayTypeName", - "src": "4490:9:8", + "src": "4730:9:8", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -4769,33 +4901,33 @@ "visibility": "internal" } ], - "src": "4489:11:8" + "src": "4729:11:8" }, - "scope": 1100, - "src": "4423:738:8", + "scope": 1118, + "src": "4663:738:8", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 1101, - "src": "303:4860:8" + "scope": 1119, + "src": "303:5100:8" } ], - "src": "0:5164:8" + "src": "0:5404:8" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ModuleManager.sol", "exportedSymbols": { "ModuleManager": [ - 1100 + 1118 ] }, - "id": 1101, + "id": 1119, "nodeType": "SourceUnit", "nodes": [ { - "id": 752, + "id": 764, "literals": [ "solidity", "0.4", @@ -4807,10 +4939,10 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "file": "./Module.sol", - "id": 753, + "id": 765, "nodeType": "ImportDirective", - "scope": 1101, - "sourceUnit": 751, + "scope": 1119, + "sourceUnit": 763, "src": "24:22:8", "symbolAliases": [], "unitAlias": "" @@ -4818,10 +4950,10 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/MasterCopy.sol", "file": "./MasterCopy.sol", - "id": 754, + "id": 766, "nodeType": "ImportDirective", - "scope": 1101, - "sourceUnit": 653, + "scope": 1119, + "sourceUnit": 663, "src": "47:26:8", "symbolAliases": [], "unitAlias": "" @@ -4829,9 +4961,9 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Enum.sol", "file": "./Enum.sol", - "id": 755, + "id": 767, "nodeType": "ImportDirective", - "scope": 1101, + "scope": 1119, "sourceUnit": 31, "src": "74:20:8", "symbolAliases": [], @@ -4843,31 +4975,31 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 756, + "id": 768, "name": "SelfAuthorized", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1619, + "referencedDeclaration": 1654, "src": "329:14:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_SelfAuthorized_$1619", + "typeIdentifier": "t_contract$_SelfAuthorized_$1654", "typeString": "contract SelfAuthorized" } }, - "id": 757, + "id": 769, "nodeType": "InheritanceSpecifier", "src": "329:14:8" } ], "contractDependencies": [ - 1619 + 1654 ], "contractKind": "contract", "documentation": "@title Module Manager - A contract that manages modules that can execute transactions via this contract\n @author Stefan George - \n @author Richard Meissner - ", "fullyImplemented": true, - "id": 1100, + "id": 1118, "linearizedBaseContracts": [ - 1100, - 1619 + 1118, + 1654 ], "name": "ModuleManager", "nodeType": "ContractDefinition", @@ -4875,20 +5007,20 @@ { "anonymous": false, "documentation": null, - "id": 761, + "id": 773, "name": "ContractCreation", "nodeType": "EventDefinition", "parameters": { - "id": 760, + "id": 772, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 759, + "id": 771, "indexed": false, "name": "newContract", "nodeType": "VariableDeclaration", - "scope": 761, + "scope": 773, "src": "374:19:8", "stateVariable": false, "storageLocation": "default", @@ -4897,7 +5029,7 @@ "typeString": "address" }, "typeName": { - "id": 758, + "id": 770, "name": "address", "nodeType": "ElementaryTypeName", "src": "374:7:8", @@ -4916,10 +5048,10 @@ }, { "constant": true, - "id": 764, + "id": 776, "name": "NAME", "nodeType": "VariableDeclaration", - "scope": 1100, + "scope": 1118, "src": "401:46:8", "stateVariable": true, "storageLocation": "default", @@ -4928,7 +5060,7 @@ "typeString": "string" }, "typeName": { - "id": 762, + "id": 774, "name": "string", "nodeType": "ElementaryTypeName", "src": "401:6:8", @@ -4940,7 +5072,7 @@ "value": { "argumentTypes": null, "hexValue": "4d6f64756c65204d616e61676572", - "id": 763, + "id": 775, "isConstant": false, "isLValue": false, "isPure": true, @@ -4959,10 +5091,10 @@ }, { "constant": true, - "id": 767, + "id": 779, "name": "VERSION", "nodeType": "VariableDeclaration", - "scope": 1100, + "scope": 1118, "src": "453:40:8", "stateVariable": true, "storageLocation": "default", @@ -4971,7 +5103,7 @@ "typeString": "string" }, "typeName": { - "id": 765, + "id": 777, "name": "string", "nodeType": "ElementaryTypeName", "src": "453:6:8", @@ -4983,7 +5115,7 @@ "value": { "argumentTypes": null, "hexValue": "302e302e31", - "id": 766, + "id": 778, "isConstant": false, "isLValue": false, "isPure": true, @@ -5002,10 +5134,10 @@ }, { "constant": true, - "id": 772, + "id": 784, "name": "SENTINEL_MODULES", "nodeType": "VariableDeclaration", - "scope": 1100, + "scope": 1118, "src": "499:55:8", "stateVariable": true, "storageLocation": "default", @@ -5014,7 +5146,7 @@ "typeString": "address" }, "typeName": { - "id": 768, + "id": 780, "name": "address", "nodeType": "ElementaryTypeName", "src": "499:7:8", @@ -5029,7 +5161,7 @@ { "argumentTypes": null, "hexValue": "307831", - "id": 770, + "id": 782, "isConstant": false, "isLValue": false, "isPure": true, @@ -5052,7 +5184,7 @@ "typeString": "int_const 1" } ], - "id": 769, + "id": 781, "isConstant": false, "isLValue": false, "isPure": true, @@ -5065,7 +5197,7 @@ }, "typeName": "address" }, - "id": 771, + "id": 783, "isConstant": false, "isLValue": false, "isPure": true, @@ -5083,10 +5215,10 @@ }, { "constant": false, - "id": 776, + "id": 788, "name": "modules", "nodeType": "VariableDeclaration", - "scope": 1100, + "scope": 1118, "src": "561:45:8", "stateVariable": true, "storageLocation": "default", @@ -5095,9 +5227,9 @@ "typeString": "mapping(address => address)" }, "typeName": { - "id": 775, + "id": 787, "keyType": { - "id": 773, + "id": 785, "name": "address", "nodeType": "ElementaryTypeName", "src": "570:7:8", @@ -5113,7 +5245,7 @@ "typeString": "mapping(address => address)" }, "valueType": { - "id": 774, + "id": 786, "name": "address", "nodeType": "ElementaryTypeName", "src": "581:7:8", @@ -5128,13 +5260,13 @@ }, { "body": { - "id": 779, + "id": 791, "nodeType": "Block", "src": "721:8:8", "statements": [] }, "documentation": "@dev Fallback function accepts Ether transactions.", - "id": 780, + "id": 792, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -5142,19 +5274,19 @@ "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 777, + "id": 789, "nodeType": "ParameterList", "parameters": [], "src": "681:2:8" }, "payable": true, "returnParameters": { - "id": 778, + "id": 790, "nodeType": "ParameterList", "parameters": [], "src": "721:0:8" }, - "scope": 1100, + "scope": 1118, "src": "672:57:8", "stateMutability": "payable", "superFunction": null, @@ -5162,9 +5294,9 @@ }, { "body": { - "id": 814, + "id": 828, "nodeType": "Block", - "src": "802:266:8", + "src": "802:342:8", "statements": [ { "expression": { @@ -5176,7 +5308,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 792, + "id": 804, "isConstant": false, "isLValue": false, "isPure": false, @@ -5185,25 +5317,25 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 788, + "id": 800, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 776, + "referencedDeclaration": 788, "src": "820:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 790, + "id": 802, "indexExpression": { "argumentTypes": null, - "id": 789, + "id": 801, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 772, + "referencedDeclaration": 784, "src": "828:16:8", "typeDescriptions": { "typeIdentifier": "t_address", @@ -5226,7 +5358,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 791, + "id": 803, "isConstant": false, "isLValue": false, "isPure": true, @@ -5246,6 +5378,24 @@ "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "4d6f64756c6573206861766520616c7265616479206265656e20696e697469616c697a6564", + "id": 805, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "852:39:8", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_1e0428ffa69bff65645154a36d5017c238f946ddaf89430d30eec813f30bdd77", + "typeString": "literal_string \"Modules have already been initialized\"" + }, + "value": "Modules have already been initialized" } ], "expression": { @@ -5253,23 +5403,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_1e0428ffa69bff65645154a36d5017c238f946ddaf89430d30eec813f30bdd77", + "typeString": "literal_string \"Modules have already been initialized\"" } ], - "id": 787, + "id": 799, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, + "referencedDeclaration": 2658, "src": "812:7:8", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 793, + "id": 806, "isConstant": false, "isLValue": false, "isPure": false, @@ -5277,20 +5431,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "812:39:8", + "src": "812:80:8", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 794, + "id": 807, "nodeType": "ExpressionStatement", - "src": "812:39:8" + "src": "812:80:8" }, { "expression": { "argumentTypes": null, - "id": 799, + "id": 812, "isConstant": false, "isLValue": false, "isPure": false, @@ -5299,26 +5453,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 795, + "id": 808, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 776, - "src": "861:7:8", + "referencedDeclaration": 788, + "src": "902:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 797, + "id": 810, "indexExpression": { "argumentTypes": null, - "id": 796, + "id": 809, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 772, - "src": "869:16:8", + "referencedDeclaration": 784, + "src": "910:16:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5329,7 +5483,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "861:25:8", + "src": "902:25:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5339,26 +5493,26 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 798, + "id": 811, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 772, - "src": "889:16:8", + "referencedDeclaration": 784, + "src": "930:16:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "861:44:8", + "src": "902:44:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 800, + "id": 813, "nodeType": "ExpressionStatement", - "src": "861:44:8" + "src": "902:44:8" }, { "condition": { @@ -5367,19 +5521,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 803, + "id": 816, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 801, + "id": 814, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 782, - "src": "919:2:8", + "referencedDeclaration": 794, + "src": "960:2:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5390,14 +5544,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 802, + "id": 815, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "925:1:8", + "src": "966:1:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -5405,16 +5559,16 @@ }, "value": "0" }, - "src": "919:7:8", + "src": "960:7:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 813, + "id": 827, "nodeType": "IfStatement", - "src": "915:146:8", + "src": "956:181:8", "trueBody": { "expression": { "argumentTypes": null, @@ -5424,12 +5578,12 @@ "arguments": [ { "argumentTypes": null, - "id": 806, + "id": 819, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 782, - "src": "1040:2:8", + "referencedDeclaration": 794, + "src": "1081:2:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5437,12 +5591,12 @@ }, { "argumentTypes": null, - "id": 807, + "id": 820, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 784, - "src": "1044:4:8", + "referencedDeclaration": 796, + "src": "1085:4:8", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -5453,18 +5607,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 808, + "id": 821, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2591, - "src": "1050:7:8", + "referencedDeclaration": 2647, + "src": "1091:7:8", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 809, + "id": 822, "isConstant": false, "isLValue": false, "isPure": false, @@ -5472,7 +5626,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1050:9:8", + "src": "1091:9:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5494,18 +5648,18 @@ "typeString": "uint256" } ], - "id": 805, + "id": 818, "name": "executeDelegateCall", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1017, - "src": "1020:19:8", + "referencedDeclaration": 1035, + "src": "1061:19:8", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,bytes memory,uint256) returns (bool)" } }, - "id": 810, + "id": 823, "isConstant": false, "isLValue": false, "isPure": false, @@ -5513,11 +5667,29 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1020:40:8", + "src": "1061:40:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "436f756c64206e6f742066696e69736820696e697469616c697a6174696f6e", + "id": 824, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1103:33:8", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_7913a3f9168bf3e458e3f42eb08db5c4b33f44228d345660887090b75e24c6aa", + "typeString": "literal_string \"Could not finish initialization\"" + }, + "value": "Could not finish initialization" } ], "expression": { @@ -5525,23 +5697,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_7913a3f9168bf3e458e3f42eb08db5c4b33f44228d345660887090b75e24c6aa", + "typeString": "literal_string \"Could not finish initialization\"" } ], - "id": 804, + "id": 817, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "1012:7:8", + "referencedDeclaration": 2658, + "src": "1053:7:8", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 811, + "id": 825, "isConstant": false, "isLValue": false, "isPure": false, @@ -5549,21 +5725,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1012:49:8", + "src": "1053:84:8", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 812, + "id": 826, "nodeType": "ExpressionStatement", - "src": "1012:49:8" + "src": "1053:84:8" } } ] }, "documentation": null, - "id": 815, + "id": 829, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -5571,15 +5747,15 @@ "name": "setupModules", "nodeType": "FunctionDefinition", "parameters": { - "id": 785, + "id": 797, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 782, + "id": 794, "name": "to", "nodeType": "VariableDeclaration", - "scope": 815, + "scope": 829, "src": "757:10:8", "stateVariable": false, "storageLocation": "default", @@ -5588,7 +5764,7 @@ "typeString": "address" }, "typeName": { - "id": 781, + "id": 793, "name": "address", "nodeType": "ElementaryTypeName", "src": "757:7:8", @@ -5602,10 +5778,10 @@ }, { "constant": false, - "id": 784, + "id": 796, "name": "data", "nodeType": "VariableDeclaration", - "scope": 815, + "scope": 829, "src": "769:10:8", "stateVariable": false, "storageLocation": "default", @@ -5614,7 +5790,7 @@ "typeString": "bytes" }, "typeName": { - "id": 783, + "id": 795, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "769:5:8", @@ -5631,22 +5807,22 @@ }, "payable": false, "returnParameters": { - "id": 786, + "id": 798, "nodeType": "ParameterList", "parameters": [], "src": "802:0:8" }, - "scope": 1100, - "src": "735:333:8", + "scope": 1118, + "src": "735:409:8", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 858, + "id": 874, "nodeType": "Block", - "src": "1310:316:8", + "src": "1386:384:8", "statements": [ { "expression": { @@ -5658,7 +5834,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 833, + "id": 847, "isConstant": false, "isLValue": false, "isPure": false, @@ -5669,7 +5845,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 827, + "id": 841, "isConstant": false, "isLValue": false, "isPure": false, @@ -5679,14 +5855,14 @@ "arguments": [ { "argumentTypes": null, - "id": 824, + "id": 838, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 817, - "src": "1390:6:8", + "referencedDeclaration": 831, + "src": "1466:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } } @@ -5694,24 +5870,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } ], - "id": 823, + "id": 837, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1382:7:8", + "src": "1458:7:8", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 825, + "id": 839, "isConstant": false, "isLValue": false, "isPure": false, @@ -5719,7 +5895,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1382:15:8", + "src": "1458:15:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5730,14 +5906,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 826, + "id": 840, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1401:1:8", + "src": "1477:1:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -5745,7 +5921,7 @@ }, "value": "0" }, - "src": "1382:20:8", + "src": "1458:20:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5759,7 +5935,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 832, + "id": 846, "isConstant": false, "isLValue": false, "isPure": false, @@ -5769,14 +5945,14 @@ "arguments": [ { "argumentTypes": null, - "id": 829, + "id": 843, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 817, - "src": "1414:6:8", + "referencedDeclaration": 831, + "src": "1490:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } } @@ -5784,24 +5960,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } ], - "id": 828, + "id": 842, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "1406:7:8", + "src": "1482:7:8", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 830, + "id": 844, "isConstant": false, "isLValue": false, "isPure": false, @@ -5809,7 +5985,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1406:15:8", + "src": "1482:15:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5819,28 +5995,46 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 831, + "id": 845, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 772, - "src": "1425:16:8", + "referencedDeclaration": 784, + "src": "1501:16:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1406:35:8", + "src": "1482:35:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "1382:59:8", + "src": "1458:59:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "496e76616c6964206d6f64756c6520616464726573732070726f7669646564", + "id": 848, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1519:33:8", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_8c2199b479423c52a835dfe8b0f2e9eb4c1ec1069ba198ccc38077a4a88a5c00", + "typeString": "literal_string \"Invalid module address provided\"" + }, + "value": "Invalid module address provided" } ], "expression": { @@ -5848,23 +6042,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_8c2199b479423c52a835dfe8b0f2e9eb4c1ec1069ba198ccc38077a4a88a5c00", + "typeString": "literal_string \"Invalid module address provided\"" } ], - "id": 822, + "id": 836, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "1374:7:8", + "referencedDeclaration": 2658, + "src": "1450:7:8", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 834, + "id": 849, "isConstant": false, "isLValue": false, "isPure": false, @@ -5872,15 +6070,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1374:68:8", + "src": "1450:103:8", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 835, + "id": 850, "nodeType": "ExpressionStatement", - "src": "1374:68:8" + "src": "1450:103:8" }, { "expression": { @@ -5892,7 +6090,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 841, + "id": 856, "isConstant": false, "isLValue": false, "isPure": false, @@ -5901,28 +6099,28 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 837, + "id": 852, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 776, - "src": "1501:7:8", + "referencedDeclaration": 788, + "src": "1612:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 839, + "id": 854, "indexExpression": { "argumentTypes": null, - "id": 838, + "id": 853, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 817, - "src": "1509:6:8", + "referencedDeclaration": 831, + "src": "1620:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } }, @@ -5931,7 +6129,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1501:15:8", + "src": "1612:15:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5942,14 +6140,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 840, + "id": 855, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1520:1:8", + "src": "1631:1:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -5957,11 +6155,29 @@ }, "value": "0" }, - "src": "1501:20:8", + "src": "1612:20:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "4d6f64756c652068617320616c7265616479206265656e206164646564", + "id": 857, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1634:31:8", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_ae2b4ea52eaf6de3fb2d8a64b7555be2dfd285b837a62821bf24e7dc6f329450", + "typeString": "literal_string \"Module has already been added\"" + }, + "value": "Module has already been added" } ], "expression": { @@ -5969,23 +6185,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_ae2b4ea52eaf6de3fb2d8a64b7555be2dfd285b837a62821bf24e7dc6f329450", + "typeString": "literal_string \"Module has already been added\"" } ], - "id": 836, + "id": 851, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "1493:7:8", + "referencedDeclaration": 2658, + "src": "1604:7:8", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 842, + "id": 858, "isConstant": false, "isLValue": false, "isPure": false, @@ -5993,20 +6213,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1493:29:8", + "src": "1604:62:8", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 843, + "id": 859, "nodeType": "ExpressionStatement", - "src": "1493:29:8" + "src": "1604:62:8" }, { "expression": { "argumentTypes": null, - "id": 850, + "id": 866, "isConstant": false, "isLValue": false, "isPure": false, @@ -6015,28 +6235,28 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 844, + "id": 860, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 776, - "src": "1532:7:8", + "referencedDeclaration": 788, + "src": "1676:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 846, + "id": 862, "indexExpression": { "argumentTypes": null, - "id": 845, + "id": 861, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 817, - "src": "1540:6:8", + "referencedDeclaration": 831, + "src": "1684:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } }, @@ -6045,7 +6265,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1532:15:8", + "src": "1676:15:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6057,26 +6277,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 847, + "id": 863, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 776, - "src": "1550:7:8", + "referencedDeclaration": 788, + "src": "1694:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 849, + "id": 865, "indexExpression": { "argumentTypes": null, - "id": 848, + "id": 864, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 772, - "src": "1558:16:8", + "referencedDeclaration": 784, + "src": "1702:16:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6087,26 +6307,26 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1550:25:8", + "src": "1694:25:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1532:43:8", + "src": "1676:43:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 851, + "id": 867, "nodeType": "ExpressionStatement", - "src": "1532:43:8" + "src": "1676:43:8" }, { "expression": { "argumentTypes": null, - "id": 856, + "id": 872, "isConstant": false, "isLValue": false, "isPure": false, @@ -6115,26 +6335,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 852, + "id": 868, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 776, - "src": "1585:7:8", + "referencedDeclaration": 788, + "src": "1729:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 854, + "id": 870, "indexExpression": { "argumentTypes": null, - "id": 853, + "id": 869, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 772, - "src": "1593:16:8", + "referencedDeclaration": 784, + "src": "1737:16:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6145,7 +6365,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1585:25:8", + "src": "1729:25:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6155,83 +6375,83 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 855, + "id": 871, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 817, - "src": "1613:6:8", + "referencedDeclaration": 831, + "src": "1757:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } }, - "src": "1585:34:8", + "src": "1729:34:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 857, + "id": 873, "nodeType": "ExpressionStatement", - "src": "1585:34:8" + "src": "1729:34:8" } ] }, "documentation": "@dev Allows to add a module to the whitelist.\n This can only be done via a Safe transaction.\n @param module Module to be whitelisted.", - "id": 859, + "id": 875, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 820, + "id": 834, "modifierName": { "argumentTypes": null, - "id": 819, + "id": 833, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1618, - "src": "1295:10:8", + "referencedDeclaration": 1653, + "src": "1371:10:8", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1295:10:8" + "src": "1371:10:8" } ], "name": "enableModule", "nodeType": "FunctionDefinition", "parameters": { - "id": 818, + "id": 832, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 817, + "id": 831, "name": "module", "nodeType": "VariableDeclaration", - "scope": 859, - "src": "1257:13:8", + "scope": 875, + "src": "1333:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" }, "typeName": { "contractScope": null, - "id": 816, + "id": 830, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 750, - "src": "1257:6:8", + "referencedDeclaration": 762, + "src": "1333:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } }, @@ -6239,26 +6459,26 @@ "visibility": "internal" } ], - "src": "1256:15:8" + "src": "1332:15:8" }, "payable": false, "returnParameters": { - "id": 821, + "id": 835, "nodeType": "ParameterList", "parameters": [], - "src": "1310:0:8" + "src": "1386:0:8" }, - "scope": 1100, - "src": "1235:391:8", + "scope": 1118, + "src": "1311:459:8", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 892, + "id": 909, "nodeType": "Block", - "src": "1982:204:8", + "src": "2126:248:8", "statements": [ { "expression": { @@ -6270,7 +6490,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 875, + "id": 891, "isConstant": false, "isLValue": false, "isPure": false, @@ -6279,28 +6499,28 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 869, + "id": 885, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 776, - "src": "2064:7:8", + "referencedDeclaration": 788, + "src": "2208:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 871, + "id": 887, "indexExpression": { "argumentTypes": null, - "id": 870, + "id": 886, "name": "prevModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 861, - "src": "2072:10:8", + "referencedDeclaration": 877, + "src": "2216:10:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } }, @@ -6309,7 +6529,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2064:19:8", + "src": "2208:19:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6322,14 +6542,14 @@ "arguments": [ { "argumentTypes": null, - "id": 873, + "id": 889, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 863, - "src": "2095:6:8", + "referencedDeclaration": 879, + "src": "2239:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } } @@ -6337,24 +6557,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } ], - "id": 872, + "id": 888, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2087:7:8", + "src": "2231:7:8", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 874, + "id": 890, "isConstant": false, "isLValue": false, "isPure": false, @@ -6362,17 +6582,35 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2087:15:8", + "src": "2231:15:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2064:38:8", + "src": "2208:38:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "496e76616c696420707265764d6f64756c652c206d6f64756c6520706169722070726f7669646564", + "id": 892, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2248:42:8", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_5caa315f9c5cf61be71c182eef2dc9ef7b6ce6b42c320d36694e1d23e09c287e", + "typeString": "literal_string \"Invalid prevModule, module pair provided\"" + }, + "value": "Invalid prevModule, module pair provided" } ], "expression": { @@ -6380,23 +6618,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_5caa315f9c5cf61be71c182eef2dc9ef7b6ce6b42c320d36694e1d23e09c287e", + "typeString": "literal_string \"Invalid prevModule, module pair provided\"" } ], - "id": 868, + "id": 884, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "2056:7:8", + "referencedDeclaration": 2658, + "src": "2200:7:8", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 876, + "id": 893, "isConstant": false, "isLValue": false, "isPure": false, @@ -6404,20 +6646,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2056:47:8", + "src": "2200:91:8", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 877, + "id": 894, "nodeType": "ExpressionStatement", - "src": "2056:47:8" + "src": "2200:91:8" }, { "expression": { "argumentTypes": null, - "id": 884, + "id": 901, "isConstant": false, "isLValue": false, "isPure": false, @@ -6426,28 +6668,28 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 878, + "id": 895, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 776, - "src": "2113:7:8", + "referencedDeclaration": 788, + "src": "2301:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 880, + "id": 897, "indexExpression": { "argumentTypes": null, - "id": 879, + "id": 896, "name": "prevModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 861, - "src": "2121:10:8", + "referencedDeclaration": 877, + "src": "2309:10:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } }, @@ -6456,7 +6698,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2113:19:8", + "src": "2301:19:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6468,28 +6710,28 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 881, + "id": 898, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 776, - "src": "2135:7:8", + "referencedDeclaration": 788, + "src": "2323:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 883, + "id": 900, "indexExpression": { "argumentTypes": null, - "id": 882, + "id": 899, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 863, - "src": "2143:6:8", + "referencedDeclaration": 879, + "src": "2331:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } }, @@ -6498,26 +6740,26 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2135:15:8", + "src": "2323:15:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2113:37:8", + "src": "2301:37:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 885, + "id": 902, "nodeType": "ExpressionStatement", - "src": "2113:37:8" + "src": "2301:37:8" }, { "expression": { "argumentTypes": null, - "id": 890, + "id": 907, "isConstant": false, "isLValue": false, "isPure": false, @@ -6526,28 +6768,28 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 886, + "id": 903, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 776, - "src": "2160:7:8", + "referencedDeclaration": 788, + "src": "2348:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 888, + "id": 905, "indexExpression": { "argumentTypes": null, - "id": 887, + "id": 904, "name": "module", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 863, - "src": "2168:6:8", + "referencedDeclaration": 879, + "src": "2356:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } }, @@ -6556,7 +6798,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2160:15:8", + "src": "2348:15:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6567,14 +6809,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "30", - "id": 889, + "id": 906, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2178:1:8", + "src": "2366:1:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -6582,72 +6824,72 @@ }, "value": "0" }, - "src": "2160:19:8", + "src": "2348:19:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 891, + "id": 908, "nodeType": "ExpressionStatement", - "src": "2160:19:8" + "src": "2348:19:8" } ] }, "documentation": "@dev Allows to remove a module from the whitelist.\n This can only be done via a Safe transaction.\n @param prevModule Module that pointed to the module to be removed in the linked list\n @param module Module to be removed.", - "id": 893, + "id": 910, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 866, + "id": 882, "modifierName": { "argumentTypes": null, - "id": 865, + "id": 881, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1618, - "src": "1967:10:8", + "referencedDeclaration": 1653, + "src": "2111:10:8", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1967:10:8" + "src": "2111:10:8" } ], "name": "disableModule", "nodeType": "FunctionDefinition", "parameters": { - "id": 864, + "id": 880, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 861, + "id": 877, "name": "prevModule", "nodeType": "VariableDeclaration", - "scope": 893, - "src": "1910:17:8", + "scope": 910, + "src": "2054:17:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" }, "typeName": { "contractScope": null, - "id": 860, + "id": 876, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 750, - "src": "1910:6:8", + "referencedDeclaration": 762, + "src": "2054:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } }, @@ -6656,26 +6898,26 @@ }, { "constant": false, - "id": 863, + "id": 879, "name": "module", "nodeType": "VariableDeclaration", - "scope": 893, - "src": "1929:13:8", + "scope": 910, + "src": "2073:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" }, "typeName": { "contractScope": null, - "id": 862, + "id": 878, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 750, - "src": "1929:6:8", + "referencedDeclaration": 762, + "src": "2073:6:8", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } }, @@ -6683,26 +6925,26 @@ "visibility": "internal" } ], - "src": "1909:34:8" + "src": "2053:34:8" }, "payable": false, "returnParameters": { - "id": 867, + "id": 883, "nodeType": "ParameterList", "parameters": [], - "src": "1982:0:8" + "src": "2126:0:8" }, - "scope": 1100, - "src": "1887:299:8", + "scope": 1118, + "src": "2031:343:8", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 926, + "id": 944, "nodeType": "Block", - "src": "2672:227:8", + "src": "2860:279:8", "statements": [ { "expression": { @@ -6714,7 +6956,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 912, + "id": 929, "isConstant": false, "isLValue": false, "isPure": false, @@ -6723,34 +6965,34 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 907, + "id": 924, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 776, - "src": "2739:7:8", + "referencedDeclaration": 788, + "src": "2927:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 910, + "id": 927, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 908, + "id": 925, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2598, - "src": "2747:3:8", + "referencedDeclaration": 2654, + "src": "2935:3:8", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 909, + "id": 926, "isConstant": false, "isLValue": false, "isPure": false, @@ -6758,7 +7000,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2747:10:8", + "src": "2935:10:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6769,7 +7011,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2739:19:8", + "src": "2927:19:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6780,14 +7022,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 911, + "id": 928, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2762:1:8", + "src": "2950:1:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -6795,11 +7037,29 @@ }, "value": "0" }, - "src": "2739:24:8", + "src": "2927:24:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d20616e20656e61626c6564206d6f64756c65", + "id": 930, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2953:50:8", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_cd36462b17a97c5a3df33333c859d5933a4fb7f5e1a0750f5def8eb51f3272e4", + "typeString": "literal_string \"Method can only be called from an enabled module\"" + }, + "value": "Method can only be called from an enabled module" } ], "expression": { @@ -6807,23 +7067,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_cd36462b17a97c5a3df33333c859d5933a4fb7f5e1a0750f5def8eb51f3272e4", + "typeString": "literal_string \"Method can only be called from an enabled module\"" } ], - "id": 906, + "id": 923, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "2731:7:8", + "referencedDeclaration": 2658, + "src": "2919:7:8", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 913, + "id": 931, "isConstant": false, "isLValue": false, "isPure": false, @@ -6831,32 +7095,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2731:33:8", + "src": "2919:85:8", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 914, + "id": 932, "nodeType": "ExpressionStatement", - "src": "2731:33:8" + "src": "2919:85:8" }, { "expression": { "argumentTypes": null, - "id": 924, + "id": 942, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 915, + "id": 933, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 904, - "src": "2836:7:8", + "referencedDeclaration": 921, + "src": "3076:7:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6869,12 +7133,12 @@ "arguments": [ { "argumentTypes": null, - "id": 917, + "id": 935, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 895, - "src": "2854:2:8", + "referencedDeclaration": 912, + "src": "3094:2:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6882,12 +7146,12 @@ }, { "argumentTypes": null, - "id": 918, + "id": 936, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 897, - "src": "2858:5:8", + "referencedDeclaration": 914, + "src": "3098:5:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6895,12 +7159,12 @@ }, { "argumentTypes": null, - "id": 919, + "id": 937, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 899, - "src": "2865:4:8", + "referencedDeclaration": 916, + "src": "3105:4:8", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -6908,12 +7172,12 @@ }, { "argumentTypes": null, - "id": 920, + "id": 938, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 901, - "src": "2871:9:8", + "referencedDeclaration": 918, + "src": "3111:9:8", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -6924,18 +7188,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 921, + "id": 939, "name": "gasleft", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2591, - "src": "2882:7:8", + "referencedDeclaration": 2647, + "src": "3122:7:8", "typeDescriptions": { "typeIdentifier": "t_function_gasleft_view$__$returns$_t_uint256_$", "typeString": "function () view returns (uint256)" } }, - "id": 922, + "id": 940, "isConstant": false, "isLValue": false, "isPure": false, @@ -6943,7 +7207,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2882:9:8", + "src": "3122:9:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6973,18 +7237,18 @@ "typeString": "uint256" } ], - "id": 916, + "id": 934, "name": "execute", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 989, - "src": "2846:7:8", + "referencedDeclaration": 1007, + "src": "3086:7:8", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) returns (bool)" } }, - "id": 923, + "id": 941, "isConstant": false, "isLValue": false, "isPure": false, @@ -6992,26 +7256,26 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2846:46:8", + "src": "3086:46:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "2836:56:8", + "src": "3076:56:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 925, + "id": 943, "nodeType": "ExpressionStatement", - "src": "2836:56:8" + "src": "3076:56:8" } ] }, "documentation": "@dev Allows a Module to execute a Safe transaction without any further confirmations.\n @param to Destination address of module transaction.\n @param value Ether value of module transaction.\n @param data Data payload of module transaction.\n @param operation Operation type of module transaction.", - "id": 927, + "id": 945, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -7019,16 +7283,16 @@ "name": "execTransactionFromModule", "nodeType": "FunctionDefinition", "parameters": { - "id": 902, + "id": 919, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 895, + "id": 912, "name": "to", "nodeType": "VariableDeclaration", - "scope": 927, - "src": "2557:10:8", + "scope": 945, + "src": "2745:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7036,10 +7300,10 @@ "typeString": "address" }, "typeName": { - "id": 894, + "id": 911, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2557:7:8", + "src": "2745:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7050,11 +7314,11 @@ }, { "constant": false, - "id": 897, + "id": 914, "name": "value", "nodeType": "VariableDeclaration", - "scope": 927, - "src": "2569:13:8", + "scope": 945, + "src": "2757:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7062,10 +7326,10 @@ "typeString": "uint256" }, "typeName": { - "id": 896, + "id": 913, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2569:7:8", + "src": "2757:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7076,11 +7340,11 @@ }, { "constant": false, - "id": 899, + "id": 916, "name": "data", "nodeType": "VariableDeclaration", - "scope": 927, - "src": "2584:10:8", + "scope": 945, + "src": "2772:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7088,10 +7352,10 @@ "typeString": "bytes" }, "typeName": { - "id": 898, + "id": 915, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "2584:5:8", + "src": "2772:5:8", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -7102,11 +7366,11 @@ }, { "constant": false, - "id": 901, + "id": 918, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 927, - "src": "2596:24:8", + "scope": 945, + "src": "2784:24:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7115,11 +7379,11 @@ }, "typeName": { "contractScope": null, - "id": 900, + "id": 917, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 29, - "src": "2596:14:8", + "src": "2784:14:8", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -7129,20 +7393,20 @@ "visibility": "internal" } ], - "src": "2556:65:8" + "src": "2744:65:8" }, "payable": false, "returnParameters": { - "id": 905, + "id": 922, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 904, + "id": 921, "name": "success", "nodeType": "VariableDeclaration", - "scope": 927, - "src": "2654:12:8", + "scope": 945, + "src": "2842:12:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7150,10 +7414,10 @@ "typeString": "bool" }, "typeName": { - "id": 903, + "id": 920, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "2654:4:8", + "src": "2842:4:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7163,19 +7427,19 @@ "visibility": "internal" } ], - "src": "2653:14:8" + "src": "2841:14:8" }, - "scope": 1100, - "src": "2522:377:8", + "scope": 1118, + "src": "2710:429:8", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 988, + "id": 1006, "nodeType": "Block", - "src": "3054:399:8", + "src": "3294:399:8", "statements": [ { "condition": { @@ -7184,19 +7448,19 @@ "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, - "id": 946, + "id": 964, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 942, + "id": 960, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 935, - "src": "3068:9:8", + "referencedDeclaration": 953, + "src": "3308:9:8", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -7210,18 +7474,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 943, + "id": 961, "name": "Enum", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 30, - "src": "3081:4:8", + "src": "3321:4:8", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_Enum_$30_$", "typeString": "type(contract Enum)" } }, - "id": 944, + "id": 962, "isConstant": false, "isLValue": false, "isPure": false, @@ -7229,13 +7493,13 @@ "memberName": "Operation", "nodeType": "MemberAccess", "referencedDeclaration": 29, - "src": "3081:14:8", + "src": "3321:14:8", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_Operation_$29_$", "typeString": "type(enum Enum.Operation)" } }, - "id": 945, + "id": 963, "isConstant": false, "isLValue": false, "isPure": true, @@ -7243,13 +7507,13 @@ "memberName": "Call", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3081:19:8", + "src": "3321:19:8", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, - "src": "3068:32:8", + "src": "3308:32:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7262,19 +7526,19 @@ "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" }, - "id": 960, + "id": 978, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 956, + "id": 974, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 935, - "src": "3178:9:8", + "referencedDeclaration": 953, + "src": "3418:9:8", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -7288,18 +7552,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 957, + "id": 975, "name": "Enum", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 30, - "src": "3191:4:8", + "src": "3431:4:8", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_Enum_$30_$", "typeString": "type(contract Enum)" } }, - "id": 958, + "id": 976, "isConstant": false, "isLValue": false, "isPure": false, @@ -7307,13 +7571,13 @@ "memberName": "Operation", "nodeType": "MemberAccess", "referencedDeclaration": 29, - "src": "3191:14:8", + "src": "3431:14:8", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_Operation_$29_$", "typeString": "type(enum Enum.Operation)" } }, - "id": 959, + "id": 977, "isConstant": false, "isLValue": false, "isPure": true, @@ -7321,35 +7585,35 @@ "memberName": "DelegateCall", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3191:27:8", + "src": "3431:27:8", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" } }, - "src": "3178:40:8", + "src": "3418:40:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": { - "id": 985, + "id": 1003, "nodeType": "Block", - "src": "3293:154:8", + "src": "3533:154:8", "statements": [ { "assignments": [ - 970 + 988 ], "declarations": [ { "constant": false, - "id": 970, + "id": 988, "name": "newContract", "nodeType": "VariableDeclaration", - "scope": 989, - "src": "3307:19:8", + "scope": 1007, + "src": "3547:19:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7357,10 +7621,10 @@ "typeString": "address" }, "typeName": { - "id": 969, + "id": 987, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3307:7:8", + "src": "3547:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7370,18 +7634,18 @@ "visibility": "internal" } ], - "id": 974, + "id": 992, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 972, + "id": 990, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 933, - "src": "3343:4:8", + "referencedDeclaration": 951, + "src": "3583:4:8", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -7395,18 +7659,18 @@ "typeString": "bytes memory" } ], - "id": 971, + "id": 989, "name": "executeCreate", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1026, - "src": "3329:13:8", + "referencedDeclaration": 1044, + "src": "3569:13:8", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$_t_address_$", "typeString": "function (bytes memory) returns (address)" } }, - "id": 973, + "id": 991, "isConstant": false, "isLValue": false, "isPure": false, @@ -7414,31 +7678,31 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3329:19:8", + "src": "3569:19:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "3307:41:8" + "src": "3547:41:8" }, { "expression": { "argumentTypes": null, - "id": 979, + "id": 997, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 975, + "id": 993, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 940, - "src": "3362:7:8", + "referencedDeclaration": 958, + "src": "3602:7:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7452,19 +7716,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 978, + "id": 996, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 976, + "id": 994, "name": "newContract", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 970, - "src": "3372:11:8", + "referencedDeclaration": 988, + "src": "3612:11:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7475,14 +7739,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 977, + "id": 995, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3387:1:8", + "src": "3627:1:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -7490,21 +7754,21 @@ }, "value": "0" }, - "src": "3372:16:8", + "src": "3612:16:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "3362:26:8", + "src": "3602:26:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 980, + "id": 998, "nodeType": "ExpressionStatement", - "src": "3362:26:8" + "src": "3602:26:8" }, { "eventCall": { @@ -7512,12 +7776,12 @@ "arguments": [ { "argumentTypes": null, - "id": 982, + "id": 1000, "name": "newContract", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 970, - "src": "3424:11:8", + "referencedDeclaration": 988, + "src": "3664:11:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7531,18 +7795,18 @@ "typeString": "address" } ], - "id": 981, + "id": 999, "name": "ContractCreation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 761, - "src": "3407:16:8", + "referencedDeclaration": 773, + "src": "3647:16:8", "typeDescriptions": { "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$", "typeString": "function (address)" } }, - "id": 983, + "id": 1001, "isConstant": false, "isLValue": false, "isPure": false, @@ -7550,37 +7814,37 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3407:29:8", + "src": "3647:29:8", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 984, + "id": 1002, "nodeType": "EmitStatement", - "src": "3402:34:8" + "src": "3642:34:8" } ] }, - "id": 986, + "id": 1004, "nodeType": "IfStatement", - "src": "3174:273:8", + "src": "3414:273:8", "trueBody": { "expression": { "argumentTypes": null, - "id": 967, + "id": 985, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 961, + "id": 979, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 940, - "src": "3232:7:8", + "referencedDeclaration": 958, + "src": "3472:7:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7593,12 +7857,12 @@ "arguments": [ { "argumentTypes": null, - "id": 963, + "id": 981, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 929, - "src": "3262:2:8", + "referencedDeclaration": 947, + "src": "3502:2:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7606,12 +7870,12 @@ }, { "argumentTypes": null, - "id": 964, + "id": 982, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 933, - "src": "3266:4:8", + "referencedDeclaration": 951, + "src": "3506:4:8", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -7619,12 +7883,12 @@ }, { "argumentTypes": null, - "id": 965, + "id": 983, "name": "txGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 937, - "src": "3272:5:8", + "referencedDeclaration": 955, + "src": "3512:5:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7646,18 +7910,18 @@ "typeString": "uint256" } ], - "id": 962, + "id": 980, "name": "executeDelegateCall", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1017, - "src": "3242:19:8", + "referencedDeclaration": 1035, + "src": "3482:19:8", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,bytes memory,uint256) returns (bool)" } }, - "id": 966, + "id": 984, "isConstant": false, "isLValue": false, "isPure": false, @@ -7665,42 +7929,42 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3242:36:8", + "src": "3482:36:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "3232:46:8", + "src": "3472:46:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 968, + "id": 986, "nodeType": "ExpressionStatement", - "src": "3232:46:8" + "src": "3472:46:8" } }, - "id": 987, + "id": 1005, "nodeType": "IfStatement", - "src": "3064:383:8", + "src": "3304:383:8", "trueBody": { "expression": { "argumentTypes": null, - "id": 954, + "id": 972, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 947, + "id": 965, "name": "success", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 940, - "src": "3114:7:8", + "referencedDeclaration": 958, + "src": "3354:7:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7713,12 +7977,12 @@ "arguments": [ { "argumentTypes": null, - "id": 949, + "id": 967, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 929, - "src": "3136:2:8", + "referencedDeclaration": 947, + "src": "3376:2:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7726,12 +7990,12 @@ }, { "argumentTypes": null, - "id": 950, + "id": 968, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 931, - "src": "3140:5:8", + "referencedDeclaration": 949, + "src": "3380:5:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7739,12 +8003,12 @@ }, { "argumentTypes": null, - "id": 951, + "id": 969, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 933, - "src": "3147:4:8", + "referencedDeclaration": 951, + "src": "3387:4:8", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -7752,12 +8016,12 @@ }, { "argumentTypes": null, - "id": 952, + "id": 970, "name": "txGas", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 937, - "src": "3153:5:8", + "referencedDeclaration": 955, + "src": "3393:5:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7783,18 +8047,18 @@ "typeString": "uint256" } ], - "id": 948, + "id": 966, "name": "executeCall", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1004, - "src": "3124:11:8", + "referencedDeclaration": 1022, + "src": "3364:11:8", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,uint256) returns (bool)" } }, - "id": 953, + "id": 971, "isConstant": false, "isLValue": false, "isPure": false, @@ -7802,27 +8066,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3124:35:8", + "src": "3364:35:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "3114:45:8", + "src": "3354:45:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 955, + "id": 973, "nodeType": "ExpressionStatement", - "src": "3114:45:8" + "src": "3354:45:8" } } ] }, "documentation": null, - "id": 989, + "id": 1007, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -7830,16 +8094,16 @@ "name": "execute", "nodeType": "FunctionDefinition", "parameters": { - "id": 938, + "id": 956, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 929, + "id": 947, "name": "to", "nodeType": "VariableDeclaration", - "scope": 989, - "src": "2922:10:8", + "scope": 1007, + "src": "3162:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7847,10 +8111,10 @@ "typeString": "address" }, "typeName": { - "id": 928, + "id": 946, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2922:7:8", + "src": "3162:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7861,11 +8125,11 @@ }, { "constant": false, - "id": 931, + "id": 949, "name": "value", "nodeType": "VariableDeclaration", - "scope": 989, - "src": "2934:13:8", + "scope": 1007, + "src": "3174:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7873,10 +8137,10 @@ "typeString": "uint256" }, "typeName": { - "id": 930, + "id": 948, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2934:7:8", + "src": "3174:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7887,11 +8151,11 @@ }, { "constant": false, - "id": 933, + "id": 951, "name": "data", "nodeType": "VariableDeclaration", - "scope": 989, - "src": "2949:10:8", + "scope": 1007, + "src": "3189:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7899,10 +8163,10 @@ "typeString": "bytes" }, "typeName": { - "id": 932, + "id": 950, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "2949:5:8", + "src": "3189:5:8", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -7913,11 +8177,11 @@ }, { "constant": false, - "id": 935, + "id": 953, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 989, - "src": "2961:24:8", + "scope": 1007, + "src": "3201:24:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7926,11 +8190,11 @@ }, "typeName": { "contractScope": null, - "id": 934, + "id": 952, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 29, - "src": "2961:14:8", + "src": "3201:14:8", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -7941,11 +8205,11 @@ }, { "constant": false, - "id": 937, + "id": 955, "name": "txGas", "nodeType": "VariableDeclaration", - "scope": 989, - "src": "2987:13:8", + "scope": 1007, + "src": "3227:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7953,10 +8217,10 @@ "typeString": "uint256" }, "typeName": { - "id": 936, + "id": 954, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2987:7:8", + "src": "3227:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7966,20 +8230,20 @@ "visibility": "internal" } ], - "src": "2921:80:8" + "src": "3161:80:8" }, "payable": false, "returnParameters": { - "id": 941, + "id": 959, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 940, + "id": 958, "name": "success", "nodeType": "VariableDeclaration", - "scope": 989, - "src": "3036:12:8", + "scope": 1007, + "src": "3276:12:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7987,10 +8251,10 @@ "typeString": "bool" }, "typeName": { - "id": 939, + "id": 957, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "3036:4:8", + "src": "3276:4:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8000,86 +8264,86 @@ "visibility": "internal" } ], - "src": "3035:14:8" + "src": "3275:14:8" }, - "scope": 1100, - "src": "2905:548:8", + "scope": 1118, + "src": "3145:548:8", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1003, + "id": 1021, "nodeType": "Block", - "src": "3586:182:8", + "src": "3826:182:8", "statements": [ { "externalReferences": [ { "data": { - "declaration": 995, + "declaration": 1013, "isOffset": false, "isSlot": false, - "src": "3740:4:8", + "src": "3980:4:8", "valueSize": 1 } }, { "data": { - "declaration": 995, + "declaration": 1013, "isOffset": false, "isSlot": false, - "src": "3721:4:8", + "src": "3961:4:8", "valueSize": 1 } }, { "success": { - "declaration": 1000, + "declaration": 1018, "isOffset": false, "isSlot": false, - "src": "3683:7:8", + "src": "3923:7:8", "valueSize": 1 } }, { "txGas": { - "declaration": 997, + "declaration": 1015, "isOffset": false, "isSlot": false, - "src": "3699:5:8", + "src": "3939:5:8", "valueSize": 1 } }, { "to": { - "declaration": 991, + "declaration": 1009, "isOffset": false, "isSlot": false, - "src": "3706:2:8", + "src": "3946:2:8", "valueSize": 1 } }, { "value": { - "declaration": 993, + "declaration": 1011, "isOffset": false, "isSlot": false, - "src": "3710:5:8", + "src": "3950:5:8", "valueSize": 1 } } ], - "id": 1002, + "id": 1020, "nodeType": "InlineAssembly", "operations": "{\n success := call(txGas, to, value, add(data, 0x20), mload(data), 0, 0)\n}", - "src": "3660:108:8" + "src": "3900:108:8" } ] }, "documentation": null, - "id": 1004, + "id": 1022, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -8087,16 +8351,16 @@ "name": "executeCall", "nodeType": "FunctionDefinition", "parameters": { - "id": 998, + "id": 1016, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 991, + "id": 1009, "name": "to", "nodeType": "VariableDeclaration", - "scope": 1004, - "src": "3480:10:8", + "scope": 1022, + "src": "3720:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8104,10 +8368,10 @@ "typeString": "address" }, "typeName": { - "id": 990, + "id": 1008, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3480:7:8", + "src": "3720:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8118,11 +8382,11 @@ }, { "constant": false, - "id": 993, + "id": 1011, "name": "value", "nodeType": "VariableDeclaration", - "scope": 1004, - "src": "3492:13:8", + "scope": 1022, + "src": "3732:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8130,10 +8394,10 @@ "typeString": "uint256" }, "typeName": { - "id": 992, + "id": 1010, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3492:7:8", + "src": "3732:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8144,11 +8408,11 @@ }, { "constant": false, - "id": 995, + "id": 1013, "name": "data", "nodeType": "VariableDeclaration", - "scope": 1004, - "src": "3507:10:8", + "scope": 1022, + "src": "3747:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8156,10 +8420,10 @@ "typeString": "bytes" }, "typeName": { - "id": 994, + "id": 1012, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "3507:5:8", + "src": "3747:5:8", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -8170,11 +8434,11 @@ }, { "constant": false, - "id": 997, + "id": 1015, "name": "txGas", "nodeType": "VariableDeclaration", - "scope": 1004, - "src": "3519:13:8", + "scope": 1022, + "src": "3759:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8182,10 +8446,10 @@ "typeString": "uint256" }, "typeName": { - "id": 996, + "id": 1014, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3519:7:8", + "src": "3759:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8195,20 +8459,20 @@ "visibility": "internal" } ], - "src": "3479:54:8" + "src": "3719:54:8" }, "payable": false, "returnParameters": { - "id": 1001, + "id": 1019, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1000, + "id": 1018, "name": "success", "nodeType": "VariableDeclaration", - "scope": 1004, - "src": "3568:12:8", + "scope": 1022, + "src": "3808:12:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8216,10 +8480,10 @@ "typeString": "bool" }, "typeName": { - "id": 999, + "id": 1017, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "3568:4:8", + "src": "3808:4:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8229,77 +8493,77 @@ "visibility": "internal" } ], - "src": "3567:14:8" + "src": "3807:14:8" }, - "scope": 1100, - "src": "3459:309:8", + "scope": 1118, + "src": "3699:309:8", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1016, + "id": 1034, "nodeType": "Block", - "src": "3894:183:8", + "src": "4134:183:8", "statements": [ { "externalReferences": [ { "data": { - "declaration": 1008, + "declaration": 1026, "isOffset": false, "isSlot": false, - "src": "4049:4:8", + "src": "4289:4:8", "valueSize": 1 } }, { "data": { - "declaration": 1008, + "declaration": 1026, "isOffset": false, "isSlot": false, - "src": "4030:4:8", + "src": "4270:4:8", "valueSize": 1 } }, { "success": { - "declaration": 1013, + "declaration": 1031, "isOffset": false, "isSlot": false, - "src": "3991:7:8", + "src": "4231:7:8", "valueSize": 1 } }, { "txGas": { - "declaration": 1010, + "declaration": 1028, "isOffset": false, "isSlot": false, - "src": "4015:5:8", + "src": "4255:5:8", "valueSize": 1 } }, { "to": { - "declaration": 1006, + "declaration": 1024, "isOffset": false, "isSlot": false, - "src": "4022:2:8", + "src": "4262:2:8", "valueSize": 1 } } ], - "id": 1015, + "id": 1033, "nodeType": "InlineAssembly", "operations": "{\n success := delegatecall(txGas, to, add(data, 0x20), mload(data), 0, 0)\n}", - "src": "3968:109:8" + "src": "4208:109:8" } ] }, "documentation": null, - "id": 1017, + "id": 1035, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -8307,16 +8571,16 @@ "name": "executeDelegateCall", "nodeType": "FunctionDefinition", "parameters": { - "id": 1011, + "id": 1029, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1006, + "id": 1024, "name": "to", "nodeType": "VariableDeclaration", - "scope": 1017, - "src": "3803:10:8", + "scope": 1035, + "src": "4043:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8324,10 +8588,10 @@ "typeString": "address" }, "typeName": { - "id": 1005, + "id": 1023, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3803:7:8", + "src": "4043:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8338,11 +8602,11 @@ }, { "constant": false, - "id": 1008, + "id": 1026, "name": "data", "nodeType": "VariableDeclaration", - "scope": 1017, - "src": "3815:10:8", + "scope": 1035, + "src": "4055:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8350,10 +8614,10 @@ "typeString": "bytes" }, "typeName": { - "id": 1007, + "id": 1025, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "3815:5:8", + "src": "4055:5:8", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -8364,11 +8628,11 @@ }, { "constant": false, - "id": 1010, + "id": 1028, "name": "txGas", "nodeType": "VariableDeclaration", - "scope": 1017, - "src": "3827:13:8", + "scope": 1035, + "src": "4067:13:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8376,10 +8640,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1009, + "id": 1027, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3827:7:8", + "src": "4067:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8389,20 +8653,20 @@ "visibility": "internal" } ], - "src": "3802:39:8" + "src": "4042:39:8" }, "payable": false, "returnParameters": { - "id": 1014, + "id": 1032, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1013, + "id": 1031, "name": "success", "nodeType": "VariableDeclaration", - "scope": 1017, - "src": "3876:12:8", + "scope": 1035, + "src": "4116:12:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8410,10 +8674,10 @@ "typeString": "bool" }, "typeName": { - "id": 1012, + "id": 1030, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "3876:4:8", + "src": "4116:4:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -8423,59 +8687,59 @@ "visibility": "internal" } ], - "src": "3875:14:8" + "src": "4115:14:8" }, - "scope": 1100, - "src": "3774:303:8", + "scope": 1118, + "src": "4014:303:8", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1025, + "id": 1043, "nodeType": "Block", - "src": "4177:167:8", + "src": "4417:167:8", "statements": [ { "externalReferences": [ { "newContract": { - "declaration": 1022, + "declaration": 1040, "isOffset": false, "isSlot": false, - "src": "4274:11:8", + "src": "4514:11:8", "valueSize": 1 } }, { "data": { - "declaration": 1019, + "declaration": 1037, "isOffset": false, "isSlot": false, - "src": "4303:4:8", + "src": "4543:4:8", "valueSize": 1 } }, { "data": { - "declaration": 1019, + "declaration": 1037, "isOffset": false, "isSlot": false, - "src": "4322:4:8", + "src": "4562:4:8", "valueSize": 1 } } ], - "id": 1024, + "id": 1042, "nodeType": "InlineAssembly", "operations": "{\n newContract := create(0, add(data, 0x20), mload(data))\n}", - "src": "4251:93:8" + "src": "4491:93:8" } ] }, "documentation": null, - "id": 1026, + "id": 1044, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -8483,16 +8747,16 @@ "name": "executeCreate", "nodeType": "FunctionDefinition", "parameters": { - "id": 1020, + "id": 1038, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1019, + "id": 1037, "name": "data", "nodeType": "VariableDeclaration", - "scope": 1026, - "src": "4106:10:8", + "scope": 1044, + "src": "4346:10:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8500,10 +8764,10 @@ "typeString": "bytes" }, "typeName": { - "id": 1018, + "id": 1036, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "4106:5:8", + "src": "4346:5:8", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -8513,20 +8777,20 @@ "visibility": "internal" } ], - "src": "4105:12:8" + "src": "4345:12:8" }, "payable": false, "returnParameters": { - "id": 1023, + "id": 1041, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1022, + "id": 1040, "name": "newContract", "nodeType": "VariableDeclaration", - "scope": 1026, - "src": "4152:19:8", + "scope": 1044, + "src": "4392:19:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8534,10 +8798,10 @@ "typeString": "address" }, "typeName": { - "id": 1021, + "id": 1039, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4152:7:8", + "src": "4392:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8547,32 +8811,32 @@ "visibility": "internal" } ], - "src": "4151:21:8" + "src": "4391:21:8" }, - "scope": 1100, - "src": "4083:261:8", + "scope": 1118, + "src": "4323:261:8", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1098, + "id": 1116, "nodeType": "Block", - "src": "4505:656:8", + "src": "4745:656:8", "statements": [ { "assignments": [ - 1033 + 1051 ], "declarations": [ { "constant": false, - "id": 1033, + "id": 1051, "name": "moduleCount", "nodeType": "VariableDeclaration", - "scope": 1099, - "src": "4549:19:8", + "scope": 1117, + "src": "4789:19:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8580,10 +8844,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1032, + "id": 1050, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "4549:7:8", + "src": "4789:7:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8593,18 +8857,18 @@ "visibility": "internal" } ], - "id": 1035, + "id": 1053, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 1034, + "id": 1052, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4571:1:8", + "src": "4811:1:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -8613,20 +8877,20 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "4549:23:8" + "src": "4789:23:8" }, { "assignments": [ - 1037 + 1055 ], "declarations": [ { "constant": false, - "id": 1037, + "id": 1055, "name": "currentModule", "nodeType": "VariableDeclaration", - "scope": 1099, - "src": "4582:21:8", + "scope": 1117, + "src": "4822:21:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8634,10 +8898,10 @@ "typeString": "address" }, "typeName": { - "id": 1036, + "id": 1054, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4582:7:8", + "src": "4822:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8647,31 +8911,31 @@ "visibility": "internal" } ], - "id": 1041, + "id": 1059, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1038, + "id": 1056, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 776, - "src": "4606:7:8", + "referencedDeclaration": 788, + "src": "4846:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1040, + "id": 1058, "indexExpression": { "argumentTypes": null, - "id": 1039, + "id": 1057, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 772, - "src": "4614:16:8", + "referencedDeclaration": 784, + "src": "4854:16:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8682,37 +8946,37 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4606:25:8", + "src": "4846:25:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "4582:49:8" + "src": "4822:49:8" }, { "body": { - "id": 1054, + "id": 1072, "nodeType": "Block", - "src": "4682:91:8", + "src": "4922:91:8", "statements": [ { "expression": { "argumentTypes": null, - "id": 1049, + "id": 1067, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1045, + "id": 1063, "name": "currentModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1037, - "src": "4696:13:8", + "referencedDeclaration": 1055, + "src": "4936:13:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8724,26 +8988,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1046, + "id": 1064, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 776, - "src": "4712:7:8", + "referencedDeclaration": 788, + "src": "4952:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1048, + "id": 1066, "indexExpression": { "argumentTypes": null, - "id": 1047, + "id": 1065, "name": "currentModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1037, - "src": "4720:13:8", + "referencedDeclaration": 1055, + "src": "4960:13:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8754,26 +9018,26 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4712:22:8", + "src": "4952:22:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4696:38:8", + "src": "4936:38:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1050, + "id": 1068, "nodeType": "ExpressionStatement", - "src": "4696:38:8" + "src": "4936:38:8" }, { "expression": { "argumentTypes": null, - "id": 1052, + "id": 1070, "isConstant": false, "isLValue": false, "isPure": false, @@ -8781,15 +9045,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "4748:14:8", + "src": "4988:14:8", "subExpression": { "argumentTypes": null, - "id": 1051, + "id": 1069, "name": "moduleCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1033, - "src": "4748:11:8", + "referencedDeclaration": 1051, + "src": "4988:11:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8800,9 +9064,9 @@ "typeString": "uint256" } }, - "id": 1053, + "id": 1071, "nodeType": "ExpressionStatement", - "src": "4748:14:8" + "src": "4988:14:8" } ] }, @@ -8812,19 +9076,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1044, + "id": 1062, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1042, + "id": 1060, "name": "currentModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1037, - "src": "4647:13:8", + "referencedDeclaration": 1055, + "src": "4887:13:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8834,39 +9098,39 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 1043, + "id": 1061, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 772, - "src": "4664:16:8", + "referencedDeclaration": 784, + "src": "4904:16:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4647:33:8", + "src": "4887:33:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 1055, + "id": 1073, "nodeType": "WhileStatement", - "src": "4641:132:8" + "src": "4881:132:8" }, { "assignments": [ - 1059 + 1077 ], "declarations": [ { "constant": false, - "id": 1059, + "id": 1077, "name": "array", "nodeType": "VariableDeclaration", - "scope": 1099, - "src": "4782:22:8", + "scope": 1117, + "src": "5022:22:8", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -8875,19 +9139,19 @@ }, "typeName": { "baseType": { - "id": 1057, + "id": 1075, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4782:7:8", + "src": "5022:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1058, + "id": 1076, "length": null, "nodeType": "ArrayTypeName", - "src": "4782:9:8", + "src": "5022:9:8", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -8897,18 +9161,18 @@ "visibility": "internal" } ], - "id": 1065, + "id": 1083, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 1063, + "id": 1081, "name": "moduleCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1033, - "src": "4821:11:8", + "referencedDeclaration": 1051, + "src": "5061:11:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8922,39 +9186,39 @@ "typeString": "uint256" } ], - "id": 1062, + "id": 1080, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", - "src": "4807:13:8", + "src": "5047:13:8", "typeDescriptions": { "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_$", "typeString": "function (uint256) pure returns (address[] memory)" }, "typeName": { "baseType": { - "id": 1060, + "id": 1078, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4811:7:8", + "src": "5051:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1061, + "id": 1079, "length": null, "nodeType": "ArrayTypeName", - "src": "4811:9:8", + "src": "5051:9:8", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" } } }, - "id": 1064, + "id": 1082, "isConstant": false, "isLValue": false, "isPure": false, @@ -8962,31 +9226,31 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4807:26:8", + "src": "5047:26:8", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory", "typeString": "address[] memory" } }, "nodeType": "VariableDeclarationStatement", - "src": "4782:51:8" + "src": "5022:51:8" }, { "expression": { "argumentTypes": null, - "id": 1068, + "id": 1086, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1066, + "id": 1084, "name": "moduleCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1033, - "src": "4877:11:8", + "referencedDeclaration": 1051, + "src": "5117:11:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -8997,14 +9261,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "30", - "id": 1067, + "id": 1085, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4891:1:8", + "src": "5131:1:8", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -9012,32 +9276,32 @@ }, "value": "0" }, - "src": "4877:15:8", + "src": "5117:15:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1069, + "id": 1087, "nodeType": "ExpressionStatement", - "src": "4877:15:8" + "src": "5117:15:8" }, { "expression": { "argumentTypes": null, - "id": 1074, + "id": 1092, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1070, + "id": 1088, "name": "currentModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1037, - "src": "4902:13:8", + "referencedDeclaration": 1055, + "src": "5142:13:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9049,26 +9313,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1071, + "id": 1089, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 776, - "src": "4918:7:8", + "referencedDeclaration": 788, + "src": "5158:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1073, + "id": 1091, "indexExpression": { "argumentTypes": null, - "id": 1072, + "id": 1090, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 772, - "src": "4926:16:8", + "referencedDeclaration": 784, + "src": "5166:16:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9079,32 +9343,32 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4918:25:8", + "src": "5158:25:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4902:41:8", + "src": "5142:41:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1075, + "id": 1093, "nodeType": "ExpressionStatement", - "src": "4902:41:8" + "src": "5142:41:8" }, { "body": { - "id": 1094, + "id": 1112, "nodeType": "Block", - "src": "4994:139:8", + "src": "5234:139:8", "statements": [ { "expression": { "argumentTypes": null, - "id": 1083, + "id": 1101, "isConstant": false, "isLValue": false, "isPure": false, @@ -9113,26 +9377,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1079, + "id": 1097, "name": "array", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1059, - "src": "5008:5:8", + "referencedDeclaration": 1077, + "src": "5248:5:8", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1081, + "id": 1099, "indexExpression": { "argumentTypes": null, - "id": 1080, + "id": 1098, "name": "moduleCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1033, - "src": "5014:11:8", + "referencedDeclaration": 1051, + "src": "5254:11:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9143,7 +9407,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "5008:18:8", + "src": "5248:18:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9153,43 +9417,43 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1082, + "id": 1100, "name": "currentModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1037, - "src": "5029:13:8", + "referencedDeclaration": 1055, + "src": "5269:13:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "5008:34:8", + "src": "5248:34:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1084, + "id": 1102, "nodeType": "ExpressionStatement", - "src": "5008:34:8" + "src": "5248:34:8" }, { "expression": { "argumentTypes": null, - "id": 1089, + "id": 1107, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1085, + "id": 1103, "name": "currentModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1037, - "src": "5056:13:8", + "referencedDeclaration": 1055, + "src": "5296:13:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9201,26 +9465,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1086, + "id": 1104, "name": "modules", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 776, - "src": "5072:7:8", + "referencedDeclaration": 788, + "src": "5312:7:8", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1088, + "id": 1106, "indexExpression": { "argumentTypes": null, - "id": 1087, + "id": 1105, "name": "currentModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1037, - "src": "5080:13:8", + "referencedDeclaration": 1055, + "src": "5320:13:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9231,26 +9495,26 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "5072:22:8", + "src": "5312:22:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "5056:38:8", + "src": "5296:38:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1090, + "id": 1108, "nodeType": "ExpressionStatement", - "src": "5056:38:8" + "src": "5296:38:8" }, { "expression": { "argumentTypes": null, - "id": 1092, + "id": 1110, "isConstant": false, "isLValue": false, "isPure": false, @@ -9258,15 +9522,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "5108:14:8", + "src": "5348:14:8", "subExpression": { "argumentTypes": null, - "id": 1091, + "id": 1109, "name": "moduleCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1033, - "src": "5108:11:8", + "referencedDeclaration": 1051, + "src": "5348:11:8", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9277,9 +9541,9 @@ "typeString": "uint256" } }, - "id": 1093, + "id": 1111, "nodeType": "ExpressionStatement", - "src": "5108:14:8" + "src": "5348:14:8" } ] }, @@ -9289,19 +9553,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1078, + "id": 1096, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1076, + "id": 1094, "name": "currentModule", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1037, - "src": "4959:13:8", + "referencedDeclaration": 1055, + "src": "5199:13:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9311,50 +9575,50 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 1077, + "id": 1095, "name": "SENTINEL_MODULES", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 772, - "src": "4976:16:8", + "referencedDeclaration": 784, + "src": "5216:16:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4959:33:8", + "src": "5199:33:8", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 1095, + "id": 1113, "nodeType": "WhileStatement", - "src": "4953:180:8" + "src": "5193:180:8" }, { "expression": { "argumentTypes": null, - "id": 1096, + "id": 1114, "name": "array", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1059, - "src": "5149:5:8", + "referencedDeclaration": 1077, + "src": "5389:5:8", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "functionReturnParameters": 1031, - "id": 1097, + "functionReturnParameters": 1049, + "id": 1115, "nodeType": "Return", - "src": "5142:12:8" + "src": "5382:12:8" } ] }, "documentation": "@dev Returns array of modules.\n @return Array of modules.", - "id": 1099, + "id": 1117, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -9362,23 +9626,23 @@ "name": "getModules", "nodeType": "FunctionDefinition", "parameters": { - "id": 1027, + "id": 1045, "nodeType": "ParameterList", "parameters": [], - "src": "4442:2:8" + "src": "4682:2:8" }, "payable": false, "returnParameters": { - "id": 1031, + "id": 1049, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1030, + "id": 1048, "name": "", "nodeType": "VariableDeclaration", - "scope": 1099, - "src": "4490:9:8", + "scope": 1117, + "src": "4730:9:8", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9387,19 +9651,19 @@ }, "typeName": { "baseType": { - "id": 1028, + "id": 1046, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4490:7:8", + "src": "4730:7:8", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1029, + "id": 1047, "length": null, "nodeType": "ArrayTypeName", - "src": "4490:9:8", + "src": "4730:9:8", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -9409,20 +9673,20 @@ "visibility": "internal" } ], - "src": "4489:11:8" + "src": "4729:11:8" }, - "scope": 1100, - "src": "4423:738:8", + "scope": 1118, + "src": "4663:738:8", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 1101, - "src": "303:4860:8" + "scope": 1119, + "src": "303:5100:8" } ], - "src": "0:5164:8" + "src": "0:5404:8" }, "compiler": { "name": "solc", @@ -9430,5 +9694,5 @@ }, "networks": {}, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-27T11:12:45.579Z" + "updatedAt": "2018-05-28T05:59:52.702Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/MultiSend.json b/safe-contracts/build/contracts/MultiSend.json index 7e13b41104..6dae71099e 100644 --- a/safe-contracts/build/contracts/MultiSend.json +++ b/safe-contracts/build/contracts/MultiSend.json @@ -26,14 +26,14 @@ "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/libraries/MultiSend.sol", "exportedSymbols": { "MultiSend": [ - 1740 + 1775 ] }, - "id": 1741, + "id": 1776, "nodeType": "SourceUnit", "nodes": [ { - "id": 1732, + "id": 1767, "literals": [ "solidity", "0.4", @@ -48,16 +48,16 @@ "contractKind": "contract", "documentation": "@title Multi Send - Allows to batch multiple transactions into one.\n @author Nick Dodson - \n @author Gonçalo Sá - \n @author Stefan George - ", "fullyImplemented": true, - "id": 1740, + "id": 1775, "linearizedBaseContracts": [ - 1740 + 1775 ], "name": "MultiSend", "nodeType": "ContractDefinition", "nodes": [ { "body": { - "id": 1738, + "id": 1773, "nodeType": "Block", "src": "651:673:16", "statements": [ @@ -65,7 +65,7 @@ "externalReferences": [ { "transactions": { - "declaration": 1734, + "declaration": 1769, "isOffset": false, "isSlot": false, "src": "768:12:16", @@ -74,7 +74,7 @@ }, { "transactions": { - "declaration": 1734, + "declaration": 1769, "isOffset": false, "isSlot": false, "src": "884:12:16", @@ -83,7 +83,7 @@ }, { "transactions": { - "declaration": 1734, + "declaration": 1769, "isOffset": false, "isSlot": false, "src": "941:12:16", @@ -92,7 +92,7 @@ }, { "transactions": { - "declaration": 1734, + "declaration": 1769, "isOffset": false, "isSlot": false, "src": "1014:12:16", @@ -101,7 +101,7 @@ }, { "transactions": { - "declaration": 1734, + "declaration": 1769, "isOffset": false, "isSlot": false, "src": "1075:12:16", @@ -109,7 +109,7 @@ } } ], - "id": 1737, + "id": 1772, "nodeType": "InlineAssembly", "operations": "{\n let length := mload(transactions)\n let i := 0x20\n for {\n }\n lt(i, length)\n {\n }\n {\n let to := mload(add(transactions, i))\n let value := mload(add(transactions, add(i, 0x20)))\n let dataLength := mload(add(transactions, add(i, 0x60)))\n let data := add(transactions, add(i, 0x80))\n switch call(gas(), to, value, data, dataLength, 0, 0)\n case 0 {\n revert(0, 0)\n }\n i := add(i, add(0x80, mul(div(add(dataLength, 0x1f), 0x20), 0x20)))\n }\n}", "src": "725:599:16" @@ -117,7 +117,7 @@ ] }, "documentation": "@dev Sends multiple transactions and reverts all if one fails.\n @param transactions Encoded transactions. Each transaction is encoded as\n a tuple(address,uint256,bytes). The bytes of all\n encoded transactions are concatenated to form the input.", - "id": 1739, + "id": 1774, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -125,15 +125,15 @@ "name": "multiSend", "nodeType": "FunctionDefinition", "parameters": { - "id": 1735, + "id": 1770, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1734, + "id": 1769, "name": "transactions", "nodeType": "VariableDeclaration", - "scope": 1739, + "scope": 1774, "src": "612:18:16", "stateVariable": false, "storageLocation": "default", @@ -142,7 +142,7 @@ "typeString": "bytes" }, "typeName": { - "id": 1733, + "id": 1768, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "612:5:16", @@ -159,19 +159,19 @@ }, "payable": false, "returnParameters": { - "id": 1736, + "id": 1771, "nodeType": "ParameterList", "parameters": [], "src": "651:0:16" }, - "scope": 1740, + "scope": 1775, "src": "593:731:16", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 1741, + "scope": 1776, "src": "253:1073:16" } ], @@ -181,14 +181,14 @@ "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/libraries/MultiSend.sol", "exportedSymbols": { "MultiSend": [ - 1740 + 1775 ] }, - "id": 1741, + "id": 1776, "nodeType": "SourceUnit", "nodes": [ { - "id": 1732, + "id": 1767, "literals": [ "solidity", "0.4", @@ -203,16 +203,16 @@ "contractKind": "contract", "documentation": "@title Multi Send - Allows to batch multiple transactions into one.\n @author Nick Dodson - \n @author Gonçalo Sá - \n @author Stefan George - ", "fullyImplemented": true, - "id": 1740, + "id": 1775, "linearizedBaseContracts": [ - 1740 + 1775 ], "name": "MultiSend", "nodeType": "ContractDefinition", "nodes": [ { "body": { - "id": 1738, + "id": 1773, "nodeType": "Block", "src": "651:673:16", "statements": [ @@ -220,7 +220,7 @@ "externalReferences": [ { "transactions": { - "declaration": 1734, + "declaration": 1769, "isOffset": false, "isSlot": false, "src": "768:12:16", @@ -229,7 +229,7 @@ }, { "transactions": { - "declaration": 1734, + "declaration": 1769, "isOffset": false, "isSlot": false, "src": "884:12:16", @@ -238,7 +238,7 @@ }, { "transactions": { - "declaration": 1734, + "declaration": 1769, "isOffset": false, "isSlot": false, "src": "941:12:16", @@ -247,7 +247,7 @@ }, { "transactions": { - "declaration": 1734, + "declaration": 1769, "isOffset": false, "isSlot": false, "src": "1014:12:16", @@ -256,7 +256,7 @@ }, { "transactions": { - "declaration": 1734, + "declaration": 1769, "isOffset": false, "isSlot": false, "src": "1075:12:16", @@ -264,7 +264,7 @@ } } ], - "id": 1737, + "id": 1772, "nodeType": "InlineAssembly", "operations": "{\n let length := mload(transactions)\n let i := 0x20\n for {\n }\n lt(i, length)\n {\n }\n {\n let to := mload(add(transactions, i))\n let value := mload(add(transactions, add(i, 0x20)))\n let dataLength := mload(add(transactions, add(i, 0x60)))\n let data := add(transactions, add(i, 0x80))\n switch call(gas(), to, value, data, dataLength, 0, 0)\n case 0 {\n revert(0, 0)\n }\n i := add(i, add(0x80, mul(div(add(dataLength, 0x1f), 0x20), 0x20)))\n }\n}", "src": "725:599:16" @@ -272,7 +272,7 @@ ] }, "documentation": "@dev Sends multiple transactions and reverts all if one fails.\n @param transactions Encoded transactions. Each transaction is encoded as\n a tuple(address,uint256,bytes). The bytes of all\n encoded transactions are concatenated to form the input.", - "id": 1739, + "id": 1774, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -280,15 +280,15 @@ "name": "multiSend", "nodeType": "FunctionDefinition", "parameters": { - "id": 1735, + "id": 1770, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1734, + "id": 1769, "name": "transactions", "nodeType": "VariableDeclaration", - "scope": 1739, + "scope": 1774, "src": "612:18:16", "stateVariable": false, "storageLocation": "default", @@ -297,7 +297,7 @@ "typeString": "bytes" }, "typeName": { - "id": 1733, + "id": 1768, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "612:5:16", @@ -314,19 +314,19 @@ }, "payable": false, "returnParameters": { - "id": 1736, + "id": 1771, "nodeType": "ParameterList", "parameters": [], "src": "651:0:16" }, - "scope": 1740, + "scope": 1775, "src": "593:731:16", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 1741, + "scope": 1776, "src": "253:1073:16" } ], @@ -340,22 +340,16 @@ "4": { "events": {}, "links": {}, - "address": "0x46ba31fce67f6e0cfdf767b2b24c8cfa56015334", - "transactionHash": "0x4d190832f77421880276d21d750264b5a465b1c38d09d44667ce6617a8dd6a2f" - }, - "1527316019334": { - "events": {}, - "links": {}, - "address": "0xb0945dc5aa1de7306033fe26a1bba93292ccf9b8", - "transactionHash": "0x09e43d5e80b83dd623f34456dac3db1c4a8610a5734a9b8bb210e0e97dfab47e" + "address": "0xa95bcb648df34c679b070cd7f5992ec4aa4e5275", + "transactionHash": "0x7260ac1ca4cdf29c28bc941de22f64e7dd24bc928841bebee1f2b4d5d84037c8" }, "1527420696956": { "events": {}, "links": {}, - "address": "0xf76104e6bd2085f236594bf61a3d818aa6eb6d8a", - "transactionHash": "0xd044f1662e339061a8cabf2b06ac94a9f86fcccf3f5d80ebd1bea2a7542d4021" + "address": "0xdcf4ea4891d890a882fbeb6bab32192bac5b54e7", + "transactionHash": "0x172dfa14dab8d0f5c74e8a33b1bcecd25b4dd2a8a71a9e361889a5944d4c5b86" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-27T11:31:46.257Z" + "updatedAt": "2018-05-28T06:08:59.482Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/OwnerManager.json b/safe-contracts/build/contracts/OwnerManager.json index e929f63a75..dca7815b70 100644 --- a/safe-contracts/build/contracts/OwnerManager.json +++ b/safe-contracts/build/contracts/OwnerManager.json @@ -139,24 +139,24 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50610efa806100206000396000f30060806040526004361061008e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632f54bf6e1461009357806386040aa9146100ee5780638cff63551461015e578063a0e67e2b146101b5578063b7f3358d14610221578063b91a667f14610251578063e318b52b146102a1578063e75235b814610324575b600080fd5b34801561009f57600080fd5b506100d4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610355565b604051808215151515815260200191505060405180910390f35b3480156100fa57600080fd5b5061015c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506103d6565b005b34801561016a57600080fd5b50610173610657565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101c157600080fd5b506101ca61065c565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561020d5780820151818401526020810190506101f2565b505050509050019250505060405180910390f35b34801561022d57600080fd5b5061024f600480360381019080803560ff1690602001909291905050506107f5565b005b34801561025d57600080fd5b5061029f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050610874565b005b3480156102ad57600080fd5b50610322600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b28565b005b34801561033057600080fd5b50610339610eb7565b604051808260ff1660ff16815260200191505060405180910390f35b6000806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561041057600080fd5b8060ff1660018054031015151561042657600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156104be57600080fd5b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160008154809291906001900391905055508060ff16600260009054906101000a900460ff1660ff1614151561065257610651816107f5565b5b505050565b600181565b6060806000806001546040519080825280602002602001820160405280156106935781602001602082028038833980820191505090505b50925060009150600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415156107ec5780838381518110151561074257fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081806001019250506106fd565b82935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561082f57600080fd5b6001548160ff161115151561084357600080fd5b60018160ff161015151561085657600080fd5b80600260006101000a81548160ff021916908360ff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156108ae57600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff16141580156109025750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b151561090d57600080fd5b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561099057600080fd5b600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600081548092919060010191905055508060ff16600260009054906101000a900460ff1660ff16141515610b2457610b23816107f5565b5b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b6257600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614158015610bb65750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515610bc157600080fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610c4457600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610cdc57600080fd5b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000600260009054906101000a900460ff169050905600a165627a7a723058207162ce7887c437c5aff253c6ee66707c5dd406c4fefdd37babe3c37d937512df0029", - "deployedBytecode": "0x60806040526004361061008e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632f54bf6e1461009357806386040aa9146100ee5780638cff63551461015e578063a0e67e2b146101b5578063b7f3358d14610221578063b91a667f14610251578063e318b52b146102a1578063e75235b814610324575b600080fd5b34801561009f57600080fd5b506100d4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610355565b604051808215151515815260200191505060405180910390f35b3480156100fa57600080fd5b5061015c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506103d6565b005b34801561016a57600080fd5b50610173610657565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101c157600080fd5b506101ca61065c565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561020d5780820151818401526020810190506101f2565b505050509050019250505060405180910390f35b34801561022d57600080fd5b5061024f600480360381019080803560ff1690602001909291905050506107f5565b005b34801561025d57600080fd5b5061029f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050610874565b005b3480156102ad57600080fd5b50610322600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610b28565b005b34801561033057600080fd5b50610339610eb7565b604051808260ff1660ff16815260200191505060405180910390f35b6000806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561041057600080fd5b8060ff1660018054031015151561042657600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156104be57600080fd5b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160008154809291906001900391905055508060ff16600260009054906101000a900460ff1660ff1614151561065257610651816107f5565b5b505050565b600181565b6060806000806001546040519080825280602002602001820160405280156106935781602001602082028038833980820191505090505b50925060009150600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415156107ec5780838381518110151561074257fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081806001019250506106fd565b82935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561082f57600080fd5b6001548160ff161115151561084357600080fd5b60018160ff161015151561085657600080fd5b80600260006101000a81548160ff021916908360ff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156108ae57600080fd5b60008273ffffffffffffffffffffffffffffffffffffffff16141580156109025750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b151561090d57600080fd5b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561099057600080fd5b600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600081548092919060010191905055508060ff16600260009054906101000a900460ff1660ff16141515610b2457610b23816107f5565b5b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b6257600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614158015610bb65750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515610bc157600080fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610c4457600080fd5b8173ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610cdc57600080fd5b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000600260009054906101000a900460ff169050905600a165627a7a723058207162ce7887c437c5aff253c6ee66707c5dd406c4fefdd37babe3c37d937512df0029", - "sourceMap": "240:5272:9:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;240:5272:9;;;;;;;", - "deployedSourceMap": "240:5272:9:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4841:129;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4841:129:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2776:573;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2776:573:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;287:54;;8:9:-1;5:2;;;30:1;27;20:12;5:2;287:54:9;;;;;;;;;;;;;;;;;;;;;;;;;;;5052:458;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5052:458:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;5052:458:9;;;;;;;;;;;;;;;;;4398:318;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4398:318:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;1906:528;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1906:528:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3683:526;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3683:526:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4722:113;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4722:113:9;;;;;;;;;;;;;;;;;;;;;;;;;;;4841:129;4918:4;4962:1;4945:6;:13;4952:5;4945:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;;4938:25;;4841:129;;;:::o;2776:573::-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;3000:10:9;2982:28;;2995:1;2982:10;;:14;:28;;2974:37;;;;;;;;3112:5;3091:26;;:6;:17;3098:9;3091:17;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;3083:35;;;;;;;;3148:6;:13;3155:5;3148:13;;;;;;;;;;;;;;;;;;;;;;;;;3128:6;:17;3135:9;3128:17;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;3187:1;3171:6;:13;3178:5;3171:13;;;;;;;;;;;;;;;;:17;;;;;;;;;;;;;;;;;;3198:10;;:12;;;;;;;;;;;;;;3291:10;3278:23;;:9;;;;;;;;;;;:23;;;;3274:68;;;3315:27;3331:10;3315:15;:27::i;:::-;3274:68;2776:573;;;:::o;287:54::-;337:3;287:54;:::o;5052:458::-;5118:9;5143:22;5237:13;5264:20;5182:10;;5168:25;;;;;;;;;;;;;;;;;;;;;;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;5168:25:9;;;;5143:50;;5253:1;5237:17;;5287:6;:23;337:3;5287:23;;;;;;;;;;;;;;;;;;;;;;;;;5264:46;;5320:162;337:3;5326:31;;:12;:31;;;;5320:162;;;5388:12;5373:5;5379;5373:12;;;;;;;;;;;;;;;;;:27;;;;;;;;;;;5429:6;:20;5436:12;5429:20;;;;;;;;;;;;;;;;;;;;;;;;;5414:35;;5463:8;;;;;;;5320:162;;;5498:5;5491:12;;5052:458;;;;:::o;4398:318::-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;4580:10:9;;4566;:24;;;;4558:33;;;;;;;;4675:1;4661:10;:15;;;;4653:24;;;;;;;;4699:10;4687:9;;:22;;;;;;;;;;;;;;;;;;4398:318;:::o;1906:528::-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;2076:1:9;2067:5;:10;;;;:38;;;;;337:3;2081:24;;:5;:24;;;;2067:38;2059:47;;;;;;;;2181:1;2164:6;:13;2171:5;2164:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;2156:27;;;;;;;;2209:6;:23;337:3;2209:23;;;;;;;;;;;;;;;;;;;;;;;;;2193:6;:13;2200:5;2193:13;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;2268:5;2242:6;:23;337:3;2242:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;2283:10;;:12;;;;;;;;;;;;;2376:10;2363:23;;:9;;;;;;;;;;;:23;;;;2359:68;;;2400:27;2416:10;2400:15;:27::i;:::-;2359:68;1906:528;;:::o;3683:526::-;244:4:13;222:27;;:10;:27;;;214:36;;;;;;;;3866:1:9;3854:8;:13;;;;:44;;;;;337:3;3871:27;;:8;:27;;;;3854:44;3846:53;;;;;;;;3977:1;3957:6;:16;3964:8;3957:16;;;;;;;;;;;;;;;;;;;;;;;;;:21;;;3949:30;;;;;;;;4080:8;4059:29;;:6;:17;4066:9;4059:17;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;4051:38;;;;;;;;4118:6;:16;4125:8;4118:16;;;;;;;;;;;;;;;;;;;;;;;;;4099:6;:16;4106:8;4099:16;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;4164:8;4144:6;:17;4151:9;4144:17;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;4201:1;4182:6;:16;4189:8;4182:16;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;3683:526;;;:::o;4722:113::-;4791:5;4819:9;;;;;;;;;;;4812:16;;4722:113;:::o", - "source": "pragma solidity 0.4.24;\nimport \"./SelfAuthorized.sol\";\n\n/// @title OwnerManager - Manages a set of owners and a threshold to perform actions.\n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract OwnerManager is SelfAuthorized {\n\n address public constant SENTINEL_OWNERS = address(0x1);\n\n mapping(address => address) internal owners;\n uint256 ownerCount;\n uint8 internal threshold;\n\n /// @dev Setup function sets initial storage of contract.\n /// @param _owners List of Safe owners.\n /// @param _threshold Number of required confirmations for a Safe transaction.\n function setupOwners(address[] _owners, uint8 _threshold)\n internal\n {\n // Threshold can only be 0 at initialization.\n // Check ensures that setup function can only be called once.\n require(threshold == 0);\n // Validate that threshold is smaller than number of added owners.\n require(_threshold <= _owners.length);\n // There has to be at least one Safe owner.\n require(_threshold >= 1);\n // Initializing Safe owners.\n address currentOwner = SENTINEL_OWNERS;\n for (uint256 i = 0; i < _owners.length; i++) {\n // Owner address cannot be null.\n address owner = _owners[i];\n require(owner != 0 && owner != SENTINEL_OWNERS);\n // No duplicate owners allowed.\n require(owners[owner] == 0);\n owners[currentOwner] = owner;\n currentOwner = owner;\n }\n owners[currentOwner] = SENTINEL_OWNERS;\n ownerCount = _owners.length;\n threshold = _threshold;\n }\n\n /// @dev Allows to add a new owner to the Safe and update the threshold at the same time.\n /// This can only be done via a Safe transaction.\n /// @param owner New owner address.\n /// @param _threshold New threshold.\n function addOwnerWithThreshold(address owner, uint8 _threshold)\n public\n authorized\n {\n // Owner address cannot be null.\n require(owner != 0 && owner != SENTINEL_OWNERS);\n // No duplicate owners allowed.\n require(owners[owner] == 0);\n owners[owner] = owners[SENTINEL_OWNERS];\n owners[SENTINEL_OWNERS] = owner;\n ownerCount++;\n // Change threshold if threshold was changed.\n if (threshold != _threshold)\n changeThreshold(_threshold);\n }\n\n /// @dev Allows to remove an owner from the Safe and update the threshold at the same time.\n /// This can only be done via a Safe transaction.\n /// @param prevOwner Owner that pointed to the owner to be removed in the linked list\n /// @param owner Owner address to be removed.\n /// @param _threshold New threshold.\n function removeOwner(address prevOwner, address owner, uint8 _threshold)\n public\n authorized\n {\n // Only allow to remove an owner, if threshold can still be reached.\n require(ownerCount - 1 >= _threshold);\n // Validate owner address corresponds to owner index.\n require(owners[prevOwner] == owner);\n owners[prevOwner] = owners[owner];\n owners[owner] = 0;\n ownerCount--;\n // Change threshold if threshold was changed.\n if (threshold != _threshold)\n changeThreshold(_threshold);\n }\n\n /// @dev Allows to swap/replace an owner from the Safe with another address.\n /// This can only be done via a Safe transaction.\n /// @param prevOwner Owner that pointed to the owner to be replaced in the linked list\n /// @param oldOwner Owner address to be replaced.\n /// @param newOwner New owner address.\n function swapOwner(address prevOwner, address oldOwner, address newOwner)\n public\n authorized\n {\n // Owner address cannot be null.\n require(newOwner != 0 && newOwner != SENTINEL_OWNERS);\n // No duplicate owners allowed.\n require(owners[newOwner] == 0);\n // Validate owner address corresponds to owner index.\n require(owners[prevOwner] == oldOwner);\n owners[newOwner] = owners[oldOwner];\n owners[prevOwner] = newOwner;\n owners[oldOwner] = 0;\n }\n\n /// @dev Allows to update the number of required confirmations by Safe owners.\n /// This can only be done via a Safe transaction.\n /// @param _threshold New threshold.\n function changeThreshold(uint8 _threshold)\n public\n authorized\n {\n // Validate that threshold is smaller than number of owners.\n require(_threshold <= ownerCount);\n // There has to be at least one Safe owner.\n require(_threshold >= 1);\n threshold = _threshold;\n }\n\n function getThreshold()\n public\n view\n returns (uint8)\n {\n return threshold;\n }\n\n function isOwner(address owner)\n public\n view\n returns (bool)\n {\n return owners[owner] != 0;\n }\n\n /// @dev Returns array of owners.\n /// @return Array of Safe owners.\n function getOwners()\n public\n view\n returns (address[])\n {\n address[] memory array = new address[](ownerCount);\n\n // populate return array\n uint256 index = 0;\n address currentOwner = owners[SENTINEL_OWNERS];\n while(currentOwner != SENTINEL_OWNERS) {\n array[index] = currentOwner;\n currentOwner = owners[currentOwner];\n index ++;\n }\n return array;\n }\n}\n", + "bytecode": "0x608060405234801561001057600080fd5b506115a5806100206000396000f30060806040526004361061008e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632f54bf6e1461009357806386040aa9146100ee5780638cff63551461015e578063a0e67e2b146101b5578063b7f3358d14610221578063b91a667f14610251578063e318b52b146102a1578063e75235b814610324575b600080fd5b34801561009f57600080fd5b506100d4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610355565b604051808215151515815260200191505060405180910390f35b3480156100fa57600080fd5b5061015c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506103d6565b005b34801561016a57600080fd5b50610173610804565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101c157600080fd5b506101ca610809565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561020d5780820151818401526020810190506101f2565b505050509050019250505060405180910390f35b34801561022d57600080fd5b5061024f600480360381019080803560ff1690602001909291905050506109a2565b005b34801561025d57600080fd5b5061029f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050610bce565b005b3480156102ad57600080fd5b50610322600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610fe3565b005b34801561033057600080fd5b50610339611562565b604051808260ff1660ff16815260200191505060405180910390f35b6000806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561049f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b8060ff16600180540310151515610544576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001807f4e6577206f776e657220636f756e74206e6565647320746f206265206c61726781526020017f6572207468616e206e6577207468726573686f6c64000000000000000000000081525060400191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561066b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f496e76616c696420707265764f776e65722c206f776e6572207061697220707281526020017f6f7669646564000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160008154809291906001900391905055508060ff16600260009054906101000a900460ff1660ff161415156107ff576107fe816109a2565b5b505050565b600181565b6060806000806001546040519080825280602002602001820160405280156108405781602001602082028038833980820191505090505b50925060009150600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515610999578083838151811015156108ef57fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081806001019250506108aa565b82935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610a6b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b6001548160ff1611151515610b0e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f5468726573686f6c642063616e6e6f7420657863656564206f776e657220636f81526020017f756e74000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60018160ff1610151515610bb0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f5468726573686f6c64206e6565647320746f206265206772656174657220746881526020017f616e20300000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b80600260006101000a81548160ff021916908360ff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610c97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614158015610ceb5750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1515610d5f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610e4b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4164647265737320697320616c726561647920616e206f776e6572000000000081525060200191505060405180910390fd5b600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600081548092919060010191905055508060ff16600260009054906101000a900460ff1660ff16141515610fdf57610fde816109a2565b5b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156110ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156111005750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515611174576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611260576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4164647265737320697320616c726561647920616e206f776e6572000000000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611387576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f496e76616c696420707265764f776e65722c206f776e6572207061697220707281526020017f6f7669646564000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000600260009054906101000a900460ff169050905600a165627a7a72305820145a82b2318755012cb2cf26f6d98b07c1169f4a27a0c876ef51e47ddf3a5b3b0029", + "deployedBytecode": "0x60806040526004361061008e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632f54bf6e1461009357806386040aa9146100ee5780638cff63551461015e578063a0e67e2b146101b5578063b7f3358d14610221578063b91a667f14610251578063e318b52b146102a1578063e75235b814610324575b600080fd5b34801561009f57600080fd5b506100d4600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610355565b604051808215151515815260200191505060405180910390f35b3480156100fa57600080fd5b5061015c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff1690602001909291905050506103d6565b005b34801561016a57600080fd5b50610173610804565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101c157600080fd5b506101ca610809565b6040518080602001828103825283818151815260200191508051906020019060200280838360005b8381101561020d5780820151818401526020810190506101f2565b505050509050019250505060405180910390f35b34801561022d57600080fd5b5061024f600480360381019080803560ff1690602001909291905050506109a2565b005b34801561025d57600080fd5b5061029f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803560ff169060200190929190505050610bce565b005b3480156102ad57600080fd5b50610322600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610fe3565b005b34801561033057600080fd5b50610339611562565b604051808260ff1660ff16815260200191505060405180910390f35b6000806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614159050919050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561049f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b8060ff16600180540310151515610544576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260358152602001807f4e6577206f776e657220636f756e74206e6565647320746f206265206c61726781526020017f6572207468616e206e6577207468726573686f6c64000000000000000000000081525060400191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561066b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f496e76616c696420707265764f776e65722c206f776e6572207061697220707281526020017f6f7669646564000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160008154809291906001900391905055508060ff16600260009054906101000a900460ff1660ff161415156107ff576107fe816109a2565b5b505050565b600181565b6060806000806001546040519080825280602002602001820160405280156108405781602001602082028038833980820191505090505b50925060009150600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505b600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141515610999578083838151811015156108ef57fe5b9060200190602002019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081806001019250506108aa565b82935050505090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610a6b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b6001548160ff1611151515610b0e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001807f5468726573686f6c642063616e6e6f7420657863656564206f776e657220636f81526020017f756e74000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60018160ff1610151515610bb0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f5468726573686f6c64206e6565647320746f206265206772656174657220746881526020017f616e20300000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b80600260006101000a81548160ff021916908360ff16021790555050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610c97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1614158015610ceb5750600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1515610d5f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610e4b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4164647265737320697320616c726561647920616e206f776e6572000000000081525060200191505060405180910390fd5b600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555081600080600173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600081548092919060010191905055508060ff16600260009054906101000a900460ff1660ff16141515610fdf57610fde816109a2565b5b5050565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156110ac576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207481526020017f68697320636f6e7472616374000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff16141580156111005750600173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b1515611174576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f496e76616c6964206f776e657220616464726573732070726f7669646564000081525060200191505060405180910390fd5b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611260576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4164647265737320697320616c726561647920616e206f776e6572000000000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff166000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611387576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f496e76616c696420707265764f776e65722c206f776e6572207061697220707281526020017f6f7669646564000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550806000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000600260009054906101000a900460ff169050905600a165627a7a72305820145a82b2318755012cb2cf26f6d98b07c1169f4a27a0c876ef51e47ddf3a5b3b0029", + "sourceMap": "240:5805:9:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;240:5805:9;;;;;;;", + "deployedSourceMap": "240:5805:9:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5374:129;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5374:129:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3024:672;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3024:672:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;287:54;;8:9:-1;5:2;;;30:1;27;20:12;5:2;287:54:9;;;;;;;;;;;;;;;;;;;;;;;;;;;5585:458;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5585:458:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;5585:458:9;;;;;;;;;;;;;;;;;4852:397;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4852:397:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;2089:593;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2089:593:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4030:633;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4030:633:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5255:113;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5255:113:9;;;;;;;;;;;;;;;;;;;;;;;;;;;5374:129;5451:4;5495:1;5478:6;:13;5485:5;5478:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;;5471:25;;5374:129;;;:::o;3024:672::-;244:4:13;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3248:10:9;3230:28;;3243:1;3230:10;;:14;:28;;3222:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3417:5;3396:26;;:6;:17;3403:9;3396:17;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;3388:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3495:6;:13;3502:5;3495:13;;;;;;;;;;;;;;;;;;;;;;;;;3475:6;:17;3482:9;3475:17;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;3534:1;3518:6;:13;3525:5;3518:13;;;;;;;;;;;;;;;;:17;;;;;;;;;;;;;;;;;;3545:10;;:12;;;;;;;;;;;;;;3638:10;3625:23;;:9;;;;;;;;;;;:23;;;;3621:68;;;3662:27;3678:10;3662:15;:27::i;:::-;3621:68;3024:672;;;:::o;287:54::-;337:3;287:54;:::o;5585:458::-;5651:9;5676:22;5770:13;5797:20;5715:10;;5701:25;;;;;;;;;;;;;;;;;;;;;;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;5701:25:9;;;;5676:50;;5786:1;5770:17;;5820:6;:23;337:3;5820:23;;;;;;;;;;;;;;;;;;;;;;;;;5797:46;;5853:162;337:3;5859:31;;:12;:31;;;;5853:162;;;5921:12;5906:5;5912;5906:12;;;;;;;;;;;;;;;;;:27;;;;;;;;;;;5962:6;:20;5969:12;5962:20;;;;;;;;;;;;;;;;;;;;;;;;;5947:35;;5996:8;;;;;;;5853:162;;;6031:5;6024:12;;5585:458;;;;:::o;4852:397::-;244:4:13;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5034:10:9;;5020;:24;;;;5012:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5168:1;5154:10;:15;;;;5146:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5232:10;5220:9;;:22;;;;;;;;;;;;;;;;;;4852:397;:::o;2089:593::-;244:4:13;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2259:1:9;2250:5;:10;;;;:38;;;;;337:3;2264:24;;:5;:24;;;;2250:38;2242:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2398:1;2381:6;:13;2388:5;2381:13;;;;;;;;;;;;;;;;;;;;;;;;;:18;;;2373:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2457:6;:23;337:3;2457:23;;;;;;;;;;;;;;;;;;;;;;;;;2441:6;:13;2448:5;2441:13;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;2516:5;2490:6;:23;337:3;2490:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;2531:10;;:12;;;;;;;;;;;;;2624:10;2611:23;;:9;;;;;;;;;;;:23;;;;2607:68;;;2648:27;2664:10;2648:15;:27::i;:::-;2607:68;2089:593;;:::o;4030:633::-;244:4:13;222:27;;:10;:27;;;214:84;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4213:1:9;4201:8;:13;;;;:44;;;;;337:3;4218:27;;:8;:27;;;;4201:44;4193:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4358:1;4338:6;:16;4345:8;4338:16;;;;;;;;;;;;;;;;;;;;;;;;;:21;;;4330:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4492:8;4471:29;;:6;:17;4478:9;4471:17;;;;;;;;;;;;;;;;;;;;;;;;;:29;;;4463:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4572:6;:16;4579:8;4572:16;;;;;;;;;;;;;;;;;;;;;;;;;4553:6;:16;4560:8;4553:16;;;;;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;4618:8;4598:6;:17;4605:9;4598:17;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;4655:1;4636:6;:16;4643:8;4636:16;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;4030:633;;;:::o;5255:113::-;5324:5;5352:9;;;;;;;;;;;5345:16;;5255:113;:::o", + "source": "pragma solidity 0.4.24;\nimport \"./SelfAuthorized.sol\";\n\n/// @title OwnerManager - Manages a set of owners and a threshold to perform actions.\n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract OwnerManager is SelfAuthorized {\n\n address public constant SENTINEL_OWNERS = address(0x1);\n\n mapping(address => address) internal owners;\n uint256 ownerCount;\n uint8 internal threshold;\n\n /// @dev Setup function sets initial storage of contract.\n /// @param _owners List of Safe owners.\n /// @param _threshold Number of required confirmations for a Safe transaction.\n function setupOwners(address[] _owners, uint8 _threshold)\n internal\n {\n // Threshold can only be 0 at initialization.\n // Check ensures that setup function can only be called once.\n require(threshold == 0, \"Owners have already been setup\");\n // Validate that threshold is smaller than number of added owners.\n require(_threshold <= _owners.length, \"Threshold cannot exceed owner count\");\n // There has to be at least one Safe owner.\n require(_threshold >= 1, \"Threshold needs to be greater than 0\");\n // Initializing Safe owners.\n address currentOwner = SENTINEL_OWNERS;\n for (uint256 i = 0; i < _owners.length; i++) {\n // Owner address cannot be null.\n address owner = _owners[i];\n require(owner != 0 && owner != SENTINEL_OWNERS, \"Invalid owner address provided\");\n // No duplicate owners allowed.\n require(owners[owner] == 0, \"Duplicate owner address provided\");\n owners[currentOwner] = owner;\n currentOwner = owner;\n }\n owners[currentOwner] = SENTINEL_OWNERS;\n ownerCount = _owners.length;\n threshold = _threshold;\n }\n\n /// @dev Allows to add a new owner to the Safe and update the threshold at the same time.\n /// This can only be done via a Safe transaction.\n /// @param owner New owner address.\n /// @param _threshold New threshold.\n function addOwnerWithThreshold(address owner, uint8 _threshold)\n public\n authorized\n {\n // Owner address cannot be null.\n require(owner != 0 && owner != SENTINEL_OWNERS, \"Invalid owner address provided\");\n // No duplicate owners allowed.\n require(owners[owner] == 0, \"Address is already an owner\");\n owners[owner] = owners[SENTINEL_OWNERS];\n owners[SENTINEL_OWNERS] = owner;\n ownerCount++;\n // Change threshold if threshold was changed.\n if (threshold != _threshold)\n changeThreshold(_threshold);\n }\n\n /// @dev Allows to remove an owner from the Safe and update the threshold at the same time.\n /// This can only be done via a Safe transaction.\n /// @param prevOwner Owner that pointed to the owner to be removed in the linked list\n /// @param owner Owner address to be removed.\n /// @param _threshold New threshold.\n function removeOwner(address prevOwner, address owner, uint8 _threshold)\n public\n authorized\n {\n // Only allow to remove an owner, if threshold can still be reached.\n require(ownerCount - 1 >= _threshold, \"New owner count needs to be larger than new threshold\");\n // Validate owner address corresponds to owner index.\n require(owners[prevOwner] == owner, \"Invalid prevOwner, owner pair provided\");\n owners[prevOwner] = owners[owner];\n owners[owner] = 0;\n ownerCount--;\n // Change threshold if threshold was changed.\n if (threshold != _threshold)\n changeThreshold(_threshold);\n }\n\n /// @dev Allows to swap/replace an owner from the Safe with another address.\n /// This can only be done via a Safe transaction.\n /// @param prevOwner Owner that pointed to the owner to be replaced in the linked list\n /// @param oldOwner Owner address to be replaced.\n /// @param newOwner New owner address.\n function swapOwner(address prevOwner, address oldOwner, address newOwner)\n public\n authorized\n {\n // Owner address cannot be null.\n require(newOwner != 0 && newOwner != SENTINEL_OWNERS, \"Invalid owner address provided\");\n // No duplicate owners allowed.\n require(owners[newOwner] == 0, \"Address is already an owner\");\n // Validate owner address corresponds to owner index.\n require(owners[prevOwner] == oldOwner, \"Invalid prevOwner, owner pair provided\");\n owners[newOwner] = owners[oldOwner];\n owners[prevOwner] = newOwner;\n owners[oldOwner] = 0;\n }\n\n /// @dev Allows to update the number of required confirmations by Safe owners.\n /// This can only be done via a Safe transaction.\n /// @param _threshold New threshold.\n function changeThreshold(uint8 _threshold)\n public\n authorized\n {\n // Validate that threshold is smaller than number of owners.\n require(_threshold <= ownerCount, \"Threshold cannot exceed owner count\");\n // There has to be at least one Safe owner.\n require(_threshold >= 1, \"Threshold needs to be greater than 0\");\n threshold = _threshold;\n }\n\n function getThreshold()\n public\n view\n returns (uint8)\n {\n return threshold;\n }\n\n function isOwner(address owner)\n public\n view\n returns (bool)\n {\n return owners[owner] != 0;\n }\n\n /// @dev Returns array of owners.\n /// @return Array of Safe owners.\n function getOwners()\n public\n view\n returns (address[])\n {\n address[] memory array = new address[](ownerCount);\n\n // populate return array\n uint256 index = 0;\n address currentOwner = owners[SENTINEL_OWNERS];\n while(currentOwner != SENTINEL_OWNERS) {\n array[index] = currentOwner;\n currentOwner = owners[currentOwner];\n index ++;\n }\n return array;\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", "exportedSymbols": { "OwnerManager": [ - 1472 + 1504 ] }, - "id": 1473, + "id": 1505, "nodeType": "SourceUnit", "nodes": [ { - "id": 1102, + "id": 1120, "literals": [ "solidity", "0.4", @@ -168,10 +168,10 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/SelfAuthorized.sol", "file": "./SelfAuthorized.sol", - "id": 1103, + "id": 1121, "nodeType": "ImportDirective", - "scope": 1473, - "sourceUnit": 1620, + "scope": 1505, + "sourceUnit": 1655, "src": "24:30:9", "symbolAliases": [], "unitAlias": "" @@ -182,41 +182,41 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 1104, + "id": 1122, "name": "SelfAuthorized", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1619, + "referencedDeclaration": 1654, "src": "265:14:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_SelfAuthorized_$1619", + "typeIdentifier": "t_contract$_SelfAuthorized_$1654", "typeString": "contract SelfAuthorized" } }, - "id": 1105, + "id": 1123, "nodeType": "InheritanceSpecifier", "src": "265:14:9" } ], "contractDependencies": [ - 1619 + 1654 ], "contractKind": "contract", "documentation": "@title OwnerManager - Manages a set of owners and a threshold to perform actions.\n @author Stefan George - \n @author Richard Meissner - ", "fullyImplemented": true, - "id": 1472, + "id": 1504, "linearizedBaseContracts": [ - 1472, - 1619 + 1504, + 1654 ], "name": "OwnerManager", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, - "id": 1110, + "id": 1128, "name": "SENTINEL_OWNERS", "nodeType": "VariableDeclaration", - "scope": 1472, + "scope": 1504, "src": "287:54:9", "stateVariable": true, "storageLocation": "default", @@ -225,7 +225,7 @@ "typeString": "address" }, "typeName": { - "id": 1106, + "id": 1124, "name": "address", "nodeType": "ElementaryTypeName", "src": "287:7:9", @@ -240,7 +240,7 @@ { "argumentTypes": null, "hexValue": "307831", - "id": 1108, + "id": 1126, "isConstant": false, "isLValue": false, "isPure": true, @@ -263,7 +263,7 @@ "typeString": "int_const 1" } ], - "id": 1107, + "id": 1125, "isConstant": false, "isLValue": false, "isPure": true, @@ -276,7 +276,7 @@ }, "typeName": "address" }, - "id": 1109, + "id": 1127, "isConstant": false, "isLValue": false, "isPure": true, @@ -294,10 +294,10 @@ }, { "constant": false, - "id": 1114, + "id": 1132, "name": "owners", "nodeType": "VariableDeclaration", - "scope": 1472, + "scope": 1504, "src": "348:43:9", "stateVariable": true, "storageLocation": "default", @@ -306,9 +306,9 @@ "typeString": "mapping(address => address)" }, "typeName": { - "id": 1113, + "id": 1131, "keyType": { - "id": 1111, + "id": 1129, "name": "address", "nodeType": "ElementaryTypeName", "src": "356:7:9", @@ -324,7 +324,7 @@ "typeString": "mapping(address => address)" }, "valueType": { - "id": 1112, + "id": 1130, "name": "address", "nodeType": "ElementaryTypeName", "src": "367:7:9", @@ -339,10 +339,10 @@ }, { "constant": false, - "id": 1116, + "id": 1134, "name": "ownerCount", "nodeType": "VariableDeclaration", - "scope": 1472, + "scope": 1504, "src": "397:18:9", "stateVariable": true, "storageLocation": "default", @@ -351,7 +351,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1115, + "id": 1133, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "397:7:9", @@ -365,10 +365,10 @@ }, { "constant": false, - "id": 1118, + "id": 1136, "name": "threshold", "nodeType": "VariableDeclaration", - "scope": 1472, + "scope": 1504, "src": "421:24:9", "stateVariable": true, "storageLocation": "default", @@ -377,7 +377,7 @@ "typeString": "uint8" }, "typeName": { - "id": 1117, + "id": 1135, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "421:5:9", @@ -391,9 +391,9 @@ }, { "body": { - "id": 1211, + "id": 1234, "nodeType": "Block", - "src": "720:946:9", + "src": "720:1129:9", "statements": [ { "expression": { @@ -405,18 +405,18 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 1129, + "id": 1147, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1127, + "id": 1145, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1118, + "referencedDeclaration": 1136, "src": "862:9:9", "typeDescriptions": { "typeIdentifier": "t_uint8", @@ -428,7 +428,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1128, + "id": 1146, "isConstant": false, "isLValue": false, "isPure": true, @@ -448,6 +448,24 @@ "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "4f776e657273206861766520616c7265616479206265656e207365747570", + "id": 1148, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "878:32:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_9a45ae898fbe2bd07a0b33b5a6c421f76198e9deb66843b8d827b0b9e4a16f86", + "typeString": "literal_string \"Owners have already been setup\"" + }, + "value": "Owners have already been setup" } ], "expression": { @@ -455,23 +473,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_9a45ae898fbe2bd07a0b33b5a6c421f76198e9deb66843b8d827b0b9e4a16f86", + "typeString": "literal_string \"Owners have already been setup\"" } ], - "id": 1126, + "id": 1144, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, + "referencedDeclaration": 2658, "src": "854:7:9", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1130, + "id": 1149, "isConstant": false, "isLValue": false, "isPure": false, @@ -479,15 +501,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "854:23:9", + "src": "854:57:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1131, + "id": 1150, "nodeType": "ExpressionStatement", - "src": "854:23:9" + "src": "854:57:9" }, { "expression": { @@ -499,19 +521,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1136, + "id": 1155, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1133, + "id": 1152, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1123, - "src": "970:10:9", + "referencedDeclaration": 1141, + "src": "1004:10:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -523,18 +545,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1134, + "id": 1153, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1121, - "src": "984:7:9", + "referencedDeclaration": 1139, + "src": "1018:7:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1135, + "id": 1154, "isConstant": false, "isLValue": false, "isPure": false, @@ -542,17 +564,35 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "984:14:9", + "src": "1018:14:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "970:28:9", + "src": "1004:28:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "5468726573686f6c642063616e6e6f7420657863656564206f776e657220636f756e74", + "id": 1156, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1034:37:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_63d26a9feb8568677e5c255c04e4da88e86a25137d5152a9a089790b7e710e86", + "typeString": "literal_string \"Threshold cannot exceed owner count\"" + }, + "value": "Threshold cannot exceed owner count" } ], "expression": { @@ -560,23 +600,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_63d26a9feb8568677e5c255c04e4da88e86a25137d5152a9a089790b7e710e86", + "typeString": "literal_string \"Threshold cannot exceed owner count\"" } ], - "id": 1132, + "id": 1151, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "962:7:9", + "referencedDeclaration": 2658, + "src": "996:7:9", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1137, + "id": 1157, "isConstant": false, "isLValue": false, "isPure": false, @@ -584,15 +628,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "962:37:9", + "src": "996:76:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1138, + "id": 1158, "nodeType": "ExpressionStatement", - "src": "962:37:9" + "src": "996:76:9" }, { "expression": { @@ -604,19 +648,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 1142, + "id": 1162, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1140, + "id": 1160, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1123, - "src": "1069:10:9", + "referencedDeclaration": 1141, + "src": "1142:10:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -627,14 +671,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31", - "id": 1141, + "id": 1161, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1083:1:9", + "src": "1156:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -642,11 +686,29 @@ }, "value": "1" }, - "src": "1069:15:9", + "src": "1142:15:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "5468726573686f6c64206e6565647320746f2062652067726561746572207468616e2030", + "id": 1163, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1159:38:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_b995394ed6031392a784e6dd5e04285cca83077a8dc3873d2fb7fcb090297ab4", + "typeString": "literal_string \"Threshold needs to be greater than 0\"" + }, + "value": "Threshold needs to be greater than 0" } ], "expression": { @@ -654,23 +716,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_b995394ed6031392a784e6dd5e04285cca83077a8dc3873d2fb7fcb090297ab4", + "typeString": "literal_string \"Threshold needs to be greater than 0\"" } ], - "id": 1139, + "id": 1159, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "1061:7:9", + "referencedDeclaration": 2658, + "src": "1134:7:9", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1143, + "id": 1164, "isConstant": false, "isLValue": false, "isPure": false, @@ -678,28 +744,28 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1061:24:9", + "src": "1134:64:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1144, + "id": 1165, "nodeType": "ExpressionStatement", - "src": "1061:24:9" + "src": "1134:64:9" }, { "assignments": [ - 1146 + 1167 ], "declarations": [ { "constant": false, - "id": 1146, + "id": 1167, "name": "currentOwner", "nodeType": "VariableDeclaration", - "scope": 1212, - "src": "1132:20:9", + "scope": 1235, + "src": "1245:20:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -707,10 +773,10 @@ "typeString": "address" }, "typeName": { - "id": 1145, + "id": 1166, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1132:7:9", + "src": "1245:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -720,41 +786,41 @@ "visibility": "internal" } ], - "id": 1148, + "id": 1169, "initialValue": { "argumentTypes": null, - "id": 1147, + "id": 1168, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1110, - "src": "1155:15:9", + "referencedDeclaration": 1128, + "src": "1268:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "1132:38:9" + "src": "1245:38:9" }, { "body": { - "id": 1194, + "id": 1217, "nodeType": "Block", - "src": "1225:318:9", + "src": "1338:388:9", "statements": [ { "assignments": [ - 1161 + 1182 ], "declarations": [ { "constant": false, - "id": 1161, + "id": 1182, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 1212, - "src": "1284:13:9", + "scope": 1235, + "src": "1397:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -762,10 +828,10 @@ "typeString": "address" }, "typeName": { - "id": 1160, + "id": 1181, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1284:7:9", + "src": "1397:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -775,31 +841,31 @@ "visibility": "internal" } ], - "id": 1165, + "id": 1186, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1162, + "id": 1183, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1121, - "src": "1300:7:9", + "referencedDeclaration": 1139, + "src": "1413:7:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1164, + "id": 1185, "indexExpression": { "argumentTypes": null, - "id": 1163, + "id": 1184, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1150, - "src": "1308:1:9", + "referencedDeclaration": 1171, + "src": "1421:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -810,14 +876,14 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1300:10:9", + "src": "1413:10:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "1284:26:9" + "src": "1397:26:9" }, { "expression": { @@ -829,7 +895,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 1173, + "id": 1194, "isConstant": false, "isLValue": false, "isPure": false, @@ -840,19 +906,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1169, + "id": 1190, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1167, + "id": 1188, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1161, - "src": "1332:5:9", + "referencedDeclaration": 1182, + "src": "1445:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -863,14 +929,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1168, + "id": 1189, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1341:1:9", + "src": "1454:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -878,7 +944,7 @@ }, "value": "0" }, - "src": "1332:10:9", + "src": "1445:10:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -892,19 +958,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1172, + "id": 1193, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1170, + "id": 1191, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1161, - "src": "1346:5:9", + "referencedDeclaration": 1182, + "src": "1459:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -914,28 +980,46 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 1171, + "id": 1192, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1110, - "src": "1355:15:9", + "referencedDeclaration": 1128, + "src": "1468:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1346:24:9", + "src": "1459:24:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "1332:38:9", + "src": "1445:38:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "496e76616c6964206f776e657220616464726573732070726f7669646564", + "id": 1195, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1485:32:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_21a1cd38818adb750881fbf07c26ce7223dde608fdd9dadd31a0d41afeca2094", + "typeString": "literal_string \"Invalid owner address provided\"" + }, + "value": "Invalid owner address provided" } ], "expression": { @@ -943,23 +1027,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_21a1cd38818adb750881fbf07c26ce7223dde608fdd9dadd31a0d41afeca2094", + "typeString": "literal_string \"Invalid owner address provided\"" } ], - "id": 1166, + "id": 1187, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "1324:7:9", + "referencedDeclaration": 2658, + "src": "1437:7:9", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1174, + "id": 1196, "isConstant": false, "isLValue": false, "isPure": false, @@ -967,15 +1055,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1324:47:9", + "src": "1437:81:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1175, + "id": 1197, "nodeType": "ExpressionStatement", - "src": "1324:47:9" + "src": "1437:81:9" }, { "expression": { @@ -987,7 +1075,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1181, + "id": 1203, "isConstant": false, "isLValue": false, "isPure": false, @@ -996,26 +1084,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1177, + "id": 1199, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "1437:6:9", + "referencedDeclaration": 1132, + "src": "1584:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1179, + "id": 1201, "indexExpression": { "argumentTypes": null, - "id": 1178, + "id": 1200, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1161, - "src": "1444:5:9", + "referencedDeclaration": 1182, + "src": "1591:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1026,7 +1114,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1437:13:9", + "src": "1584:13:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1037,14 +1125,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1180, + "id": 1202, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1454:1:9", + "src": "1601:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1052,11 +1140,29 @@ }, "value": "0" }, - "src": "1437:18:9", + "src": "1584:18:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "4475706c6963617465206f776e657220616464726573732070726f7669646564", + "id": 1204, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1604:34:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_a803fa289679098e38a7f1f6fe43056918c5ab5af07441cb8db77b949c165ca1", + "typeString": "literal_string \"Duplicate owner address provided\"" + }, + "value": "Duplicate owner address provided" } ], "expression": { @@ -1064,23 +1170,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_a803fa289679098e38a7f1f6fe43056918c5ab5af07441cb8db77b949c165ca1", + "typeString": "literal_string \"Duplicate owner address provided\"" } ], - "id": 1176, + "id": 1198, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "1429:7:9", + "referencedDeclaration": 2658, + "src": "1576:7:9", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1182, + "id": 1205, "isConstant": false, "isLValue": false, "isPure": false, @@ -1088,20 +1198,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1429:27:9", + "src": "1576:63:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1183, + "id": 1206, "nodeType": "ExpressionStatement", - "src": "1429:27:9" + "src": "1576:63:9" }, { "expression": { "argumentTypes": null, - "id": 1188, + "id": 1211, "isConstant": false, "isLValue": false, "isPure": false, @@ -1110,26 +1220,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1184, + "id": 1207, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "1470:6:9", + "referencedDeclaration": 1132, + "src": "1653:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1186, + "id": 1209, "indexExpression": { "argumentTypes": null, - "id": 1185, + "id": 1208, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1146, - "src": "1477:12:9", + "referencedDeclaration": 1167, + "src": "1660:12:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1140,7 +1250,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1470:20:9", + "src": "1653:20:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1150,43 +1260,43 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1187, + "id": 1210, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1161, - "src": "1493:5:9", + "referencedDeclaration": 1182, + "src": "1676:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1470:28:9", + "src": "1653:28:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1189, + "id": 1212, "nodeType": "ExpressionStatement", - "src": "1470:28:9" + "src": "1653:28:9" }, { "expression": { "argumentTypes": null, - "id": 1192, + "id": 1215, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1190, + "id": 1213, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1146, - "src": "1512:12:9", + "referencedDeclaration": 1167, + "src": "1695:12:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1196,26 +1306,26 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1191, + "id": 1214, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1161, - "src": "1527:5:9", + "referencedDeclaration": 1182, + "src": "1710:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1512:20:9", + "src": "1695:20:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1193, + "id": 1216, "nodeType": "ExpressionStatement", - "src": "1512:20:9" + "src": "1695:20:9" } ] }, @@ -1225,19 +1335,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1156, + "id": 1177, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1153, + "id": 1174, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1150, - "src": "1200:1:9", + "referencedDeclaration": 1171, + "src": "1313:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1249,18 +1359,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1154, + "id": 1175, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1121, - "src": "1204:7:9", + "referencedDeclaration": 1139, + "src": "1317:7:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1155, + "id": 1176, "isConstant": false, "isLValue": false, "isPure": false, @@ -1268,31 +1378,31 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1204:14:9", + "src": "1317:14:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1200:18:9", + "src": "1313:18:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 1195, + "id": 1218, "initializationExpression": { "assignments": [ - 1150 + 1171 ], "declarations": [ { "constant": false, - "id": 1150, + "id": 1171, "name": "i", "nodeType": "VariableDeclaration", - "scope": 1212, - "src": "1185:9:9", + "scope": 1235, + "src": "1298:9:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1300,10 +1410,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1149, + "id": 1170, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1185:7:9", + "src": "1298:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1313,18 +1423,18 @@ "visibility": "internal" } ], - "id": 1152, + "id": 1173, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 1151, + "id": 1172, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1197:1:9", + "src": "1310:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1333,12 +1443,12 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "1185:13:9" + "src": "1298:13:9" }, "loopExpression": { "expression": { "argumentTypes": null, - "id": 1158, + "id": 1179, "isConstant": false, "isLValue": false, "isPure": false, @@ -1346,15 +1456,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "1220:3:9", + "src": "1333:3:9", "subExpression": { "argumentTypes": null, - "id": 1157, + "id": 1178, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1150, - "src": "1220:1:9", + "referencedDeclaration": 1171, + "src": "1333:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1365,17 +1475,17 @@ "typeString": "uint256" } }, - "id": 1159, + "id": 1180, "nodeType": "ExpressionStatement", - "src": "1220:3:9" + "src": "1333:3:9" }, "nodeType": "ForStatement", - "src": "1180:363:9" + "src": "1293:433:9" }, { "expression": { "argumentTypes": null, - "id": 1200, + "id": 1223, "isConstant": false, "isLValue": false, "isPure": false, @@ -1384,26 +1494,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1196, + "id": 1219, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "1552:6:9", + "referencedDeclaration": 1132, + "src": "1735:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1198, + "id": 1221, "indexExpression": { "argumentTypes": null, - "id": 1197, + "id": 1220, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1146, - "src": "1559:12:9", + "referencedDeclaration": 1167, + "src": "1742:12:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1414,7 +1524,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1552:20:9", + "src": "1735:20:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1424,43 +1534,43 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1199, + "id": 1222, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1110, - "src": "1575:15:9", + "referencedDeclaration": 1128, + "src": "1758:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1552:38:9", + "src": "1735:38:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1201, + "id": 1224, "nodeType": "ExpressionStatement", - "src": "1552:38:9" + "src": "1735:38:9" }, { "expression": { "argumentTypes": null, - "id": 1205, + "id": 1228, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1202, + "id": 1225, "name": "ownerCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1116, - "src": "1600:10:9", + "referencedDeclaration": 1134, + "src": "1783:10:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1472,18 +1582,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1203, + "id": 1226, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1121, - "src": "1613:7:9", + "referencedDeclaration": 1139, + "src": "1796:7:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1204, + "id": 1227, "isConstant": false, "isLValue": false, "isPure": false, @@ -1491,38 +1601,38 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1613:14:9", + "src": "1796:14:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1600:27:9", + "src": "1783:27:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1206, + "id": 1229, "nodeType": "ExpressionStatement", - "src": "1600:27:9" + "src": "1783:27:9" }, { "expression": { "argumentTypes": null, - "id": 1209, + "id": 1232, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1207, + "id": 1230, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1118, - "src": "1637:9:9", + "referencedDeclaration": 1136, + "src": "1820:9:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -1532,31 +1642,31 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1208, + "id": 1231, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1123, - "src": "1649:10:9", + "referencedDeclaration": 1141, + "src": "1832:10:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "1637:22:9", + "src": "1820:22:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "id": 1210, + "id": 1233, "nodeType": "ExpressionStatement", - "src": "1637:22:9" + "src": "1820:22:9" } ] }, "documentation": "@dev Setup function sets initial storage of contract.\n @param _owners List of Safe owners.\n @param _threshold Number of required confirmations for a Safe transaction.", - "id": 1212, + "id": 1235, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -1564,15 +1674,15 @@ "name": "setupOwners", "nodeType": "FunctionDefinition", "parameters": { - "id": 1124, + "id": 1142, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1121, + "id": 1139, "name": "_owners", "nodeType": "VariableDeclaration", - "scope": 1212, + "scope": 1235, "src": "662:17:9", "stateVariable": false, "storageLocation": "default", @@ -1582,7 +1692,7 @@ }, "typeName": { "baseType": { - "id": 1119, + "id": 1137, "name": "address", "nodeType": "ElementaryTypeName", "src": "662:7:9", @@ -1591,7 +1701,7 @@ "typeString": "address" } }, - "id": 1120, + "id": 1138, "length": null, "nodeType": "ArrayTypeName", "src": "662:9:9", @@ -1605,10 +1715,10 @@ }, { "constant": false, - "id": 1123, + "id": 1141, "name": "_threshold", "nodeType": "VariableDeclaration", - "scope": 1212, + "scope": 1235, "src": "681:16:9", "stateVariable": false, "storageLocation": "default", @@ -1617,7 +1727,7 @@ "typeString": "uint8" }, "typeName": { - "id": 1122, + "id": 1140, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "681:5:9", @@ -1634,22 +1744,22 @@ }, "payable": false, "returnParameters": { - "id": 1125, + "id": 1143, "nodeType": "ParameterList", "parameters": [], "src": "720:0:9" }, - "scope": 1472, - "src": "641:1025:9", + "scope": 1504, + "src": "641:1208:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1264, + "id": 1289, "nodeType": "Block", - "src": "2008:426:9", + "src": "2191:491:9", "statements": [ { "expression": { @@ -1661,7 +1771,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 1228, + "id": 1251, "isConstant": false, "isLValue": false, "isPure": false, @@ -1672,19 +1782,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1224, + "id": 1247, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1222, + "id": 1245, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1214, - "src": "2067:5:9", + "referencedDeclaration": 1237, + "src": "2250:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1695,14 +1805,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1223, + "id": 1246, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2076:1:9", + "src": "2259:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1710,7 +1820,7 @@ }, "value": "0" }, - "src": "2067:10:9", + "src": "2250:10:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1724,19 +1834,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1227, + "id": 1250, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1225, + "id": 1248, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1214, - "src": "2081:5:9", + "referencedDeclaration": 1237, + "src": "2264:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1746,28 +1856,46 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 1226, + "id": 1249, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1110, - "src": "2090:15:9", + "referencedDeclaration": 1128, + "src": "2273:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2081:24:9", + "src": "2264:24:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "2067:38:9", + "src": "2250:38:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "496e76616c6964206f776e657220616464726573732070726f7669646564", + "id": 1252, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2290:32:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_21a1cd38818adb750881fbf07c26ce7223dde608fdd9dadd31a0d41afeca2094", + "typeString": "literal_string \"Invalid owner address provided\"" + }, + "value": "Invalid owner address provided" } ], "expression": { @@ -1775,23 +1903,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_21a1cd38818adb750881fbf07c26ce7223dde608fdd9dadd31a0d41afeca2094", + "typeString": "literal_string \"Invalid owner address provided\"" } ], - "id": 1221, + "id": 1244, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "2059:7:9", + "referencedDeclaration": 2658, + "src": "2242:7:9", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1229, + "id": 1253, "isConstant": false, "isLValue": false, "isPure": false, @@ -1799,15 +1931,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2059:47:9", + "src": "2242:81:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1230, + "id": 1254, "nodeType": "ExpressionStatement", - "src": "2059:47:9" + "src": "2242:81:9" }, { "expression": { @@ -1819,7 +1951,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1236, + "id": 1260, "isConstant": false, "isLValue": false, "isPure": false, @@ -1828,26 +1960,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1232, + "id": 1256, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "2164:6:9", + "referencedDeclaration": 1132, + "src": "2381:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1234, + "id": 1258, "indexExpression": { "argumentTypes": null, - "id": 1233, + "id": 1257, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1214, - "src": "2171:5:9", + "referencedDeclaration": 1237, + "src": "2388:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1858,7 +1990,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2164:13:9", + "src": "2381:13:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1869,14 +2001,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1235, + "id": 1259, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2181:1:9", + "src": "2398:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1884,11 +2016,29 @@ }, "value": "0" }, - "src": "2164:18:9", + "src": "2381:18:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "4164647265737320697320616c726561647920616e206f776e6572", + "id": 1261, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2401:29:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_9d461d71e19b25cd406798d062d7e61f961ad52541d3077a543e857810427d47", + "typeString": "literal_string \"Address is already an owner\"" + }, + "value": "Address is already an owner" } ], "expression": { @@ -1896,23 +2046,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_9d461d71e19b25cd406798d062d7e61f961ad52541d3077a543e857810427d47", + "typeString": "literal_string \"Address is already an owner\"" } ], - "id": 1231, + "id": 1255, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "2156:7:9", + "referencedDeclaration": 2658, + "src": "2373:7:9", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1237, + "id": 1262, "isConstant": false, "isLValue": false, "isPure": false, @@ -1920,20 +2074,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2156:27:9", + "src": "2373:58:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1238, + "id": 1263, "nodeType": "ExpressionStatement", - "src": "2156:27:9" + "src": "2373:58:9" }, { "expression": { "argumentTypes": null, - "id": 1245, + "id": 1270, "isConstant": false, "isLValue": false, "isPure": false, @@ -1942,26 +2096,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1239, + "id": 1264, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "2193:6:9", + "referencedDeclaration": 1132, + "src": "2441:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1241, + "id": 1266, "indexExpression": { "argumentTypes": null, - "id": 1240, + "id": 1265, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1214, - "src": "2200:5:9", + "referencedDeclaration": 1237, + "src": "2448:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1972,7 +2126,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2193:13:9", + "src": "2441:13:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1984,26 +2138,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1242, + "id": 1267, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "2209:6:9", + "referencedDeclaration": 1132, + "src": "2457:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1244, + "id": 1269, "indexExpression": { "argumentTypes": null, - "id": 1243, + "id": 1268, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1110, - "src": "2216:15:9", + "referencedDeclaration": 1128, + "src": "2464:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2014,26 +2168,26 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2209:23:9", + "src": "2457:23:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2193:39:9", + "src": "2441:39:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1246, + "id": 1271, "nodeType": "ExpressionStatement", - "src": "2193:39:9" + "src": "2441:39:9" }, { "expression": { "argumentTypes": null, - "id": 1251, + "id": 1276, "isConstant": false, "isLValue": false, "isPure": false, @@ -2042,26 +2196,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1247, + "id": 1272, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "2242:6:9", + "referencedDeclaration": 1132, + "src": "2490:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1249, + "id": 1274, "indexExpression": { "argumentTypes": null, - "id": 1248, + "id": 1273, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1110, - "src": "2249:15:9", + "referencedDeclaration": 1128, + "src": "2497:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2072,7 +2226,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2242:23:9", + "src": "2490:23:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2082,31 +2236,31 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1250, + "id": 1275, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1214, - "src": "2268:5:9", + "referencedDeclaration": 1237, + "src": "2516:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2242:31:9", + "src": "2490:31:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1252, + "id": 1277, "nodeType": "ExpressionStatement", - "src": "2242:31:9" + "src": "2490:31:9" }, { "expression": { "argumentTypes": null, - "id": 1254, + "id": 1279, "isConstant": false, "isLValue": false, "isPure": false, @@ -2114,15 +2268,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "2283:12:9", + "src": "2531:12:9", "subExpression": { "argumentTypes": null, - "id": 1253, + "id": 1278, "name": "ownerCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1116, - "src": "2283:10:9", + "referencedDeclaration": 1134, + "src": "2531:10:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2133,9 +2287,9 @@ "typeString": "uint256" } }, - "id": 1255, + "id": 1280, "nodeType": "ExpressionStatement", - "src": "2283:12:9" + "src": "2531:12:9" }, { "condition": { @@ -2144,19 +2298,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 1258, + "id": 1283, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1256, + "id": 1281, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1118, - "src": "2363:9:9", + "referencedDeclaration": 1136, + "src": "2611:9:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -2166,39 +2320,39 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 1257, + "id": 1282, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1216, - "src": "2376:10:9", + "referencedDeclaration": 1239, + "src": "2624:10:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "2363:23:9", + "src": "2611:23:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 1263, + "id": 1288, "nodeType": "IfStatement", - "src": "2359:68:9", + "src": "2607:68:9", "trueBody": { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 1260, + "id": 1285, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1216, - "src": "2416:10:9", + "referencedDeclaration": 1239, + "src": "2664:10:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -2212,18 +2366,18 @@ "typeString": "uint8" } ], - "id": 1259, + "id": 1284, "name": "changeThreshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1400, - "src": "2400:15:9", + "referencedDeclaration": 1432, + "src": "2648:15:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$returns$__$", "typeString": "function (uint8)" } }, - "id": 1261, + "id": 1286, "isConstant": false, "isLValue": false, "isPure": false, @@ -2231,58 +2385,58 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2400:27:9", + "src": "2648:27:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1262, + "id": 1287, "nodeType": "ExpressionStatement", - "src": "2400:27:9" + "src": "2648:27:9" } } ] }, "documentation": "@dev Allows to add a new owner to the Safe and update the threshold at the same time.\n This can only be done via a Safe transaction.\n @param owner New owner address.\n @param _threshold New threshold.", - "id": 1265, + "id": 1290, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 1219, + "id": 1242, "modifierName": { "argumentTypes": null, - "id": 1218, + "id": 1241, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1618, - "src": "1993:10:9", + "referencedDeclaration": 1653, + "src": "2176:10:9", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1993:10:9" + "src": "2176:10:9" } ], "name": "addOwnerWithThreshold", "nodeType": "FunctionDefinition", "parameters": { - "id": 1217, + "id": 1240, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1214, + "id": 1237, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 1265, - "src": "1937:13:9", + "scope": 1290, + "src": "2120:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2290,10 +2444,10 @@ "typeString": "address" }, "typeName": { - "id": 1213, + "id": 1236, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1937:7:9", + "src": "2120:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2304,11 +2458,11 @@ }, { "constant": false, - "id": 1216, + "id": 1239, "name": "_threshold", "nodeType": "VariableDeclaration", - "scope": 1265, - "src": "1952:16:9", + "scope": 1290, + "src": "2135:16:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2316,10 +2470,10 @@ "typeString": "uint8" }, "typeName": { - "id": 1215, + "id": 1238, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "1952:5:9", + "src": "2135:5:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -2329,26 +2483,26 @@ "visibility": "internal" } ], - "src": "1936:33:9" + "src": "2119:33:9" }, "payable": false, "returnParameters": { - "id": 1220, + "id": 1243, "nodeType": "ParameterList", "parameters": [], - "src": "2008:0:9" + "src": "2191:0:9" }, - "scope": 1472, - "src": "1906:528:9", + "scope": 1504, + "src": "2089:593:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1317, + "id": 1344, "nodeType": "Block", - "src": "2887:462:9", + "src": "3135:561:9", "statements": [ { "expression": { @@ -2360,7 +2514,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1281, + "id": 1306, "isConstant": false, "isLValue": false, "isPure": false, @@ -2371,19 +2525,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1279, + "id": 1304, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1277, + "id": 1302, "name": "ownerCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1116, - "src": "2982:10:9", + "referencedDeclaration": 1134, + "src": "3230:10:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2394,14 +2548,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31", - "id": 1278, + "id": 1303, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2995:1:9", + "src": "3243:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -2409,7 +2563,7 @@ }, "value": "1" }, - "src": "2982:14:9", + "src": "3230:14:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2419,22 +2573,40 @@ "operator": ">=", "rightExpression": { "argumentTypes": null, - "id": 1280, + "id": 1305, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1271, - "src": "3000:10:9", + "referencedDeclaration": 1296, + "src": "3248:10:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "2982:28:9", + "src": "3230:28:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "4e6577206f776e657220636f756e74206e6565647320746f206265206c6172676572207468616e206e6577207468726573686f6c64", + "id": 1307, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3260:55:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_839b4c4db845de24ec74ef067d85431087d6987a4c904418ee4f6ec699c02482", + "typeString": "literal_string \"New owner count needs to be larger than new threshold\"" + }, + "value": "New owner count needs to be larger than new threshold" } ], "expression": { @@ -2442,23 +2614,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_839b4c4db845de24ec74ef067d85431087d6987a4c904418ee4f6ec699c02482", + "typeString": "literal_string \"New owner count needs to be larger than new threshold\"" } ], - "id": 1276, + "id": 1301, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "2974:7:9", + "referencedDeclaration": 2658, + "src": "3222:7:9", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1282, + "id": 1308, "isConstant": false, "isLValue": false, "isPure": false, @@ -2466,15 +2642,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2974:37:9", + "src": "3222:94:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1283, + "id": 1309, "nodeType": "ExpressionStatement", - "src": "2974:37:9" + "src": "3222:94:9" }, { "expression": { @@ -2486,7 +2662,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1289, + "id": 1315, "isConstant": false, "isLValue": false, "isPure": false, @@ -2495,26 +2671,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1285, + "id": 1311, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "3091:6:9", + "referencedDeclaration": 1132, + "src": "3396:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1287, + "id": 1313, "indexExpression": { "argumentTypes": null, - "id": 1286, + "id": 1312, "name": "prevOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1267, - "src": "3098:9:9", + "referencedDeclaration": 1292, + "src": "3403:9:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2525,7 +2701,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3091:17:9", + "src": "3396:17:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2535,22 +2711,40 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 1288, + "id": 1314, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1269, - "src": "3112:5:9", + "referencedDeclaration": 1294, + "src": "3417:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "3091:26:9", + "src": "3396:26:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "496e76616c696420707265764f776e65722c206f776e657220706169722070726f7669646564", + "id": 1316, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3424:40:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_960698caed81fce71c9b7d572ab2e035b6014a5b812b51df8462ea9817fc4ebc", + "typeString": "literal_string \"Invalid prevOwner, owner pair provided\"" + }, + "value": "Invalid prevOwner, owner pair provided" } ], "expression": { @@ -2558,23 +2752,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_960698caed81fce71c9b7d572ab2e035b6014a5b812b51df8462ea9817fc4ebc", + "typeString": "literal_string \"Invalid prevOwner, owner pair provided\"" } ], - "id": 1284, + "id": 1310, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "3083:7:9", + "referencedDeclaration": 2658, + "src": "3388:7:9", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1290, + "id": 1317, "isConstant": false, "isLValue": false, "isPure": false, @@ -2582,20 +2780,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3083:35:9", + "src": "3388:77:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1291, + "id": 1318, "nodeType": "ExpressionStatement", - "src": "3083:35:9" + "src": "3388:77:9" }, { "expression": { "argumentTypes": null, - "id": 1298, + "id": 1325, "isConstant": false, "isLValue": false, "isPure": false, @@ -2604,26 +2802,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1292, + "id": 1319, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "3128:6:9", + "referencedDeclaration": 1132, + "src": "3475:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1294, + "id": 1321, "indexExpression": { "argumentTypes": null, - "id": 1293, + "id": 1320, "name": "prevOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1267, - "src": "3135:9:9", + "referencedDeclaration": 1292, + "src": "3482:9:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2634,7 +2832,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "3128:17:9", + "src": "3475:17:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2646,26 +2844,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1295, + "id": 1322, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "3148:6:9", + "referencedDeclaration": 1132, + "src": "3495:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1297, + "id": 1324, "indexExpression": { "argumentTypes": null, - "id": 1296, + "id": 1323, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1269, - "src": "3155:5:9", + "referencedDeclaration": 1294, + "src": "3502:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2676,26 +2874,26 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3148:13:9", + "src": "3495:13:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "3128:33:9", + "src": "3475:33:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1299, + "id": 1326, "nodeType": "ExpressionStatement", - "src": "3128:33:9" + "src": "3475:33:9" }, { "expression": { "argumentTypes": null, - "id": 1304, + "id": 1331, "isConstant": false, "isLValue": false, "isPure": false, @@ -2704,26 +2902,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1300, + "id": 1327, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "3171:6:9", + "referencedDeclaration": 1132, + "src": "3518:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1302, + "id": 1329, "indexExpression": { "argumentTypes": null, - "id": 1301, + "id": 1328, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1269, - "src": "3178:5:9", + "referencedDeclaration": 1294, + "src": "3525:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2734,7 +2932,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "3171:13:9", + "src": "3518:13:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2745,14 +2943,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "30", - "id": 1303, + "id": 1330, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3187:1:9", + "src": "3534:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -2760,20 +2958,20 @@ }, "value": "0" }, - "src": "3171:17:9", + "src": "3518:17:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1305, + "id": 1332, "nodeType": "ExpressionStatement", - "src": "3171:17:9" + "src": "3518:17:9" }, { "expression": { "argumentTypes": null, - "id": 1307, + "id": 1334, "isConstant": false, "isLValue": false, "isPure": false, @@ -2781,15 +2979,15 @@ "nodeType": "UnaryOperation", "operator": "--", "prefix": false, - "src": "3198:12:9", + "src": "3545:12:9", "subExpression": { "argumentTypes": null, - "id": 1306, + "id": 1333, "name": "ownerCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1116, - "src": "3198:10:9", + "referencedDeclaration": 1134, + "src": "3545:10:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2800,9 +2998,9 @@ "typeString": "uint256" } }, - "id": 1308, + "id": 1335, "nodeType": "ExpressionStatement", - "src": "3198:12:9" + "src": "3545:12:9" }, { "condition": { @@ -2811,19 +3009,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 1311, + "id": 1338, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1309, + "id": 1336, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1118, - "src": "3278:9:9", + "referencedDeclaration": 1136, + "src": "3625:9:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -2833,39 +3031,39 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 1310, + "id": 1337, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1271, - "src": "3291:10:9", + "referencedDeclaration": 1296, + "src": "3638:10:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "3278:23:9", + "src": "3625:23:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 1316, + "id": 1343, "nodeType": "IfStatement", - "src": "3274:68:9", + "src": "3621:68:9", "trueBody": { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 1313, + "id": 1340, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1271, - "src": "3331:10:9", + "referencedDeclaration": 1296, + "src": "3678:10:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -2879,18 +3077,18 @@ "typeString": "uint8" } ], - "id": 1312, + "id": 1339, "name": "changeThreshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1400, - "src": "3315:15:9", + "referencedDeclaration": 1432, + "src": "3662:15:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$returns$__$", "typeString": "function (uint8)" } }, - "id": 1314, + "id": 1341, "isConstant": false, "isLValue": false, "isPure": false, @@ -2898,58 +3096,58 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3315:27:9", + "src": "3662:27:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1315, + "id": 1342, "nodeType": "ExpressionStatement", - "src": "3315:27:9" + "src": "3662:27:9" } } ] }, "documentation": "@dev Allows to remove an owner from the Safe and update the threshold at the same time.\n This can only be done via a Safe transaction.\n @param prevOwner Owner that pointed to the owner to be removed in the linked list\n @param owner Owner address to be removed.\n @param _threshold New threshold.", - "id": 1318, + "id": 1345, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 1274, + "id": 1299, "modifierName": { "argumentTypes": null, - "id": 1273, + "id": 1298, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1618, - "src": "2872:10:9", + "referencedDeclaration": 1653, + "src": "3120:10:9", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "2872:10:9" + "src": "3120:10:9" } ], "name": "removeOwner", "nodeType": "FunctionDefinition", "parameters": { - "id": 1272, + "id": 1297, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1267, + "id": 1292, "name": "prevOwner", "nodeType": "VariableDeclaration", - "scope": 1318, - "src": "2797:17:9", + "scope": 1345, + "src": "3045:17:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2957,10 +3155,10 @@ "typeString": "address" }, "typeName": { - "id": 1266, + "id": 1291, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2797:7:9", + "src": "3045:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2971,11 +3169,11 @@ }, { "constant": false, - "id": 1269, + "id": 1294, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 1318, - "src": "2816:13:9", + "scope": 1345, + "src": "3064:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2983,10 +3181,10 @@ "typeString": "address" }, "typeName": { - "id": 1268, + "id": 1293, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2816:7:9", + "src": "3064:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2997,11 +3195,11 @@ }, { "constant": false, - "id": 1271, + "id": 1296, "name": "_threshold", "nodeType": "VariableDeclaration", - "scope": 1318, - "src": "2831:16:9", + "scope": 1345, + "src": "3079:16:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3009,10 +3207,10 @@ "typeString": "uint8" }, "typeName": { - "id": 1270, + "id": 1295, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "2831:5:9", + "src": "3079:5:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -3022,26 +3220,26 @@ "visibility": "internal" } ], - "src": "2796:52:9" + "src": "3044:52:9" }, "payable": false, "returnParameters": { - "id": 1275, + "id": 1300, "nodeType": "ParameterList", "parameters": [], - "src": "2887:0:9" + "src": "3135:0:9" }, - "scope": 1472, - "src": "2776:573:9", + "scope": 1504, + "src": "3024:672:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1375, + "id": 1405, "nodeType": "Block", - "src": "3795:414:9", + "src": "4142:521:9", "statements": [ { "expression": { @@ -3053,7 +3251,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 1336, + "id": 1363, "isConstant": false, "isLValue": false, "isPure": false, @@ -3064,19 +3262,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1332, + "id": 1359, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1330, + "id": 1357, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1324, - "src": "3854:8:9", + "referencedDeclaration": 1351, + "src": "4201:8:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3087,14 +3285,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1331, + "id": 1358, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3866:1:9", + "src": "4213:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3102,7 +3300,7 @@ }, "value": "0" }, - "src": "3854:13:9", + "src": "4201:13:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3116,19 +3314,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1335, + "id": 1362, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1333, + "id": 1360, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1324, - "src": "3871:8:9", + "referencedDeclaration": 1351, + "src": "4218:8:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3138,28 +3336,46 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 1334, + "id": 1361, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1110, - "src": "3883:15:9", + "referencedDeclaration": 1128, + "src": "4230:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "3871:27:9", + "src": "4218:27:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "3854:44:9", + "src": "4201:44:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "496e76616c6964206f776e657220616464726573732070726f7669646564", + "id": 1364, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4247:32:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_21a1cd38818adb750881fbf07c26ce7223dde608fdd9dadd31a0d41afeca2094", + "typeString": "literal_string \"Invalid owner address provided\"" + }, + "value": "Invalid owner address provided" } ], "expression": { @@ -3167,23 +3383,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_21a1cd38818adb750881fbf07c26ce7223dde608fdd9dadd31a0d41afeca2094", + "typeString": "literal_string \"Invalid owner address provided\"" } ], - "id": 1329, + "id": 1356, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "3846:7:9", + "referencedDeclaration": 2658, + "src": "4193:7:9", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1337, + "id": 1365, "isConstant": false, "isLValue": false, "isPure": false, @@ -3191,15 +3411,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3846:53:9", + "src": "4193:87:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1338, + "id": 1366, "nodeType": "ExpressionStatement", - "src": "3846:53:9" + "src": "4193:87:9" }, { "expression": { @@ -3211,7 +3431,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1344, + "id": 1372, "isConstant": false, "isLValue": false, "isPure": false, @@ -3220,26 +3440,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1340, + "id": 1368, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "3957:6:9", + "referencedDeclaration": 1132, + "src": "4338:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1342, + "id": 1370, "indexExpression": { "argumentTypes": null, - "id": 1341, + "id": 1369, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1324, - "src": "3964:8:9", + "referencedDeclaration": 1351, + "src": "4345:8:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3250,7 +3470,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3957:16:9", + "src": "4338:16:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3261,14 +3481,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1343, + "id": 1371, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3977:1:9", + "src": "4358:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3276,11 +3496,29 @@ }, "value": "0" }, - "src": "3957:21:9", + "src": "4338:21:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "4164647265737320697320616c726561647920616e206f776e6572", + "id": 1373, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4361:29:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_9d461d71e19b25cd406798d062d7e61f961ad52541d3077a543e857810427d47", + "typeString": "literal_string \"Address is already an owner\"" + }, + "value": "Address is already an owner" } ], "expression": { @@ -3288,23 +3526,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_9d461d71e19b25cd406798d062d7e61f961ad52541d3077a543e857810427d47", + "typeString": "literal_string \"Address is already an owner\"" } ], - "id": 1339, + "id": 1367, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "3949:7:9", + "referencedDeclaration": 2658, + "src": "4330:7:9", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1345, + "id": 1374, "isConstant": false, "isLValue": false, "isPure": false, @@ -3312,15 +3554,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3949:30:9", + "src": "4330:61:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1346, + "id": 1375, "nodeType": "ExpressionStatement", - "src": "3949:30:9" + "src": "4330:61:9" }, { "expression": { @@ -3332,7 +3574,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1352, + "id": 1381, "isConstant": false, "isLValue": false, "isPure": false, @@ -3341,26 +3583,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1348, + "id": 1377, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "4059:6:9", + "referencedDeclaration": 1132, + "src": "4471:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1350, + "id": 1379, "indexExpression": { "argumentTypes": null, - "id": 1349, + "id": 1378, "name": "prevOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1320, - "src": "4066:9:9", + "referencedDeclaration": 1347, + "src": "4478:9:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3371,7 +3613,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4059:17:9", + "src": "4471:17:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3381,22 +3623,40 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 1351, + "id": 1380, "name": "oldOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1322, - "src": "4080:8:9", + "referencedDeclaration": 1349, + "src": "4492:8:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4059:29:9", + "src": "4471:29:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "496e76616c696420707265764f776e65722c206f776e657220706169722070726f7669646564", + "id": 1382, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4502:40:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_960698caed81fce71c9b7d572ab2e035b6014a5b812b51df8462ea9817fc4ebc", + "typeString": "literal_string \"Invalid prevOwner, owner pair provided\"" + }, + "value": "Invalid prevOwner, owner pair provided" } ], "expression": { @@ -3404,23 +3664,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_960698caed81fce71c9b7d572ab2e035b6014a5b812b51df8462ea9817fc4ebc", + "typeString": "literal_string \"Invalid prevOwner, owner pair provided\"" } ], - "id": 1347, + "id": 1376, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "4051:7:9", + "referencedDeclaration": 2658, + "src": "4463:7:9", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1353, + "id": 1383, "isConstant": false, "isLValue": false, "isPure": false, @@ -3428,20 +3692,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4051:38:9", + "src": "4463:80:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1354, + "id": 1384, "nodeType": "ExpressionStatement", - "src": "4051:38:9" + "src": "4463:80:9" }, { "expression": { "argumentTypes": null, - "id": 1361, + "id": 1391, "isConstant": false, "isLValue": false, "isPure": false, @@ -3450,26 +3714,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1355, + "id": 1385, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "4099:6:9", + "referencedDeclaration": 1132, + "src": "4553:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1357, + "id": 1387, "indexExpression": { "argumentTypes": null, - "id": 1356, + "id": 1386, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1324, - "src": "4106:8:9", + "referencedDeclaration": 1351, + "src": "4560:8:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3480,7 +3744,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "4099:16:9", + "src": "4553:16:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3492,26 +3756,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1358, + "id": 1388, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "4118:6:9", + "referencedDeclaration": 1132, + "src": "4572:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1360, + "id": 1390, "indexExpression": { "argumentTypes": null, - "id": 1359, + "id": 1389, "name": "oldOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1322, - "src": "4125:8:9", + "referencedDeclaration": 1349, + "src": "4579:8:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3522,26 +3786,26 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4118:16:9", + "src": "4572:16:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4099:35:9", + "src": "4553:35:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1362, + "id": 1392, "nodeType": "ExpressionStatement", - "src": "4099:35:9" + "src": "4553:35:9" }, { "expression": { "argumentTypes": null, - "id": 1367, + "id": 1397, "isConstant": false, "isLValue": false, "isPure": false, @@ -3550,26 +3814,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1363, + "id": 1393, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "4144:6:9", + "referencedDeclaration": 1132, + "src": "4598:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1365, + "id": 1395, "indexExpression": { "argumentTypes": null, - "id": 1364, + "id": 1394, "name": "prevOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1320, - "src": "4151:9:9", + "referencedDeclaration": 1347, + "src": "4605:9:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3580,7 +3844,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "4144:17:9", + "src": "4598:17:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3590,31 +3854,31 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1366, + "id": 1396, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1324, - "src": "4164:8:9", + "referencedDeclaration": 1351, + "src": "4618:8:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4144:28:9", + "src": "4598:28:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1368, + "id": 1398, "nodeType": "ExpressionStatement", - "src": "4144:28:9" + "src": "4598:28:9" }, { "expression": { "argumentTypes": null, - "id": 1373, + "id": 1403, "isConstant": false, "isLValue": false, "isPure": false, @@ -3623,26 +3887,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1369, + "id": 1399, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "4182:6:9", + "referencedDeclaration": 1132, + "src": "4636:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1371, + "id": 1401, "indexExpression": { "argumentTypes": null, - "id": 1370, + "id": 1400, "name": "oldOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1322, - "src": "4189:8:9", + "referencedDeclaration": 1349, + "src": "4643:8:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3653,7 +3917,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "4182:16:9", + "src": "4636:16:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3664,14 +3928,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "30", - "id": 1372, + "id": 1402, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4201:1:9", + "src": "4655:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3679,57 +3943,57 @@ }, "value": "0" }, - "src": "4182:20:9", + "src": "4636:20:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1374, + "id": 1404, "nodeType": "ExpressionStatement", - "src": "4182:20:9" + "src": "4636:20:9" } ] }, "documentation": "@dev Allows to swap/replace an owner from the Safe with another address.\n This can only be done via a Safe transaction.\n @param prevOwner Owner that pointed to the owner to be replaced in the linked list\n @param oldOwner Owner address to be replaced.\n @param newOwner New owner address.", - "id": 1376, + "id": 1406, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 1327, + "id": 1354, "modifierName": { "argumentTypes": null, - "id": 1326, + "id": 1353, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1618, - "src": "3780:10:9", + "referencedDeclaration": 1653, + "src": "4127:10:9", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "3780:10:9" + "src": "4127:10:9" } ], "name": "swapOwner", "nodeType": "FunctionDefinition", "parameters": { - "id": 1325, + "id": 1352, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1320, + "id": 1347, "name": "prevOwner", "nodeType": "VariableDeclaration", - "scope": 1376, - "src": "3702:17:9", + "scope": 1406, + "src": "4049:17:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3737,10 +4001,10 @@ "typeString": "address" }, "typeName": { - "id": 1319, + "id": 1346, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3702:7:9", + "src": "4049:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3751,11 +4015,11 @@ }, { "constant": false, - "id": 1322, + "id": 1349, "name": "oldOwner", "nodeType": "VariableDeclaration", - "scope": 1376, - "src": "3721:16:9", + "scope": 1406, + "src": "4068:16:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3763,10 +4027,10 @@ "typeString": "address" }, "typeName": { - "id": 1321, + "id": 1348, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3721:7:9", + "src": "4068:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3777,11 +4041,11 @@ }, { "constant": false, - "id": 1324, + "id": 1351, "name": "newOwner", "nodeType": "VariableDeclaration", - "scope": 1376, - "src": "3739:16:9", + "scope": 1406, + "src": "4086:16:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3789,10 +4053,10 @@ "typeString": "address" }, "typeName": { - "id": 1323, + "id": 1350, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3739:7:9", + "src": "4086:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3802,26 +4066,26 @@ "visibility": "internal" } ], - "src": "3701:55:9" + "src": "4048:55:9" }, "payable": false, "returnParameters": { - "id": 1328, + "id": 1355, "nodeType": "ParameterList", "parameters": [], - "src": "3795:0:9" + "src": "4142:0:9" }, - "scope": 1472, - "src": "3683:526:9", + "scope": 1504, + "src": "4030:633:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1399, + "id": 1431, "nodeType": "Block", - "src": "4479:237:9", + "src": "4933:316:9", "statements": [ { "expression": { @@ -3833,19 +4097,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1386, + "id": 1416, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1384, + "id": 1414, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1378, - "src": "4566:10:9", + "referencedDeclaration": 1408, + "src": "5020:10:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -3855,22 +4119,40 @@ "operator": "<=", "rightExpression": { "argumentTypes": null, - "id": 1385, + "id": 1415, "name": "ownerCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1116, - "src": "4580:10:9", + "referencedDeclaration": 1134, + "src": "5034:10:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4566:24:9", + "src": "5020:24:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "5468726573686f6c642063616e6e6f7420657863656564206f776e657220636f756e74", + "id": 1417, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5046:37:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_63d26a9feb8568677e5c255c04e4da88e86a25137d5152a9a089790b7e710e86", + "typeString": "literal_string \"Threshold cannot exceed owner count\"" + }, + "value": "Threshold cannot exceed owner count" } ], "expression": { @@ -3878,23 +4160,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_63d26a9feb8568677e5c255c04e4da88e86a25137d5152a9a089790b7e710e86", + "typeString": "literal_string \"Threshold cannot exceed owner count\"" } ], - "id": 1383, + "id": 1413, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "4558:7:9", + "referencedDeclaration": 2658, + "src": "5012:7:9", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1387, + "id": 1418, "isConstant": false, "isLValue": false, "isPure": false, @@ -3902,15 +4188,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4558:33:9", + "src": "5012:72:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1388, + "id": 1419, "nodeType": "ExpressionStatement", - "src": "4558:33:9" + "src": "5012:72:9" }, { "expression": { @@ -3922,19 +4208,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 1392, + "id": 1423, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1390, + "id": 1421, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1378, - "src": "4661:10:9", + "referencedDeclaration": 1408, + "src": "5154:10:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -3945,14 +4231,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31", - "id": 1391, + "id": 1422, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4675:1:9", + "src": "5168:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -3960,11 +4246,29 @@ }, "value": "1" }, - "src": "4661:15:9", + "src": "5154:15:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "5468726573686f6c64206e6565647320746f2062652067726561746572207468616e2030", + "id": 1424, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5171:38:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_b995394ed6031392a784e6dd5e04285cca83077a8dc3873d2fb7fcb090297ab4", + "typeString": "literal_string \"Threshold needs to be greater than 0\"" + }, + "value": "Threshold needs to be greater than 0" } ], "expression": { @@ -3972,23 +4276,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_b995394ed6031392a784e6dd5e04285cca83077a8dc3873d2fb7fcb090297ab4", + "typeString": "literal_string \"Threshold needs to be greater than 0\"" } ], - "id": 1389, + "id": 1420, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "4653:7:9", + "referencedDeclaration": 2658, + "src": "5146:7:9", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1393, + "id": 1425, "isConstant": false, "isLValue": false, "isPure": false, @@ -3996,32 +4304,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4653:24:9", + "src": "5146:64:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1394, + "id": 1426, "nodeType": "ExpressionStatement", - "src": "4653:24:9" + "src": "5146:64:9" }, { "expression": { "argumentTypes": null, - "id": 1397, + "id": 1429, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1395, + "id": 1427, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1118, - "src": "4687:9:9", + "referencedDeclaration": 1136, + "src": "5220:9:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -4031,68 +4339,68 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1396, + "id": 1428, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1378, - "src": "4699:10:9", + "referencedDeclaration": 1408, + "src": "5232:10:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "4687:22:9", + "src": "5220:22:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "id": 1398, + "id": 1430, "nodeType": "ExpressionStatement", - "src": "4687:22:9" + "src": "5220:22:9" } ] }, "documentation": "@dev Allows to update the number of required confirmations by Safe owners.\n This can only be done via a Safe transaction.\n @param _threshold New threshold.", - "id": 1400, + "id": 1432, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 1381, + "id": 1411, "modifierName": { "argumentTypes": null, - "id": 1380, + "id": 1410, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1618, - "src": "4464:10:9", + "referencedDeclaration": 1653, + "src": "4918:10:9", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "4464:10:9" + "src": "4918:10:9" } ], "name": "changeThreshold", "nodeType": "FunctionDefinition", "parameters": { - "id": 1379, + "id": 1409, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1378, + "id": 1408, "name": "_threshold", "nodeType": "VariableDeclaration", - "scope": 1400, - "src": "4423:16:9", + "scope": 1432, + "src": "4877:16:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4100,10 +4408,10 @@ "typeString": "uint8" }, "typeName": { - "id": 1377, + "id": 1407, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "4423:5:9", + "src": "4877:5:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -4113,50 +4421,50 @@ "visibility": "internal" } ], - "src": "4422:18:9" + "src": "4876:18:9" }, "payable": false, "returnParameters": { - "id": 1382, + "id": 1412, "nodeType": "ParameterList", "parameters": [], - "src": "4479:0:9" + "src": "4933:0:9" }, - "scope": 1472, - "src": "4398:318:9", + "scope": 1504, + "src": "4852:397:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1407, + "id": 1439, "nodeType": "Block", - "src": "4802:33:9", + "src": "5335:33:9", "statements": [ { "expression": { "argumentTypes": null, - "id": 1405, + "id": 1437, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1118, - "src": "4819:9:9", + "referencedDeclaration": 1136, + "src": "5352:9:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "functionReturnParameters": 1404, - "id": 1406, + "functionReturnParameters": 1436, + "id": 1438, "nodeType": "Return", - "src": "4812:16:9" + "src": "5345:16:9" } ] }, "documentation": null, - "id": 1408, + "id": 1440, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -4164,23 +4472,23 @@ "name": "getThreshold", "nodeType": "FunctionDefinition", "parameters": { - "id": 1401, + "id": 1433, "nodeType": "ParameterList", "parameters": [], - "src": "4743:2:9" + "src": "5276:2:9" }, "payable": false, "returnParameters": { - "id": 1404, + "id": 1436, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1403, + "id": 1435, "name": "", "nodeType": "VariableDeclaration", - "scope": 1408, - "src": "4791:5:9", + "scope": 1440, + "src": "5324:5:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4188,10 +4496,10 @@ "typeString": "uint8" }, "typeName": { - "id": 1402, + "id": 1434, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "4791:5:9", + "src": "5324:5:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -4201,19 +4509,19 @@ "visibility": "internal" } ], - "src": "4790:7:9" + "src": "5323:7:9" }, - "scope": 1472, - "src": "4722:113:9", + "scope": 1504, + "src": "5255:113:9", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1421, + "id": 1453, "nodeType": "Block", - "src": "4928:42:9", + "src": "5461:42:9", "statements": [ { "expression": { @@ -4222,7 +4530,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1419, + "id": 1451, "isConstant": false, "isLValue": false, "isPure": false, @@ -4231,26 +4539,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1415, + "id": 1447, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "4945:6:9", + "referencedDeclaration": 1132, + "src": "5478:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1417, + "id": 1449, "indexExpression": { "argumentTypes": null, - "id": 1416, + "id": 1448, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1410, - "src": "4952:5:9", + "referencedDeclaration": 1442, + "src": "5485:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4261,7 +4569,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4945:13:9", + "src": "5478:13:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4272,14 +4580,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1418, + "id": 1450, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4962:1:9", + "src": "5495:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -4287,21 +4595,21 @@ }, "value": "0" }, - "src": "4945:18:9", + "src": "5478:18:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "functionReturnParameters": 1414, - "id": 1420, + "functionReturnParameters": 1446, + "id": 1452, "nodeType": "Return", - "src": "4938:25:9" + "src": "5471:25:9" } ] }, "documentation": null, - "id": 1422, + "id": 1454, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -4309,16 +4617,16 @@ "name": "isOwner", "nodeType": "FunctionDefinition", "parameters": { - "id": 1411, + "id": 1443, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1410, + "id": 1442, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 1422, - "src": "4858:13:9", + "scope": 1454, + "src": "5391:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4326,10 +4634,10 @@ "typeString": "address" }, "typeName": { - "id": 1409, + "id": 1441, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4858:7:9", + "src": "5391:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4339,20 +4647,20 @@ "visibility": "internal" } ], - "src": "4857:15:9" + "src": "5390:15:9" }, "payable": false, "returnParameters": { - "id": 1414, + "id": 1446, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1413, + "id": 1445, "name": "", "nodeType": "VariableDeclaration", - "scope": 1422, - "src": "4918:4:9", + "scope": 1454, + "src": "5451:4:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4360,10 +4668,10 @@ "typeString": "bool" }, "typeName": { - "id": 1412, + "id": 1444, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "4918:4:9", + "src": "5451:4:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4373,32 +4681,32 @@ "visibility": "internal" } ], - "src": "4917:6:9" + "src": "5450:6:9" }, - "scope": 1472, - "src": "4841:129:9", + "scope": 1504, + "src": "5374:129:9", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1470, + "id": 1502, "nodeType": "Block", - "src": "5133:377:9", + "src": "5666:377:9", "statements": [ { "assignments": [ - 1431 + 1463 ], "declarations": [ { "constant": false, - "id": 1431, + "id": 1463, "name": "array", "nodeType": "VariableDeclaration", - "scope": 1471, - "src": "5143:22:9", + "scope": 1503, + "src": "5676:22:9", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -4407,19 +4715,19 @@ }, "typeName": { "baseType": { - "id": 1429, + "id": 1461, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5143:7:9", + "src": "5676:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1430, + "id": 1462, "length": null, "nodeType": "ArrayTypeName", - "src": "5143:9:9", + "src": "5676:9:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -4429,18 +4737,18 @@ "visibility": "internal" } ], - "id": 1437, + "id": 1469, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 1435, + "id": 1467, "name": "ownerCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1116, - "src": "5182:10:9", + "referencedDeclaration": 1134, + "src": "5715:10:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4454,39 +4762,39 @@ "typeString": "uint256" } ], - "id": 1434, + "id": 1466, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", - "src": "5168:13:9", + "src": "5701:13:9", "typeDescriptions": { "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_$", "typeString": "function (uint256) pure returns (address[] memory)" }, "typeName": { "baseType": { - "id": 1432, + "id": 1464, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5172:7:9", + "src": "5705:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1433, + "id": 1465, "length": null, "nodeType": "ArrayTypeName", - "src": "5172:9:9", + "src": "5705:9:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" } } }, - "id": 1436, + "id": 1468, "isConstant": false, "isLValue": false, "isPure": false, @@ -4494,27 +4802,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5168:25:9", + "src": "5701:25:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory", "typeString": "address[] memory" } }, "nodeType": "VariableDeclarationStatement", - "src": "5143:50:9" + "src": "5676:50:9" }, { "assignments": [ - 1439 + 1471 ], "declarations": [ { "constant": false, - "id": 1439, + "id": 1471, "name": "index", "nodeType": "VariableDeclaration", - "scope": 1471, - "src": "5237:13:9", + "scope": 1503, + "src": "5770:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4522,10 +4830,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1438, + "id": 1470, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5237:7:9", + "src": "5770:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4535,18 +4843,18 @@ "visibility": "internal" } ], - "id": 1441, + "id": 1473, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 1440, + "id": 1472, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5253:1:9", + "src": "5786:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -4555,20 +4863,20 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "5237:17:9" + "src": "5770:17:9" }, { "assignments": [ - 1443 + 1475 ], "declarations": [ { "constant": false, - "id": 1443, + "id": 1475, "name": "currentOwner", "nodeType": "VariableDeclaration", - "scope": 1471, - "src": "5264:20:9", + "scope": 1503, + "src": "5797:20:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4576,10 +4884,10 @@ "typeString": "address" }, "typeName": { - "id": 1442, + "id": 1474, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5264:7:9", + "src": "5797:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4589,31 +4897,31 @@ "visibility": "internal" } ], - "id": 1447, + "id": 1479, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1444, + "id": 1476, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "5287:6:9", + "referencedDeclaration": 1132, + "src": "5820:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1446, + "id": 1478, "indexExpression": { "argumentTypes": null, - "id": 1445, + "id": 1477, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1110, - "src": "5294:15:9", + "referencedDeclaration": 1128, + "src": "5827:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4624,25 +4932,25 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "5287:23:9", + "src": "5820:23:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "5264:46:9" + "src": "5797:46:9" }, { "body": { - "id": 1466, + "id": 1498, "nodeType": "Block", - "src": "5359:123:9", + "src": "5892:123:9", "statements": [ { "expression": { "argumentTypes": null, - "id": 1455, + "id": 1487, "isConstant": false, "isLValue": false, "isPure": false, @@ -4651,26 +4959,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1451, + "id": 1483, "name": "array", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1431, - "src": "5373:5:9", + "referencedDeclaration": 1463, + "src": "5906:5:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1453, + "id": 1485, "indexExpression": { "argumentTypes": null, - "id": 1452, + "id": 1484, "name": "index", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1439, - "src": "5379:5:9", + "referencedDeclaration": 1471, + "src": "5912:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4681,7 +4989,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "5373:12:9", + "src": "5906:12:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4691,43 +4999,43 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1454, + "id": 1486, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1443, - "src": "5388:12:9", + "referencedDeclaration": 1475, + "src": "5921:12:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "5373:27:9", + "src": "5906:27:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1456, + "id": 1488, "nodeType": "ExpressionStatement", - "src": "5373:27:9" + "src": "5906:27:9" }, { "expression": { "argumentTypes": null, - "id": 1461, + "id": 1493, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1457, + "id": 1489, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1443, - "src": "5414:12:9", + "referencedDeclaration": 1475, + "src": "5947:12:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4739,26 +5047,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1458, + "id": 1490, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "5429:6:9", + "referencedDeclaration": 1132, + "src": "5962:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1460, + "id": 1492, "indexExpression": { "argumentTypes": null, - "id": 1459, + "id": 1491, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1443, - "src": "5436:12:9", + "referencedDeclaration": 1475, + "src": "5969:12:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4769,26 +5077,26 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "5429:20:9", + "src": "5962:20:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "5414:35:9", + "src": "5947:35:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1462, + "id": 1494, "nodeType": "ExpressionStatement", - "src": "5414:35:9" + "src": "5947:35:9" }, { "expression": { "argumentTypes": null, - "id": 1464, + "id": 1496, "isConstant": false, "isLValue": false, "isPure": false, @@ -4796,15 +5104,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "5463:8:9", + "src": "5996:8:9", "subExpression": { "argumentTypes": null, - "id": 1463, + "id": 1495, "name": "index", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1439, - "src": "5463:5:9", + "referencedDeclaration": 1471, + "src": "5996:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4815,9 +5123,9 @@ "typeString": "uint256" } }, - "id": 1465, + "id": 1497, "nodeType": "ExpressionStatement", - "src": "5463:8:9" + "src": "5996:8:9" } ] }, @@ -4827,19 +5135,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1450, + "id": 1482, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1448, + "id": 1480, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1443, - "src": "5326:12:9", + "referencedDeclaration": 1475, + "src": "5859:12:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4849,50 +5157,50 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 1449, + "id": 1481, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1110, - "src": "5342:15:9", + "referencedDeclaration": 1128, + "src": "5875:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "5326:31:9", + "src": "5859:31:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 1467, + "id": 1499, "nodeType": "WhileStatement", - "src": "5320:162:9" + "src": "5853:162:9" }, { "expression": { "argumentTypes": null, - "id": 1468, + "id": 1500, "name": "array", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1431, - "src": "5498:5:9", + "referencedDeclaration": 1463, + "src": "6031:5:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "functionReturnParameters": 1427, - "id": 1469, + "functionReturnParameters": 1459, + "id": 1501, "nodeType": "Return", - "src": "5491:12:9" + "src": "6024:12:9" } ] }, "documentation": "@dev Returns array of owners.\n @return Array of Safe owners.", - "id": 1471, + "id": 1503, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -4900,23 +5208,23 @@ "name": "getOwners", "nodeType": "FunctionDefinition", "parameters": { - "id": 1423, + "id": 1455, "nodeType": "ParameterList", "parameters": [], - "src": "5070:2:9" + "src": "5603:2:9" }, "payable": false, "returnParameters": { - "id": 1427, + "id": 1459, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1426, + "id": 1458, "name": "", "nodeType": "VariableDeclaration", - "scope": 1471, - "src": "5118:9:9", + "scope": 1503, + "src": "5651:9:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4925,19 +5233,19 @@ }, "typeName": { "baseType": { - "id": 1424, + "id": 1456, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5118:7:9", + "src": "5651:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1425, + "id": 1457, "length": null, "nodeType": "ArrayTypeName", - "src": "5118:9:9", + "src": "5651:9:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -4947,33 +5255,33 @@ "visibility": "internal" } ], - "src": "5117:11:9" + "src": "5650:11:9" }, - "scope": 1472, - "src": "5052:458:9", + "scope": 1504, + "src": "5585:458:9", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 1473, - "src": "240:5272:9" + "scope": 1505, + "src": "240:5805:9" } ], - "src": "0:5513:9" + "src": "0:6046:9" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", "exportedSymbols": { "OwnerManager": [ - 1472 + 1504 ] }, - "id": 1473, + "id": 1505, "nodeType": "SourceUnit", "nodes": [ { - "id": 1102, + "id": 1120, "literals": [ "solidity", "0.4", @@ -4985,10 +5293,10 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/SelfAuthorized.sol", "file": "./SelfAuthorized.sol", - "id": 1103, + "id": 1121, "nodeType": "ImportDirective", - "scope": 1473, - "sourceUnit": 1620, + "scope": 1505, + "sourceUnit": 1655, "src": "24:30:9", "symbolAliases": [], "unitAlias": "" @@ -4999,41 +5307,41 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 1104, + "id": 1122, "name": "SelfAuthorized", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1619, + "referencedDeclaration": 1654, "src": "265:14:9", "typeDescriptions": { - "typeIdentifier": "t_contract$_SelfAuthorized_$1619", + "typeIdentifier": "t_contract$_SelfAuthorized_$1654", "typeString": "contract SelfAuthorized" } }, - "id": 1105, + "id": 1123, "nodeType": "InheritanceSpecifier", "src": "265:14:9" } ], "contractDependencies": [ - 1619 + 1654 ], "contractKind": "contract", "documentation": "@title OwnerManager - Manages a set of owners and a threshold to perform actions.\n @author Stefan George - \n @author Richard Meissner - ", "fullyImplemented": true, - "id": 1472, + "id": 1504, "linearizedBaseContracts": [ - 1472, - 1619 + 1504, + 1654 ], "name": "OwnerManager", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, - "id": 1110, + "id": 1128, "name": "SENTINEL_OWNERS", "nodeType": "VariableDeclaration", - "scope": 1472, + "scope": 1504, "src": "287:54:9", "stateVariable": true, "storageLocation": "default", @@ -5042,7 +5350,7 @@ "typeString": "address" }, "typeName": { - "id": 1106, + "id": 1124, "name": "address", "nodeType": "ElementaryTypeName", "src": "287:7:9", @@ -5057,7 +5365,7 @@ { "argumentTypes": null, "hexValue": "307831", - "id": 1108, + "id": 1126, "isConstant": false, "isLValue": false, "isPure": true, @@ -5080,7 +5388,7 @@ "typeString": "int_const 1" } ], - "id": 1107, + "id": 1125, "isConstant": false, "isLValue": false, "isPure": true, @@ -5093,7 +5401,7 @@ }, "typeName": "address" }, - "id": 1109, + "id": 1127, "isConstant": false, "isLValue": false, "isPure": true, @@ -5111,10 +5419,10 @@ }, { "constant": false, - "id": 1114, + "id": 1132, "name": "owners", "nodeType": "VariableDeclaration", - "scope": 1472, + "scope": 1504, "src": "348:43:9", "stateVariable": true, "storageLocation": "default", @@ -5123,9 +5431,9 @@ "typeString": "mapping(address => address)" }, "typeName": { - "id": 1113, + "id": 1131, "keyType": { - "id": 1111, + "id": 1129, "name": "address", "nodeType": "ElementaryTypeName", "src": "356:7:9", @@ -5141,7 +5449,7 @@ "typeString": "mapping(address => address)" }, "valueType": { - "id": 1112, + "id": 1130, "name": "address", "nodeType": "ElementaryTypeName", "src": "367:7:9", @@ -5156,10 +5464,10 @@ }, { "constant": false, - "id": 1116, + "id": 1134, "name": "ownerCount", "nodeType": "VariableDeclaration", - "scope": 1472, + "scope": 1504, "src": "397:18:9", "stateVariable": true, "storageLocation": "default", @@ -5168,7 +5476,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1115, + "id": 1133, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "397:7:9", @@ -5182,10 +5490,10 @@ }, { "constant": false, - "id": 1118, + "id": 1136, "name": "threshold", "nodeType": "VariableDeclaration", - "scope": 1472, + "scope": 1504, "src": "421:24:9", "stateVariable": true, "storageLocation": "default", @@ -5194,7 +5502,7 @@ "typeString": "uint8" }, "typeName": { - "id": 1117, + "id": 1135, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "421:5:9", @@ -5208,9 +5516,9 @@ }, { "body": { - "id": 1211, + "id": 1234, "nodeType": "Block", - "src": "720:946:9", + "src": "720:1129:9", "statements": [ { "expression": { @@ -5222,18 +5530,18 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 1129, + "id": 1147, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1127, + "id": 1145, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1118, + "referencedDeclaration": 1136, "src": "862:9:9", "typeDescriptions": { "typeIdentifier": "t_uint8", @@ -5245,7 +5553,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1128, + "id": 1146, "isConstant": false, "isLValue": false, "isPure": true, @@ -5265,6 +5573,24 @@ "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "4f776e657273206861766520616c7265616479206265656e207365747570", + "id": 1148, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "878:32:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_9a45ae898fbe2bd07a0b33b5a6c421f76198e9deb66843b8d827b0b9e4a16f86", + "typeString": "literal_string \"Owners have already been setup\"" + }, + "value": "Owners have already been setup" } ], "expression": { @@ -5272,23 +5598,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_9a45ae898fbe2bd07a0b33b5a6c421f76198e9deb66843b8d827b0b9e4a16f86", + "typeString": "literal_string \"Owners have already been setup\"" } ], - "id": 1126, + "id": 1144, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, + "referencedDeclaration": 2658, "src": "854:7:9", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1130, + "id": 1149, "isConstant": false, "isLValue": false, "isPure": false, @@ -5296,15 +5626,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "854:23:9", + "src": "854:57:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1131, + "id": 1150, "nodeType": "ExpressionStatement", - "src": "854:23:9" + "src": "854:57:9" }, { "expression": { @@ -5316,19 +5646,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1136, + "id": 1155, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1133, + "id": 1152, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1123, - "src": "970:10:9", + "referencedDeclaration": 1141, + "src": "1004:10:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -5340,18 +5670,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1134, + "id": 1153, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1121, - "src": "984:7:9", + "referencedDeclaration": 1139, + "src": "1018:7:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1135, + "id": 1154, "isConstant": false, "isLValue": false, "isPure": false, @@ -5359,17 +5689,35 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "984:14:9", + "src": "1018:14:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "970:28:9", + "src": "1004:28:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "5468726573686f6c642063616e6e6f7420657863656564206f776e657220636f756e74", + "id": 1156, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1034:37:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_63d26a9feb8568677e5c255c04e4da88e86a25137d5152a9a089790b7e710e86", + "typeString": "literal_string \"Threshold cannot exceed owner count\"" + }, + "value": "Threshold cannot exceed owner count" } ], "expression": { @@ -5377,23 +5725,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_63d26a9feb8568677e5c255c04e4da88e86a25137d5152a9a089790b7e710e86", + "typeString": "literal_string \"Threshold cannot exceed owner count\"" } ], - "id": 1132, + "id": 1151, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "962:7:9", + "referencedDeclaration": 2658, + "src": "996:7:9", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1137, + "id": 1157, "isConstant": false, "isLValue": false, "isPure": false, @@ -5401,15 +5753,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "962:37:9", + "src": "996:76:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1138, + "id": 1158, "nodeType": "ExpressionStatement", - "src": "962:37:9" + "src": "996:76:9" }, { "expression": { @@ -5421,19 +5773,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 1142, + "id": 1162, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1140, + "id": 1160, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1123, - "src": "1069:10:9", + "referencedDeclaration": 1141, + "src": "1142:10:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -5444,14 +5796,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31", - "id": 1141, + "id": 1161, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1083:1:9", + "src": "1156:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -5459,11 +5811,29 @@ }, "value": "1" }, - "src": "1069:15:9", + "src": "1142:15:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "5468726573686f6c64206e6565647320746f2062652067726561746572207468616e2030", + "id": 1163, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1159:38:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_b995394ed6031392a784e6dd5e04285cca83077a8dc3873d2fb7fcb090297ab4", + "typeString": "literal_string \"Threshold needs to be greater than 0\"" + }, + "value": "Threshold needs to be greater than 0" } ], "expression": { @@ -5471,23 +5841,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_b995394ed6031392a784e6dd5e04285cca83077a8dc3873d2fb7fcb090297ab4", + "typeString": "literal_string \"Threshold needs to be greater than 0\"" } ], - "id": 1139, + "id": 1159, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "1061:7:9", + "referencedDeclaration": 2658, + "src": "1134:7:9", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1143, + "id": 1164, "isConstant": false, "isLValue": false, "isPure": false, @@ -5495,28 +5869,28 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1061:24:9", + "src": "1134:64:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1144, + "id": 1165, "nodeType": "ExpressionStatement", - "src": "1061:24:9" + "src": "1134:64:9" }, { "assignments": [ - 1146 + 1167 ], "declarations": [ { "constant": false, - "id": 1146, + "id": 1167, "name": "currentOwner", "nodeType": "VariableDeclaration", - "scope": 1212, - "src": "1132:20:9", + "scope": 1235, + "src": "1245:20:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5524,10 +5898,10 @@ "typeString": "address" }, "typeName": { - "id": 1145, + "id": 1166, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1132:7:9", + "src": "1245:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5537,41 +5911,41 @@ "visibility": "internal" } ], - "id": 1148, + "id": 1169, "initialValue": { "argumentTypes": null, - "id": 1147, + "id": 1168, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1110, - "src": "1155:15:9", + "referencedDeclaration": 1128, + "src": "1268:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "1132:38:9" + "src": "1245:38:9" }, { "body": { - "id": 1194, + "id": 1217, "nodeType": "Block", - "src": "1225:318:9", + "src": "1338:388:9", "statements": [ { "assignments": [ - 1161 + 1182 ], "declarations": [ { "constant": false, - "id": 1161, + "id": 1182, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 1212, - "src": "1284:13:9", + "scope": 1235, + "src": "1397:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5579,10 +5953,10 @@ "typeString": "address" }, "typeName": { - "id": 1160, + "id": 1181, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1284:7:9", + "src": "1397:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5592,31 +5966,31 @@ "visibility": "internal" } ], - "id": 1165, + "id": 1186, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1162, + "id": 1183, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1121, - "src": "1300:7:9", + "referencedDeclaration": 1139, + "src": "1413:7:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1164, + "id": 1185, "indexExpression": { "argumentTypes": null, - "id": 1163, + "id": 1184, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1150, - "src": "1308:1:9", + "referencedDeclaration": 1171, + "src": "1421:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5627,14 +6001,14 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1300:10:9", + "src": "1413:10:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "1284:26:9" + "src": "1397:26:9" }, { "expression": { @@ -5646,7 +6020,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 1173, + "id": 1194, "isConstant": false, "isLValue": false, "isPure": false, @@ -5657,19 +6031,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1169, + "id": 1190, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1167, + "id": 1188, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1161, - "src": "1332:5:9", + "referencedDeclaration": 1182, + "src": "1445:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5680,14 +6054,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1168, + "id": 1189, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1341:1:9", + "src": "1454:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -5695,7 +6069,7 @@ }, "value": "0" }, - "src": "1332:10:9", + "src": "1445:10:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5709,19 +6083,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1172, + "id": 1193, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1170, + "id": 1191, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1161, - "src": "1346:5:9", + "referencedDeclaration": 1182, + "src": "1459:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5731,28 +6105,46 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 1171, + "id": 1192, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1110, - "src": "1355:15:9", + "referencedDeclaration": 1128, + "src": "1468:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1346:24:9", + "src": "1459:24:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "1332:38:9", + "src": "1445:38:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "496e76616c6964206f776e657220616464726573732070726f7669646564", + "id": 1195, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1485:32:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_21a1cd38818adb750881fbf07c26ce7223dde608fdd9dadd31a0d41afeca2094", + "typeString": "literal_string \"Invalid owner address provided\"" + }, + "value": "Invalid owner address provided" } ], "expression": { @@ -5760,23 +6152,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_21a1cd38818adb750881fbf07c26ce7223dde608fdd9dadd31a0d41afeca2094", + "typeString": "literal_string \"Invalid owner address provided\"" } ], - "id": 1166, + "id": 1187, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "1324:7:9", + "referencedDeclaration": 2658, + "src": "1437:7:9", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1174, + "id": 1196, "isConstant": false, "isLValue": false, "isPure": false, @@ -5784,15 +6180,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1324:47:9", + "src": "1437:81:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1175, + "id": 1197, "nodeType": "ExpressionStatement", - "src": "1324:47:9" + "src": "1437:81:9" }, { "expression": { @@ -5804,7 +6200,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1181, + "id": 1203, "isConstant": false, "isLValue": false, "isPure": false, @@ -5813,26 +6209,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1177, + "id": 1199, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "1437:6:9", + "referencedDeclaration": 1132, + "src": "1584:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1179, + "id": 1201, "indexExpression": { "argumentTypes": null, - "id": 1178, + "id": 1200, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1161, - "src": "1444:5:9", + "referencedDeclaration": 1182, + "src": "1591:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5843,7 +6239,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1437:13:9", + "src": "1584:13:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5854,14 +6250,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1180, + "id": 1202, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1454:1:9", + "src": "1601:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -5869,11 +6265,29 @@ }, "value": "0" }, - "src": "1437:18:9", + "src": "1584:18:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "4475706c6963617465206f776e657220616464726573732070726f7669646564", + "id": 1204, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1604:34:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_a803fa289679098e38a7f1f6fe43056918c5ab5af07441cb8db77b949c165ca1", + "typeString": "literal_string \"Duplicate owner address provided\"" + }, + "value": "Duplicate owner address provided" } ], "expression": { @@ -5881,23 +6295,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_a803fa289679098e38a7f1f6fe43056918c5ab5af07441cb8db77b949c165ca1", + "typeString": "literal_string \"Duplicate owner address provided\"" } ], - "id": 1176, + "id": 1198, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "1429:7:9", + "referencedDeclaration": 2658, + "src": "1576:7:9", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1182, + "id": 1205, "isConstant": false, "isLValue": false, "isPure": false, @@ -5905,20 +6323,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1429:27:9", + "src": "1576:63:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1183, + "id": 1206, "nodeType": "ExpressionStatement", - "src": "1429:27:9" + "src": "1576:63:9" }, { "expression": { "argumentTypes": null, - "id": 1188, + "id": 1211, "isConstant": false, "isLValue": false, "isPure": false, @@ -5927,26 +6345,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1184, + "id": 1207, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "1470:6:9", + "referencedDeclaration": 1132, + "src": "1653:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1186, + "id": 1209, "indexExpression": { "argumentTypes": null, - "id": 1185, + "id": 1208, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1146, - "src": "1477:12:9", + "referencedDeclaration": 1167, + "src": "1660:12:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5957,7 +6375,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1470:20:9", + "src": "1653:20:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5967,43 +6385,43 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1187, + "id": 1210, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1161, - "src": "1493:5:9", + "referencedDeclaration": 1182, + "src": "1676:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1470:28:9", + "src": "1653:28:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1189, + "id": 1212, "nodeType": "ExpressionStatement", - "src": "1470:28:9" + "src": "1653:28:9" }, { "expression": { "argumentTypes": null, - "id": 1192, + "id": 1215, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1190, + "id": 1213, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1146, - "src": "1512:12:9", + "referencedDeclaration": 1167, + "src": "1695:12:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6013,26 +6431,26 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1191, + "id": 1214, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1161, - "src": "1527:5:9", + "referencedDeclaration": 1182, + "src": "1710:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1512:20:9", + "src": "1695:20:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1193, + "id": 1216, "nodeType": "ExpressionStatement", - "src": "1512:20:9" + "src": "1695:20:9" } ] }, @@ -6042,19 +6460,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1156, + "id": 1177, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1153, + "id": 1174, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1150, - "src": "1200:1:9", + "referencedDeclaration": 1171, + "src": "1313:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6066,18 +6484,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1154, + "id": 1175, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1121, - "src": "1204:7:9", + "referencedDeclaration": 1139, + "src": "1317:7:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1155, + "id": 1176, "isConstant": false, "isLValue": false, "isPure": false, @@ -6085,31 +6503,31 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1204:14:9", + "src": "1317:14:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1200:18:9", + "src": "1313:18:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 1195, + "id": 1218, "initializationExpression": { "assignments": [ - 1150 + 1171 ], "declarations": [ { "constant": false, - "id": 1150, + "id": 1171, "name": "i", "nodeType": "VariableDeclaration", - "scope": 1212, - "src": "1185:9:9", + "scope": 1235, + "src": "1298:9:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6117,10 +6535,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1149, + "id": 1170, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1185:7:9", + "src": "1298:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6130,18 +6548,18 @@ "visibility": "internal" } ], - "id": 1152, + "id": 1173, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 1151, + "id": 1172, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1197:1:9", + "src": "1310:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -6150,12 +6568,12 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "1185:13:9" + "src": "1298:13:9" }, "loopExpression": { "expression": { "argumentTypes": null, - "id": 1158, + "id": 1179, "isConstant": false, "isLValue": false, "isPure": false, @@ -6163,15 +6581,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "1220:3:9", + "src": "1333:3:9", "subExpression": { "argumentTypes": null, - "id": 1157, + "id": 1178, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1150, - "src": "1220:1:9", + "referencedDeclaration": 1171, + "src": "1333:1:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6182,17 +6600,17 @@ "typeString": "uint256" } }, - "id": 1159, + "id": 1180, "nodeType": "ExpressionStatement", - "src": "1220:3:9" + "src": "1333:3:9" }, "nodeType": "ForStatement", - "src": "1180:363:9" + "src": "1293:433:9" }, { "expression": { "argumentTypes": null, - "id": 1200, + "id": 1223, "isConstant": false, "isLValue": false, "isPure": false, @@ -6201,26 +6619,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1196, + "id": 1219, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "1552:6:9", + "referencedDeclaration": 1132, + "src": "1735:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1198, + "id": 1221, "indexExpression": { "argumentTypes": null, - "id": 1197, + "id": 1220, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1146, - "src": "1559:12:9", + "referencedDeclaration": 1167, + "src": "1742:12:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6231,7 +6649,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1552:20:9", + "src": "1735:20:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6241,43 +6659,43 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1199, + "id": 1222, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1110, - "src": "1575:15:9", + "referencedDeclaration": 1128, + "src": "1758:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "1552:38:9", + "src": "1735:38:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1201, + "id": 1224, "nodeType": "ExpressionStatement", - "src": "1552:38:9" + "src": "1735:38:9" }, { "expression": { "argumentTypes": null, - "id": 1205, + "id": 1228, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1202, + "id": 1225, "name": "ownerCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1116, - "src": "1600:10:9", + "referencedDeclaration": 1134, + "src": "1783:10:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6289,18 +6707,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1203, + "id": 1226, "name": "_owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1121, - "src": "1613:7:9", + "referencedDeclaration": 1139, + "src": "1796:7:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1204, + "id": 1227, "isConstant": false, "isLValue": false, "isPure": false, @@ -6308,38 +6726,38 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1613:14:9", + "src": "1796:14:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1600:27:9", + "src": "1783:27:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 1206, + "id": 1229, "nodeType": "ExpressionStatement", - "src": "1600:27:9" + "src": "1783:27:9" }, { "expression": { "argumentTypes": null, - "id": 1209, + "id": 1232, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1207, + "id": 1230, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1118, - "src": "1637:9:9", + "referencedDeclaration": 1136, + "src": "1820:9:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -6349,31 +6767,31 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1208, + "id": 1231, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1123, - "src": "1649:10:9", + "referencedDeclaration": 1141, + "src": "1832:10:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "1637:22:9", + "src": "1820:22:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "id": 1210, + "id": 1233, "nodeType": "ExpressionStatement", - "src": "1637:22:9" + "src": "1820:22:9" } ] }, "documentation": "@dev Setup function sets initial storage of contract.\n @param _owners List of Safe owners.\n @param _threshold Number of required confirmations for a Safe transaction.", - "id": 1212, + "id": 1235, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -6381,15 +6799,15 @@ "name": "setupOwners", "nodeType": "FunctionDefinition", "parameters": { - "id": 1124, + "id": 1142, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1121, + "id": 1139, "name": "_owners", "nodeType": "VariableDeclaration", - "scope": 1212, + "scope": 1235, "src": "662:17:9", "stateVariable": false, "storageLocation": "default", @@ -6399,7 +6817,7 @@ }, "typeName": { "baseType": { - "id": 1119, + "id": 1137, "name": "address", "nodeType": "ElementaryTypeName", "src": "662:7:9", @@ -6408,7 +6826,7 @@ "typeString": "address" } }, - "id": 1120, + "id": 1138, "length": null, "nodeType": "ArrayTypeName", "src": "662:9:9", @@ -6422,10 +6840,10 @@ }, { "constant": false, - "id": 1123, + "id": 1141, "name": "_threshold", "nodeType": "VariableDeclaration", - "scope": 1212, + "scope": 1235, "src": "681:16:9", "stateVariable": false, "storageLocation": "default", @@ -6434,7 +6852,7 @@ "typeString": "uint8" }, "typeName": { - "id": 1122, + "id": 1140, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "681:5:9", @@ -6451,22 +6869,22 @@ }, "payable": false, "returnParameters": { - "id": 1125, + "id": 1143, "nodeType": "ParameterList", "parameters": [], "src": "720:0:9" }, - "scope": 1472, - "src": "641:1025:9", + "scope": 1504, + "src": "641:1208:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 1264, + "id": 1289, "nodeType": "Block", - "src": "2008:426:9", + "src": "2191:491:9", "statements": [ { "expression": { @@ -6478,7 +6896,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 1228, + "id": 1251, "isConstant": false, "isLValue": false, "isPure": false, @@ -6489,19 +6907,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1224, + "id": 1247, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1222, + "id": 1245, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1214, - "src": "2067:5:9", + "referencedDeclaration": 1237, + "src": "2250:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6512,14 +6930,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1223, + "id": 1246, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2076:1:9", + "src": "2259:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -6527,7 +6945,7 @@ }, "value": "0" }, - "src": "2067:10:9", + "src": "2250:10:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6541,19 +6959,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1227, + "id": 1250, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1225, + "id": 1248, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1214, - "src": "2081:5:9", + "referencedDeclaration": 1237, + "src": "2264:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6563,28 +6981,46 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 1226, + "id": 1249, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1110, - "src": "2090:15:9", + "referencedDeclaration": 1128, + "src": "2273:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2081:24:9", + "src": "2264:24:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "2067:38:9", + "src": "2250:38:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "496e76616c6964206f776e657220616464726573732070726f7669646564", + "id": 1252, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2290:32:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_21a1cd38818adb750881fbf07c26ce7223dde608fdd9dadd31a0d41afeca2094", + "typeString": "literal_string \"Invalid owner address provided\"" + }, + "value": "Invalid owner address provided" } ], "expression": { @@ -6592,23 +7028,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_21a1cd38818adb750881fbf07c26ce7223dde608fdd9dadd31a0d41afeca2094", + "typeString": "literal_string \"Invalid owner address provided\"" } ], - "id": 1221, + "id": 1244, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "2059:7:9", + "referencedDeclaration": 2658, + "src": "2242:7:9", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1229, + "id": 1253, "isConstant": false, "isLValue": false, "isPure": false, @@ -6616,15 +7056,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2059:47:9", + "src": "2242:81:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1230, + "id": 1254, "nodeType": "ExpressionStatement", - "src": "2059:47:9" + "src": "2242:81:9" }, { "expression": { @@ -6636,7 +7076,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1236, + "id": 1260, "isConstant": false, "isLValue": false, "isPure": false, @@ -6645,26 +7085,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1232, + "id": 1256, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "2164:6:9", + "referencedDeclaration": 1132, + "src": "2381:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1234, + "id": 1258, "indexExpression": { "argumentTypes": null, - "id": 1233, + "id": 1257, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1214, - "src": "2171:5:9", + "referencedDeclaration": 1237, + "src": "2388:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6675,7 +7115,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2164:13:9", + "src": "2381:13:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6686,14 +7126,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1235, + "id": 1259, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2181:1:9", + "src": "2398:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -6701,11 +7141,29 @@ }, "value": "0" }, - "src": "2164:18:9", + "src": "2381:18:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "4164647265737320697320616c726561647920616e206f776e6572", + "id": 1261, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2401:29:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_9d461d71e19b25cd406798d062d7e61f961ad52541d3077a543e857810427d47", + "typeString": "literal_string \"Address is already an owner\"" + }, + "value": "Address is already an owner" } ], "expression": { @@ -6713,23 +7171,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_9d461d71e19b25cd406798d062d7e61f961ad52541d3077a543e857810427d47", + "typeString": "literal_string \"Address is already an owner\"" } ], - "id": 1231, + "id": 1255, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "2156:7:9", + "referencedDeclaration": 2658, + "src": "2373:7:9", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1237, + "id": 1262, "isConstant": false, "isLValue": false, "isPure": false, @@ -6737,20 +7199,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2156:27:9", + "src": "2373:58:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1238, + "id": 1263, "nodeType": "ExpressionStatement", - "src": "2156:27:9" + "src": "2373:58:9" }, { "expression": { "argumentTypes": null, - "id": 1245, + "id": 1270, "isConstant": false, "isLValue": false, "isPure": false, @@ -6759,26 +7221,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1239, + "id": 1264, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "2193:6:9", + "referencedDeclaration": 1132, + "src": "2441:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1241, + "id": 1266, "indexExpression": { "argumentTypes": null, - "id": 1240, + "id": 1265, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1214, - "src": "2200:5:9", + "referencedDeclaration": 1237, + "src": "2448:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6789,7 +7251,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2193:13:9", + "src": "2441:13:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6801,26 +7263,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1242, + "id": 1267, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "2209:6:9", + "referencedDeclaration": 1132, + "src": "2457:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1244, + "id": 1269, "indexExpression": { "argumentTypes": null, - "id": 1243, + "id": 1268, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1110, - "src": "2216:15:9", + "referencedDeclaration": 1128, + "src": "2464:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6831,26 +7293,26 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2209:23:9", + "src": "2457:23:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2193:39:9", + "src": "2441:39:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1246, + "id": 1271, "nodeType": "ExpressionStatement", - "src": "2193:39:9" + "src": "2441:39:9" }, { "expression": { "argumentTypes": null, - "id": 1251, + "id": 1276, "isConstant": false, "isLValue": false, "isPure": false, @@ -6859,26 +7321,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1247, + "id": 1272, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "2242:6:9", + "referencedDeclaration": 1132, + "src": "2490:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1249, + "id": 1274, "indexExpression": { "argumentTypes": null, - "id": 1248, + "id": 1273, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1110, - "src": "2249:15:9", + "referencedDeclaration": 1128, + "src": "2497:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6889,7 +7351,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2242:23:9", + "src": "2490:23:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6899,31 +7361,31 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1250, + "id": 1275, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1214, - "src": "2268:5:9", + "referencedDeclaration": 1237, + "src": "2516:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2242:31:9", + "src": "2490:31:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1252, + "id": 1277, "nodeType": "ExpressionStatement", - "src": "2242:31:9" + "src": "2490:31:9" }, { "expression": { "argumentTypes": null, - "id": 1254, + "id": 1279, "isConstant": false, "isLValue": false, "isPure": false, @@ -6931,15 +7393,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "2283:12:9", + "src": "2531:12:9", "subExpression": { "argumentTypes": null, - "id": 1253, + "id": 1278, "name": "ownerCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1116, - "src": "2283:10:9", + "referencedDeclaration": 1134, + "src": "2531:10:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6950,9 +7412,9 @@ "typeString": "uint256" } }, - "id": 1255, + "id": 1280, "nodeType": "ExpressionStatement", - "src": "2283:12:9" + "src": "2531:12:9" }, { "condition": { @@ -6961,19 +7423,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 1258, + "id": 1283, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1256, + "id": 1281, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1118, - "src": "2363:9:9", + "referencedDeclaration": 1136, + "src": "2611:9:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -6983,39 +7445,39 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 1257, + "id": 1282, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1216, - "src": "2376:10:9", + "referencedDeclaration": 1239, + "src": "2624:10:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "2363:23:9", + "src": "2611:23:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 1263, + "id": 1288, "nodeType": "IfStatement", - "src": "2359:68:9", + "src": "2607:68:9", "trueBody": { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 1260, + "id": 1285, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1216, - "src": "2416:10:9", + "referencedDeclaration": 1239, + "src": "2664:10:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -7029,18 +7491,18 @@ "typeString": "uint8" } ], - "id": 1259, + "id": 1284, "name": "changeThreshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1400, - "src": "2400:15:9", + "referencedDeclaration": 1432, + "src": "2648:15:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$returns$__$", "typeString": "function (uint8)" } }, - "id": 1261, + "id": 1286, "isConstant": false, "isLValue": false, "isPure": false, @@ -7048,58 +7510,58 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2400:27:9", + "src": "2648:27:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1262, + "id": 1287, "nodeType": "ExpressionStatement", - "src": "2400:27:9" + "src": "2648:27:9" } } ] }, "documentation": "@dev Allows to add a new owner to the Safe and update the threshold at the same time.\n This can only be done via a Safe transaction.\n @param owner New owner address.\n @param _threshold New threshold.", - "id": 1265, + "id": 1290, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 1219, + "id": 1242, "modifierName": { "argumentTypes": null, - "id": 1218, + "id": 1241, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1618, - "src": "1993:10:9", + "referencedDeclaration": 1653, + "src": "2176:10:9", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1993:10:9" + "src": "2176:10:9" } ], "name": "addOwnerWithThreshold", "nodeType": "FunctionDefinition", "parameters": { - "id": 1217, + "id": 1240, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1214, + "id": 1237, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 1265, - "src": "1937:13:9", + "scope": 1290, + "src": "2120:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7107,10 +7569,10 @@ "typeString": "address" }, "typeName": { - "id": 1213, + "id": 1236, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1937:7:9", + "src": "2120:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7121,11 +7583,11 @@ }, { "constant": false, - "id": 1216, + "id": 1239, "name": "_threshold", "nodeType": "VariableDeclaration", - "scope": 1265, - "src": "1952:16:9", + "scope": 1290, + "src": "2135:16:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7133,10 +7595,10 @@ "typeString": "uint8" }, "typeName": { - "id": 1215, + "id": 1238, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "1952:5:9", + "src": "2135:5:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -7146,26 +7608,26 @@ "visibility": "internal" } ], - "src": "1936:33:9" + "src": "2119:33:9" }, "payable": false, "returnParameters": { - "id": 1220, + "id": 1243, "nodeType": "ParameterList", "parameters": [], - "src": "2008:0:9" + "src": "2191:0:9" }, - "scope": 1472, - "src": "1906:528:9", + "scope": 1504, + "src": "2089:593:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1317, + "id": 1344, "nodeType": "Block", - "src": "2887:462:9", + "src": "3135:561:9", "statements": [ { "expression": { @@ -7177,7 +7639,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1281, + "id": 1306, "isConstant": false, "isLValue": false, "isPure": false, @@ -7188,19 +7650,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1279, + "id": 1304, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1277, + "id": 1302, "name": "ownerCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1116, - "src": "2982:10:9", + "referencedDeclaration": 1134, + "src": "3230:10:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7211,14 +7673,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31", - "id": 1278, + "id": 1303, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2995:1:9", + "src": "3243:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -7226,7 +7688,7 @@ }, "value": "1" }, - "src": "2982:14:9", + "src": "3230:14:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7236,22 +7698,40 @@ "operator": ">=", "rightExpression": { "argumentTypes": null, - "id": 1280, + "id": 1305, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1271, - "src": "3000:10:9", + "referencedDeclaration": 1296, + "src": "3248:10:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "2982:28:9", + "src": "3230:28:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "4e6577206f776e657220636f756e74206e6565647320746f206265206c6172676572207468616e206e6577207468726573686f6c64", + "id": 1307, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3260:55:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_839b4c4db845de24ec74ef067d85431087d6987a4c904418ee4f6ec699c02482", + "typeString": "literal_string \"New owner count needs to be larger than new threshold\"" + }, + "value": "New owner count needs to be larger than new threshold" } ], "expression": { @@ -7259,23 +7739,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_839b4c4db845de24ec74ef067d85431087d6987a4c904418ee4f6ec699c02482", + "typeString": "literal_string \"New owner count needs to be larger than new threshold\"" } ], - "id": 1276, + "id": 1301, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "2974:7:9", + "referencedDeclaration": 2658, + "src": "3222:7:9", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1282, + "id": 1308, "isConstant": false, "isLValue": false, "isPure": false, @@ -7283,15 +7767,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2974:37:9", + "src": "3222:94:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1283, + "id": 1309, "nodeType": "ExpressionStatement", - "src": "2974:37:9" + "src": "3222:94:9" }, { "expression": { @@ -7303,7 +7787,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1289, + "id": 1315, "isConstant": false, "isLValue": false, "isPure": false, @@ -7312,26 +7796,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1285, + "id": 1311, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "3091:6:9", + "referencedDeclaration": 1132, + "src": "3396:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1287, + "id": 1313, "indexExpression": { "argumentTypes": null, - "id": 1286, + "id": 1312, "name": "prevOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1267, - "src": "3098:9:9", + "referencedDeclaration": 1292, + "src": "3403:9:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7342,7 +7826,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3091:17:9", + "src": "3396:17:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7352,22 +7836,40 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 1288, + "id": 1314, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1269, - "src": "3112:5:9", + "referencedDeclaration": 1294, + "src": "3417:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "3091:26:9", + "src": "3396:26:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "496e76616c696420707265764f776e65722c206f776e657220706169722070726f7669646564", + "id": 1316, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3424:40:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_960698caed81fce71c9b7d572ab2e035b6014a5b812b51df8462ea9817fc4ebc", + "typeString": "literal_string \"Invalid prevOwner, owner pair provided\"" + }, + "value": "Invalid prevOwner, owner pair provided" } ], "expression": { @@ -7375,23 +7877,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_960698caed81fce71c9b7d572ab2e035b6014a5b812b51df8462ea9817fc4ebc", + "typeString": "literal_string \"Invalid prevOwner, owner pair provided\"" } ], - "id": 1284, + "id": 1310, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "3083:7:9", + "referencedDeclaration": 2658, + "src": "3388:7:9", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1290, + "id": 1317, "isConstant": false, "isLValue": false, "isPure": false, @@ -7399,20 +7905,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3083:35:9", + "src": "3388:77:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1291, + "id": 1318, "nodeType": "ExpressionStatement", - "src": "3083:35:9" + "src": "3388:77:9" }, { "expression": { "argumentTypes": null, - "id": 1298, + "id": 1325, "isConstant": false, "isLValue": false, "isPure": false, @@ -7421,26 +7927,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1292, + "id": 1319, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "3128:6:9", + "referencedDeclaration": 1132, + "src": "3475:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1294, + "id": 1321, "indexExpression": { "argumentTypes": null, - "id": 1293, + "id": 1320, "name": "prevOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1267, - "src": "3135:9:9", + "referencedDeclaration": 1292, + "src": "3482:9:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7451,7 +7957,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "3128:17:9", + "src": "3475:17:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7463,26 +7969,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1295, + "id": 1322, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "3148:6:9", + "referencedDeclaration": 1132, + "src": "3495:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1297, + "id": 1324, "indexExpression": { "argumentTypes": null, - "id": 1296, + "id": 1323, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1269, - "src": "3155:5:9", + "referencedDeclaration": 1294, + "src": "3502:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7493,26 +7999,26 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3148:13:9", + "src": "3495:13:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "3128:33:9", + "src": "3475:33:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1299, + "id": 1326, "nodeType": "ExpressionStatement", - "src": "3128:33:9" + "src": "3475:33:9" }, { "expression": { "argumentTypes": null, - "id": 1304, + "id": 1331, "isConstant": false, "isLValue": false, "isPure": false, @@ -7521,26 +8027,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1300, + "id": 1327, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "3171:6:9", + "referencedDeclaration": 1132, + "src": "3518:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1302, + "id": 1329, "indexExpression": { "argumentTypes": null, - "id": 1301, + "id": 1328, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1269, - "src": "3178:5:9", + "referencedDeclaration": 1294, + "src": "3525:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7551,7 +8057,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "3171:13:9", + "src": "3518:13:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7562,14 +8068,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "30", - "id": 1303, + "id": 1330, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3187:1:9", + "src": "3534:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -7577,20 +8083,20 @@ }, "value": "0" }, - "src": "3171:17:9", + "src": "3518:17:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1305, + "id": 1332, "nodeType": "ExpressionStatement", - "src": "3171:17:9" + "src": "3518:17:9" }, { "expression": { "argumentTypes": null, - "id": 1307, + "id": 1334, "isConstant": false, "isLValue": false, "isPure": false, @@ -7598,15 +8104,15 @@ "nodeType": "UnaryOperation", "operator": "--", "prefix": false, - "src": "3198:12:9", + "src": "3545:12:9", "subExpression": { "argumentTypes": null, - "id": 1306, + "id": 1333, "name": "ownerCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1116, - "src": "3198:10:9", + "referencedDeclaration": 1134, + "src": "3545:10:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -7617,9 +8123,9 @@ "typeString": "uint256" } }, - "id": 1308, + "id": 1335, "nodeType": "ExpressionStatement", - "src": "3198:12:9" + "src": "3545:12:9" }, { "condition": { @@ -7628,19 +8134,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 1311, + "id": 1338, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1309, + "id": 1336, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1118, - "src": "3278:9:9", + "referencedDeclaration": 1136, + "src": "3625:9:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -7650,39 +8156,39 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 1310, + "id": 1337, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1271, - "src": "3291:10:9", + "referencedDeclaration": 1296, + "src": "3638:10:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "3278:23:9", + "src": "3625:23:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 1316, + "id": 1343, "nodeType": "IfStatement", - "src": "3274:68:9", + "src": "3621:68:9", "trueBody": { "expression": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 1313, + "id": 1340, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1271, - "src": "3331:10:9", + "referencedDeclaration": 1296, + "src": "3678:10:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -7696,18 +8202,18 @@ "typeString": "uint8" } ], - "id": 1312, + "id": 1339, "name": "changeThreshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1400, - "src": "3315:15:9", + "referencedDeclaration": 1432, + "src": "3662:15:9", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$returns$__$", "typeString": "function (uint8)" } }, - "id": 1314, + "id": 1341, "isConstant": false, "isLValue": false, "isPure": false, @@ -7715,58 +8221,58 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3315:27:9", + "src": "3662:27:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1315, + "id": 1342, "nodeType": "ExpressionStatement", - "src": "3315:27:9" + "src": "3662:27:9" } } ] }, "documentation": "@dev Allows to remove an owner from the Safe and update the threshold at the same time.\n This can only be done via a Safe transaction.\n @param prevOwner Owner that pointed to the owner to be removed in the linked list\n @param owner Owner address to be removed.\n @param _threshold New threshold.", - "id": 1318, + "id": 1345, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 1274, + "id": 1299, "modifierName": { "argumentTypes": null, - "id": 1273, + "id": 1298, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1618, - "src": "2872:10:9", + "referencedDeclaration": 1653, + "src": "3120:10:9", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "2872:10:9" + "src": "3120:10:9" } ], "name": "removeOwner", "nodeType": "FunctionDefinition", "parameters": { - "id": 1272, + "id": 1297, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1267, + "id": 1292, "name": "prevOwner", "nodeType": "VariableDeclaration", - "scope": 1318, - "src": "2797:17:9", + "scope": 1345, + "src": "3045:17:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7774,10 +8280,10 @@ "typeString": "address" }, "typeName": { - "id": 1266, + "id": 1291, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2797:7:9", + "src": "3045:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7788,11 +8294,11 @@ }, { "constant": false, - "id": 1269, + "id": 1294, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 1318, - "src": "2816:13:9", + "scope": 1345, + "src": "3064:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7800,10 +8306,10 @@ "typeString": "address" }, "typeName": { - "id": 1268, + "id": 1293, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2816:7:9", + "src": "3064:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7814,11 +8320,11 @@ }, { "constant": false, - "id": 1271, + "id": 1296, "name": "_threshold", "nodeType": "VariableDeclaration", - "scope": 1318, - "src": "2831:16:9", + "scope": 1345, + "src": "3079:16:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7826,10 +8332,10 @@ "typeString": "uint8" }, "typeName": { - "id": 1270, + "id": 1295, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "2831:5:9", + "src": "3079:5:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -7839,26 +8345,26 @@ "visibility": "internal" } ], - "src": "2796:52:9" + "src": "3044:52:9" }, "payable": false, "returnParameters": { - "id": 1275, + "id": 1300, "nodeType": "ParameterList", "parameters": [], - "src": "2887:0:9" + "src": "3135:0:9" }, - "scope": 1472, - "src": "2776:573:9", + "scope": 1504, + "src": "3024:672:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1375, + "id": 1405, "nodeType": "Block", - "src": "3795:414:9", + "src": "4142:521:9", "statements": [ { "expression": { @@ -7870,7 +8376,7 @@ "typeIdentifier": "t_bool", "typeString": "bool" }, - "id": 1336, + "id": 1363, "isConstant": false, "isLValue": false, "isPure": false, @@ -7881,19 +8387,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1332, + "id": 1359, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1330, + "id": 1357, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1324, - "src": "3854:8:9", + "referencedDeclaration": 1351, + "src": "4201:8:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7904,14 +8410,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1331, + "id": 1358, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3866:1:9", + "src": "4213:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -7919,7 +8425,7 @@ }, "value": "0" }, - "src": "3854:13:9", + "src": "4201:13:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -7933,19 +8439,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1335, + "id": 1362, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1333, + "id": 1360, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1324, - "src": "3871:8:9", + "referencedDeclaration": 1351, + "src": "4218:8:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -7955,28 +8461,46 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 1334, + "id": 1361, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1110, - "src": "3883:15:9", + "referencedDeclaration": 1128, + "src": "4230:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "3871:27:9", + "src": "4218:27:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "src": "3854:44:9", + "src": "4201:44:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "496e76616c6964206f776e657220616464726573732070726f7669646564", + "id": 1364, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4247:32:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_21a1cd38818adb750881fbf07c26ce7223dde608fdd9dadd31a0d41afeca2094", + "typeString": "literal_string \"Invalid owner address provided\"" + }, + "value": "Invalid owner address provided" } ], "expression": { @@ -7984,23 +8508,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_21a1cd38818adb750881fbf07c26ce7223dde608fdd9dadd31a0d41afeca2094", + "typeString": "literal_string \"Invalid owner address provided\"" } ], - "id": 1329, + "id": 1356, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "3846:7:9", + "referencedDeclaration": 2658, + "src": "4193:7:9", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1337, + "id": 1365, "isConstant": false, "isLValue": false, "isPure": false, @@ -8008,15 +8536,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3846:53:9", + "src": "4193:87:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1338, + "id": 1366, "nodeType": "ExpressionStatement", - "src": "3846:53:9" + "src": "4193:87:9" }, { "expression": { @@ -8028,7 +8556,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1344, + "id": 1372, "isConstant": false, "isLValue": false, "isPure": false, @@ -8037,26 +8565,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1340, + "id": 1368, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "3957:6:9", + "referencedDeclaration": 1132, + "src": "4338:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1342, + "id": 1370, "indexExpression": { "argumentTypes": null, - "id": 1341, + "id": 1369, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1324, - "src": "3964:8:9", + "referencedDeclaration": 1351, + "src": "4345:8:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8067,7 +8595,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3957:16:9", + "src": "4338:16:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8078,14 +8606,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1343, + "id": 1371, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3977:1:9", + "src": "4358:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -8093,11 +8621,29 @@ }, "value": "0" }, - "src": "3957:21:9", + "src": "4338:21:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "4164647265737320697320616c726561647920616e206f776e6572", + "id": 1373, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4361:29:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_9d461d71e19b25cd406798d062d7e61f961ad52541d3077a543e857810427d47", + "typeString": "literal_string \"Address is already an owner\"" + }, + "value": "Address is already an owner" } ], "expression": { @@ -8105,23 +8651,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_9d461d71e19b25cd406798d062d7e61f961ad52541d3077a543e857810427d47", + "typeString": "literal_string \"Address is already an owner\"" } ], - "id": 1339, + "id": 1367, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "3949:7:9", + "referencedDeclaration": 2658, + "src": "4330:7:9", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1345, + "id": 1374, "isConstant": false, "isLValue": false, "isPure": false, @@ -8129,15 +8679,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3949:30:9", + "src": "4330:61:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1346, + "id": 1375, "nodeType": "ExpressionStatement", - "src": "3949:30:9" + "src": "4330:61:9" }, { "expression": { @@ -8149,7 +8699,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1352, + "id": 1381, "isConstant": false, "isLValue": false, "isPure": false, @@ -8158,26 +8708,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1348, + "id": 1377, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "4059:6:9", + "referencedDeclaration": 1132, + "src": "4471:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1350, + "id": 1379, "indexExpression": { "argumentTypes": null, - "id": 1349, + "id": 1378, "name": "prevOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1320, - "src": "4066:9:9", + "referencedDeclaration": 1347, + "src": "4478:9:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8188,7 +8738,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4059:17:9", + "src": "4471:17:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8198,22 +8748,40 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 1351, + "id": 1380, "name": "oldOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1322, - "src": "4080:8:9", + "referencedDeclaration": 1349, + "src": "4492:8:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4059:29:9", + "src": "4471:29:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "496e76616c696420707265764f776e65722c206f776e657220706169722070726f7669646564", + "id": 1382, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "4502:40:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_960698caed81fce71c9b7d572ab2e035b6014a5b812b51df8462ea9817fc4ebc", + "typeString": "literal_string \"Invalid prevOwner, owner pair provided\"" + }, + "value": "Invalid prevOwner, owner pair provided" } ], "expression": { @@ -8221,23 +8789,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_960698caed81fce71c9b7d572ab2e035b6014a5b812b51df8462ea9817fc4ebc", + "typeString": "literal_string \"Invalid prevOwner, owner pair provided\"" } ], - "id": 1347, + "id": 1376, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "4051:7:9", + "referencedDeclaration": 2658, + "src": "4463:7:9", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1353, + "id": 1383, "isConstant": false, "isLValue": false, "isPure": false, @@ -8245,20 +8817,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4051:38:9", + "src": "4463:80:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1354, + "id": 1384, "nodeType": "ExpressionStatement", - "src": "4051:38:9" + "src": "4463:80:9" }, { "expression": { "argumentTypes": null, - "id": 1361, + "id": 1391, "isConstant": false, "isLValue": false, "isPure": false, @@ -8267,26 +8839,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1355, + "id": 1385, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "4099:6:9", + "referencedDeclaration": 1132, + "src": "4553:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1357, + "id": 1387, "indexExpression": { "argumentTypes": null, - "id": 1356, + "id": 1386, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1324, - "src": "4106:8:9", + "referencedDeclaration": 1351, + "src": "4560:8:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8297,7 +8869,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "4099:16:9", + "src": "4553:16:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8309,26 +8881,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1358, + "id": 1388, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "4118:6:9", + "referencedDeclaration": 1132, + "src": "4572:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1360, + "id": 1390, "indexExpression": { "argumentTypes": null, - "id": 1359, + "id": 1389, "name": "oldOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1322, - "src": "4125:8:9", + "referencedDeclaration": 1349, + "src": "4579:8:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8339,26 +8911,26 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4118:16:9", + "src": "4572:16:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4099:35:9", + "src": "4553:35:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1362, + "id": 1392, "nodeType": "ExpressionStatement", - "src": "4099:35:9" + "src": "4553:35:9" }, { "expression": { "argumentTypes": null, - "id": 1367, + "id": 1397, "isConstant": false, "isLValue": false, "isPure": false, @@ -8367,26 +8939,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1363, + "id": 1393, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "4144:6:9", + "referencedDeclaration": 1132, + "src": "4598:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1365, + "id": 1395, "indexExpression": { "argumentTypes": null, - "id": 1364, + "id": 1394, "name": "prevOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1320, - "src": "4151:9:9", + "referencedDeclaration": 1347, + "src": "4605:9:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8397,7 +8969,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "4144:17:9", + "src": "4598:17:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8407,31 +8979,31 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1366, + "id": 1396, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1324, - "src": "4164:8:9", + "referencedDeclaration": 1351, + "src": "4618:8:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "4144:28:9", + "src": "4598:28:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1368, + "id": 1398, "nodeType": "ExpressionStatement", - "src": "4144:28:9" + "src": "4598:28:9" }, { "expression": { "argumentTypes": null, - "id": 1373, + "id": 1403, "isConstant": false, "isLValue": false, "isPure": false, @@ -8440,26 +9012,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1369, + "id": 1399, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "4182:6:9", + "referencedDeclaration": 1132, + "src": "4636:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1371, + "id": 1401, "indexExpression": { "argumentTypes": null, - "id": 1370, + "id": 1400, "name": "oldOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1322, - "src": "4189:8:9", + "referencedDeclaration": 1349, + "src": "4643:8:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8470,7 +9042,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "4182:16:9", + "src": "4636:16:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8481,14 +9053,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "30", - "id": 1372, + "id": 1402, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4201:1:9", + "src": "4655:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -8496,57 +9068,57 @@ }, "value": "0" }, - "src": "4182:20:9", + "src": "4636:20:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1374, + "id": 1404, "nodeType": "ExpressionStatement", - "src": "4182:20:9" + "src": "4636:20:9" } ] }, "documentation": "@dev Allows to swap/replace an owner from the Safe with another address.\n This can only be done via a Safe transaction.\n @param prevOwner Owner that pointed to the owner to be replaced in the linked list\n @param oldOwner Owner address to be replaced.\n @param newOwner New owner address.", - "id": 1376, + "id": 1406, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 1327, + "id": 1354, "modifierName": { "argumentTypes": null, - "id": 1326, + "id": 1353, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1618, - "src": "3780:10:9", + "referencedDeclaration": 1653, + "src": "4127:10:9", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "3780:10:9" + "src": "4127:10:9" } ], "name": "swapOwner", "nodeType": "FunctionDefinition", "parameters": { - "id": 1325, + "id": 1352, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1320, + "id": 1347, "name": "prevOwner", "nodeType": "VariableDeclaration", - "scope": 1376, - "src": "3702:17:9", + "scope": 1406, + "src": "4049:17:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8554,10 +9126,10 @@ "typeString": "address" }, "typeName": { - "id": 1319, + "id": 1346, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3702:7:9", + "src": "4049:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8568,11 +9140,11 @@ }, { "constant": false, - "id": 1322, + "id": 1349, "name": "oldOwner", "nodeType": "VariableDeclaration", - "scope": 1376, - "src": "3721:16:9", + "scope": 1406, + "src": "4068:16:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8580,10 +9152,10 @@ "typeString": "address" }, "typeName": { - "id": 1321, + "id": 1348, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3721:7:9", + "src": "4068:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8594,11 +9166,11 @@ }, { "constant": false, - "id": 1324, + "id": 1351, "name": "newOwner", "nodeType": "VariableDeclaration", - "scope": 1376, - "src": "3739:16:9", + "scope": 1406, + "src": "4086:16:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8606,10 +9178,10 @@ "typeString": "address" }, "typeName": { - "id": 1323, + "id": 1350, "name": "address", "nodeType": "ElementaryTypeName", - "src": "3739:7:9", + "src": "4086:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -8619,26 +9191,26 @@ "visibility": "internal" } ], - "src": "3701:55:9" + "src": "4048:55:9" }, "payable": false, "returnParameters": { - "id": 1328, + "id": 1355, "nodeType": "ParameterList", "parameters": [], - "src": "3795:0:9" + "src": "4142:0:9" }, - "scope": 1472, - "src": "3683:526:9", + "scope": 1504, + "src": "4030:633:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1399, + "id": 1431, "nodeType": "Block", - "src": "4479:237:9", + "src": "4933:316:9", "statements": [ { "expression": { @@ -8650,19 +9222,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1386, + "id": 1416, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1384, + "id": 1414, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1378, - "src": "4566:10:9", + "referencedDeclaration": 1408, + "src": "5020:10:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -8672,22 +9244,40 @@ "operator": "<=", "rightExpression": { "argumentTypes": null, - "id": 1385, + "id": 1415, "name": "ownerCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1116, - "src": "4580:10:9", + "referencedDeclaration": 1134, + "src": "5034:10:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "4566:24:9", + "src": "5020:24:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "5468726573686f6c642063616e6e6f7420657863656564206f776e657220636f756e74", + "id": 1417, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5046:37:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_63d26a9feb8568677e5c255c04e4da88e86a25137d5152a9a089790b7e710e86", + "typeString": "literal_string \"Threshold cannot exceed owner count\"" + }, + "value": "Threshold cannot exceed owner count" } ], "expression": { @@ -8695,23 +9285,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_63d26a9feb8568677e5c255c04e4da88e86a25137d5152a9a089790b7e710e86", + "typeString": "literal_string \"Threshold cannot exceed owner count\"" } ], - "id": 1383, + "id": 1413, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "4558:7:9", + "referencedDeclaration": 2658, + "src": "5012:7:9", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1387, + "id": 1418, "isConstant": false, "isLValue": false, "isPure": false, @@ -8719,15 +9313,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4558:33:9", + "src": "5012:72:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1388, + "id": 1419, "nodeType": "ExpressionStatement", - "src": "4558:33:9" + "src": "5012:72:9" }, { "expression": { @@ -8739,19 +9333,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 1392, + "id": 1423, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1390, + "id": 1421, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1378, - "src": "4661:10:9", + "referencedDeclaration": 1408, + "src": "5154:10:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -8762,14 +9356,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "31", - "id": 1391, + "id": 1422, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4675:1:9", + "src": "5168:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_1_by_1", @@ -8777,11 +9371,29 @@ }, "value": "1" }, - "src": "4661:15:9", + "src": "5154:15:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "5468726573686f6c64206e6565647320746f2062652067726561746572207468616e2030", + "id": 1424, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "5171:38:9", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_b995394ed6031392a784e6dd5e04285cca83077a8dc3873d2fb7fcb090297ab4", + "typeString": "literal_string \"Threshold needs to be greater than 0\"" + }, + "value": "Threshold needs to be greater than 0" } ], "expression": { @@ -8789,23 +9401,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_b995394ed6031392a784e6dd5e04285cca83077a8dc3873d2fb7fcb090297ab4", + "typeString": "literal_string \"Threshold needs to be greater than 0\"" } ], - "id": 1389, + "id": 1420, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "4653:7:9", + "referencedDeclaration": 2658, + "src": "5146:7:9", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1393, + "id": 1425, "isConstant": false, "isLValue": false, "isPure": false, @@ -8813,32 +9429,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "4653:24:9", + "src": "5146:64:9", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1394, + "id": 1426, "nodeType": "ExpressionStatement", - "src": "4653:24:9" + "src": "5146:64:9" }, { "expression": { "argumentTypes": null, - "id": 1397, + "id": 1429, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1395, + "id": 1427, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1118, - "src": "4687:9:9", + "referencedDeclaration": 1136, + "src": "5220:9:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -8848,68 +9464,68 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1396, + "id": 1428, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1378, - "src": "4699:10:9", + "referencedDeclaration": 1408, + "src": "5232:10:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "4687:22:9", + "src": "5220:22:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "id": 1398, + "id": 1430, "nodeType": "ExpressionStatement", - "src": "4687:22:9" + "src": "5220:22:9" } ] }, "documentation": "@dev Allows to update the number of required confirmations by Safe owners.\n This can only be done via a Safe transaction.\n @param _threshold New threshold.", - "id": 1400, + "id": 1432, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 1381, + "id": 1411, "modifierName": { "argumentTypes": null, - "id": 1380, + "id": 1410, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1618, - "src": "4464:10:9", + "referencedDeclaration": 1653, + "src": "4918:10:9", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "4464:10:9" + "src": "4918:10:9" } ], "name": "changeThreshold", "nodeType": "FunctionDefinition", "parameters": { - "id": 1379, + "id": 1409, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1378, + "id": 1408, "name": "_threshold", "nodeType": "VariableDeclaration", - "scope": 1400, - "src": "4423:16:9", + "scope": 1432, + "src": "4877:16:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -8917,10 +9533,10 @@ "typeString": "uint8" }, "typeName": { - "id": 1377, + "id": 1407, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "4423:5:9", + "src": "4877:5:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -8930,50 +9546,50 @@ "visibility": "internal" } ], - "src": "4422:18:9" + "src": "4876:18:9" }, "payable": false, "returnParameters": { - "id": 1382, + "id": 1412, "nodeType": "ParameterList", "parameters": [], - "src": "4479:0:9" + "src": "4933:0:9" }, - "scope": 1472, - "src": "4398:318:9", + "scope": 1504, + "src": "4852:397:9", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1407, + "id": 1439, "nodeType": "Block", - "src": "4802:33:9", + "src": "5335:33:9", "statements": [ { "expression": { "argumentTypes": null, - "id": 1405, + "id": 1437, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1118, - "src": "4819:9:9", + "referencedDeclaration": 1136, + "src": "5352:9:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "functionReturnParameters": 1404, - "id": 1406, + "functionReturnParameters": 1436, + "id": 1438, "nodeType": "Return", - "src": "4812:16:9" + "src": "5345:16:9" } ] }, "documentation": null, - "id": 1408, + "id": 1440, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -8981,23 +9597,23 @@ "name": "getThreshold", "nodeType": "FunctionDefinition", "parameters": { - "id": 1401, + "id": 1433, "nodeType": "ParameterList", "parameters": [], - "src": "4743:2:9" + "src": "5276:2:9" }, "payable": false, "returnParameters": { - "id": 1404, + "id": 1436, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1403, + "id": 1435, "name": "", "nodeType": "VariableDeclaration", - "scope": 1408, - "src": "4791:5:9", + "scope": 1440, + "src": "5324:5:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9005,10 +9621,10 @@ "typeString": "uint8" }, "typeName": { - "id": 1402, + "id": 1434, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "4791:5:9", + "src": "5324:5:9", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -9018,19 +9634,19 @@ "visibility": "internal" } ], - "src": "4790:7:9" + "src": "5323:7:9" }, - "scope": 1472, - "src": "4722:113:9", + "scope": 1504, + "src": "5255:113:9", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1421, + "id": 1453, "nodeType": "Block", - "src": "4928:42:9", + "src": "5461:42:9", "statements": [ { "expression": { @@ -9039,7 +9655,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1419, + "id": 1451, "isConstant": false, "isLValue": false, "isPure": false, @@ -9048,26 +9664,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1415, + "id": 1447, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "4945:6:9", + "referencedDeclaration": 1132, + "src": "5478:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1417, + "id": 1449, "indexExpression": { "argumentTypes": null, - "id": 1416, + "id": 1448, "name": "owner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1410, - "src": "4952:5:9", + "referencedDeclaration": 1442, + "src": "5485:5:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9078,7 +9694,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "4945:13:9", + "src": "5478:13:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9089,14 +9705,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1418, + "id": 1450, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "4962:1:9", + "src": "5495:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -9104,21 +9720,21 @@ }, "value": "0" }, - "src": "4945:18:9", + "src": "5478:18:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "functionReturnParameters": 1414, - "id": 1420, + "functionReturnParameters": 1446, + "id": 1452, "nodeType": "Return", - "src": "4938:25:9" + "src": "5471:25:9" } ] }, "documentation": null, - "id": 1422, + "id": 1454, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -9126,16 +9742,16 @@ "name": "isOwner", "nodeType": "FunctionDefinition", "parameters": { - "id": 1411, + "id": 1443, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1410, + "id": 1442, "name": "owner", "nodeType": "VariableDeclaration", - "scope": 1422, - "src": "4858:13:9", + "scope": 1454, + "src": "5391:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9143,10 +9759,10 @@ "typeString": "address" }, "typeName": { - "id": 1409, + "id": 1441, "name": "address", "nodeType": "ElementaryTypeName", - "src": "4858:7:9", + "src": "5391:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9156,20 +9772,20 @@ "visibility": "internal" } ], - "src": "4857:15:9" + "src": "5390:15:9" }, "payable": false, "returnParameters": { - "id": 1414, + "id": 1446, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1413, + "id": 1445, "name": "", "nodeType": "VariableDeclaration", - "scope": 1422, - "src": "4918:4:9", + "scope": 1454, + "src": "5451:4:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9177,10 +9793,10 @@ "typeString": "bool" }, "typeName": { - "id": 1412, + "id": 1444, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "4918:4:9", + "src": "5451:4:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -9190,32 +9806,32 @@ "visibility": "internal" } ], - "src": "4917:6:9" + "src": "5450:6:9" }, - "scope": 1472, - "src": "4841:129:9", + "scope": 1504, + "src": "5374:129:9", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1470, + "id": 1502, "nodeType": "Block", - "src": "5133:377:9", + "src": "5666:377:9", "statements": [ { "assignments": [ - 1431 + 1463 ], "declarations": [ { "constant": false, - "id": 1431, + "id": 1463, "name": "array", "nodeType": "VariableDeclaration", - "scope": 1471, - "src": "5143:22:9", + "scope": 1503, + "src": "5676:22:9", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -9224,19 +9840,19 @@ }, "typeName": { "baseType": { - "id": 1429, + "id": 1461, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5143:7:9", + "src": "5676:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1430, + "id": 1462, "length": null, "nodeType": "ArrayTypeName", - "src": "5143:9:9", + "src": "5676:9:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -9246,18 +9862,18 @@ "visibility": "internal" } ], - "id": 1437, + "id": 1469, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 1435, + "id": 1467, "name": "ownerCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1116, - "src": "5182:10:9", + "referencedDeclaration": 1134, + "src": "5715:10:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9271,39 +9887,39 @@ "typeString": "uint256" } ], - "id": 1434, + "id": 1466, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "NewExpression", - "src": "5168:13:9", + "src": "5701:13:9", "typeDescriptions": { "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_$", "typeString": "function (uint256) pure returns (address[] memory)" }, "typeName": { "baseType": { - "id": 1432, + "id": 1464, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5172:7:9", + "src": "5705:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1433, + "id": 1465, "length": null, "nodeType": "ArrayTypeName", - "src": "5172:9:9", + "src": "5705:9:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" } } }, - "id": 1436, + "id": 1468, "isConstant": false, "isLValue": false, "isPure": false, @@ -9311,27 +9927,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "5168:25:9", + "src": "5701:25:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory", "typeString": "address[] memory" } }, "nodeType": "VariableDeclarationStatement", - "src": "5143:50:9" + "src": "5676:50:9" }, { "assignments": [ - 1439 + 1471 ], "declarations": [ { "constant": false, - "id": 1439, + "id": 1471, "name": "index", "nodeType": "VariableDeclaration", - "scope": 1471, - "src": "5237:13:9", + "scope": 1503, + "src": "5770:13:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9339,10 +9955,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1438, + "id": 1470, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "5237:7:9", + "src": "5770:7:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9352,18 +9968,18 @@ "visibility": "internal" } ], - "id": 1441, + "id": 1473, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 1440, + "id": 1472, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "5253:1:9", + "src": "5786:1:9", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -9372,20 +9988,20 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "5237:17:9" + "src": "5770:17:9" }, { "assignments": [ - 1443 + 1475 ], "declarations": [ { "constant": false, - "id": 1443, + "id": 1475, "name": "currentOwner", "nodeType": "VariableDeclaration", - "scope": 1471, - "src": "5264:20:9", + "scope": 1503, + "src": "5797:20:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9393,10 +10009,10 @@ "typeString": "address" }, "typeName": { - "id": 1442, + "id": 1474, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5264:7:9", + "src": "5797:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9406,31 +10022,31 @@ "visibility": "internal" } ], - "id": 1447, + "id": 1479, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1444, + "id": 1476, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "5287:6:9", + "referencedDeclaration": 1132, + "src": "5820:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1446, + "id": 1478, "indexExpression": { "argumentTypes": null, - "id": 1445, + "id": 1477, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1110, - "src": "5294:15:9", + "referencedDeclaration": 1128, + "src": "5827:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9441,25 +10057,25 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "5287:23:9", + "src": "5820:23:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "5264:46:9" + "src": "5797:46:9" }, { "body": { - "id": 1466, + "id": 1498, "nodeType": "Block", - "src": "5359:123:9", + "src": "5892:123:9", "statements": [ { "expression": { "argumentTypes": null, - "id": 1455, + "id": 1487, "isConstant": false, "isLValue": false, "isPure": false, @@ -9468,26 +10084,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1451, + "id": 1483, "name": "array", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1431, - "src": "5373:5:9", + "referencedDeclaration": 1463, + "src": "5906:5:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 1453, + "id": 1485, "indexExpression": { "argumentTypes": null, - "id": 1452, + "id": 1484, "name": "index", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1439, - "src": "5379:5:9", + "referencedDeclaration": 1471, + "src": "5912:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9498,7 +10114,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "5373:12:9", + "src": "5906:12:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9508,43 +10124,43 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1454, + "id": 1486, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1443, - "src": "5388:12:9", + "referencedDeclaration": 1475, + "src": "5921:12:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "5373:27:9", + "src": "5906:27:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1456, + "id": 1488, "nodeType": "ExpressionStatement", - "src": "5373:27:9" + "src": "5906:27:9" }, { "expression": { "argumentTypes": null, - "id": 1461, + "id": 1493, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1457, + "id": 1489, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1443, - "src": "5414:12:9", + "referencedDeclaration": 1475, + "src": "5947:12:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9556,26 +10172,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 1458, + "id": 1490, "name": "owners", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1114, - "src": "5429:6:9", + "referencedDeclaration": 1132, + "src": "5962:6:9", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_address_$", "typeString": "mapping(address => address)" } }, - "id": 1460, + "id": 1492, "indexExpression": { "argumentTypes": null, - "id": 1459, + "id": 1491, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1443, - "src": "5436:12:9", + "referencedDeclaration": 1475, + "src": "5969:12:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9586,26 +10202,26 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "5429:20:9", + "src": "5962:20:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "5414:35:9", + "src": "5947:35:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1462, + "id": 1494, "nodeType": "ExpressionStatement", - "src": "5414:35:9" + "src": "5947:35:9" }, { "expression": { "argumentTypes": null, - "id": 1464, + "id": 1496, "isConstant": false, "isLValue": false, "isPure": false, @@ -9613,15 +10229,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "5463:8:9", + "src": "5996:8:9", "subExpression": { "argumentTypes": null, - "id": 1463, + "id": 1495, "name": "index", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1439, - "src": "5463:5:9", + "referencedDeclaration": 1471, + "src": "5996:5:9", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -9632,9 +10248,9 @@ "typeString": "uint256" } }, - "id": 1465, + "id": 1497, "nodeType": "ExpressionStatement", - "src": "5463:8:9" + "src": "5996:8:9" } ] }, @@ -9644,19 +10260,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1450, + "id": 1482, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1448, + "id": 1480, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1443, - "src": "5326:12:9", + "referencedDeclaration": 1475, + "src": "5859:12:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -9666,50 +10282,50 @@ "operator": "!=", "rightExpression": { "argumentTypes": null, - "id": 1449, + "id": 1481, "name": "SENTINEL_OWNERS", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1110, - "src": "5342:15:9", + "referencedDeclaration": 1128, + "src": "5875:15:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "5326:31:9", + "src": "5859:31:9", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 1467, + "id": 1499, "nodeType": "WhileStatement", - "src": "5320:162:9" + "src": "5853:162:9" }, { "expression": { "argumentTypes": null, - "id": 1468, + "id": 1500, "name": "array", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1431, - "src": "5498:5:9", + "referencedDeclaration": 1463, + "src": "6031:5:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "functionReturnParameters": 1427, - "id": 1469, + "functionReturnParameters": 1459, + "id": 1501, "nodeType": "Return", - "src": "5491:12:9" + "src": "6024:12:9" } ] }, "documentation": "@dev Returns array of owners.\n @return Array of Safe owners.", - "id": 1471, + "id": 1503, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -9717,23 +10333,23 @@ "name": "getOwners", "nodeType": "FunctionDefinition", "parameters": { - "id": 1423, + "id": 1455, "nodeType": "ParameterList", "parameters": [], - "src": "5070:2:9" + "src": "5603:2:9" }, "payable": false, "returnParameters": { - "id": 1427, + "id": 1459, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1426, + "id": 1458, "name": "", "nodeType": "VariableDeclaration", - "scope": 1471, - "src": "5118:9:9", + "scope": 1503, + "src": "5651:9:9", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -9742,19 +10358,19 @@ }, "typeName": { "baseType": { - "id": 1424, + "id": 1456, "name": "address", "nodeType": "ElementaryTypeName", - "src": "5118:7:9", + "src": "5651:7:9", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1425, + "id": 1457, "length": null, "nodeType": "ArrayTypeName", - "src": "5118:9:9", + "src": "5651:9:9", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -9764,20 +10380,20 @@ "visibility": "internal" } ], - "src": "5117:11:9" + "src": "5650:11:9" }, - "scope": 1472, - "src": "5052:458:9", + "scope": 1504, + "src": "5585:458:9", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 1473, - "src": "240:5272:9" + "scope": 1505, + "src": "240:5805:9" } ], - "src": "0:5513:9" + "src": "0:6046:9" }, "compiler": { "name": "solc", @@ -9785,5 +10401,5 @@ }, "networks": {}, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-27T11:12:45.581Z" + "updatedAt": "2018-05-28T05:59:52.704Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/PayingProxy.json b/safe-contracts/build/contracts/PayingProxy.json index cc23c45941..2c116250cf 100644 --- a/safe-contracts/build/contracts/PayingProxy.json +++ b/safe-contracts/build/contracts/PayingProxy.json @@ -62,24 +62,24 @@ "type": "fallback" } ], - "bytecode": "0x608060405234801561001057600080fd5b5060405161040a38038061040a833981018060405281019080805190602001909291908051820192919060200180519060200190929190805190602001909291908051906020019092919050505084848160008173ffffffffffffffffffffffffffffffffffffffff161415151561008757600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506000815111156101145773ffffffffffffffffffffffffffffffffffffffff60005416600080835160208501846127105a03f46040513d6000823e6000821415610110573d81fd5b5050505b5050600081111561028b57600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156101a0578273ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561019a573d6000803e3d6000fd5b5061028a565b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561024357600080fd5b505af1158015610257573d6000803e3d6000fd5b505050506040513d602081101561026d57600080fd5b8101908080519060200190929190505050151561028957600080fd5b5b5b505050505061016b8061029f6000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461008b5780635c60da1b146100b6575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e6000811415610086573d6000fd5b3d6000f35b34801561009757600080fd5b506100a061010d565b6040518082815260200191505060405180910390f35b3480156100c257600080fd5b506100cb610116565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006002905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a72305820c6b5ccee92e07d7ace7597f14eb09050cef9e7752ac4efc079975eb065e226060029", - "deployedBytecode": "0x60806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461008b5780635c60da1b146100b6575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e6000811415610086573d6000fd5b3d6000f35b34801561009757600080fd5b506100a061010d565b6040518082815260200191505060405180910390f35b3480156100c257600080fd5b506100cb610116565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006002905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a72305820c6b5ccee92e07d7ace7597f14eb09050cef9e7752ac4efc079975eb065e226060029", - "sourceMap": "452:905:10:-;;;924:431;8:9:-1;5:2;;;30:1;27;20:12;5:2;924:431:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1065:11;1078;668::0;593:1:11;578:11;:16;;;;570:25;;;;;;;;618:11;605:10;;:24;;;;;;;;;;;;;;;;;;508:128;735:1:0;714:11;:18;:22;710:519;;;879:42;875:1;869:8;865:57;1043:1;1040;1026:11;1020:18;1013:4;1000:11;996:22;984:10;976:5;971:3;967:15;954:91;1079:4;1073:11;1124:14;1121:1;1116:3;1101:38;1171:1;1162:7;1159:14;1156:2;;;1188:14;1183:3;1176:27;1156:2;829:390;;;;610:625;;1134:1:10;1124:7;:11;1120:228;;;1179:1;1155:26;;:12;:26;;;1151:187;;;1201:6;:15;;:24;1217:7;1201:24;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1201:24:10;1151:187;;;1283:12;1272:33;;;1306:6;1314:7;1272:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1272:50:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1272:50:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1272:50:10;;;;;;;;;;;;;;;;1264:59;;;;;;;;1151:187;1120:228;924:431;;;;;452:905;;;;;;", - "deployedSourceMap": "452:905:10:-;;;;;;;;;;;;;;;;;;;;;;;;;;915:42:11;911:1;905:8;901:57;990:14;987:1;984;971:34;1085:1;1082;1066:14;1063:1;1051:10;1046:3;1033:54;1121:16;1118:1;1115;1100:38;1166:1;1157:7;1154:14;1151:2;;;1181:16;1178:1;1171:27;1151:2;1223:16;1220:1;1213:27;1386:104;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1386:104:11;;;;;;;;;;;;;;;;;;;;;;;1262:118;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1262:118:11;;;;;;;;;;;;;;;;;;;;;;;;;;;1386:104;1452:7;1482:1;1475:8;;1386:104;:::o;1262:118::-;1333:7;1363:10;;;;;;;;;;;1356:17;;1262:118;:::o", - "source": "pragma solidity 0.4.24;\nimport \"./DelegateConstructorProxy.sol\";\nimport \"./interfaces/ERC20Token.sol\";\n\n/// @title Paying Proxy - Generic proxy contract allows to execute all transactions applying the code of a master contract. It is possible to send along initialization data with the constructor. And sends funds after creation to a specified account.\n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract PayingProxy is DelegateConstructorProxy {\n\n /// @dev Constructor function sets address of master copy contract.\n /// @param _masterCopy Master copy address.\n /// @param initializer Data used for a delegate call to initialize the contract.\n /// @param funder Address that should be paid for the execution of this call\n /// @param paymentToken Token that should be used for the payment (0 is ETH)\n /// @param payment Value that should be paid\n constructor(address _masterCopy, bytes initializer, address funder, address paymentToken, uint256 payment) \n DelegateConstructorProxy(_masterCopy, initializer)\n public\n {\n if (payment > 0) {\n if (paymentToken == address(0)) {\n funder.transfer(payment);\n } else {\n require(ERC20Token(paymentToken).transfer(funder, payment));\n }\n } \n }\n}\n", + "bytecode": "0x608060405234801561001057600080fd5b50604051610502380380610502833981018060405281019080805190602001909291908051820192919060200180519060200190929190805190602001909291908051906020019092919050505084848160008173ffffffffffffffffffffffffffffffffffffffff1614151515610116576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f496e76616c6964206d617374657220636f707920616464726573732070726f7681526020017f696465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506000815111156101a35773ffffffffffffffffffffffffffffffffffffffff60005416600080835160208501846127105a03f46040513d6000823e600082141561019f573d81fd5b5050505b5050600081111561038357600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561022f578273ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610229573d6000803e3d6000fd5b50610382565b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156102d257600080fd5b505af11580156102e6573d6000803e3d6000fd5b505050506040513d60208110156102fc57600080fd5b81019080805190602001909291905050501515610381576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f436f756c64206e6f74206578656375746520746f6b656e207061796d656e740081525060200191505060405180910390fd5b5b5b505050505061016b806103976000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461008b5780635c60da1b146100b6575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e6000811415610086573d6000fd5b3d6000f35b34801561009757600080fd5b506100a061010d565b6040518082815260200191505060405180910390f35b3480156100c257600080fd5b506100cb610116565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006002905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a723058207c0d46b157e8df6d783e305a80b9c841f620d4bf15b4e2b2c93f261b93e8d6fa0029", + "deployedBytecode": "0x60806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461008b5780635c60da1b146100b6575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e6000811415610086573d6000fd5b3d6000f35b34801561009757600080fd5b506100a061010d565b6040518082815260200191505060405180910390f35b3480156100c257600080fd5b506100cb610116565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006002905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a723058207c0d46b157e8df6d783e305a80b9c841f620d4bf15b4e2b2c93f261b93e8d6fa0029", + "sourceMap": "452:940:10:-;;;924:466;8:9:-1;5:2;;;30:1;27;20:12;5:2;924:466:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1065:11;1078;668::0;593:1:11;578:11;:16;;;;570:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;658:11;645:10;;:24;;;;;;;;;;;;;;;;;;508:168;735:1:0;714:11;:18;:22;710:519;;;879:42;875:1;869:8;865:57;1043:1;1040;1026:11;1020:18;1013:4;1000:11;996:22;984:10;976:5;971:3;967:15;954:91;1079:4;1073:11;1124:14;1121:1;1116:3;1101:38;1171:1;1162:7;1159:14;1156:2;;;1188:14;1183:3;1176:27;1156:2;829:390;;;;610:625;;1134:1:10;1124:7;:11;1120:263;;;1179:1;1155:26;;:12;:26;;;1151:222;;;1201:6;:15;;:24;1217:7;1201:24;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1201:24:10;1151:222;;;1283:12;1272:33;;;1306:6;1314:7;1272:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1272:50:10;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1272:50:10;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1272:50:10;;;;;;;;;;;;;;;;1264:94;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1151:222;1120:263;924:466;;;;;452:940;;;;;;", + "deployedSourceMap": "452:940:10:-;;;;;;;;;;;;;;;;;;;;;;;;;;955:42:11;951:1;945:8;941:57;1030:14;1027:1;1024;1011:34;1125:1;1122;1106:14;1103:1;1091:10;1086:3;1073:54;1161:16;1158:1;1155;1140:38;1206:1;1197:7;1194:14;1191:2;;;1221:16;1218:1;1211:27;1191:2;1263:16;1260:1;1253:27;1426:104;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1426:104:11;;;;;;;;;;;;;;;;;;;;;;;1302:118;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1302:118:11;;;;;;;;;;;;;;;;;;;;;;;;;;;1426:104;1492:7;1522:1;1515:8;;1426:104;:::o;1302:118::-;1373:7;1403:10;;;;;;;;;;;1396:17;;1302:118;:::o", + "source": "pragma solidity 0.4.24;\nimport \"./DelegateConstructorProxy.sol\";\nimport \"./interfaces/ERC20Token.sol\";\n\n/// @title Paying Proxy - Generic proxy contract allows to execute all transactions applying the code of a master contract. It is possible to send along initialization data with the constructor. And sends funds after creation to a specified account.\n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract PayingProxy is DelegateConstructorProxy {\n\n /// @dev Constructor function sets address of master copy contract.\n /// @param _masterCopy Master copy address.\n /// @param initializer Data used for a delegate call to initialize the contract.\n /// @param funder Address that should be paid for the execution of this call\n /// @param paymentToken Token that should be used for the payment (0 is ETH)\n /// @param payment Value that should be paid\n constructor(address _masterCopy, bytes initializer, address funder, address paymentToken, uint256 payment) \n DelegateConstructorProxy(_masterCopy, initializer)\n public\n {\n if (payment > 0) {\n if (paymentToken == address(0)) {\n funder.transfer(payment);\n } else {\n require(ERC20Token(paymentToken).transfer(funder, payment), \"Could not execute token payment\");\n }\n } \n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/PayingProxy.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/PayingProxy.sol", "exportedSymbols": { "PayingProxy": [ - 1526 + 1559 ] }, - "id": 1527, + "id": 1560, "nodeType": "SourceUnit", "nodes": [ { - "id": 1474, + "id": 1506, "literals": [ "solidity", "0.4", @@ -91,9 +91,9 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/DelegateConstructorProxy.sol", "file": "./DelegateConstructorProxy.sol", - "id": 1475, + "id": 1507, "nodeType": "ImportDirective", - "scope": 1527, + "scope": 1560, "sourceUnit": 24, "src": "24:40:10", "symbolAliases": [], @@ -102,10 +102,10 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/interfaces/ERC20Token.sol", "file": "./interfaces/ERC20Token.sol", - "id": 1476, + "id": 1508, "nodeType": "ImportDirective", - "scope": 1527, - "sourceUnit": 1686, + "scope": 1560, + "sourceUnit": 1721, "src": "65:37:10", "symbolAliases": [], "unitAlias": "" @@ -116,7 +116,7 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 1477, + "id": 1509, "name": "DelegateConstructorProxy", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 23, @@ -126,32 +126,32 @@ "typeString": "contract DelegateConstructorProxy" } }, - "id": 1478, + "id": 1510, "nodeType": "InheritanceSpecifier", "src": "476:24:10" } ], "contractDependencies": [ 23, - 1568 + 1602 ], "contractKind": "contract", "documentation": "@title Paying Proxy - Generic proxy contract allows to execute all transactions applying the code of a master contract. It is possible to send along initialization data with the constructor. And sends funds after creation to a specified account.\n @author Stefan George - \n @author Richard Meissner - ", "fullyImplemented": true, - "id": 1526, + "id": 1559, "linearizedBaseContracts": [ - 1526, + 1559, 23, - 1568 + 1602 ], "name": "PayingProxy", "nodeType": "ContractDefinition", "nodes": [ { "body": { - "id": 1524, + "id": 1557, "nodeType": "Block", - "src": "1110:245:10", + "src": "1110:280:10", "statements": [ { "condition": { @@ -160,18 +160,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1497, + "id": 1529, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1495, + "id": 1527, "name": "payment", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1488, + "referencedDeclaration": 1520, "src": "1124:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -183,7 +183,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1496, + "id": 1528, "isConstant": false, "isLValue": false, "isPure": true, @@ -205,13 +205,13 @@ } }, "falseBody": null, - "id": 1523, + "id": 1556, "nodeType": "IfStatement", - "src": "1120:228:10", + "src": "1120:263:10", "trueBody": { - "id": 1522, + "id": 1555, "nodeType": "Block", - "src": "1137:211:10", + "src": "1137:246:10", "statements": [ { "condition": { @@ -220,18 +220,18 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1502, + "id": 1534, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1498, + "id": 1530, "name": "paymentToken", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1486, + "referencedDeclaration": 1518, "src": "1155:12:10", "typeDescriptions": { "typeIdentifier": "t_address", @@ -246,7 +246,7 @@ { "argumentTypes": null, "hexValue": "30", - "id": 1500, + "id": 1532, "isConstant": false, "isLValue": false, "isPure": true, @@ -269,7 +269,7 @@ "typeString": "int_const 0" } ], - "id": 1499, + "id": 1531, "isConstant": false, "isLValue": false, "isPure": true, @@ -282,7 +282,7 @@ }, "typeName": "address" }, - "id": 1501, + "id": 1533, "isConstant": false, "isLValue": false, "isPure": true, @@ -303,9 +303,9 @@ } }, "falseBody": { - "id": 1520, + "id": 1553, "nodeType": "Block", - "src": "1246:92:10", + "src": "1246:127:10", "statements": [ { "expression": { @@ -316,11 +316,11 @@ "arguments": [ { "argumentTypes": null, - "id": 1515, + "id": 1547, "name": "funder", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1484, + "referencedDeclaration": 1516, "src": "1306:6:10", "typeDescriptions": { "typeIdentifier": "t_address", @@ -329,11 +329,11 @@ }, { "argumentTypes": null, - "id": 1516, + "id": 1548, "name": "payment", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1488, + "referencedDeclaration": 1520, "src": "1314:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -357,11 +357,11 @@ "arguments": [ { "argumentTypes": null, - "id": 1512, + "id": 1544, "name": "paymentToken", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1486, + "referencedDeclaration": 1518, "src": "1283:12:10", "typeDescriptions": { "typeIdentifier": "t_address", @@ -376,18 +376,18 @@ "typeString": "address" } ], - "id": 1511, + "id": 1543, "name": "ERC20Token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1685, + "referencedDeclaration": 1720, "src": "1272:10:10", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ERC20Token_$1685_$", + "typeIdentifier": "t_type$_t_contract$_ERC20Token_$1720_$", "typeString": "type(contract ERC20Token)" } }, - "id": 1513, + "id": 1545, "isConstant": false, "isLValue": false, "isPure": false, @@ -397,25 +397,25 @@ "nodeType": "FunctionCall", "src": "1272:24:10", "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20Token_$1685", + "typeIdentifier": "t_contract$_ERC20Token_$1720", "typeString": "contract ERC20Token" } }, - "id": 1514, + "id": 1546, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transfer", "nodeType": "MemberAccess", - "referencedDeclaration": 1639, + "referencedDeclaration": 1674, "src": "1272:33:10", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 1517, + "id": 1549, "isConstant": false, "isLValue": false, "isPure": false, @@ -428,6 +428,24 @@ "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "436f756c64206e6f74206578656375746520746f6b656e207061796d656e74", + "id": 1550, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1324:33:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_56ee7cbc844d6a78f120ea6d555eb9afe8d3243b816d5489758d19d83ae941d2", + "typeString": "literal_string \"Could not execute token payment\"" + }, + "value": "Could not execute token payment" } ], "expression": { @@ -435,23 +453,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_56ee7cbc844d6a78f120ea6d555eb9afe8d3243b816d5489758d19d83ae941d2", + "typeString": "literal_string \"Could not execute token payment\"" } ], - "id": 1510, + "id": 1542, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, + "referencedDeclaration": 2658, "src": "1264:7:10", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1518, + "id": 1551, "isConstant": false, "isLValue": false, "isPure": false, @@ -459,23 +481,23 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1264:59:10", + "src": "1264:94:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1519, + "id": 1552, "nodeType": "ExpressionStatement", - "src": "1264:59:10" + "src": "1264:94:10" } ] }, - "id": 1521, + "id": 1554, "nodeType": "IfStatement", - "src": "1151:187:10", + "src": "1151:222:10", "trueBody": { - "id": 1509, + "id": 1541, "nodeType": "Block", "src": "1183:57:10", "statements": [ @@ -485,11 +507,11 @@ "arguments": [ { "argumentTypes": null, - "id": 1506, + "id": 1538, "name": "payment", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1488, + "referencedDeclaration": 1520, "src": "1217:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -506,18 +528,18 @@ ], "expression": { "argumentTypes": null, - "id": 1503, + "id": 1535, "name": "funder", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1484, + "referencedDeclaration": 1516, "src": "1201:6:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1505, + "id": 1537, "isConstant": false, "isLValue": false, "isPure": false, @@ -531,7 +553,7 @@ "typeString": "function (uint256)" } }, - "id": 1507, + "id": 1539, "isConstant": false, "isLValue": false, "isPure": false, @@ -545,7 +567,7 @@ "typeString": "tuple()" } }, - "id": 1508, + "id": 1540, "nodeType": "ExpressionStatement", "src": "1201:24:10" } @@ -558,7 +580,7 @@ ] }, "documentation": "@dev Constructor function sets address of master copy contract.\n @param _masterCopy Master copy address.\n @param initializer Data used for a delegate call to initialize the contract.\n @param funder Address that should be paid for the execution of this call\n @param paymentToken Token that should be used for the payment (0 is ETH)\n @param payment Value that should be paid", - "id": 1525, + "id": 1558, "implemented": true, "isConstructor": true, "isDeclaredConst": false, @@ -567,11 +589,11 @@ "arguments": [ { "argumentTypes": null, - "id": 1491, + "id": 1523, "name": "_masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1480, + "referencedDeclaration": 1512, "src": "1065:11:10", "typeDescriptions": { "typeIdentifier": "t_address", @@ -580,11 +602,11 @@ }, { "argumentTypes": null, - "id": 1492, + "id": 1524, "name": "initializer", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1482, + "referencedDeclaration": 1514, "src": "1078:11:10", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", @@ -592,10 +614,10 @@ } } ], - "id": 1493, + "id": 1525, "modifierName": { "argumentTypes": null, - "id": 1490, + "id": 1522, "name": "DelegateConstructorProxy", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -613,15 +635,15 @@ "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 1489, + "id": 1521, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1480, + "id": 1512, "name": "_masterCopy", "nodeType": "VariableDeclaration", - "scope": 1525, + "scope": 1558, "src": "936:19:10", "stateVariable": false, "storageLocation": "default", @@ -630,7 +652,7 @@ "typeString": "address" }, "typeName": { - "id": 1479, + "id": 1511, "name": "address", "nodeType": "ElementaryTypeName", "src": "936:7:10", @@ -644,10 +666,10 @@ }, { "constant": false, - "id": 1482, + "id": 1514, "name": "initializer", "nodeType": "VariableDeclaration", - "scope": 1525, + "scope": 1558, "src": "957:17:10", "stateVariable": false, "storageLocation": "default", @@ -656,7 +678,7 @@ "typeString": "bytes" }, "typeName": { - "id": 1481, + "id": 1513, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "957:5:10", @@ -670,10 +692,10 @@ }, { "constant": false, - "id": 1484, + "id": 1516, "name": "funder", "nodeType": "VariableDeclaration", - "scope": 1525, + "scope": 1558, "src": "976:14:10", "stateVariable": false, "storageLocation": "default", @@ -682,7 +704,7 @@ "typeString": "address" }, "typeName": { - "id": 1483, + "id": 1515, "name": "address", "nodeType": "ElementaryTypeName", "src": "976:7:10", @@ -696,10 +718,10 @@ }, { "constant": false, - "id": 1486, + "id": 1518, "name": "paymentToken", "nodeType": "VariableDeclaration", - "scope": 1525, + "scope": 1558, "src": "992:20:10", "stateVariable": false, "storageLocation": "default", @@ -708,7 +730,7 @@ "typeString": "address" }, "typeName": { - "id": 1485, + "id": 1517, "name": "address", "nodeType": "ElementaryTypeName", "src": "992:7:10", @@ -722,10 +744,10 @@ }, { "constant": false, - "id": 1488, + "id": 1520, "name": "payment", "nodeType": "VariableDeclaration", - "scope": 1525, + "scope": 1558, "src": "1014:15:10", "stateVariable": false, "storageLocation": "default", @@ -734,7 +756,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1487, + "id": 1519, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1014:7:10", @@ -751,36 +773,36 @@ }, "payable": false, "returnParameters": { - "id": 1494, + "id": 1526, "nodeType": "ParameterList", "parameters": [], "src": "1110:0:10" }, - "scope": 1526, - "src": "924:431:10", + "scope": 1559, + "src": "924:466:10", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 1527, - "src": "452:905:10" + "scope": 1560, + "src": "452:940:10" } ], - "src": "0:1358:10" + "src": "0:1393:10" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/PayingProxy.sol", "exportedSymbols": { "PayingProxy": [ - 1526 + 1559 ] }, - "id": 1527, + "id": 1560, "nodeType": "SourceUnit", "nodes": [ { - "id": 1474, + "id": 1506, "literals": [ "solidity", "0.4", @@ -792,9 +814,9 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/DelegateConstructorProxy.sol", "file": "./DelegateConstructorProxy.sol", - "id": 1475, + "id": 1507, "nodeType": "ImportDirective", - "scope": 1527, + "scope": 1560, "sourceUnit": 24, "src": "24:40:10", "symbolAliases": [], @@ -803,10 +825,10 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/interfaces/ERC20Token.sol", "file": "./interfaces/ERC20Token.sol", - "id": 1476, + "id": 1508, "nodeType": "ImportDirective", - "scope": 1527, - "sourceUnit": 1686, + "scope": 1560, + "sourceUnit": 1721, "src": "65:37:10", "symbolAliases": [], "unitAlias": "" @@ -817,7 +839,7 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 1477, + "id": 1509, "name": "DelegateConstructorProxy", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 23, @@ -827,32 +849,32 @@ "typeString": "contract DelegateConstructorProxy" } }, - "id": 1478, + "id": 1510, "nodeType": "InheritanceSpecifier", "src": "476:24:10" } ], "contractDependencies": [ 23, - 1568 + 1602 ], "contractKind": "contract", "documentation": "@title Paying Proxy - Generic proxy contract allows to execute all transactions applying the code of a master contract. It is possible to send along initialization data with the constructor. And sends funds after creation to a specified account.\n @author Stefan George - \n @author Richard Meissner - ", "fullyImplemented": true, - "id": 1526, + "id": 1559, "linearizedBaseContracts": [ - 1526, + 1559, 23, - 1568 + 1602 ], "name": "PayingProxy", "nodeType": "ContractDefinition", "nodes": [ { "body": { - "id": 1524, + "id": 1557, "nodeType": "Block", - "src": "1110:245:10", + "src": "1110:280:10", "statements": [ { "condition": { @@ -861,18 +883,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1497, + "id": 1529, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1495, + "id": 1527, "name": "payment", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1488, + "referencedDeclaration": 1520, "src": "1124:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -884,7 +906,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1496, + "id": 1528, "isConstant": false, "isLValue": false, "isPure": true, @@ -906,13 +928,13 @@ } }, "falseBody": null, - "id": 1523, + "id": 1556, "nodeType": "IfStatement", - "src": "1120:228:10", + "src": "1120:263:10", "trueBody": { - "id": 1522, + "id": 1555, "nodeType": "Block", - "src": "1137:211:10", + "src": "1137:246:10", "statements": [ { "condition": { @@ -921,18 +943,18 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1502, + "id": 1534, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1498, + "id": 1530, "name": "paymentToken", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1486, + "referencedDeclaration": 1518, "src": "1155:12:10", "typeDescriptions": { "typeIdentifier": "t_address", @@ -947,7 +969,7 @@ { "argumentTypes": null, "hexValue": "30", - "id": 1500, + "id": 1532, "isConstant": false, "isLValue": false, "isPure": true, @@ -970,7 +992,7 @@ "typeString": "int_const 0" } ], - "id": 1499, + "id": 1531, "isConstant": false, "isLValue": false, "isPure": true, @@ -983,7 +1005,7 @@ }, "typeName": "address" }, - "id": 1501, + "id": 1533, "isConstant": false, "isLValue": false, "isPure": true, @@ -1004,9 +1026,9 @@ } }, "falseBody": { - "id": 1520, + "id": 1553, "nodeType": "Block", - "src": "1246:92:10", + "src": "1246:127:10", "statements": [ { "expression": { @@ -1017,11 +1039,11 @@ "arguments": [ { "argumentTypes": null, - "id": 1515, + "id": 1547, "name": "funder", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1484, + "referencedDeclaration": 1516, "src": "1306:6:10", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1030,11 +1052,11 @@ }, { "argumentTypes": null, - "id": 1516, + "id": 1548, "name": "payment", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1488, + "referencedDeclaration": 1520, "src": "1314:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -1058,11 +1080,11 @@ "arguments": [ { "argumentTypes": null, - "id": 1512, + "id": 1544, "name": "paymentToken", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1486, + "referencedDeclaration": 1518, "src": "1283:12:10", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1077,18 +1099,18 @@ "typeString": "address" } ], - "id": 1511, + "id": 1543, "name": "ERC20Token", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1685, + "referencedDeclaration": 1720, "src": "1272:10:10", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_ERC20Token_$1685_$", + "typeIdentifier": "t_type$_t_contract$_ERC20Token_$1720_$", "typeString": "type(contract ERC20Token)" } }, - "id": 1513, + "id": 1545, "isConstant": false, "isLValue": false, "isPure": false, @@ -1098,25 +1120,25 @@ "nodeType": "FunctionCall", "src": "1272:24:10", "typeDescriptions": { - "typeIdentifier": "t_contract$_ERC20Token_$1685", + "typeIdentifier": "t_contract$_ERC20Token_$1720", "typeString": "contract ERC20Token" } }, - "id": 1514, + "id": 1546, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "transfer", "nodeType": "MemberAccess", - "referencedDeclaration": 1639, + "referencedDeclaration": 1674, "src": "1272:33:10", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$", "typeString": "function (address,uint256) external returns (bool)" } }, - "id": 1517, + "id": 1549, "isConstant": false, "isLValue": false, "isPure": false, @@ -1129,6 +1151,24 @@ "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "436f756c64206e6f74206578656375746520746f6b656e207061796d656e74", + "id": 1550, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1324:33:10", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_56ee7cbc844d6a78f120ea6d555eb9afe8d3243b816d5489758d19d83ae941d2", + "typeString": "literal_string \"Could not execute token payment\"" + }, + "value": "Could not execute token payment" } ], "expression": { @@ -1136,23 +1176,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_56ee7cbc844d6a78f120ea6d555eb9afe8d3243b816d5489758d19d83ae941d2", + "typeString": "literal_string \"Could not execute token payment\"" } ], - "id": 1510, + "id": 1542, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, + "referencedDeclaration": 2658, "src": "1264:7:10", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1518, + "id": 1551, "isConstant": false, "isLValue": false, "isPure": false, @@ -1160,23 +1204,23 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1264:59:10", + "src": "1264:94:10", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1519, + "id": 1552, "nodeType": "ExpressionStatement", - "src": "1264:59:10" + "src": "1264:94:10" } ] }, - "id": 1521, + "id": 1554, "nodeType": "IfStatement", - "src": "1151:187:10", + "src": "1151:222:10", "trueBody": { - "id": 1509, + "id": 1541, "nodeType": "Block", "src": "1183:57:10", "statements": [ @@ -1186,11 +1230,11 @@ "arguments": [ { "argumentTypes": null, - "id": 1506, + "id": 1538, "name": "payment", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1488, + "referencedDeclaration": 1520, "src": "1217:7:10", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -1207,18 +1251,18 @@ ], "expression": { "argumentTypes": null, - "id": 1503, + "id": 1535, "name": "funder", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1484, + "referencedDeclaration": 1516, "src": "1201:6:10", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1505, + "id": 1537, "isConstant": false, "isLValue": false, "isPure": false, @@ -1232,7 +1276,7 @@ "typeString": "function (uint256)" } }, - "id": 1507, + "id": 1539, "isConstant": false, "isLValue": false, "isPure": false, @@ -1246,7 +1290,7 @@ "typeString": "tuple()" } }, - "id": 1508, + "id": 1540, "nodeType": "ExpressionStatement", "src": "1201:24:10" } @@ -1259,7 +1303,7 @@ ] }, "documentation": "@dev Constructor function sets address of master copy contract.\n @param _masterCopy Master copy address.\n @param initializer Data used for a delegate call to initialize the contract.\n @param funder Address that should be paid for the execution of this call\n @param paymentToken Token that should be used for the payment (0 is ETH)\n @param payment Value that should be paid", - "id": 1525, + "id": 1558, "implemented": true, "isConstructor": true, "isDeclaredConst": false, @@ -1268,11 +1312,11 @@ "arguments": [ { "argumentTypes": null, - "id": 1491, + "id": 1523, "name": "_masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1480, + "referencedDeclaration": 1512, "src": "1065:11:10", "typeDescriptions": { "typeIdentifier": "t_address", @@ -1281,11 +1325,11 @@ }, { "argumentTypes": null, - "id": 1492, + "id": 1524, "name": "initializer", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1482, + "referencedDeclaration": 1514, "src": "1078:11:10", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", @@ -1293,10 +1337,10 @@ } } ], - "id": 1493, + "id": 1525, "modifierName": { "argumentTypes": null, - "id": 1490, + "id": 1522, "name": "DelegateConstructorProxy", "nodeType": "Identifier", "overloadedDeclarations": [], @@ -1314,15 +1358,15 @@ "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 1489, + "id": 1521, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1480, + "id": 1512, "name": "_masterCopy", "nodeType": "VariableDeclaration", - "scope": 1525, + "scope": 1558, "src": "936:19:10", "stateVariable": false, "storageLocation": "default", @@ -1331,7 +1375,7 @@ "typeString": "address" }, "typeName": { - "id": 1479, + "id": 1511, "name": "address", "nodeType": "ElementaryTypeName", "src": "936:7:10", @@ -1345,10 +1389,10 @@ }, { "constant": false, - "id": 1482, + "id": 1514, "name": "initializer", "nodeType": "VariableDeclaration", - "scope": 1525, + "scope": 1558, "src": "957:17:10", "stateVariable": false, "storageLocation": "default", @@ -1357,7 +1401,7 @@ "typeString": "bytes" }, "typeName": { - "id": 1481, + "id": 1513, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "957:5:10", @@ -1371,10 +1415,10 @@ }, { "constant": false, - "id": 1484, + "id": 1516, "name": "funder", "nodeType": "VariableDeclaration", - "scope": 1525, + "scope": 1558, "src": "976:14:10", "stateVariable": false, "storageLocation": "default", @@ -1383,7 +1427,7 @@ "typeString": "address" }, "typeName": { - "id": 1483, + "id": 1515, "name": "address", "nodeType": "ElementaryTypeName", "src": "976:7:10", @@ -1397,10 +1441,10 @@ }, { "constant": false, - "id": 1486, + "id": 1518, "name": "paymentToken", "nodeType": "VariableDeclaration", - "scope": 1525, + "scope": 1558, "src": "992:20:10", "stateVariable": false, "storageLocation": "default", @@ -1409,7 +1453,7 @@ "typeString": "address" }, "typeName": { - "id": 1485, + "id": 1517, "name": "address", "nodeType": "ElementaryTypeName", "src": "992:7:10", @@ -1423,10 +1467,10 @@ }, { "constant": false, - "id": 1488, + "id": 1520, "name": "payment", "nodeType": "VariableDeclaration", - "scope": 1525, + "scope": 1558, "src": "1014:15:10", "stateVariable": false, "storageLocation": "default", @@ -1435,7 +1479,7 @@ "typeString": "uint256" }, "typeName": { - "id": 1487, + "id": 1519, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1014:7:10", @@ -1452,23 +1496,23 @@ }, "payable": false, "returnParameters": { - "id": 1494, + "id": 1526, "nodeType": "ParameterList", "parameters": [], "src": "1110:0:10" }, - "scope": 1526, - "src": "924:431:10", + "scope": 1559, + "src": "924:466:10", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 1527, - "src": "452:905:10" + "scope": 1560, + "src": "452:940:10" } ], - "src": "0:1358:10" + "src": "0:1393:10" }, "compiler": { "name": "solc", @@ -1476,5 +1520,5 @@ }, "networks": {}, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-27T11:12:45.583Z" + "updatedAt": "2018-05-28T05:59:52.706Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/Proxy.json b/safe-contracts/build/contracts/Proxy.json index aae27a07b9..cef33106ae 100644 --- a/safe-contracts/build/contracts/Proxy.json +++ b/safe-contracts/build/contracts/Proxy.json @@ -46,24 +46,24 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b506040516020806102148339810180604052810190808051906020019092919050505060008173ffffffffffffffffffffffffffffffffffffffff161415151561005957600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505061016b806100a96000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461008b5780635c60da1b146100b6575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e6000811415610086573d6000fd5b3d6000f35b34801561009757600080fd5b506100a061010d565b6040518082815260200191505060405180910390f35b3480156100c257600080fd5b506100cb610116565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006002905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a72305820cd7d1e9dd84eb221f79b1c8f72a39fad7d9f8ab7239d25c1fc563147abcaf4150029", - "deployedBytecode": "0x60806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461008b5780635c60da1b146100b6575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e6000811415610086573d6000fd5b3d6000f35b34801561009757600080fd5b506100a061010d565b6040518082815260200191505060405180910390f35b3480156100c257600080fd5b506100cb610116565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006002905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a72305820cd7d1e9dd84eb221f79b1c8f72a39fad7d9f8ab7239d25c1fc563147abcaf4150029", - "sourceMap": "190:1302:11:-;;;508:128;8:9:-1;5:2;;;30:1;27;20:12;5:2;508:128:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;593:1;578:11;:16;;;;570:25;;;;;;;;618:11;605:10;;:24;;;;;;;;;;;;;;;;;;508:128;190:1302;;;;;;", - "deployedSourceMap": "190:1302:11:-;;;;;;;;;;;;;;;;;;;;;;;;;;915:42;911:1;905:8;901:57;990:14;987:1;984;971:34;1085:1;1082;1066:14;1063:1;1051:10;1046:3;1033:54;1121:16;1118:1;1115;1100:38;1166:1;1157:7;1154:14;1151:2;;;1181:16;1178:1;1171:27;1151:2;1223:16;1220:1;1213:27;1386:104;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1386:104:11;;;;;;;;;;;;;;;;;;;;;;;1262:118;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1262:118:11;;;;;;;;;;;;;;;;;;;;;;;;;;;1386:104;1452:7;1482:1;1475:8;;1386:104;:::o;1262:118::-;1333:7;1363:10;;;;;;;;;;;1356:17;;1262:118;:::o", - "source": "pragma solidity 0.4.24;\n\n\n/// @title Proxy - Generic proxy contract allows to execute all transactions applying the code of a master contract.\n/// @author Stefan George - \ncontract Proxy {\n\n // masterCopy always needs to be first declared variable, to ensure that it is at the same location in the contracts to which calls are delegated.\n address masterCopy;\n\n /// @dev Constructor function sets address of master copy contract.\n /// @param _masterCopy Master copy address.\n constructor(address _masterCopy)\n public\n {\n require(_masterCopy != 0);\n masterCopy = _masterCopy;\n }\n\n /// @dev Fallback function forwards all transactions and returns all received return data.\n function ()\n external\n payable\n {\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n let masterCopy := and(sload(0), 0xffffffffffffffffffffffffffffffffffffffff)\n calldatacopy(0, 0, calldatasize())\n let success := delegatecall(gas, masterCopy, 0, calldatasize(), 0, 0)\n returndatacopy(0, 0, returndatasize())\n if eq(success, 0) { revert(0, returndatasize()) }\n return(0, returndatasize())\n }\n }\n\n function implementation()\n public\n view\n returns (address)\n {\n return masterCopy;\n }\n\n function proxyType()\n public\n pure\n returns (uint256)\n {\n return 2;\n }\n}\n", + "bytecode": "0x608060405234801561001057600080fd5b506040516020806102a38339810180604052810190808051906020019092919050505060008173ffffffffffffffffffffffffffffffffffffffff16141515156100e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f496e76616c6964206d617374657220636f707920616464726573732070726f7681526020017f696465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505061016b806101386000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461008b5780635c60da1b146100b6575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e6000811415610086573d6000fd5b3d6000f35b34801561009757600080fd5b506100a061010d565b6040518082815260200191505060405180910390f35b3480156100c257600080fd5b506100cb610116565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006002905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a72305820fb8f7addc79801292900c520af66dd86a1f9d0b643abe5d3ef1ac03eeb2d04080029", + "deployedBytecode": "0x60806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461008b5780635c60da1b146100b6575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e6000811415610086573d6000fd5b3d6000f35b34801561009757600080fd5b506100a061010d565b6040518082815260200191505060405180910390f35b3480156100c257600080fd5b506100cb610116565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006002905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a72305820fb8f7addc79801292900c520af66dd86a1f9d0b643abe5d3ef1ac03eeb2d04080029", + "sourceMap": "190:1342:11:-;;;508:168;8:9:-1;5:2;;;30:1;27;20:12;5:2;508:168:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;593:1;578:11;:16;;;;570:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;658:11;645:10;;:24;;;;;;;;;;;;;;;;;;508:168;190:1342;;;;;;", + "deployedSourceMap": "190:1342:11:-;;;;;;;;;;;;;;;;;;;;;;;;;;955:42;951:1;945:8;941:57;1030:14;1027:1;1024;1011:34;1125:1;1122;1106:14;1103:1;1091:10;1086:3;1073:54;1161:16;1158:1;1155;1140:38;1206:1;1197:7;1194:14;1191:2;;;1221:16;1218:1;1211:27;1191:2;1263:16;1260:1;1253:27;1426:104;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1426:104:11;;;;;;;;;;;;;;;;;;;;;;;1302:118;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1302:118:11;;;;;;;;;;;;;;;;;;;;;;;;;;;1426:104;1492:7;1522:1;1515:8;;1426:104;:::o;1302:118::-;1373:7;1403:10;;;;;;;;;;;1396:17;;1302:118;:::o", + "source": "pragma solidity 0.4.24;\n\n\n/// @title Proxy - Generic proxy contract allows to execute all transactions applying the code of a master contract.\n/// @author Stefan George - \ncontract Proxy {\n\n // masterCopy always needs to be first declared variable, to ensure that it is at the same location in the contracts to which calls are delegated.\n address masterCopy;\n\n /// @dev Constructor function sets address of master copy contract.\n /// @param _masterCopy Master copy address.\n constructor(address _masterCopy)\n public\n {\n require(_masterCopy != 0, \"Invalid master copy address provided\");\n masterCopy = _masterCopy;\n }\n\n /// @dev Fallback function forwards all transactions and returns all received return data.\n function ()\n external\n payable\n {\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n let masterCopy := and(sload(0), 0xffffffffffffffffffffffffffffffffffffffff)\n calldatacopy(0, 0, calldatasize())\n let success := delegatecall(gas, masterCopy, 0, calldatasize(), 0, 0)\n returndatacopy(0, 0, returndatasize())\n if eq(success, 0) { revert(0, returndatasize()) }\n return(0, returndatasize())\n }\n }\n\n function implementation()\n public\n view\n returns (address)\n {\n return masterCopy;\n }\n\n function proxyType()\n public\n pure\n returns (uint256)\n {\n return 2;\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Proxy.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Proxy.sol", "exportedSymbols": { "Proxy": [ - 1568 + 1602 ] }, - "id": 1569, + "id": 1603, "nodeType": "SourceUnit", "nodes": [ { - "id": 1528, + "id": 1561, "literals": [ "solidity", "0.4", @@ -78,19 +78,19 @@ "contractKind": "contract", "documentation": "@title Proxy - Generic proxy contract allows to execute all transactions applying the code of a master contract.\n @author Stefan George - ", "fullyImplemented": true, - "id": 1568, + "id": 1602, "linearizedBaseContracts": [ - 1568 + 1602 ], "name": "Proxy", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, - "id": 1530, + "id": 1563, "name": "masterCopy", "nodeType": "VariableDeclaration", - "scope": 1568, + "scope": 1602, "src": "363:18:11", "stateVariable": true, "storageLocation": "default", @@ -99,7 +99,7 @@ "typeString": "address" }, "typeName": { - "id": 1529, + "id": 1562, "name": "address", "nodeType": "ElementaryTypeName", "src": "363:7:11", @@ -113,9 +113,9 @@ }, { "body": { - "id": 1545, + "id": 1579, "nodeType": "Block", - "src": "560:76:11", + "src": "560:116:11", "statements": [ { "expression": { @@ -127,18 +127,18 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1538, + "id": 1571, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1536, + "id": 1569, "name": "_masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1532, + "referencedDeclaration": 1565, "src": "578:11:11", "typeDescriptions": { "typeIdentifier": "t_address", @@ -150,7 +150,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1537, + "id": 1570, "isConstant": false, "isLValue": false, "isPure": true, @@ -170,6 +170,24 @@ "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "496e76616c6964206d617374657220636f707920616464726573732070726f7669646564", + "id": 1572, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "596:38:11", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_108d84599042957b954e89d43b52f80be89321dfc114a37800028eba58dafc87", + "typeString": "literal_string \"Invalid master copy address provided\"" + }, + "value": "Invalid master copy address provided" } ], "expression": { @@ -177,23 +195,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_108d84599042957b954e89d43b52f80be89321dfc114a37800028eba58dafc87", + "typeString": "literal_string \"Invalid master copy address provided\"" } ], - "id": 1535, + "id": 1568, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, + "referencedDeclaration": 2658, "src": "570:7:11", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1539, + "id": 1573, "isConstant": false, "isLValue": false, "isPure": false, @@ -201,32 +223,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "570:25:11", + "src": "570:65:11", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1540, + "id": 1574, "nodeType": "ExpressionStatement", - "src": "570:25:11" + "src": "570:65:11" }, { "expression": { "argumentTypes": null, - "id": 1543, + "id": 1577, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1541, + "id": 1575, "name": "masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1530, - "src": "605:10:11", + "referencedDeclaration": 1563, + "src": "645:10:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -236,31 +258,31 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1542, + "id": 1576, "name": "_masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1532, - "src": "618:11:11", + "referencedDeclaration": 1565, + "src": "658:11:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "605:24:11", + "src": "645:24:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1544, + "id": 1578, "nodeType": "ExpressionStatement", - "src": "605:24:11" + "src": "645:24:11" } ] }, "documentation": "@dev Constructor function sets address of master copy contract.\n @param _masterCopy Master copy address.", - "id": 1546, + "id": 1580, "implemented": true, "isConstructor": true, "isDeclaredConst": false, @@ -268,15 +290,15 @@ "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 1533, + "id": 1566, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1532, + "id": 1565, "name": "_masterCopy", "nodeType": "VariableDeclaration", - "scope": 1546, + "scope": 1580, "src": "520:19:11", "stateVariable": false, "storageLocation": "default", @@ -285,7 +307,7 @@ "typeString": "address" }, "typeName": { - "id": 1531, + "id": 1564, "name": "address", "nodeType": "ElementaryTypeName", "src": "520:7:11", @@ -302,34 +324,34 @@ }, "payable": false, "returnParameters": { - "id": 1534, + "id": 1567, "nodeType": "ParameterList", "parameters": [], "src": "560:0:11" }, - "scope": 1568, - "src": "508:128:11", + "scope": 1602, + "src": "508:168:11", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1550, + "id": 1584, "nodeType": "Block", - "src": "786:470:11", + "src": "826:470:11", "statements": [ { "externalReferences": [], - "id": 1549, + "id": 1583, "nodeType": "InlineAssembly", "operations": "{\n let masterCopy := and(sload(0), 0xffffffffffffffffffffffffffffffffffffffff)\n calldatacopy(0, 0, calldatasize())\n let success := delegatecall(gas(), masterCopy, 0, calldatasize(), 0, 0)\n returndatacopy(0, 0, returndatasize())\n if eq(success, 0)\n {\n revert(0, returndatasize())\n }\n return(0, returndatasize())\n}", - "src": "860:396:11" + "src": "900:396:11" } ] }, "documentation": "@dev Fallback function forwards all transactions and returns all received return data.", - "id": 1551, + "id": 1585, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -337,53 +359,53 @@ "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 1547, + "id": 1581, "nodeType": "ParameterList", "parameters": [], - "src": "746:2:11" + "src": "786:2:11" }, "payable": true, "returnParameters": { - "id": 1548, + "id": 1582, "nodeType": "ParameterList", "parameters": [], - "src": "786:0:11" + "src": "826:0:11" }, - "scope": 1568, - "src": "737:519:11", + "scope": 1602, + "src": "777:519:11", "stateMutability": "payable", "superFunction": null, "visibility": "external" }, { "body": { - "id": 1558, + "id": 1592, "nodeType": "Block", - "src": "1346:34:11", + "src": "1386:34:11", "statements": [ { "expression": { "argumentTypes": null, - "id": 1556, + "id": 1590, "name": "masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1530, - "src": "1363:10:11", + "referencedDeclaration": 1563, + "src": "1403:10:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "functionReturnParameters": 1555, - "id": 1557, + "functionReturnParameters": 1589, + "id": 1591, "nodeType": "Return", - "src": "1356:17:11" + "src": "1396:17:11" } ] }, "documentation": null, - "id": 1559, + "id": 1593, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -391,23 +413,23 @@ "name": "implementation", "nodeType": "FunctionDefinition", "parameters": { - "id": 1552, + "id": 1586, "nodeType": "ParameterList", "parameters": [], - "src": "1285:2:11" + "src": "1325:2:11" }, "payable": false, "returnParameters": { - "id": 1555, + "id": 1589, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1554, + "id": 1588, "name": "", "nodeType": "VariableDeclaration", - "scope": 1559, - "src": "1333:7:11", + "scope": 1593, + "src": "1373:7:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -415,10 +437,10 @@ "typeString": "address" }, "typeName": { - "id": 1553, + "id": 1587, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1333:7:11", + "src": "1373:7:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -428,32 +450,32 @@ "visibility": "internal" } ], - "src": "1332:9:11" + "src": "1372:9:11" }, - "scope": 1568, - "src": "1262:118:11", + "scope": 1602, + "src": "1302:118:11", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1566, + "id": 1600, "nodeType": "Block", - "src": "1465:25:11", + "src": "1505:25:11", "statements": [ { "expression": { "argumentTypes": null, "hexValue": "32", - "id": 1564, + "id": 1598, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1482:1:11", + "src": "1522:1:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", @@ -461,15 +483,15 @@ }, "value": "2" }, - "functionReturnParameters": 1563, - "id": 1565, + "functionReturnParameters": 1597, + "id": 1599, "nodeType": "Return", - "src": "1475:8:11" + "src": "1515:8:11" } ] }, "documentation": null, - "id": 1567, + "id": 1601, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -477,23 +499,23 @@ "name": "proxyType", "nodeType": "FunctionDefinition", "parameters": { - "id": 1560, + "id": 1594, "nodeType": "ParameterList", "parameters": [], - "src": "1404:2:11" + "src": "1444:2:11" }, "payable": false, "returnParameters": { - "id": 1563, + "id": 1597, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1562, + "id": 1596, "name": "", "nodeType": "VariableDeclaration", - "scope": 1567, - "src": "1452:7:11", + "scope": 1601, + "src": "1492:7:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -501,10 +523,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1561, + "id": 1595, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1452:7:11", + "src": "1492:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -514,33 +536,33 @@ "visibility": "internal" } ], - "src": "1451:9:11" + "src": "1491:9:11" }, - "scope": 1568, - "src": "1386:104:11", + "scope": 1602, + "src": "1426:104:11", "stateMutability": "pure", "superFunction": null, "visibility": "public" } ], - "scope": 1569, - "src": "190:1302:11" + "scope": 1603, + "src": "190:1342:11" } ], - "src": "0:1493:11" + "src": "0:1533:11" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Proxy.sol", "exportedSymbols": { "Proxy": [ - 1568 + 1602 ] }, - "id": 1569, + "id": 1603, "nodeType": "SourceUnit", "nodes": [ { - "id": 1528, + "id": 1561, "literals": [ "solidity", "0.4", @@ -555,19 +577,19 @@ "contractKind": "contract", "documentation": "@title Proxy - Generic proxy contract allows to execute all transactions applying the code of a master contract.\n @author Stefan George - ", "fullyImplemented": true, - "id": 1568, + "id": 1602, "linearizedBaseContracts": [ - 1568 + 1602 ], "name": "Proxy", "nodeType": "ContractDefinition", "nodes": [ { "constant": false, - "id": 1530, + "id": 1563, "name": "masterCopy", "nodeType": "VariableDeclaration", - "scope": 1568, + "scope": 1602, "src": "363:18:11", "stateVariable": true, "storageLocation": "default", @@ -576,7 +598,7 @@ "typeString": "address" }, "typeName": { - "id": 1529, + "id": 1562, "name": "address", "nodeType": "ElementaryTypeName", "src": "363:7:11", @@ -590,9 +612,9 @@ }, { "body": { - "id": 1545, + "id": 1579, "nodeType": "Block", - "src": "560:76:11", + "src": "560:116:11", "statements": [ { "expression": { @@ -604,18 +626,18 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1538, + "id": 1571, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 1536, + "id": 1569, "name": "_masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1532, + "referencedDeclaration": 1565, "src": "578:11:11", "typeDescriptions": { "typeIdentifier": "t_address", @@ -627,7 +649,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1537, + "id": 1570, "isConstant": false, "isLValue": false, "isPure": true, @@ -647,6 +669,24 @@ "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "496e76616c6964206d617374657220636f707920616464726573732070726f7669646564", + "id": 1572, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "596:38:11", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_108d84599042957b954e89d43b52f80be89321dfc114a37800028eba58dafc87", + "typeString": "literal_string \"Invalid master copy address provided\"" + }, + "value": "Invalid master copy address provided" } ], "expression": { @@ -654,23 +694,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_108d84599042957b954e89d43b52f80be89321dfc114a37800028eba58dafc87", + "typeString": "literal_string \"Invalid master copy address provided\"" } ], - "id": 1535, + "id": 1568, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, + "referencedDeclaration": 2658, "src": "570:7:11", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1539, + "id": 1573, "isConstant": false, "isLValue": false, "isPure": false, @@ -678,32 +722,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "570:25:11", + "src": "570:65:11", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1540, + "id": 1574, "nodeType": "ExpressionStatement", - "src": "570:25:11" + "src": "570:65:11" }, { "expression": { "argumentTypes": null, - "id": 1543, + "id": 1577, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1541, + "id": 1575, "name": "masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1530, - "src": "605:10:11", + "referencedDeclaration": 1563, + "src": "645:10:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -713,31 +757,31 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 1542, + "id": 1576, "name": "_masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1532, - "src": "618:11:11", + "referencedDeclaration": 1565, + "src": "658:11:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "605:24:11", + "src": "645:24:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 1544, + "id": 1578, "nodeType": "ExpressionStatement", - "src": "605:24:11" + "src": "645:24:11" } ] }, "documentation": "@dev Constructor function sets address of master copy contract.\n @param _masterCopy Master copy address.", - "id": 1546, + "id": 1580, "implemented": true, "isConstructor": true, "isDeclaredConst": false, @@ -745,15 +789,15 @@ "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 1533, + "id": 1566, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1532, + "id": 1565, "name": "_masterCopy", "nodeType": "VariableDeclaration", - "scope": 1546, + "scope": 1580, "src": "520:19:11", "stateVariable": false, "storageLocation": "default", @@ -762,7 +806,7 @@ "typeString": "address" }, "typeName": { - "id": 1531, + "id": 1564, "name": "address", "nodeType": "ElementaryTypeName", "src": "520:7:11", @@ -779,34 +823,34 @@ }, "payable": false, "returnParameters": { - "id": 1534, + "id": 1567, "nodeType": "ParameterList", "parameters": [], "src": "560:0:11" }, - "scope": 1568, - "src": "508:128:11", + "scope": 1602, + "src": "508:168:11", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1550, + "id": 1584, "nodeType": "Block", - "src": "786:470:11", + "src": "826:470:11", "statements": [ { "externalReferences": [], - "id": 1549, + "id": 1583, "nodeType": "InlineAssembly", "operations": "{\n let masterCopy := and(sload(0), 0xffffffffffffffffffffffffffffffffffffffff)\n calldatacopy(0, 0, calldatasize())\n let success := delegatecall(gas(), masterCopy, 0, calldatasize(), 0, 0)\n returndatacopy(0, 0, returndatasize())\n if eq(success, 0)\n {\n revert(0, returndatasize())\n }\n return(0, returndatasize())\n}", - "src": "860:396:11" + "src": "900:396:11" } ] }, "documentation": "@dev Fallback function forwards all transactions and returns all received return data.", - "id": 1551, + "id": 1585, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -814,53 +858,53 @@ "name": "", "nodeType": "FunctionDefinition", "parameters": { - "id": 1547, + "id": 1581, "nodeType": "ParameterList", "parameters": [], - "src": "746:2:11" + "src": "786:2:11" }, "payable": true, "returnParameters": { - "id": 1548, + "id": 1582, "nodeType": "ParameterList", "parameters": [], - "src": "786:0:11" + "src": "826:0:11" }, - "scope": 1568, - "src": "737:519:11", + "scope": 1602, + "src": "777:519:11", "stateMutability": "payable", "superFunction": null, "visibility": "external" }, { "body": { - "id": 1558, + "id": 1592, "nodeType": "Block", - "src": "1346:34:11", + "src": "1386:34:11", "statements": [ { "expression": { "argumentTypes": null, - "id": 1556, + "id": 1590, "name": "masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1530, - "src": "1363:10:11", + "referencedDeclaration": 1563, + "src": "1403:10:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "functionReturnParameters": 1555, - "id": 1557, + "functionReturnParameters": 1589, + "id": 1591, "nodeType": "Return", - "src": "1356:17:11" + "src": "1396:17:11" } ] }, "documentation": null, - "id": 1559, + "id": 1593, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -868,23 +912,23 @@ "name": "implementation", "nodeType": "FunctionDefinition", "parameters": { - "id": 1552, + "id": 1586, "nodeType": "ParameterList", "parameters": [], - "src": "1285:2:11" + "src": "1325:2:11" }, "payable": false, "returnParameters": { - "id": 1555, + "id": 1589, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1554, + "id": 1588, "name": "", "nodeType": "VariableDeclaration", - "scope": 1559, - "src": "1333:7:11", + "scope": 1593, + "src": "1373:7:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -892,10 +936,10 @@ "typeString": "address" }, "typeName": { - "id": 1553, + "id": 1587, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1333:7:11", + "src": "1373:7:11", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -905,32 +949,32 @@ "visibility": "internal" } ], - "src": "1332:9:11" + "src": "1372:9:11" }, - "scope": 1568, - "src": "1262:118:11", + "scope": 1602, + "src": "1302:118:11", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { - "id": 1566, + "id": 1600, "nodeType": "Block", - "src": "1465:25:11", + "src": "1505:25:11", "statements": [ { "expression": { "argumentTypes": null, "hexValue": "32", - "id": 1564, + "id": 1598, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1482:1:11", + "src": "1522:1:11", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", @@ -938,15 +982,15 @@ }, "value": "2" }, - "functionReturnParameters": 1563, - "id": 1565, + "functionReturnParameters": 1597, + "id": 1599, "nodeType": "Return", - "src": "1475:8:11" + "src": "1515:8:11" } ] }, "documentation": null, - "id": 1567, + "id": 1601, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -954,23 +998,23 @@ "name": "proxyType", "nodeType": "FunctionDefinition", "parameters": { - "id": 1560, + "id": 1594, "nodeType": "ParameterList", "parameters": [], - "src": "1404:2:11" + "src": "1444:2:11" }, "payable": false, "returnParameters": { - "id": 1563, + "id": 1597, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1562, + "id": 1596, "name": "", "nodeType": "VariableDeclaration", - "scope": 1567, - "src": "1452:7:11", + "scope": 1601, + "src": "1492:7:11", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -978,10 +1022,10 @@ "typeString": "uint256" }, "typeName": { - "id": 1561, + "id": 1595, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1452:7:11", + "src": "1492:7:11", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -991,20 +1035,20 @@ "visibility": "internal" } ], - "src": "1451:9:11" + "src": "1491:9:11" }, - "scope": 1568, - "src": "1386:104:11", + "scope": 1602, + "src": "1426:104:11", "stateMutability": "pure", "superFunction": null, "visibility": "public" } ], - "scope": 1569, - "src": "190:1302:11" + "scope": 1603, + "src": "190:1342:11" } ], - "src": "0:1493:11" + "src": "0:1533:11" }, "compiler": { "name": "solc", @@ -1012,5 +1056,5 @@ }, "networks": {}, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-27T11:12:45.583Z" + "updatedAt": "2018-05-28T05:59:52.706Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/ProxyFactory.json b/safe-contracts/build/contracts/ProxyFactory.json index faa58fb947..ac92cb35f0 100644 --- a/safe-contracts/build/contracts/ProxyFactory.json +++ b/safe-contracts/build/contracts/ProxyFactory.json @@ -37,8 +37,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b5061044e806100206000396000f300608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806361b69abd14610046575b600080fd5b34801561005257600080fd5b506100cd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061010f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008261011a6101fe565b808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f08015801561016c573d6000803e3d6000fd5b5090506000825111156101955760008060008451602086016000865af1141561019457600080fd5b5b7fa38789425dbeee0239e16ff2d2567e31720127fbc6430758c1a4efc6aef29f8081604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a192915050565b6040516102148061020f833901905600608060405234801561001057600080fd5b506040516020806102148339810180604052810190808051906020019092919050505060008173ffffffffffffffffffffffffffffffffffffffff161415151561005957600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505061016b806100a96000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461008b5780635c60da1b146100b6575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e6000811415610086573d6000fd5b3d6000f35b34801561009757600080fd5b506100a061010d565b6040518082815260200191505060405180910390f35b3480156100c257600080fd5b506100cb610116565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006002905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a72305820cd7d1e9dd84eb221f79b1c8f72a39fad7d9f8ab7239d25c1fc563147abcaf4150029a165627a7a72305820894d1145d2178ea5a3debf7a1ffb29cfdf9100a5997f8e3b2c8640a6db5c5b120029", - "deployedBytecode": "0x608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806361b69abd14610046575b600080fd5b34801561005257600080fd5b506100cd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061010f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008261011a6101fe565b808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f08015801561016c573d6000803e3d6000fd5b5090506000825111156101955760008060008451602086016000865af1141561019457600080fd5b5b7fa38789425dbeee0239e16ff2d2567e31720127fbc6430758c1a4efc6aef29f8081604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a192915050565b6040516102148061020f833901905600608060405234801561001057600080fd5b506040516020806102148339810180604052810190808051906020019092919050505060008173ffffffffffffffffffffffffffffffffffffffff161415151561005957600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505061016b806100a96000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461008b5780635c60da1b146100b6575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e6000811415610086573d6000fd5b3d6000f35b34801561009757600080fd5b506100a061010d565b6040518082815260200191505060405180910390f35b3480156100c257600080fd5b506100cb610116565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006002905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a72305820cd7d1e9dd84eb221f79b1c8f72a39fad7d9f8ab7239d25c1fc563147abcaf4150029a165627a7a72305820894d1145d2178ea5a3debf7a1ffb29cfdf9100a5997f8e3b2c8640a6db5c5b120029", + "bytecode": "0x608060405234801561001057600080fd5b506104dd806100206000396000f300608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806361b69abd14610046575b600080fd5b34801561005257600080fd5b506100cd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061010f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008261011a6101fe565b808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f08015801561016c573d6000803e3d6000fd5b5090506000825111156101955760008060008451602086016000865af1141561019457600080fd5b5b7fa38789425dbeee0239e16ff2d2567e31720127fbc6430758c1a4efc6aef29f8081604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a192915050565b6040516102a38061020f833901905600608060405234801561001057600080fd5b506040516020806102a38339810180604052810190808051906020019092919050505060008173ffffffffffffffffffffffffffffffffffffffff16141515156100e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f496e76616c6964206d617374657220636f707920616464726573732070726f7681526020017f696465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505061016b806101386000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461008b5780635c60da1b146100b6575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e6000811415610086573d6000fd5b3d6000f35b34801561009757600080fd5b506100a061010d565b6040518082815260200191505060405180910390f35b3480156100c257600080fd5b506100cb610116565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006002905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a72305820fb8f7addc79801292900c520af66dd86a1f9d0b643abe5d3ef1ac03eeb2d04080029a165627a7a72305820c742bd15271cf4492803c598458497f17945465dfdcebd0ab4ff208e21d7becf0029", + "deployedBytecode": "0x608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806361b69abd14610046575b600080fd5b34801561005257600080fd5b506100cd600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061010f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60008261011a6101fe565b808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050604051809103906000f08015801561016c573d6000803e3d6000fd5b5090506000825111156101955760008060008451602086016000865af1141561019457600080fd5b5b7fa38789425dbeee0239e16ff2d2567e31720127fbc6430758c1a4efc6aef29f8081604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a192915050565b6040516102a38061020f833901905600608060405234801561001057600080fd5b506040516020806102a38339810180604052810190808051906020019092919050505060008173ffffffffffffffffffffffffffffffffffffffff16141515156100e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f496e76616c6964206d617374657220636f707920616464726573732070726f7681526020017f696465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505061016b806101386000396000f30060806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680634555d5c91461008b5780635c60da1b146100b6575b73ffffffffffffffffffffffffffffffffffffffff600054163660008037600080366000845af43d6000803e6000811415610086573d6000fd5b3d6000f35b34801561009757600080fd5b506100a061010d565b6040518082815260200191505060405180910390f35b3480156100c257600080fd5b506100cb610116565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b60006002905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050905600a165627a7a72305820fb8f7addc79801292900c520af66dd86a1f9d0b643abe5d3ef1ac03eeb2d04080029a165627a7a72305820c742bd15271cf4492803c598458497f17945465dfdcebd0ab4ff208e21d7becf0029", "sourceMap": "225:725:12:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;225:725:12;;;;;;;", "deployedSourceMap": "225:725:12:-;;;;;;;;;;;;;;;;;;;;;;;;532:416;;8:9:-1;5:2;;;30:1;27;20:12;5:2;532:416:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;617:11;662:10;652:21;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;652:21:12;644:29;;701:1;687:4;:11;:15;683:237;;;874:1;870;867;860:4;854:11;847:4;841;837:15;834:1;827:5;822:3;817:55;814:62;811:2;;;889:1;886;879:12;811:2;793:114;921:20;935:5;921:20;;;;;;;;;;;;;;;;;;;;;;532:416;;;;:::o;225:725::-;;;;;;;;;;:::o", "source": "pragma solidity 0.4.24;\nimport \"./Proxy.sol\";\n\n\n/// @title Proxy Factory - Allows to create new proxy contact and execute a message call to the new proxy within one transaction.\n/// @author Stefan George - \ncontract ProxyFactory {\n\n event ProxyCreation(Proxy proxy);\n\n /// @dev Allows to create new proxy contact and execute a message call to the new proxy within one transaction.\n /// @param masterCopy Address of master copy.\n /// @param data Payload for message call sent to new proxy contract.\n function createProxy(address masterCopy, bytes data)\n public\n returns (Proxy proxy)\n {\n proxy = new Proxy(masterCopy);\n if (data.length > 0)\n // solium-disable-next-line security/no-inline-assembly\n assembly {\n if eq(call(gas, proxy, 0, add(data, 0x20), mload(data), 0, 0), 0) { revert(0, 0) }\n }\n emit ProxyCreation(proxy);\n }\n}\n", @@ -47,14 +47,14 @@ "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ProxyFactory.sol", "exportedSymbols": { "ProxyFactory": [ - 1603 + 1637 ] }, - "id": 1604, + "id": 1638, "nodeType": "SourceUnit", "nodes": [ { - "id": 1570, + "id": 1604, "literals": [ "solidity", "0.4", @@ -66,10 +66,10 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Proxy.sol", "file": "./Proxy.sol", - "id": 1571, + "id": 1605, "nodeType": "ImportDirective", - "scope": 1604, - "sourceUnit": 1569, + "scope": 1638, + "sourceUnit": 1603, "src": "24:21:12", "symbolAliases": [], "unitAlias": "" @@ -77,14 +77,14 @@ { "baseContracts": [], "contractDependencies": [ - 1568 + 1602 ], "contractKind": "contract", "documentation": "@title Proxy Factory - Allows to create new proxy contact and execute a message call to the new proxy within one transaction.\n @author Stefan George - ", "fullyImplemented": true, - "id": 1603, + "id": 1637, "linearizedBaseContracts": [ - 1603 + 1637 ], "name": "ProxyFactory", "nodeType": "ContractDefinition", @@ -92,36 +92,36 @@ { "anonymous": false, "documentation": null, - "id": 1575, + "id": 1609, "name": "ProxyCreation", "nodeType": "EventDefinition", "parameters": { - "id": 1574, + "id": 1608, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1573, + "id": 1607, "indexed": false, "name": "proxy", "nodeType": "VariableDeclaration", - "scope": 1575, + "scope": 1609, "src": "274:11:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1568", + "typeIdentifier": "t_contract$_Proxy_$1602", "typeString": "contract Proxy" }, "typeName": { "contractScope": null, - "id": 1572, + "id": 1606, "name": "Proxy", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1568, + "referencedDeclaration": 1602, "src": "274:5:12", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1568", + "typeIdentifier": "t_contract$_Proxy_$1602", "typeString": "contract Proxy" } }, @@ -135,28 +135,28 @@ }, { "body": { - "id": 1601, + "id": 1635, "nodeType": "Block", "src": "634:314:12", "statements": [ { "expression": { "argumentTypes": null, - "id": 1589, + "id": 1623, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1584, + "id": 1618, "name": "proxy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1582, + "referencedDeclaration": 1616, "src": "644:5:12", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1568", + "typeIdentifier": "t_contract$_Proxy_$1602", "typeString": "contract Proxy" } }, @@ -167,11 +167,11 @@ "arguments": [ { "argumentTypes": null, - "id": 1587, + "id": 1621, "name": "masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1577, + "referencedDeclaration": 1611, "src": "662:10:12", "typeDescriptions": { "typeIdentifier": "t_address", @@ -186,7 +186,7 @@ "typeString": "address" } ], - "id": 1586, + "id": 1620, "isConstant": false, "isLValue": false, "isPure": false, @@ -194,23 +194,23 @@ "nodeType": "NewExpression", "src": "652:9:12", "typeDescriptions": { - "typeIdentifier": "t_function_creation_nonpayable$_t_address_$returns$_t_contract$_Proxy_$1568_$", + "typeIdentifier": "t_function_creation_nonpayable$_t_address_$returns$_t_contract$_Proxy_$1602_$", "typeString": "function (address) returns (contract Proxy)" }, "typeName": { "contractScope": null, - "id": 1585, + "id": 1619, "name": "Proxy", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1568, + "referencedDeclaration": 1602, "src": "656:5:12", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1568", + "typeIdentifier": "t_contract$_Proxy_$1602", "typeString": "contract Proxy" } } }, - "id": 1588, + "id": 1622, "isConstant": false, "isLValue": false, "isPure": false, @@ -220,17 +220,17 @@ "nodeType": "FunctionCall", "src": "652:21:12", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1568", + "typeIdentifier": "t_contract$_Proxy_$1602", "typeString": "contract Proxy" } }, "src": "644:29:12", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1568", + "typeIdentifier": "t_contract$_Proxy_$1602", "typeString": "contract Proxy" } }, - "id": 1590, + "id": 1624, "nodeType": "ExpressionStatement", "src": "644:29:12" }, @@ -241,7 +241,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1594, + "id": 1628, "isConstant": false, "isLValue": false, "isPure": false, @@ -250,18 +250,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1591, + "id": 1625, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1579, + "referencedDeclaration": 1613, "src": "687:4:12", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, - "id": 1592, + "id": 1626, "isConstant": false, "isLValue": false, "isPure": false, @@ -280,7 +280,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1593, + "id": 1627, "isConstant": false, "isLValue": false, "isPure": true, @@ -302,14 +302,14 @@ } }, "falseBody": null, - "id": 1596, + "id": 1630, "nodeType": "IfStatement", "src": "683:237:12", "trueBody": { "externalReferences": [ { "data": { - "declaration": 1579, + "declaration": 1613, "isOffset": false, "isSlot": false, "src": "860:4:12", @@ -318,7 +318,7 @@ }, { "proxy": { - "declaration": 1582, + "declaration": 1616, "isOffset": false, "isSlot": false, "src": "827:5:12", @@ -327,7 +327,7 @@ }, { "data": { - "declaration": 1579, + "declaration": 1613, "isOffset": false, "isSlot": false, "src": "841:4:12", @@ -335,7 +335,7 @@ } } ], - "id": 1595, + "id": 1629, "nodeType": "InlineAssembly", "operations": "{\n if eq(call(gas(), proxy, 0, add(data, 0x20), mload(data), 0, 0), 0)\n {\n revert(0, 0)\n }\n}", "src": "784:136:12" @@ -347,14 +347,14 @@ "arguments": [ { "argumentTypes": null, - "id": 1598, + "id": 1632, "name": "proxy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1582, + "referencedDeclaration": 1616, "src": "935:5:12", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1568", + "typeIdentifier": "t_contract$_Proxy_$1602", "typeString": "contract Proxy" } } @@ -362,22 +362,22 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_Proxy_$1568", + "typeIdentifier": "t_contract$_Proxy_$1602", "typeString": "contract Proxy" } ], - "id": 1597, + "id": 1631, "name": "ProxyCreation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1575, + "referencedDeclaration": 1609, "src": "921:13:12", "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_contract$_Proxy_$1568_$returns$__$", + "typeIdentifier": "t_function_event_nonpayable$_t_contract$_Proxy_$1602_$returns$__$", "typeString": "function (contract Proxy)" } }, - "id": 1599, + "id": 1633, "isConstant": false, "isLValue": false, "isPure": false, @@ -391,14 +391,14 @@ "typeString": "tuple()" } }, - "id": 1600, + "id": 1634, "nodeType": "EmitStatement", "src": "916:25:12" } ] }, "documentation": "@dev Allows to create new proxy contact and execute a message call to the new proxy within one transaction.\n @param masterCopy Address of master copy.\n @param data Payload for message call sent to new proxy contract.", - "id": 1602, + "id": 1636, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -406,15 +406,15 @@ "name": "createProxy", "nodeType": "FunctionDefinition", "parameters": { - "id": 1580, + "id": 1614, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1577, + "id": 1611, "name": "masterCopy", "nodeType": "VariableDeclaration", - "scope": 1602, + "scope": 1636, "src": "553:18:12", "stateVariable": false, "storageLocation": "default", @@ -423,7 +423,7 @@ "typeString": "address" }, "typeName": { - "id": 1576, + "id": 1610, "name": "address", "nodeType": "ElementaryTypeName", "src": "553:7:12", @@ -437,10 +437,10 @@ }, { "constant": false, - "id": 1579, + "id": 1613, "name": "data", "nodeType": "VariableDeclaration", - "scope": 1602, + "scope": 1636, "src": "573:10:12", "stateVariable": false, "storageLocation": "default", @@ -449,7 +449,7 @@ "typeString": "bytes" }, "typeName": { - "id": 1578, + "id": 1612, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "573:5:12", @@ -466,31 +466,31 @@ }, "payable": false, "returnParameters": { - "id": 1583, + "id": 1617, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1582, + "id": 1616, "name": "proxy", "nodeType": "VariableDeclaration", - "scope": 1602, + "scope": 1636, "src": "617:11:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1568", + "typeIdentifier": "t_contract$_Proxy_$1602", "typeString": "contract Proxy" }, "typeName": { "contractScope": null, - "id": 1581, + "id": 1615, "name": "Proxy", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1568, + "referencedDeclaration": 1602, "src": "617:5:12", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1568", + "typeIdentifier": "t_contract$_Proxy_$1602", "typeString": "contract Proxy" } }, @@ -500,14 +500,14 @@ ], "src": "616:13:12" }, - "scope": 1603, + "scope": 1637, "src": "532:416:12", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 1604, + "scope": 1638, "src": "225:725:12" } ], @@ -517,14 +517,14 @@ "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ProxyFactory.sol", "exportedSymbols": { "ProxyFactory": [ - 1603 + 1637 ] }, - "id": 1604, + "id": 1638, "nodeType": "SourceUnit", "nodes": [ { - "id": 1570, + "id": 1604, "literals": [ "solidity", "0.4", @@ -536,10 +536,10 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Proxy.sol", "file": "./Proxy.sol", - "id": 1571, + "id": 1605, "nodeType": "ImportDirective", - "scope": 1604, - "sourceUnit": 1569, + "scope": 1638, + "sourceUnit": 1603, "src": "24:21:12", "symbolAliases": [], "unitAlias": "" @@ -547,14 +547,14 @@ { "baseContracts": [], "contractDependencies": [ - 1568 + 1602 ], "contractKind": "contract", "documentation": "@title Proxy Factory - Allows to create new proxy contact and execute a message call to the new proxy within one transaction.\n @author Stefan George - ", "fullyImplemented": true, - "id": 1603, + "id": 1637, "linearizedBaseContracts": [ - 1603 + 1637 ], "name": "ProxyFactory", "nodeType": "ContractDefinition", @@ -562,36 +562,36 @@ { "anonymous": false, "documentation": null, - "id": 1575, + "id": 1609, "name": "ProxyCreation", "nodeType": "EventDefinition", "parameters": { - "id": 1574, + "id": 1608, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1573, + "id": 1607, "indexed": false, "name": "proxy", "nodeType": "VariableDeclaration", - "scope": 1575, + "scope": 1609, "src": "274:11:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1568", + "typeIdentifier": "t_contract$_Proxy_$1602", "typeString": "contract Proxy" }, "typeName": { "contractScope": null, - "id": 1572, + "id": 1606, "name": "Proxy", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1568, + "referencedDeclaration": 1602, "src": "274:5:12", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1568", + "typeIdentifier": "t_contract$_Proxy_$1602", "typeString": "contract Proxy" } }, @@ -605,28 +605,28 @@ }, { "body": { - "id": 1601, + "id": 1635, "nodeType": "Block", "src": "634:314:12", "statements": [ { "expression": { "argumentTypes": null, - "id": 1589, + "id": 1623, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 1584, + "id": 1618, "name": "proxy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1582, + "referencedDeclaration": 1616, "src": "644:5:12", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1568", + "typeIdentifier": "t_contract$_Proxy_$1602", "typeString": "contract Proxy" } }, @@ -637,11 +637,11 @@ "arguments": [ { "argumentTypes": null, - "id": 1587, + "id": 1621, "name": "masterCopy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1577, + "referencedDeclaration": 1611, "src": "662:10:12", "typeDescriptions": { "typeIdentifier": "t_address", @@ -656,7 +656,7 @@ "typeString": "address" } ], - "id": 1586, + "id": 1620, "isConstant": false, "isLValue": false, "isPure": false, @@ -664,23 +664,23 @@ "nodeType": "NewExpression", "src": "652:9:12", "typeDescriptions": { - "typeIdentifier": "t_function_creation_nonpayable$_t_address_$returns$_t_contract$_Proxy_$1568_$", + "typeIdentifier": "t_function_creation_nonpayable$_t_address_$returns$_t_contract$_Proxy_$1602_$", "typeString": "function (address) returns (contract Proxy)" }, "typeName": { "contractScope": null, - "id": 1585, + "id": 1619, "name": "Proxy", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1568, + "referencedDeclaration": 1602, "src": "656:5:12", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1568", + "typeIdentifier": "t_contract$_Proxy_$1602", "typeString": "contract Proxy" } } }, - "id": 1588, + "id": 1622, "isConstant": false, "isLValue": false, "isPure": false, @@ -690,17 +690,17 @@ "nodeType": "FunctionCall", "src": "652:21:12", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1568", + "typeIdentifier": "t_contract$_Proxy_$1602", "typeString": "contract Proxy" } }, "src": "644:29:12", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1568", + "typeIdentifier": "t_contract$_Proxy_$1602", "typeString": "contract Proxy" } }, - "id": 1590, + "id": 1624, "nodeType": "ExpressionStatement", "src": "644:29:12" }, @@ -711,7 +711,7 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 1594, + "id": 1628, "isConstant": false, "isLValue": false, "isPure": false, @@ -720,18 +720,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1591, + "id": 1625, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1579, + "referencedDeclaration": 1613, "src": "687:4:12", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, - "id": 1592, + "id": 1626, "isConstant": false, "isLValue": false, "isPure": false, @@ -750,7 +750,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 1593, + "id": 1627, "isConstant": false, "isLValue": false, "isPure": true, @@ -772,14 +772,14 @@ } }, "falseBody": null, - "id": 1596, + "id": 1630, "nodeType": "IfStatement", "src": "683:237:12", "trueBody": { "externalReferences": [ { "data": { - "declaration": 1579, + "declaration": 1613, "isOffset": false, "isSlot": false, "src": "860:4:12", @@ -788,7 +788,7 @@ }, { "proxy": { - "declaration": 1582, + "declaration": 1616, "isOffset": false, "isSlot": false, "src": "827:5:12", @@ -797,7 +797,7 @@ }, { "data": { - "declaration": 1579, + "declaration": 1613, "isOffset": false, "isSlot": false, "src": "841:4:12", @@ -805,7 +805,7 @@ } } ], - "id": 1595, + "id": 1629, "nodeType": "InlineAssembly", "operations": "{\n if eq(call(gas(), proxy, 0, add(data, 0x20), mload(data), 0, 0), 0)\n {\n revert(0, 0)\n }\n}", "src": "784:136:12" @@ -817,14 +817,14 @@ "arguments": [ { "argumentTypes": null, - "id": 1598, + "id": 1632, "name": "proxy", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1582, + "referencedDeclaration": 1616, "src": "935:5:12", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1568", + "typeIdentifier": "t_contract$_Proxy_$1602", "typeString": "contract Proxy" } } @@ -832,22 +832,22 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_Proxy_$1568", + "typeIdentifier": "t_contract$_Proxy_$1602", "typeString": "contract Proxy" } ], - "id": 1597, + "id": 1631, "name": "ProxyCreation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1575, + "referencedDeclaration": 1609, "src": "921:13:12", "typeDescriptions": { - "typeIdentifier": "t_function_event_nonpayable$_t_contract$_Proxy_$1568_$returns$__$", + "typeIdentifier": "t_function_event_nonpayable$_t_contract$_Proxy_$1602_$returns$__$", "typeString": "function (contract Proxy)" } }, - "id": 1599, + "id": 1633, "isConstant": false, "isLValue": false, "isPure": false, @@ -861,14 +861,14 @@ "typeString": "tuple()" } }, - "id": 1600, + "id": 1634, "nodeType": "EmitStatement", "src": "916:25:12" } ] }, "documentation": "@dev Allows to create new proxy contact and execute a message call to the new proxy within one transaction.\n @param masterCopy Address of master copy.\n @param data Payload for message call sent to new proxy contract.", - "id": 1602, + "id": 1636, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -876,15 +876,15 @@ "name": "createProxy", "nodeType": "FunctionDefinition", "parameters": { - "id": 1580, + "id": 1614, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1577, + "id": 1611, "name": "masterCopy", "nodeType": "VariableDeclaration", - "scope": 1602, + "scope": 1636, "src": "553:18:12", "stateVariable": false, "storageLocation": "default", @@ -893,7 +893,7 @@ "typeString": "address" }, "typeName": { - "id": 1576, + "id": 1610, "name": "address", "nodeType": "ElementaryTypeName", "src": "553:7:12", @@ -907,10 +907,10 @@ }, { "constant": false, - "id": 1579, + "id": 1613, "name": "data", "nodeType": "VariableDeclaration", - "scope": 1602, + "scope": 1636, "src": "573:10:12", "stateVariable": false, "storageLocation": "default", @@ -919,7 +919,7 @@ "typeString": "bytes" }, "typeName": { - "id": 1578, + "id": 1612, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "573:5:12", @@ -936,31 +936,31 @@ }, "payable": false, "returnParameters": { - "id": 1583, + "id": 1617, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 1582, + "id": 1616, "name": "proxy", "nodeType": "VariableDeclaration", - "scope": 1602, + "scope": 1636, "src": "617:11:12", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1568", + "typeIdentifier": "t_contract$_Proxy_$1602", "typeString": "contract Proxy" }, "typeName": { "contractScope": null, - "id": 1581, + "id": 1615, "name": "Proxy", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 1568, + "referencedDeclaration": 1602, "src": "617:5:12", "typeDescriptions": { - "typeIdentifier": "t_contract$_Proxy_$1568", + "typeIdentifier": "t_contract$_Proxy_$1602", "typeString": "contract Proxy" } }, @@ -970,14 +970,14 @@ ], "src": "616:13:12" }, - "scope": 1603, + "scope": 1637, "src": "532:416:12", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 1604, + "scope": 1638, "src": "225:725:12" } ], @@ -991,22 +991,16 @@ "4": { "events": {}, "links": {}, - "address": "0x78b7e500f63afb4c692b9b6a43e092278cbffaa1", - "transactionHash": "0xebf1fca163a66fdf988707624fa744b57d1eeedcc9f7eaee66555d1fc474c01e" - }, - "1527316019334": { - "events": {}, - "links": {}, - "address": "0x63f96c3c48bf69ce28e8b8be3c092807d9cf75c3", - "transactionHash": "0xbf12ab2315082a4c3e20abe6305376e3669b7cdee1bbfc079934e41aad57f4f3" + "address": "0x5fae0ba38b6e532e97f064a5a28276071ba5841c", + "transactionHash": "0x336dee0e43b6d4defa98ac04db8294591e55361e725d3c1e2e85037e3671ed97" }, "1527420696956": { "events": {}, "links": {}, - "address": "0x7be7064be7fa89c37e849fe58d68967da7d912b6", - "transactionHash": "0xc64211adf2eafca94ba6fe1b59e2ddd73ab867efd20ed1db80ca6eee90591aaf" + "address": "0xac9c7e3390e950803f64d89033b844a248921cb9", + "transactionHash": "0x9e8ad0a8a820c5873b5bd340b74a0bc1c13f39929c67fba109070c785feb5661" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-27T11:31:46.235Z" + "updatedAt": "2018-05-28T06:08:59.451Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/SelfAuthorized.json b/safe-contracts/build/contracts/SelfAuthorized.json index 679b4831de..2ac86b811e 100644 --- a/safe-contracts/build/contracts/SelfAuthorized.json +++ b/safe-contracts/build/contracts/SelfAuthorized.json @@ -1,24 +1,24 @@ { "contractName": "SelfAuthorized", "abi": [], - "bytecode": "0x6080604052348015600f57600080fd5b50603580601d6000396000f3006080604052600080fd00a165627a7a72305820af9f772ea9919e0b590dbadc1d255c497a0a1031eaf00e4735e7b65b3f2e31520029", - "deployedBytecode": "0x6080604052600080fd00a165627a7a72305820af9f772ea9919e0b590dbadc1d255c497a0a1031eaf00e4735e7b65b3f2e31520029", - "sourceMap": "152:118:13:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;152:118:13;;;;;;;", - "deployedSourceMap": "152:118:13:-;;;;;", - "source": "pragma solidity 0.4.24;\n\n\n/// @title SelfAuthorized - authorizes current contract to perform actions\n/// @author Richard Meissner - \ncontract SelfAuthorized {\n modifier authorized() {\n require(msg.sender == address(this));\n _;\n }\n}\n", + "bytecode": "0x6080604052348015600f57600080fd5b50603580601d6000396000f3006080604052600080fd00a165627a7a72305820ec80f1b4520aa5197e4181778f1e2e4fc460002d4a40e2e8e6709c8986067c220029", + "deployedBytecode": "0x6080604052600080fd00a165627a7a72305820ec80f1b4520aa5197e4181778f1e2e4fc460002d4a40e2e8e6709c8986067c220029", + "sourceMap": "152:166:13:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;152:166:13;;;;;;;", + "deployedSourceMap": "152:166:13:-;;;;;", + "source": "pragma solidity 0.4.24;\n\n\n/// @title SelfAuthorized - authorizes current contract to perform actions\n/// @author Richard Meissner - \ncontract SelfAuthorized {\n modifier authorized() {\n require(msg.sender == address(this), \"Method can only be called from this contract\");\n _;\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/SelfAuthorized.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/SelfAuthorized.sol", "exportedSymbols": { "SelfAuthorized": [ - 1619 + 1654 ] }, - "id": 1620, + "id": 1655, "nodeType": "SourceUnit", "nodes": [ { - "id": 1605, + "id": 1639, "literals": [ "solidity", "0.4", @@ -33,18 +33,18 @@ "contractKind": "contract", "documentation": "@title SelfAuthorized - authorizes current contract to perform actions\n @author Richard Meissner - ", "fullyImplemented": true, - "id": 1619, + "id": 1654, "linearizedBaseContracts": [ - 1619 + 1654 ], "name": "SelfAuthorized", "nodeType": "ContractDefinition", "nodes": [ { "body": { - "id": 1617, + "id": 1652, "nodeType": "Block", - "src": "204:64:13", + "src": "204:112:13", "statements": [ { "expression": { @@ -56,7 +56,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1613, + "id": 1647, "isConstant": false, "isLValue": false, "isPure": false, @@ -65,18 +65,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1608, + "id": 1642, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2598, + "referencedDeclaration": 2654, "src": "222:3:13", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 1609, + "id": 1643, "isConstant": false, "isLValue": false, "isPure": false, @@ -97,14 +97,14 @@ "arguments": [ { "argumentTypes": null, - "id": 1611, + "id": 1645, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2617, + "referencedDeclaration": 2673, "src": "244:4:13", "typeDescriptions": { - "typeIdentifier": "t_contract$_SelfAuthorized_$1619", + "typeIdentifier": "t_contract$_SelfAuthorized_$1654", "typeString": "contract SelfAuthorized" } } @@ -112,11 +112,11 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_SelfAuthorized_$1619", + "typeIdentifier": "t_contract$_SelfAuthorized_$1654", "typeString": "contract SelfAuthorized" } ], - "id": 1610, + "id": 1644, "isConstant": false, "isLValue": false, "isPure": true, @@ -129,7 +129,7 @@ }, "typeName": "address" }, - "id": 1612, + "id": 1646, "isConstant": false, "isLValue": false, "isPure": false, @@ -148,6 +148,24 @@ "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207468697320636f6e7472616374", + "id": 1648, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "251:46:13", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c4780ef0a1d41d59bac8c510cf9ada421bccf2b90f75a8e4ba2e8c09e8d72733", + "typeString": "literal_string \"Method can only be called from this contract\"" + }, + "value": "Method can only be called from this contract" } ], "expression": { @@ -155,23 +173,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_c4780ef0a1d41d59bac8c510cf9ada421bccf2b90f75a8e4ba2e8c09e8d72733", + "typeString": "literal_string \"Method can only be called from this contract\"" } ], - "id": 1607, + "id": 1641, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, + "referencedDeclaration": 2658, "src": "214:7:13", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1614, + "id": 1649, "isConstant": false, "isLValue": false, "isPure": false, @@ -179,55 +201,55 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "214:36:13", + "src": "214:84:13", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1615, + "id": 1650, "nodeType": "ExpressionStatement", - "src": "214:36:13" + "src": "214:84:13" }, { - "id": 1616, + "id": 1651, "nodeType": "PlaceholderStatement", - "src": "260:1:13" + "src": "308:1:13" } ] }, "documentation": null, - "id": 1618, + "id": 1653, "name": "authorized", "nodeType": "ModifierDefinition", "parameters": { - "id": 1606, + "id": 1640, "nodeType": "ParameterList", "parameters": [], "src": "201:2:13" }, - "src": "182:86:13", + "src": "182:134:13", "visibility": "internal" } ], - "scope": 1620, - "src": "152:118:13" + "scope": 1655, + "src": "152:166:13" } ], - "src": "0:271:13" + "src": "0:319:13" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/SelfAuthorized.sol", "exportedSymbols": { "SelfAuthorized": [ - 1619 + 1654 ] }, - "id": 1620, + "id": 1655, "nodeType": "SourceUnit", "nodes": [ { - "id": 1605, + "id": 1639, "literals": [ "solidity", "0.4", @@ -242,18 +264,18 @@ "contractKind": "contract", "documentation": "@title SelfAuthorized - authorizes current contract to perform actions\n @author Richard Meissner - ", "fullyImplemented": true, - "id": 1619, + "id": 1654, "linearizedBaseContracts": [ - 1619 + 1654 ], "name": "SelfAuthorized", "nodeType": "ContractDefinition", "nodes": [ { "body": { - "id": 1617, + "id": 1652, "nodeType": "Block", - "src": "204:64:13", + "src": "204:112:13", "statements": [ { "expression": { @@ -265,7 +287,7 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 1613, + "id": 1647, "isConstant": false, "isLValue": false, "isPure": false, @@ -274,18 +296,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 1608, + "id": 1642, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2598, + "referencedDeclaration": 2654, "src": "222:3:13", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 1609, + "id": 1643, "isConstant": false, "isLValue": false, "isPure": false, @@ -306,14 +328,14 @@ "arguments": [ { "argumentTypes": null, - "id": 1611, + "id": 1645, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2617, + "referencedDeclaration": 2673, "src": "244:4:13", "typeDescriptions": { - "typeIdentifier": "t_contract$_SelfAuthorized_$1619", + "typeIdentifier": "t_contract$_SelfAuthorized_$1654", "typeString": "contract SelfAuthorized" } } @@ -321,11 +343,11 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_SelfAuthorized_$1619", + "typeIdentifier": "t_contract$_SelfAuthorized_$1654", "typeString": "contract SelfAuthorized" } ], - "id": 1610, + "id": 1644, "isConstant": false, "isLValue": false, "isPure": true, @@ -338,7 +360,7 @@ }, "typeName": "address" }, - "id": 1612, + "id": 1646, "isConstant": false, "isLValue": false, "isPure": false, @@ -357,6 +379,24 @@ "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d207468697320636f6e7472616374", + "id": 1648, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "251:46:13", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c4780ef0a1d41d59bac8c510cf9ada421bccf2b90f75a8e4ba2e8c09e8d72733", + "typeString": "literal_string \"Method can only be called from this contract\"" + }, + "value": "Method can only be called from this contract" } ], "expression": { @@ -364,23 +404,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_c4780ef0a1d41d59bac8c510cf9ada421bccf2b90f75a8e4ba2e8c09e8d72733", + "typeString": "literal_string \"Method can only be called from this contract\"" } ], - "id": 1607, + "id": 1641, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, + "referencedDeclaration": 2658, "src": "214:7:13", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 1614, + "id": 1649, "isConstant": false, "isLValue": false, "isPure": false, @@ -388,42 +432,42 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "214:36:13", + "src": "214:84:13", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 1615, + "id": 1650, "nodeType": "ExpressionStatement", - "src": "214:36:13" + "src": "214:84:13" }, { - "id": 1616, + "id": 1651, "nodeType": "PlaceholderStatement", - "src": "260:1:13" + "src": "308:1:13" } ] }, "documentation": null, - "id": 1618, + "id": 1653, "name": "authorized", "nodeType": "ModifierDefinition", "parameters": { - "id": 1606, + "id": 1640, "nodeType": "ParameterList", "parameters": [], "src": "201:2:13" }, - "src": "182:86:13", + "src": "182:134:13", "visibility": "internal" } ], - "scope": 1620, - "src": "152:118:13" + "scope": 1655, + "src": "152:166:13" } ], - "src": "0:271:13" + "src": "0:319:13" }, "compiler": { "name": "solc", @@ -431,5 +475,5 @@ }, "networks": {}, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-27T11:12:45.584Z" + "updatedAt": "2018-05-28T05:59:52.707Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/SocialRecoveryModule.json b/safe-contracts/build/contracts/SocialRecoveryModule.json index 1da04b6326..3f0dcaa697 100644 --- a/safe-contracts/build/contracts/SocialRecoveryModule.json +++ b/safe-contracts/build/contracts/SocialRecoveryModule.json @@ -244,24 +244,24 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50611171806100206000396000f3006080604052600436106100d0576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680633cf5b309146100d557806342cde4e814610148578063481c6a751461017957806368125a1b146101d057806377231eaa1461022b57806379716e43146102ae5780637de7edef146102df5780639ca89d0d14610322578063a3f4df7e1461036b578063ae68b056146103fb578063b79ffaff14610480578063ce146828146104e9578063e52cb36a14610556578063ffa1ad741461059f575b600080fd5b3480156100e157600080fd5b5061014660048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff16906020019092919050505061062f565b005b34801561015457600080fd5b5061015d6107a4565b604051808260ff1660ff16815260200191505060405180910390f35b34801561018557600080fd5b5061018e6107b7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101dc57600080fd5b50610211600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107dd565b604051808215151515815260200191505060405180910390f35b34801561023757600080fd5b506102ac600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107fd565b005b3480156102ba57600080fd5b506102dd6004803603810190808035600019169060200190929190505050610bbe565b005b3480156102eb57600080fd5b50610320600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610cbf565b005b34801561032e57600080fd5b506103516004803603810190808035600019169060200190929190505050610d84565b604051808215151515815260200191505060405180910390f35b34801561037757600080fd5b50610380610e83565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103c05780820151818401526020810190506103a5565b50505050905090810190601f1680156103ed5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561040757600080fd5b50610462600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610ebc565b60405180826000191660001916815260200191505060405180910390f35b34801561048c57600080fd5b506104cf6004803603810190808035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f28565b604051808215151515815260200191505060405180910390f35b3480156104f557600080fd5b5061051460048036038101908080359060200190929190505050610f57565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561056257600080fd5b506105856004803603810190808035600019169060200190929190505050610f95565b604051808215151515815260200191505060405180910390f35b3480156105ab57600080fd5b506105b4610fb5565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105f45780820151818401526020810190506105d9565b50505050905090810190601f1680156106215780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60008083518360ff161115151561064557600080fd5b60028360ff161015151561065857600080fd5b610660610fee565b600091505b835182101561076c57838281518110151561067c57fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff16141515156106ae57600080fd5b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561070757600080fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508180600101925050610665565b8360029080519060200190610782929190611078565b5082600160146101000a81548160ff021916908360ff16021790555050505050565b600160149054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60036020528060005260406000206000915054906101000a900460ff1681565b60606000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561085957600080fd5b848484604051602401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200193505050506040516020818303038152906040527fe318b52b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050915061098682610ebc565b905060046000826000191660001916815260200190815260200160002060009054906101000a900460ff161515156109bd57600080fd5b6109c681610d84565b15156109d157600080fd5b600160046000836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a7600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660008560006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001836002811115610ae257fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b83811015610b22578082015181840152602081019050610b07565b50505050905090810190601f168015610b4f5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610b7157600080fd5b505af1158015610b85573d6000803e3d6000fd5b505050506040513d6020811015610b9b57600080fd5b81019080805190602001909291905050501515610bb757600080fd5b5050505050565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610c1657600080fd5b60046000826000191660001916815260200190815260200160002060009054906101000a900460ff16151515610c4b57600080fd5b600160056000836000191660001916815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610d1b57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610d4157600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060008090505b600280549050811015610e77576005600085600019166000191681526020019081526020016000206000600283815481101515610dc657fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610e475781806001019250505b600160149054906101000a900460ff1660ff16821415610e6a5760019250610e7c565b8080600101915050610d8d565b600092505b5050919050565b6040805190810160405280601681526020017f536f6369616c205265636f76657279204d6f64756c650000000000000000000081525081565b6000816040518082805190602001908083835b602083101515610ef45780518252602082019150602081019050602083039250610ecf565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209050919050565b60056020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b600281815481101515610f6657fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60046020528060005260406000206000915054906101000a900460ff1681565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561103557600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b8280548282559060005260206000209081019282156110f1579160200282015b828111156110f05782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190611098565b5b5090506110fe9190611102565b5090565b61114291905b8082111561113e57600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101611108565b5090565b905600a165627a7a7230582016bbe219e7ccae5c600c8f48a1fc8b74cff478e1cbbcf8be80a150f855d6eb800029", - "deployedBytecode": "0x6080604052600436106100d0576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680633cf5b309146100d557806342cde4e814610148578063481c6a751461017957806368125a1b146101d057806377231eaa1461022b57806379716e43146102ae5780637de7edef146102df5780639ca89d0d14610322578063a3f4df7e1461036b578063ae68b056146103fb578063b79ffaff14610480578063ce146828146104e9578063e52cb36a14610556578063ffa1ad741461059f575b600080fd5b3480156100e157600080fd5b5061014660048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff16906020019092919050505061062f565b005b34801561015457600080fd5b5061015d6107a4565b604051808260ff1660ff16815260200191505060405180910390f35b34801561018557600080fd5b5061018e6107b7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101dc57600080fd5b50610211600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107dd565b604051808215151515815260200191505060405180910390f35b34801561023757600080fd5b506102ac600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506107fd565b005b3480156102ba57600080fd5b506102dd6004803603810190808035600019169060200190929190505050610bbe565b005b3480156102eb57600080fd5b50610320600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610cbf565b005b34801561032e57600080fd5b506103516004803603810190808035600019169060200190929190505050610d84565b604051808215151515815260200191505060405180910390f35b34801561037757600080fd5b50610380610e83565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103c05780820151818401526020810190506103a5565b50505050905090810190601f1680156103ed5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561040757600080fd5b50610462600480360381019080803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050610ebc565b60405180826000191660001916815260200191505060405180910390f35b34801561048c57600080fd5b506104cf6004803603810190808035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f28565b604051808215151515815260200191505060405180910390f35b3480156104f557600080fd5b5061051460048036038101908080359060200190929190505050610f57565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561056257600080fd5b506105856004803603810190808035600019169060200190929190505050610f95565b604051808215151515815260200191505060405180910390f35b3480156105ab57600080fd5b506105b4610fb5565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105f45780820151818401526020810190506105d9565b50505050905090810190601f1680156106215780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60008083518360ff161115151561064557600080fd5b60028360ff161015151561065857600080fd5b610660610fee565b600091505b835182101561076c57838281518110151561067c57fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff16141515156106ae57600080fd5b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151561070757600080fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508180600101925050610665565b8360029080519060200190610782929190611078565b5082600160146101000a81548160ff021916908360ff16021790555050505050565b600160149054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60036020528060005260406000206000915054906101000a900460ff1681565b60606000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151561085957600080fd5b848484604051602401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200193505050506040516020818303038152906040527fe318b52b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050915061098682610ebc565b905060046000826000191660001916815260200190815260200160002060009054906101000a900460ff161515156109bd57600080fd5b6109c681610d84565b15156109d157600080fd5b600160046000836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a7600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660008560006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001836002811115610ae257fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b83811015610b22578082015181840152602081019050610b07565b50505050905090810190601f168015610b4f5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610b7157600080fd5b505af1158015610b85573d6000803e3d6000fd5b505050506040513d6020811015610b9b57600080fd5b81019080805190602001909291905050501515610bb757600080fd5b5050505050565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610c1657600080fd5b60046000826000191660001916815260200190815260200160002060009054906101000a900460ff16151515610c4b57600080fd5b600160056000836000191660001916815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610d1b57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610d4157600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060008090505b600280549050811015610e77576005600085600019166000191681526020019081526020016000206000600283815481101515610dc657fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610e475781806001019250505b600160149054906101000a900460ff1660ff16821415610e6a5760019250610e7c565b8080600101915050610d8d565b600092505b5050919050565b6040805190810160405280601681526020017f536f6369616c205265636f76657279204d6f64756c650000000000000000000081525081565b6000816040518082805190602001908083835b602083101515610ef45780518252602082019150602081019050602083039250610ecf565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209050919050565b60056020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b600281815481101515610f6657fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60046020528060005260406000206000915054906101000a900460ff1681565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561103557600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b8280548282559060005260206000209081019282156110f1579160200282015b828111156110f05782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555091602001919060010190611098565b5b5090506110fe9190611102565b5090565b61114291905b8082111561113e57600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101611108565b5090565b905600a165627a7a7230582016bbe219e7ccae5c600c8f48a1fc8b74cff478e1cbbcf8be80a150f855d6eb800029", - "sourceMap": "306:3426:18:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;306:3426:18;;;;;;;", - "deployedSourceMap": "306:3426:18:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1175:494;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1175:494:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;460:22;;8:9:-1;5:2;;;30:1;27;20:12;5:2;460:22:18;;;;;;;;;;;;;;;;;;;;;;;;;;;262:28:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;262:28:7;;;;;;;;;;;;;;;;;;;;;;;;;;;583:41:18;;8:9:-1;5:2;;;30:1;27;20:12;5:2;583:41:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2296:609;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2296:609:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1782:181;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1782:181:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;626:208:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:208:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;3066:405:18;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3066:405:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;353:54;;8:9:-1;5:2;;;30:1;27;20:12;5:2;353:54:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;353:54:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3600:130;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3600:130:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;827:65;;8:9:-1;5:2;;;30:1;27;20:12;5:2;827:65:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;488:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;488:24:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;692:43;;8:9:-1;5:2;;;30:1;27;20:12;5:2;692:43:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;413:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;413:40:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;413:40:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1175:494;1398:9;1453:14;1279:8;:15;1265:10;:29;;;;1257:38;;;;;;;;1327:1;1313:10;:15;;;;1305:24;;;;;;;;1339:12;:10;:12::i;:::-;1410:1;1398:13;;1393:210;1417:8;:15;1413:1;:19;1393:210;;;1470:8;1479:1;1470:11;;;;;;;;;;;;;;;;;;1453:28;;1513:1;1503:6;:11;;;;1495:20;;;;;;;;1538:8;:16;1547:6;1538:16;;;;;;;;;;;;;;;;;;;;;;;;;1537:17;1529:26;;;;;;;;1588:4;1569:8;:16;1578:6;1569:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;1434:3;;;;;;;1393:210;;;1622:8;1612:7;:18;;;;;;;;;;;;:::i;:::-;;1652:10;1640:9;;:22;;;;;;;;;;;;;;;;;;1175:494;;;;:::o;460:22::-;;;;;;;;;;;;;:::o;262:28:7:-;;;;;;;;;;;;;:::o;583:41:18:-;;;;;;;;;;;;;;;;;;;;;;:::o;2296:609::-;2506:17;2628:16;2475:8;:20;2484:10;2475:20;;;;;;;;;;;;;;;;;;;;;;;;;2467:29;;;;;;;;2588:9;2599:8;2609;2526:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2526:92:18;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;2526:92:18;2506:112;;2647:17;2659:4;2647:11;:17::i;:::-;2628:36;;2683:10;:20;2694:8;2683:20;;;;;;;;;;;;;;;;;;;;;;;;;;;2682:21;2674:30;;;;;;;;2722:38;2751:8;2722:28;:38::i;:::-;2714:47;;;;;;;;2794:4;2771:10;:20;2782:8;2771:20;;;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;2816:7;;;;;;;;;;;:33;;;2858:7;;;;;;;;;;;2868:1;2871:4;2877:19;2816:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;2816:81:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2816:81:18;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2816:81:18;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2816:81:18;;;;;;;;;;;;;;;;2808:90;;;;;;;;2296:609;;;;;:::o;1782:181::-;939:8;:20;948:10;939:20;;;;;;;;;;;;;;;;;;;;;;;;;931:29;;;;;;;;1885:10;:20;1896:8;1885:20;;;;;;;;;;;;;;;;;;;;;;;;;;;1884:21;1876:30;;;;;;;;1952:4;1916:11;:21;1928:8;1916:21;;;;;;;;;;;;;;;;;:33;1938:10;1916:33;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;1782:181;:::o;626:208:5:-;359:7:7;;;;;;;;;;;337:30;;:10;:30;;;329:39;;;;;;;;791:1:5;776:11;:16;;;;768:25;;;;;;;;816:11;803:10;;:24;;;;;;;;;;;;;;;;;;626:208;:::o;3066:405:18:-;3167:4;3187:25;3227:9;3239:1;3227:13;;3222:221;3246:7;:14;;;;3242:1;:18;3222:221;;;3285:11;:21;3297:8;3285:21;;;;;;;;;;;;;;;;;:33;3307:7;3315:1;3307:10;;;;;;;;;;;;;;;;;;;;;;;;;;;3285:33;;;;;;;;;;;;;;;;;;;;;;;;;3281:74;;;3336:19;;;;;;;3281:74;3394:9;;;;;;;;;;;3373:30;;:17;:30;3369:63;;;3428:4;3421:11;;;;3369:63;3262:3;;;;;;;3222:221;;;3459:5;3452:12;;3066:405;;;;;;:::o;353:54::-;;;;;;;;;;;;;;;;;;;;:::o;3600:130::-;3678:7;3718:4;3708:15;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;3708:15:18;;;;;;;;;;;;;;;;3701:22;;3600:130;;;:::o;827:65::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;488:24::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;692:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;413:40::-;;;;;;;;;;;;;;;;;;;;:::o;392:268:7:-;606:1;594:7;;;;;;;;;;;586:21;;;578:30;;;;;;;;642:10;618:7;;:35;;;;;;;;;;;;;;;;;;392:268::o;306:3426:18:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", - "source": "pragma solidity 0.4.24;\nimport \"../Enum.sol\";\nimport \"../Module.sol\";\nimport \"../ModuleManager.sol\";\nimport \"../OwnerManager.sol\";\n\n\n/// @title Social Recovery Module - Allows to replace an owner without Safe confirmations if friends approve the replacement.\n/// @author Stefan George - \ncontract SocialRecoveryModule is Module {\n\n string public constant NAME = \"Social Recovery Module\";\n string public constant VERSION = \"0.0.1\";\n\n uint8 public threshold;\n address[] public friends;\n\n // isFriend mapping maps friend's address to friend status.\n mapping (address => bool) public isFriend;\n // isExecuted mapping maps data hash to execution status.\n mapping (bytes32 => bool) public isExecuted;\n // isConfirmed mapping maps data hash to friend's address to confirmation status.\n mapping (bytes32 => mapping (address => bool)) public isConfirmed;\n\n modifier onlyFriend() {\n require(isFriend[msg.sender]);\n _;\n }\n\n /// @dev Setup function sets initial storage of contract.\n /// @param _friends List of friends' addresses.\n /// @param _threshold Required number of friends to confirm replacement.\n function setup(address[] _friends, uint8 _threshold)\n public\n {\n require(_threshold <= _friends.length);\n require(_threshold >= 2);\n setManager();\n // Set allowed friends.\n for (uint256 i = 0; i < _friends.length; i++) {\n address friend = _friends[i];\n require(friend != 0);\n require(!isFriend[friend]);\n isFriend[friend] = true;\n }\n friends = _friends;\n threshold = _threshold;\n }\n\n /// @dev Allows a friend to confirm a Safe transaction.\n /// @param dataHash Safe transaction hash.\n function confirmTransaction(bytes32 dataHash)\n public\n onlyFriend\n {\n require(!isExecuted[dataHash]);\n isConfirmed[dataHash][msg.sender] = true;\n }\n\n /// @dev Returns if Safe transaction is a valid owner replacement transaction.\n /// @param prevOwner Owner that pointed to the owner to be replaced in the linked list\n /// @param oldOwner Owner address to be replaced.\n /// @param newOwner New owner address.\n /// @return Returns if transaction can be executed.\n function recoverAccess(address prevOwner, address oldOwner, address newOwner)\n public\n {\n // Only friends are allowed to execute the replacement.\n require(isFriend[msg.sender]);\n bytes memory data = abi.encodeWithSignature(\"swapOwner(address,address,address)\", prevOwner, oldOwner, newOwner);\n bytes32 dataHash = getDataHash(data);\n require(!isExecuted[dataHash]);\n require(isConfirmedByRequiredFriends(dataHash));\n isExecuted[dataHash] = true;\n require(manager.execTransactionFromModule(address(manager), 0, data, Enum.Operation.Call));\n }\n\n /// @dev Returns if Safe transaction is a valid owner replacement transaction.\n /// @param dataHash Data hash.\n /// @return Confirmation status.\n function isConfirmedByRequiredFriends(bytes32 dataHash)\n public\n view\n returns (bool)\n {\n uint256 confirmationCount;\n for (uint256 i = 0; i < friends.length; i++) {\n if (isConfirmed[dataHash][friends[i]])\n confirmationCount++;\n if (confirmationCount == threshold)\n return true;\n }\n return false;\n }\n\n /// @dev Returns hash of data encoding owner replacement.\n /// @param data Data payload.\n /// @return Data hash.\n function getDataHash(bytes data)\n public\n pure\n returns (bytes32)\n {\n return keccak256(data);\n }\n}\n", + "bytecode": "0x608060405234801561001057600080fd5b506117d0806100206000396000f3006080604052600436106100d0576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680633cf5b309146100d557806342cde4e814610148578063481c6a751461017957806368125a1b146101d057806377231eaa1461022b57806379716e43146102ae5780637de7edef146102df5780639ca89d0d14610322578063a3f4df7e1461036b578063ae68b056146103fb578063b79ffaff14610480578063ce146828146104e9578063e52cb36a14610556578063ffa1ad741461059f575b600080fd5b3480156100e157600080fd5b5061014660048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff16906020019092919050505061062f565b005b34801561015457600080fd5b5061015d610994565b604051808260ff1660ff16815260200191505060405180910390f35b34801561018557600080fd5b5061018e6109a7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101dc57600080fd5b50610211600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109cd565b604051808215151515815260200191505060405180910390f35b34801561023757600080fd5b506102ac600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109ed565b005b3480156102ba57600080fd5b506102dd6004803603810190808035600019169060200190929190505050610f9e565b005b3480156102eb57600080fd5b50610320600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611197565b005b34801561032e57600080fd5b50610351600480360381019080803560001916906020019092919050505061137a565b604051808215151515815260200191505060405180910390f35b34801561037757600080fd5b50610380611479565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103c05780820151818401526020810190506103a5565b50505050905090810190601f1680156103ed5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561040757600080fd5b50610462600480360381019080803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506114b2565b60405180826000191660001916815260200191505060405180910390f35b34801561048c57600080fd5b506104cf6004803603810190808035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061151e565b604051808215151515815260200191505060405180910390f35b3480156104f557600080fd5b506105146004803603810190808035906020019092919050505061154d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561056257600080fd5b50610585600480360381019080803560001916906020019092919050505061158b565b604051808215151515815260200191505060405180910390f35b3480156105ab57600080fd5b506105b46115ab565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105f45780820151818401526020810190506105d9565b50505050905090810190601f1680156106215780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60008083518360ff16111515156106d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f5468726573686f6c642063616e6e6f742065786365656420667269656e64732081526020017f636f756e7400000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60028360ff1610151515610750576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4174206c65617374203220667269656e6473207265717569726564000000000081525060200191505060405180910390fd5b6107586115e4565b600091505b835182101561095c57838281518110151561077457fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff161415151561080f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f496e76616c696420667269656e6420616464726573732070726f76696465640081525060200191505060405180910390fd5b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156108f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f4475706c696361746520667269656e6420616464726573732070726f7669646581526020017f640000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550818060010192505061075d565b83600290805190602001906109729291906116d7565b5082600160146101000a81548160ff021916908360ff16021790555050505050565b600160149054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60036020528060005260406000206000915054906101000a900460ff1681565b60606000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610ad8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642062792061206681526020017f7269656e6400000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b848484604051602401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200193505050506040516020818303038152906040527fe318b52b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509150610c05826114b2565b905060046000826000191660001916815260200190815260200160002060009054906101000a900460ff16151515610ca5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f5265636f7665727920616c72656164792065786563757465640000000000000081525060200191505060405180910390fd5b610cae8161137a565b1515610d48576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f5265636f7665727920686173206e6f7420656e6f75676820636f6e6669726d6181526020017f74696f6e7300000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600160046000836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a7600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660008560006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001836002811115610e5957fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b83811015610e99578082015181840152602081019050610e7e565b50505050905090810190601f168015610ec65780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610ee857600080fd5b505af1158015610efc573d6000803e3d6000fd5b505050506040513d6020811015610f1257600080fd5b81019080805190602001909291905050501515610f97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f436f756c64206e6f742065786563757465207265636f7665727900000000000081525060200191505060405180910390fd5b5050505050565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611085576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642062792061206681526020017f7269656e6400000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60046000826000191660001916815260200190815260200160002060009054906101000a900460ff16151515611123576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f5265636f7665727920616c72656164792065786563757465640000000000000081525060200191505060405180910390fd5b600160056000836000191660001916815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611282576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206d81526020017f616e61676572000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515611337576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f496e76616c6964206d617374657220636f707920616464726573732070726f7681526020017f696465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060008090505b60028054905081101561146d5760056000856000191660001916815260200190815260200160002060006002838154811015156113bc57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561143d5781806001019250505b600160149054906101000a900460ff1660ff168214156114605760019250611472565b8080600101915050611383565b600092505b5050919050565b6040805190810160405280601681526020017f536f6369616c205265636f76657279204d6f64756c650000000000000000000081525081565b6000816040518082805190602001908083835b6020831015156114ea57805182526020820191506020810190506020830392506114c5565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209050919050565b60056020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b60028181548110151561155c57fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60046020528060005260406000206000915054906101000a900460ff1681565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611694576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4d616e616765722068617320616c7265616479206265656e207365740000000081525060200191505060405180910390fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b828054828255906000526020600020908101928215611750579160200282015b8281111561174f5782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550916020019190600101906116f7565b5b50905061175d9190611761565b5090565b6117a191905b8082111561179d57600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101611767565b5090565b905600a165627a7a723058207c28a4bb149561707233d76584fca490cb6b4e8b09d0aa9f0fde95274022c75f0029", + "deployedBytecode": "0x6080604052600436106100d0576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680633cf5b309146100d557806342cde4e814610148578063481c6a751461017957806368125a1b146101d057806377231eaa1461022b57806379716e43146102ae5780637de7edef146102df5780639ca89d0d14610322578063a3f4df7e1461036b578063ae68b056146103fb578063b79ffaff14610480578063ce146828146104e9578063e52cb36a14610556578063ffa1ad741461059f575b600080fd5b3480156100e157600080fd5b5061014660048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803560ff16906020019092919050505061062f565b005b34801561015457600080fd5b5061015d610994565b604051808260ff1660ff16815260200191505060405180910390f35b34801561018557600080fd5b5061018e6109a7565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156101dc57600080fd5b50610211600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109cd565b604051808215151515815260200191505060405180910390f35b34801561023757600080fd5b506102ac600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109ed565b005b3480156102ba57600080fd5b506102dd6004803603810190808035600019169060200190929190505050610f9e565b005b3480156102eb57600080fd5b50610320600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611197565b005b34801561032e57600080fd5b50610351600480360381019080803560001916906020019092919050505061137a565b604051808215151515815260200191505060405180910390f35b34801561037757600080fd5b50610380611479565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103c05780820151818401526020810190506103a5565b50505050905090810190601f1680156103ed5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561040757600080fd5b50610462600480360381019080803590602001908201803590602001908080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505091929192905050506114b2565b60405180826000191660001916815260200191505060405180910390f35b34801561048c57600080fd5b506104cf6004803603810190808035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061151e565b604051808215151515815260200191505060405180910390f35b3480156104f557600080fd5b506105146004803603810190808035906020019092919050505061154d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561056257600080fd5b50610585600480360381019080803560001916906020019092919050505061158b565b604051808215151515815260200191505060405180910390f35b3480156105ab57600080fd5b506105b46115ab565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156105f45780820151818401526020810190506105d9565b50505050905090810190601f1680156106215780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60008083518360ff16111515156106d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f5468726573686f6c642063616e6e6f742065786365656420667269656e64732081526020017f636f756e7400000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60028360ff1610151515610750576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4174206c65617374203220667269656e6473207265717569726564000000000081525060200191505060405180910390fd5b6107586115e4565b600091505b835182101561095c57838281518110151561077457fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff161415151561080f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f496e76616c696420667269656e6420616464726573732070726f76696465640081525060200191505060405180910390fd5b600360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515156108f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f4475706c696361746520667269656e6420616464726573732070726f7669646581526020017f640000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550818060010192505061075d565b83600290805190602001906109729291906116d7565b5082600160146101000a81548160ff021916908360ff16021790555050505050565b600160149054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60036020528060005260406000206000915054906101000a900460ff1681565b60606000600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610ad8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642062792061206681526020017f7269656e6400000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b848484604051602401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200193505050506040516020818303038152906040527fe318b52b000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050509150610c05826114b2565b905060046000826000191660001916815260200190815260200160002060009054906101000a900460ff16151515610ca5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f5265636f7665727920616c72656164792065786563757465640000000000000081525060200191505060405180910390fd5b610cae8161137a565b1515610d48576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f5265636f7665727920686173206e6f7420656e6f75676820636f6e6669726d6181526020017f74696f6e7300000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600160046000836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a7600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660008560006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200184815260200180602001836002811115610e5957fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b83811015610e99578082015181840152602081019050610e7e565b50505050905090810190601f168015610ec65780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b158015610ee857600080fd5b505af1158015610efc573d6000803e3d6000fd5b505050506040513d6020811015610f1257600080fd5b81019080805190602001909291905050501515610f97576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f436f756c64206e6f742065786563757465207265636f7665727900000000000081525060200191505060405180910390fd5b5050505050565b600360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515611085576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642062792061206681526020017f7269656e6400000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60046000826000191660001916815260200190815260200160002060009054906101000a900460ff16151515611123576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f5265636f7665727920616c72656164792065786563757465640000000000000081525060200191505060405180910390fd5b600160056000836000191660001916815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611282576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206d81526020017f616e61676572000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515611337576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f496e76616c6964206d617374657220636f707920616464726573732070726f7681526020017f696465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008060008090505b60028054905081101561146d5760056000856000191660001916815260200190815260200160002060006002838154811015156113bc57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561143d5781806001019250505b600160149054906101000a900460ff1660ff168214156114605760019250611472565b8080600101915050611383565b600092505b5050919050565b6040805190810160405280601681526020017f536f6369616c205265636f76657279204d6f64756c650000000000000000000081525081565b6000816040518082805190602001908083835b6020831015156114ea57805182526020820191506020810190506020830392506114c5565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405180910390209050919050565b60056020528160005260406000206020528060005260406000206000915091509054906101000a900460ff1681565b60028181548110151561155c57fe5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60046020528060005260406000206000915054906101000a900460ff1681565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515611694576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4d616e616765722068617320616c7265616479206265656e207365740000000081525060200191505060405180910390fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b828054828255906000526020600020908101928215611750579160200282015b8281111561174f5782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550916020019190600101906116f7565b5b50905061175d9190611761565b5090565b6117a191905b8082111561179d57600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101611767565b5090565b905600a165627a7a723058207c28a4bb149561707233d76584fca490cb6b4e8b09d0aa9f0fde95274022c75f0029", + "sourceMap": "306:3656:18:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;306:3656:18;;;;;;;", + "deployedSourceMap": "306:3656:18:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1216:638;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1216:638:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;460:22;;8:9:-1;5:2;;;30:1;27;20:12;5:2;460:22:18;;;;;;;;;;;;;;;;;;;;;;;;;;;262:28:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;262:28:7;;;;;;;;;;;;;;;;;;;;;;;;;;;583:41:18;;8:9:-1;5:2;;;30:1;27;20:12;5:2;583:41:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2510:625;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2510:625:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1967:210;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1967:210:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;626:248:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:248:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;3296:405:18;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3296:405:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;353:54;;8:9:-1;5:2;;;30:1;27;20:12;5:2;353:54:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;353:54:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3830:130;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3830:130:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;827:65;;8:9:-1;5:2;;;30:1;27;20:12;5:2;827:65:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;488:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;488:24:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;692:43;;8:9:-1;5:2;;;30:1;27;20:12;5:2;692:43:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;413:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;413:40:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;413:40:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1216:638;1511:9;1566:14;1320:8;:15;1306:10;:29;;;;1298:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1409:1;1395:10;:15;;;;1387:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1452:12;:10;:12::i;:::-;1523:1;1511:13;;1506:282;1530:8;:15;1526:1;:19;1506:282;;;1583:8;1592:1;1583:11;;;;;;;;;;;;;;;;;;1566:28;;1626:1;1616:6;:11;;;;1608:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1686:8;:16;1695:6;1686:16;;;;;;;;;;;;;;;;;;;;;;;;;1685:17;1677:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1773:4;1754:8;:16;1763:6;1754:16;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;1547:3;;;;;;;1506:282;;;1807:8;1797:7;:18;;;;;;;;;;;;:::i;:::-;;1837:10;1825:9;;:22;;;;;;;;;;;;;;;;;;1216:638;;;;:::o;460:22::-;;;;;;;;;;;;;:::o;262:28:7:-;;;;;;;;;;;;;:::o;583:41:18:-;;;;;;;;;;;;;;;;;;;;;;:::o;2510:625::-;2636:17;2758:16;939:8;:20;948:10;939:20;;;;;;;;;;;;;;;;;;;;;;;;;931:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2718:9;2729:8;2739;2656:92;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;2656:92:18;;;;;;;38:4:-1;29:7;25:18;67:10;61:17;96:58;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;2656:92:18;2636:112;;2777:17;2789:4;2777:11;:17::i;:::-;2758:36;;2813:10;:20;2824:8;2813:20;;;;;;;;;;;;;;;;;;;;;;;;;;;2812:21;2804:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2881:38;2910:8;2881:28;:38::i;:::-;2873:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2994:4;2971:10;:20;2982:8;2971:20;;;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;3016:7;;;;;;;;;;;:33;;;3058:7;;;;;;;;;;;3068:1;3071:4;3077:19;3016:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;3016:81:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3016:81:18;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3016:81:18;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3016:81:18;;;;;;;;;;;;;;;;3008:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2510:625;;;;;:::o;1967:210::-;939:8;:20;948:10;939:20;;;;;;;;;;;;;;;;;;;;;;;;;931:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2070:10;:20;2081:8;2070:20;;;;;;;;;;;;;;;;;;;;;;;;;;;2069:21;2061:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2166:4;2130:11;:21;2142:8;2130:21;;;;;;;;;;;;;;;;;:33;2152:10;2130:33;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;1967:210;:::o;626:248:5:-;359:7:7;;;;;;;;;;;337:30;;:10;:30;;;329:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;791:1:5;776:11;:16;;;;768:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;856:11;843:10;;:24;;;;;;;;;;;;;;;;;;626:248;:::o;3296:405:18:-;3397:4;3417:25;3457:9;3469:1;3457:13;;3452:221;3476:7;:14;;;;3472:1;:18;3452:221;;;3515:11;:21;3527:8;3515:21;;;;;;;;;;;;;;;;;:33;3537:7;3545:1;3537:10;;;;;;;;;;;;;;;;;;;;;;;;;;;3515:33;;;;;;;;;;;;;;;;;;;;;;;;;3511:74;;;3566:19;;;;;;;3511:74;3624:9;;;;;;;;;;;3603:30;;:17;:30;3599:63;;;3658:4;3651:11;;;;3599:63;3492:3;;;;;;;3452:221;;;3689:5;3682:12;;3296:405;;;;;;:::o;353:54::-;;;;;;;;;;;;;;;;;;;;:::o;3830:130::-;3908:7;3948:4;3938:15;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;3938:15:18;;;;;;;;;;;;;;;;3931:22;;3830:130;;;:::o;827:65::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;488:24::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;692:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;413:40::-;;;;;;;;;;;;;;;;;;;;:::o;434:300:7:-;648:1;636:7;;;;;;;;;;;628:21;;;620:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;716:10;692:7;;:35;;;;;;;;;;;;;;;;;;434:300::o;306:3656:18:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o", + "source": "pragma solidity 0.4.24;\nimport \"../Enum.sol\";\nimport \"../Module.sol\";\nimport \"../ModuleManager.sol\";\nimport \"../OwnerManager.sol\";\n\n\n/// @title Social Recovery Module - Allows to replace an owner without Safe confirmations if friends approve the replacement.\n/// @author Stefan George - \ncontract SocialRecoveryModule is Module {\n\n string public constant NAME = \"Social Recovery Module\";\n string public constant VERSION = \"0.0.1\";\n\n uint8 public threshold;\n address[] public friends;\n\n // isFriend mapping maps friend's address to friend status.\n mapping (address => bool) public isFriend;\n // isExecuted mapping maps data hash to execution status.\n mapping (bytes32 => bool) public isExecuted;\n // isConfirmed mapping maps data hash to friend's address to confirmation status.\n mapping (bytes32 => mapping (address => bool)) public isConfirmed;\n\n modifier onlyFriend() {\n require(isFriend[msg.sender], \"Method can only be called by a friend\");\n _;\n }\n\n /// @dev Setup function sets initial storage of contract.\n /// @param _friends List of friends' addresses.\n /// @param _threshold Required number of friends to confirm replacement.\n function setup(address[] _friends, uint8 _threshold)\n public\n {\n require(_threshold <= _friends.length, \"Threshold cannot exceed friends count\");\n require(_threshold >= 2, \"At least 2 friends required\");\n setManager();\n // Set allowed friends.\n for (uint256 i = 0; i < _friends.length; i++) {\n address friend = _friends[i];\n require(friend != 0, \"Invalid friend address provided\");\n require(!isFriend[friend], \"Duplicate friend address provided\");\n isFriend[friend] = true;\n }\n friends = _friends;\n threshold = _threshold;\n }\n\n /// @dev Allows a friend to confirm a Safe transaction.\n /// @param dataHash Safe transaction hash.\n function confirmTransaction(bytes32 dataHash)\n public\n onlyFriend\n {\n require(!isExecuted[dataHash], \"Recovery already executed\");\n isConfirmed[dataHash][msg.sender] = true;\n }\n\n /// @dev Returns if Safe transaction is a valid owner replacement transaction.\n /// @param prevOwner Owner that pointed to the owner to be replaced in the linked list\n /// @param oldOwner Owner address to be replaced.\n /// @param newOwner New owner address.\n /// @return Returns if transaction can be executed.\n function recoverAccess(address prevOwner, address oldOwner, address newOwner)\n public\n onlyFriend\n {\n bytes memory data = abi.encodeWithSignature(\"swapOwner(address,address,address)\", prevOwner, oldOwner, newOwner);\n bytes32 dataHash = getDataHash(data);\n require(!isExecuted[dataHash], \"Recovery already executed\");\n require(isConfirmedByRequiredFriends(dataHash), \"Recovery has not enough confirmations\");\n isExecuted[dataHash] = true;\n require(manager.execTransactionFromModule(address(manager), 0, data, Enum.Operation.Call), \"Could not execute recovery\");\n }\n\n /// @dev Returns if Safe transaction is a valid owner replacement transaction.\n /// @param dataHash Data hash.\n /// @return Confirmation status.\n function isConfirmedByRequiredFriends(bytes32 dataHash)\n public\n view\n returns (bool)\n {\n uint256 confirmationCount;\n for (uint256 i = 0; i < friends.length; i++) {\n if (isConfirmed[dataHash][friends[i]])\n confirmationCount++;\n if (confirmationCount == threshold)\n return true;\n }\n return false;\n }\n\n /// @dev Returns hash of data encoding owner replacement.\n /// @param data Data payload.\n /// @return Data hash.\n function getDataHash(bytes data)\n public\n pure\n returns (bytes32)\n {\n return keccak256(data);\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/SocialRecoveryModule.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/SocialRecoveryModule.sol", "exportedSymbols": { "SocialRecoveryModule": [ - 2234 + 2279 ] }, - "id": 2235, + "id": 2280, "nodeType": "SourceUnit", "nodes": [ { - "id": 1975, + "id": 2016, "literals": [ "solidity", "0.4", @@ -273,9 +273,9 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Enum.sol", "file": "../Enum.sol", - "id": 1976, + "id": 2017, "nodeType": "ImportDirective", - "scope": 2235, + "scope": 2280, "sourceUnit": 31, "src": "24:21:18", "symbolAliases": [], @@ -284,10 +284,10 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "file": "../Module.sol", - "id": 1977, + "id": 2018, "nodeType": "ImportDirective", - "scope": 2235, - "sourceUnit": 751, + "scope": 2280, + "sourceUnit": 763, "src": "46:23:18", "symbolAliases": [], "unitAlias": "" @@ -295,10 +295,10 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ModuleManager.sol", "file": "../ModuleManager.sol", - "id": 1978, + "id": 2019, "nodeType": "ImportDirective", - "scope": 2235, - "sourceUnit": 1101, + "scope": 2280, + "sourceUnit": 1119, "src": "70:30:18", "symbolAliases": [], "unitAlias": "" @@ -306,10 +306,10 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", "file": "../OwnerManager.sol", - "id": 1979, + "id": 2020, "nodeType": "ImportDirective", - "scope": 2235, - "sourceUnit": 1473, + "scope": 2280, + "sourceUnit": 1505, "src": "101:29:18", "symbolAliases": [], "unitAlias": "" @@ -320,45 +320,45 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 1980, + "id": 2021, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 750, + "referencedDeclaration": 762, "src": "339:6:18", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } }, - "id": 1981, + "id": 2022, "nodeType": "InheritanceSpecifier", "src": "339:6:18" } ], "contractDependencies": [ - 652, - 750, - 1619 + 662, + 762, + 1654 ], "contractKind": "contract", "documentation": "@title Social Recovery Module - Allows to replace an owner without Safe confirmations if friends approve the replacement.\n @author Stefan George - ", "fullyImplemented": true, - "id": 2234, + "id": 2279, "linearizedBaseContracts": [ - 2234, - 750, - 652, - 1619 + 2279, + 762, + 662, + 1654 ], "name": "SocialRecoveryModule", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, - "id": 1984, + "id": 2025, "name": "NAME", "nodeType": "VariableDeclaration", - "scope": 2234, + "scope": 2279, "src": "353:54:18", "stateVariable": true, "storageLocation": "default", @@ -367,7 +367,7 @@ "typeString": "string" }, "typeName": { - "id": 1982, + "id": 2023, "name": "string", "nodeType": "ElementaryTypeName", "src": "353:6:18", @@ -379,7 +379,7 @@ "value": { "argumentTypes": null, "hexValue": "536f6369616c205265636f76657279204d6f64756c65", - "id": 1983, + "id": 2024, "isConstant": false, "isLValue": false, "isPure": true, @@ -398,10 +398,10 @@ }, { "constant": true, - "id": 1987, + "id": 2028, "name": "VERSION", "nodeType": "VariableDeclaration", - "scope": 2234, + "scope": 2279, "src": "413:40:18", "stateVariable": true, "storageLocation": "default", @@ -410,7 +410,7 @@ "typeString": "string" }, "typeName": { - "id": 1985, + "id": 2026, "name": "string", "nodeType": "ElementaryTypeName", "src": "413:6:18", @@ -422,7 +422,7 @@ "value": { "argumentTypes": null, "hexValue": "302e302e31", - "id": 1986, + "id": 2027, "isConstant": false, "isLValue": false, "isPure": true, @@ -441,10 +441,10 @@ }, { "constant": false, - "id": 1989, + "id": 2030, "name": "threshold", "nodeType": "VariableDeclaration", - "scope": 2234, + "scope": 2279, "src": "460:22:18", "stateVariable": true, "storageLocation": "default", @@ -453,7 +453,7 @@ "typeString": "uint8" }, "typeName": { - "id": 1988, + "id": 2029, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "460:5:18", @@ -467,10 +467,10 @@ }, { "constant": false, - "id": 1992, + "id": 2033, "name": "friends", "nodeType": "VariableDeclaration", - "scope": 2234, + "scope": 2279, "src": "488:24:18", "stateVariable": true, "storageLocation": "default", @@ -480,7 +480,7 @@ }, "typeName": { "baseType": { - "id": 1990, + "id": 2031, "name": "address", "nodeType": "ElementaryTypeName", "src": "488:7:18", @@ -489,7 +489,7 @@ "typeString": "address" } }, - "id": 1991, + "id": 2032, "length": null, "nodeType": "ArrayTypeName", "src": "488:9:18", @@ -503,10 +503,10 @@ }, { "constant": false, - "id": 1996, + "id": 2037, "name": "isFriend", "nodeType": "VariableDeclaration", - "scope": 2234, + "scope": 2279, "src": "583:41:18", "stateVariable": true, "storageLocation": "default", @@ -515,9 +515,9 @@ "typeString": "mapping(address => bool)" }, "typeName": { - "id": 1995, + "id": 2036, "keyType": { - "id": 1993, + "id": 2034, "name": "address", "nodeType": "ElementaryTypeName", "src": "592:7:18", @@ -533,7 +533,7 @@ "typeString": "mapping(address => bool)" }, "valueType": { - "id": 1994, + "id": 2035, "name": "bool", "nodeType": "ElementaryTypeName", "src": "603:4:18", @@ -548,10 +548,10 @@ }, { "constant": false, - "id": 2000, + "id": 2041, "name": "isExecuted", "nodeType": "VariableDeclaration", - "scope": 2234, + "scope": 2279, "src": "692:43:18", "stateVariable": true, "storageLocation": "default", @@ -560,9 +560,9 @@ "typeString": "mapping(bytes32 => bool)" }, "typeName": { - "id": 1999, + "id": 2040, "keyType": { - "id": 1997, + "id": 2038, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "701:7:18", @@ -578,7 +578,7 @@ "typeString": "mapping(bytes32 => bool)" }, "valueType": { - "id": 1998, + "id": 2039, "name": "bool", "nodeType": "ElementaryTypeName", "src": "712:4:18", @@ -593,10 +593,10 @@ }, { "constant": false, - "id": 2006, + "id": 2047, "name": "isConfirmed", "nodeType": "VariableDeclaration", - "scope": 2234, + "scope": 2279, "src": "827:65:18", "stateVariable": true, "storageLocation": "default", @@ -605,9 +605,9 @@ "typeString": "mapping(bytes32 => mapping(address => bool))" }, "typeName": { - "id": 2005, + "id": 2046, "keyType": { - "id": 2001, + "id": 2042, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "836:7:18", @@ -623,9 +623,9 @@ "typeString": "mapping(bytes32 => mapping(address => bool))" }, "valueType": { - "id": 2004, + "id": 2045, "keyType": { - "id": 2002, + "id": 2043, "name": "address", "nodeType": "ElementaryTypeName", "src": "856:7:18", @@ -641,7 +641,7 @@ "typeString": "mapping(address => bool)" }, "valueType": { - "id": 2003, + "id": 2044, "name": "bool", "nodeType": "ElementaryTypeName", "src": "867:4:18", @@ -657,9 +657,9 @@ }, { "body": { - "id": 2016, + "id": 2058, "nodeType": "Block", - "src": "921:57:18", + "src": "921:98:18", "statements": [ { "expression": { @@ -669,34 +669,34 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2009, + "id": 2050, "name": "isFriend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1996, + "referencedDeclaration": 2037, "src": "939:8:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2012, + "id": 2053, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2010, + "id": 2051, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2598, + "referencedDeclaration": 2654, "src": "948:3:18", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 2011, + "id": 2052, "isConstant": false, "isLValue": false, "isPure": false, @@ -720,6 +720,24 @@ "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "4d6574686f642063616e206f6e6c792062652063616c6c6564206279206120667269656e64", + "id": 2054, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "961:39:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_b1b9fb59ab33eb5ed22c2a9ea6a84e946973f30df026a85494e13c73883cce0a", + "typeString": "literal_string \"Method can only be called by a friend\"" + }, + "value": "Method can only be called by a friend" } ], "expression": { @@ -727,23 +745,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_b1b9fb59ab33eb5ed22c2a9ea6a84e946973f30df026a85494e13c73883cce0a", + "typeString": "literal_string \"Method can only be called by a friend\"" } ], - "id": 2008, + "id": 2049, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, + "referencedDeclaration": 2658, "src": "931:7:18", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 2013, + "id": 2055, "isConstant": false, "isLValue": false, "isPure": false, @@ -751,41 +773,41 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "931:29:18", + "src": "931:70:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2014, + "id": 2056, "nodeType": "ExpressionStatement", - "src": "931:29:18" + "src": "931:70:18" }, { - "id": 2015, + "id": 2057, "nodeType": "PlaceholderStatement", - "src": "970:1:18" + "src": "1011:1:18" } ] }, "documentation": null, - "id": 2017, + "id": 2059, "name": "onlyFriend", "nodeType": "ModifierDefinition", "parameters": { - "id": 2007, + "id": 2048, "nodeType": "ParameterList", "parameters": [], "src": "918:2:18" }, - "src": "899:79:18", + "src": "899:120:18", "visibility": "internal" }, { "body": { - "id": 2087, + "id": 2133, "nodeType": "Block", - "src": "1247:422:18", + "src": "1288:566:18", "statements": [ { "expression": { @@ -797,19 +819,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 2029, + "id": 2071, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2026, + "id": 2068, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2022, - "src": "1265:10:18", + "referencedDeclaration": 2064, + "src": "1306:10:18", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -821,18 +843,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2027, + "id": 2069, "name": "_friends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2020, - "src": "1279:8:18", + "referencedDeclaration": 2062, + "src": "1320:8:18", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 2028, + "id": 2070, "isConstant": false, "isLValue": false, "isPure": false, @@ -840,17 +862,35 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1279:15:18", + "src": "1320:15:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1265:29:18", + "src": "1306:29:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "5468726573686f6c642063616e6e6f742065786365656420667269656e647320636f756e74", + "id": 2072, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1337:39:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_8268a65eab991df6bae5d0e671467a9ef945396e4d495dc52153cedea41ef257", + "typeString": "literal_string \"Threshold cannot exceed friends count\"" + }, + "value": "Threshold cannot exceed friends count" } ], "expression": { @@ -858,23 +898,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_8268a65eab991df6bae5d0e671467a9ef945396e4d495dc52153cedea41ef257", + "typeString": "literal_string \"Threshold cannot exceed friends count\"" } ], - "id": 2025, + "id": 2067, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "1257:7:18", + "referencedDeclaration": 2658, + "src": "1298:7:18", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 2030, + "id": 2073, "isConstant": false, "isLValue": false, "isPure": false, @@ -882,15 +926,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1257:38:18", + "src": "1298:79:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2031, + "id": 2074, "nodeType": "ExpressionStatement", - "src": "1257:38:18" + "src": "1298:79:18" }, { "expression": { @@ -902,19 +946,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 2035, + "id": 2078, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2033, + "id": 2076, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2022, - "src": "1313:10:18", + "referencedDeclaration": 2064, + "src": "1395:10:18", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -925,14 +969,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "32", - "id": 2034, + "id": 2077, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1327:1:18", + "src": "1409:1:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", @@ -940,11 +984,29 @@ }, "value": "2" }, - "src": "1313:15:18", + "src": "1395:15:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "4174206c65617374203220667269656e6473207265717569726564", + "id": 2079, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1412:29:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_2dca24eb5124987015b2480219c9ac2baf747f0e8ae6537e9852d3e3b2773773", + "typeString": "literal_string \"At least 2 friends required\"" + }, + "value": "At least 2 friends required" } ], "expression": { @@ -952,23 +1014,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_2dca24eb5124987015b2480219c9ac2baf747f0e8ae6537e9852d3e3b2773773", + "typeString": "literal_string \"At least 2 friends required\"" } ], - "id": 2032, + "id": 2075, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "1305:7:18", + "referencedDeclaration": 2658, + "src": "1387:7:18", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 2036, + "id": 2080, "isConstant": false, "isLValue": false, "isPure": false, @@ -976,15 +1042,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1305:24:18", + "src": "1387:55:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2037, + "id": 2081, "nodeType": "ExpressionStatement", - "src": "1305:24:18" + "src": "1387:55:18" }, { "expression": { @@ -992,18 +1058,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 2038, + "id": 2082, "name": "setManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 749, - "src": "1339:10:18", + "referencedDeclaration": 761, + "src": "1452:10:18", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 2039, + "id": 2083, "isConstant": false, "isLValue": false, "isPure": false, @@ -1011,34 +1077,34 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1339:12:18", + "src": "1452:12:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2040, + "id": 2084, "nodeType": "ExpressionStatement", - "src": "1339:12:18" + "src": "1452:12:18" }, { "body": { - "id": 2077, + "id": 2123, "nodeType": "Block", - "src": "1439:164:18", + "src": "1552:236:18", "statements": [ { "assignments": [ - 2053 + 2097 ], "declarations": [ { "constant": false, - "id": 2053, + "id": 2097, "name": "friend", "nodeType": "VariableDeclaration", - "scope": 2088, - "src": "1453:14:18", + "scope": 2134, + "src": "1566:14:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1046,10 +1112,10 @@ "typeString": "address" }, "typeName": { - "id": 2052, + "id": 2096, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1453:7:18", + "src": "1566:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1059,31 +1125,31 @@ "visibility": "internal" } ], - "id": 2057, + "id": 2101, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2054, + "id": 2098, "name": "_friends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2020, - "src": "1470:8:18", + "referencedDeclaration": 2062, + "src": "1583:8:18", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 2056, + "id": 2100, "indexExpression": { "argumentTypes": null, - "id": 2055, + "id": 2099, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2042, - "src": "1479:1:18", + "referencedDeclaration": 2086, + "src": "1592:1:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1094,14 +1160,14 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1470:11:18", + "src": "1583:11:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "1453:28:18" + "src": "1566:28:18" }, { "expression": { @@ -1113,19 +1179,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 2061, + "id": 2105, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2059, + "id": 2103, "name": "friend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2053, - "src": "1503:6:18", + "referencedDeclaration": 2097, + "src": "1616:6:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1136,14 +1202,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 2060, + "id": 2104, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1513:1:18", + "src": "1626:1:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1151,11 +1217,29 @@ }, "value": "0" }, - "src": "1503:11:18", + "src": "1616:11:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "496e76616c696420667269656e6420616464726573732070726f7669646564", + "id": 2106, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1629:33:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_5d50911068dfec2dd53f3e08d7dec23b50affd69b91cf3e5d1e699c56bca7a55", + "typeString": "literal_string \"Invalid friend address provided\"" + }, + "value": "Invalid friend address provided" } ], "expression": { @@ -1163,23 +1247,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_5d50911068dfec2dd53f3e08d7dec23b50affd69b91cf3e5d1e699c56bca7a55", + "typeString": "literal_string \"Invalid friend address provided\"" } ], - "id": 2058, + "id": 2102, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "1495:7:18", + "referencedDeclaration": 2658, + "src": "1608:7:18", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 2062, + "id": 2107, "isConstant": false, "isLValue": false, "isPure": false, @@ -1187,15 +1275,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1495:20:18", + "src": "1608:55:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2063, + "id": 2108, "nodeType": "ExpressionStatement", - "src": "1495:20:18" + "src": "1608:55:18" }, { "expression": { @@ -1203,7 +1291,7 @@ "arguments": [ { "argumentTypes": null, - "id": 2068, + "id": 2113, "isConstant": false, "isLValue": false, "isPure": false, @@ -1211,31 +1299,31 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "1537:17:18", + "src": "1685:17:18", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2065, + "id": 2110, "name": "isFriend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1996, - "src": "1538:8:18", + "referencedDeclaration": 2037, + "src": "1686:8:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2067, + "id": 2112, "indexExpression": { "argumentTypes": null, - "id": 2066, + "id": 2111, "name": "friend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2053, - "src": "1547:6:18", + "referencedDeclaration": 2097, + "src": "1695:6:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1246,7 +1334,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1538:16:18", + "src": "1686:16:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1256,6 +1344,24 @@ "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "4475706c696361746520667269656e6420616464726573732070726f7669646564", + "id": 2114, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1704:35:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_78a0468a6f4bfa8018f886880a93f836f50f407cd02c2e42c43779f87d3af4d3", + "typeString": "literal_string \"Duplicate friend address provided\"" + }, + "value": "Duplicate friend address provided" } ], "expression": { @@ -1263,23 +1369,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_78a0468a6f4bfa8018f886880a93f836f50f407cd02c2e42c43779f87d3af4d3", + "typeString": "literal_string \"Duplicate friend address provided\"" } ], - "id": 2064, + "id": 2109, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "1529:7:18", + "referencedDeclaration": 2658, + "src": "1677:7:18", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 2069, + "id": 2115, "isConstant": false, "isLValue": false, "isPure": false, @@ -1287,20 +1397,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1529:26:18", + "src": "1677:63:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2070, + "id": 2116, "nodeType": "ExpressionStatement", - "src": "1529:26:18" + "src": "1677:63:18" }, { "expression": { "argumentTypes": null, - "id": 2075, + "id": 2121, "isConstant": false, "isLValue": false, "isPure": false, @@ -1309,26 +1419,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2071, + "id": 2117, "name": "isFriend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1996, - "src": "1569:8:18", + "referencedDeclaration": 2037, + "src": "1754:8:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2073, + "id": 2119, "indexExpression": { "argumentTypes": null, - "id": 2072, + "id": 2118, "name": "friend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2053, - "src": "1578:6:18", + "referencedDeclaration": 2097, + "src": "1763:6:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1339,7 +1449,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1569:16:18", + "src": "1754:16:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1350,14 +1460,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 2074, + "id": 2120, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "1588:4:18", + "src": "1773:4:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -1365,15 +1475,15 @@ }, "value": "true" }, - "src": "1569:23:18", + "src": "1754:23:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2076, + "id": 2122, "nodeType": "ExpressionStatement", - "src": "1569:23:18" + "src": "1754:23:18" } ] }, @@ -1383,19 +1493,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 2048, + "id": 2092, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2045, + "id": 2089, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2042, - "src": "1413:1:18", + "referencedDeclaration": 2086, + "src": "1526:1:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1407,18 +1517,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2046, + "id": 2090, "name": "_friends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2020, - "src": "1417:8:18", + "referencedDeclaration": 2062, + "src": "1530:8:18", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 2047, + "id": 2091, "isConstant": false, "isLValue": false, "isPure": false, @@ -1426,31 +1536,31 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1417:15:18", + "src": "1530:15:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1413:19:18", + "src": "1526:19:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2078, + "id": 2124, "initializationExpression": { "assignments": [ - 2042 + 2086 ], "declarations": [ { "constant": false, - "id": 2042, + "id": 2086, "name": "i", "nodeType": "VariableDeclaration", - "scope": 2088, - "src": "1398:9:18", + "scope": 2134, + "src": "1511:9:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1458,10 +1568,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2041, + "id": 2085, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1398:7:18", + "src": "1511:7:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1471,18 +1581,18 @@ "visibility": "internal" } ], - "id": 2044, + "id": 2088, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 2043, + "id": 2087, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1410:1:18", + "src": "1523:1:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1491,12 +1601,12 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "1398:13:18" + "src": "1511:13:18" }, "loopExpression": { "expression": { "argumentTypes": null, - "id": 2050, + "id": 2094, "isConstant": false, "isLValue": false, "isPure": false, @@ -1504,15 +1614,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "1434:3:18", + "src": "1547:3:18", "subExpression": { "argumentTypes": null, - "id": 2049, + "id": 2093, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2042, - "src": "1434:1:18", + "referencedDeclaration": 2086, + "src": "1547:1:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1523,29 +1633,29 @@ "typeString": "uint256" } }, - "id": 2051, + "id": 2095, "nodeType": "ExpressionStatement", - "src": "1434:3:18" + "src": "1547:3:18" }, "nodeType": "ForStatement", - "src": "1393:210:18" + "src": "1506:282:18" }, { "expression": { "argumentTypes": null, - "id": 2081, + "id": 2127, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 2079, + "id": 2125, "name": "friends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1992, - "src": "1612:7:18", + "referencedDeclaration": 2033, + "src": "1797:7:18", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" @@ -1555,43 +1665,43 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 2080, + "id": 2126, "name": "_friends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2020, - "src": "1622:8:18", + "referencedDeclaration": 2062, + "src": "1807:8:18", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "src": "1612:18:18", + "src": "1797:18:18", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 2082, + "id": 2128, "nodeType": "ExpressionStatement", - "src": "1612:18:18" + "src": "1797:18:18" }, { "expression": { "argumentTypes": null, - "id": 2085, + "id": 2131, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 2083, + "id": 2129, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1989, - "src": "1640:9:18", + "referencedDeclaration": 2030, + "src": "1825:9:18", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -1601,31 +1711,31 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 2084, + "id": 2130, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2022, - "src": "1652:10:18", + "referencedDeclaration": 2064, + "src": "1837:10:18", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "1640:22:18", + "src": "1825:22:18", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "id": 2086, + "id": 2132, "nodeType": "ExpressionStatement", - "src": "1640:22:18" + "src": "1825:22:18" } ] }, "documentation": "@dev Setup function sets initial storage of contract.\n @param _friends List of friends' addresses.\n @param _threshold Required number of friends to confirm replacement.", - "id": 2088, + "id": 2134, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -1633,16 +1743,16 @@ "name": "setup", "nodeType": "FunctionDefinition", "parameters": { - "id": 2023, + "id": 2065, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2020, + "id": 2062, "name": "_friends", "nodeType": "VariableDeclaration", - "scope": 2088, - "src": "1190:18:18", + "scope": 2134, + "src": "1231:18:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1651,19 +1761,19 @@ }, "typeName": { "baseType": { - "id": 2018, + "id": 2060, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1190:7:18", + "src": "1231:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 2019, + "id": 2061, "length": null, "nodeType": "ArrayTypeName", - "src": "1190:9:18", + "src": "1231:9:18", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -1674,11 +1784,11 @@ }, { "constant": false, - "id": 2022, + "id": 2064, "name": "_threshold", "nodeType": "VariableDeclaration", - "scope": 2088, - "src": "1210:16:18", + "scope": 2134, + "src": "1251:16:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1686,10 +1796,10 @@ "typeString": "uint8" }, "typeName": { - "id": 2021, + "id": 2063, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "1210:5:18", + "src": "1251:5:18", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -1699,26 +1809,26 @@ "visibility": "internal" } ], - "src": "1189:38:18" + "src": "1230:38:18" }, "payable": false, "returnParameters": { - "id": 2024, + "id": 2066, "nodeType": "ParameterList", "parameters": [], - "src": "1247:0:18" + "src": "1288:0:18" }, - "scope": 2234, - "src": "1175:494:18", + "scope": 2279, + "src": "1216:638:18", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2111, + "id": 2158, "nodeType": "Block", - "src": "1866:97:18", + "src": "2051:126:18", "statements": [ { "expression": { @@ -1726,7 +1836,7 @@ "arguments": [ { "argumentTypes": null, - "id": 2099, + "id": 2145, "isConstant": false, "isLValue": false, "isPure": false, @@ -1734,31 +1844,31 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "1884:21:18", + "src": "2069:21:18", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2096, + "id": 2142, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2000, - "src": "1885:10:18", + "referencedDeclaration": 2041, + "src": "2070:10:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 2098, + "id": 2144, "indexExpression": { "argumentTypes": null, - "id": 2097, + "id": 2143, "name": "dataHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2090, - "src": "1896:8:18", + "referencedDeclaration": 2136, + "src": "2081:8:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1769,7 +1879,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1885:20:18", + "src": "2070:20:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1779,6 +1889,24 @@ "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "5265636f7665727920616c7265616479206578656375746564", + "id": 2146, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2092:27:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c2f19da1619c37eda5c6f4f3abcc466ec30065da4e2523bb6c81cc850dedac38", + "typeString": "literal_string \"Recovery already executed\"" + }, + "value": "Recovery already executed" } ], "expression": { @@ -1786,23 +1914,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_c2f19da1619c37eda5c6f4f3abcc466ec30065da4e2523bb6c81cc850dedac38", + "typeString": "literal_string \"Recovery already executed\"" } ], - "id": 2095, + "id": 2141, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "1876:7:18", + "referencedDeclaration": 2658, + "src": "2061:7:18", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 2100, + "id": 2147, "isConstant": false, "isLValue": false, "isPure": false, @@ -1810,20 +1942,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1876:30:18", + "src": "2061:59:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2101, + "id": 2148, "nodeType": "ExpressionStatement", - "src": "1876:30:18" + "src": "2061:59:18" }, { "expression": { "argumentTypes": null, - "id": 2109, + "id": 2156, "isConstant": false, "isLValue": false, "isPure": false, @@ -1834,26 +1966,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2102, + "id": 2149, "name": "isConfirmed", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2006, - "src": "1916:11:18", + "referencedDeclaration": 2047, + "src": "2130:11:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(bytes32 => mapping(address => bool))" } }, - "id": 2106, + "id": 2153, "indexExpression": { "argumentTypes": null, - "id": 2103, + "id": 2150, "name": "dataHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2090, - "src": "1928:8:18", + "referencedDeclaration": 2136, + "src": "2142:8:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1864,29 +1996,29 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1916:21:18", + "src": "2130:21:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2107, + "id": 2154, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2104, + "id": 2151, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2598, - "src": "1938:3:18", + "referencedDeclaration": 2654, + "src": "2152:3:18", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 2105, + "id": 2152, "isConstant": false, "isLValue": false, "isPure": false, @@ -1894,7 +2026,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1938:10:18", + "src": "2152:10:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1905,7 +2037,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1916:33:18", + "src": "2130:33:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1916,14 +2048,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 2108, + "id": 2155, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "1952:4:18", + "src": "2166:4:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -1931,57 +2063,57 @@ }, "value": "true" }, - "src": "1916:40:18", + "src": "2130:40:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2110, + "id": 2157, "nodeType": "ExpressionStatement", - "src": "1916:40:18" + "src": "2130:40:18" } ] }, "documentation": "@dev Allows a friend to confirm a Safe transaction.\n @param dataHash Safe transaction hash.", - "id": 2112, + "id": 2159, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 2093, + "id": 2139, "modifierName": { "argumentTypes": null, - "id": 2092, + "id": 2138, "name": "onlyFriend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2017, - "src": "1851:10:18", + "referencedDeclaration": 2059, + "src": "2036:10:18", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1851:10:18" + "src": "2036:10:18" } ], "name": "confirmTransaction", "nodeType": "FunctionDefinition", "parameters": { - "id": 2091, + "id": 2137, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2090, + "id": 2136, "name": "dataHash", "nodeType": "VariableDeclaration", - "scope": 2112, - "src": "1810:16:18", + "scope": 2159, + "src": "1995:16:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1989,10 +2121,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 2089, + "id": 2135, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1810:7:18", + "src": "1995:7:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2002,139 +2134,39 @@ "visibility": "internal" } ], - "src": "1809:18:18" + "src": "1994:18:18" }, "payable": false, "returnParameters": { - "id": 2094, + "id": 2140, "nodeType": "ParameterList", "parameters": [], - "src": "1866:0:18" + "src": "2051:0:18" }, - "scope": 2234, - "src": "1782:181:18", + "scope": 2279, + "src": "1967:210:18", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2177, + "id": 2222, "nodeType": "Block", - "src": "2393:512:18", + "src": "2626:509:18", "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 2122, - "name": "isFriend", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1996, - "src": "2475:8:18", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 2125, - "indexExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 2123, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2598, - "src": "2484:3:18", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 2124, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2484:10:18", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2475:20:18", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 2121, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 2601, - 2602 - ], - "referencedDeclaration": 2601, - "src": "2467:7:18", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 2126, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2467:29:18", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 2127, - "nodeType": "ExpressionStatement", - "src": "2467:29:18" - }, { "assignments": [ - 2129 + 2171 ], "declarations": [ { "constant": false, - "id": 2129, + "id": 2171, "name": "data", "nodeType": "VariableDeclaration", - "scope": 2178, - "src": "2506:17:18", + "scope": 2223, + "src": "2636:17:18", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -2142,10 +2174,10 @@ "typeString": "bytes" }, "typeName": { - "id": 2128, + "id": 2170, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "2506:5:18", + "src": "2636:5:18", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -2155,21 +2187,21 @@ "visibility": "internal" } ], - "id": 2137, + "id": 2179, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "737761704f776e657228616464726573732c616464726573732c6164647265737329", - "id": 2132, + "id": 2174, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2550:36:18", + "src": "2680:36:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_e318b52b9bee2870ac7ee0af86866eb2e8f9569b34de6028eb487e7983ba6df8", @@ -2179,12 +2211,12 @@ }, { "argumentTypes": null, - "id": 2133, + "id": 2175, "name": "prevOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2114, - "src": "2588:9:18", + "referencedDeclaration": 2161, + "src": "2718:9:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2192,12 +2224,12 @@ }, { "argumentTypes": null, - "id": 2134, + "id": 2176, "name": "oldOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2116, - "src": "2599:8:18", + "referencedDeclaration": 2163, + "src": "2729:8:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2205,12 +2237,12 @@ }, { "argumentTypes": null, - "id": 2135, + "id": 2177, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2118, - "src": "2609:8:18", + "referencedDeclaration": 2165, + "src": "2739:8:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2238,18 +2270,18 @@ ], "expression": { "argumentTypes": null, - "id": 2130, + "id": 2172, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2585, - "src": "2526:3:18", + "referencedDeclaration": 2641, + "src": "2656:3:18", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, - "id": 2131, + "id": 2173, "isConstant": false, "isLValue": false, "isPure": true, @@ -2257,13 +2289,13 @@ "memberName": "encodeWithSignature", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2526:23:18", + "src": "2656:23:18", "typeDescriptions": { "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", "typeString": "function (string memory) pure returns (bytes memory)" } }, - "id": 2136, + "id": 2178, "isConstant": false, "isLValue": false, "isPure": false, @@ -2271,27 +2303,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2526:92:18", + "src": "2656:92:18", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "nodeType": "VariableDeclarationStatement", - "src": "2506:112:18" + "src": "2636:112:18" }, { "assignments": [ - 2139 + 2181 ], "declarations": [ { "constant": false, - "id": 2139, + "id": 2181, "name": "dataHash", "nodeType": "VariableDeclaration", - "scope": 2178, - "src": "2628:16:18", + "scope": 2223, + "src": "2758:16:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2299,10 +2331,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 2138, + "id": 2180, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "2628:7:18", + "src": "2758:7:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2312,18 +2344,18 @@ "visibility": "internal" } ], - "id": 2143, + "id": 2185, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 2141, + "id": 2183, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2129, - "src": "2659:4:18", + "referencedDeclaration": 2171, + "src": "2789:4:18", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -2337,18 +2369,18 @@ "typeString": "bytes memory" } ], - "id": 2140, + "id": 2182, "name": "getDataHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2233, - "src": "2647:11:18", + "referencedDeclaration": 2278, + "src": "2777:11:18", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)" } }, - "id": 2142, + "id": 2184, "isConstant": false, "isLValue": false, "isPure": false, @@ -2356,14 +2388,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2647:17:18", + "src": "2777:17:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "VariableDeclarationStatement", - "src": "2628:36:18" + "src": "2758:36:18" }, { "expression": { @@ -2371,7 +2403,7 @@ "arguments": [ { "argumentTypes": null, - "id": 2148, + "id": 2190, "isConstant": false, "isLValue": false, "isPure": false, @@ -2379,31 +2411,31 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "2682:21:18", + "src": "2812:21:18", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2145, + "id": 2187, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2000, - "src": "2683:10:18", + "referencedDeclaration": 2041, + "src": "2813:10:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 2147, + "id": 2189, "indexExpression": { "argumentTypes": null, - "id": 2146, + "id": 2188, "name": "dataHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2139, - "src": "2694:8:18", + "referencedDeclaration": 2181, + "src": "2824:8:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2414,7 +2446,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2683:20:18", + "src": "2813:20:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2424,6 +2456,24 @@ "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "5265636f7665727920616c7265616479206578656375746564", + "id": 2191, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2835:27:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c2f19da1619c37eda5c6f4f3abcc466ec30065da4e2523bb6c81cc850dedac38", + "typeString": "literal_string \"Recovery already executed\"" + }, + "value": "Recovery already executed" } ], "expression": { @@ -2431,23 +2481,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_c2f19da1619c37eda5c6f4f3abcc466ec30065da4e2523bb6c81cc850dedac38", + "typeString": "literal_string \"Recovery already executed\"" } ], - "id": 2144, + "id": 2186, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "2674:7:18", + "referencedDeclaration": 2658, + "src": "2804:7:18", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 2149, + "id": 2192, "isConstant": false, "isLValue": false, "isPure": false, @@ -2455,15 +2509,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2674:30:18", + "src": "2804:59:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2150, + "id": 2193, "nodeType": "ExpressionStatement", - "src": "2674:30:18" + "src": "2804:59:18" }, { "expression": { @@ -2474,12 +2528,12 @@ "arguments": [ { "argumentTypes": null, - "id": 2153, + "id": 2196, "name": "dataHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2139, - "src": "2751:8:18", + "referencedDeclaration": 2181, + "src": "2910:8:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2493,18 +2547,18 @@ "typeString": "bytes32" } ], - "id": 2152, + "id": 2195, "name": "isConfirmedByRequiredFriends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2221, - "src": "2722:28:18", + "referencedDeclaration": 2266, + "src": "2881:28:18", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$", "typeString": "function (bytes32) view returns (bool)" } }, - "id": 2154, + "id": 2197, "isConstant": false, "isLValue": false, "isPure": false, @@ -2512,11 +2566,29 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2722:38:18", + "src": "2881:38:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "5265636f7665727920686173206e6f7420656e6f75676820636f6e6669726d6174696f6e73", + "id": 2198, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2921:39:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_cb12b81371f920ba15a762526f9a95cbe925aecb372a64dbeac8ce5c02e0c0e8", + "typeString": "literal_string \"Recovery has not enough confirmations\"" + }, + "value": "Recovery has not enough confirmations" } ], "expression": { @@ -2524,23 +2596,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_cb12b81371f920ba15a762526f9a95cbe925aecb372a64dbeac8ce5c02e0c0e8", + "typeString": "literal_string \"Recovery has not enough confirmations\"" } ], - "id": 2151, + "id": 2194, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "2714:7:18", + "referencedDeclaration": 2658, + "src": "2873:7:18", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 2155, + "id": 2199, "isConstant": false, "isLValue": false, "isPure": false, @@ -2548,20 +2624,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2714:47:18", + "src": "2873:88:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2156, + "id": 2200, "nodeType": "ExpressionStatement", - "src": "2714:47:18" + "src": "2873:88:18" }, { "expression": { "argumentTypes": null, - "id": 2161, + "id": 2205, "isConstant": false, "isLValue": false, "isPure": false, @@ -2570,26 +2646,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2157, + "id": 2201, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2000, - "src": "2771:10:18", + "referencedDeclaration": 2041, + "src": "2971:10:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 2159, + "id": 2203, "indexExpression": { "argumentTypes": null, - "id": 2158, + "id": 2202, "name": "dataHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2139, - "src": "2782:8:18", + "referencedDeclaration": 2181, + "src": "2982:8:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2600,7 +2676,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2771:20:18", + "src": "2971:20:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2611,14 +2687,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 2160, + "id": 2204, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "2794:4:18", + "src": "2994:4:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -2626,15 +2702,15 @@ }, "value": "true" }, - "src": "2771:27:18", + "src": "2971:27:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2162, + "id": 2206, "nodeType": "ExpressionStatement", - "src": "2771:27:18" + "src": "2971:27:18" }, { "expression": { @@ -2648,14 +2724,14 @@ "arguments": [ { "argumentTypes": null, - "id": 2167, + "id": 2211, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 717, - "src": "2858:7:18", + "referencedDeclaration": 727, + "src": "3058:7:18", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } } @@ -2663,24 +2739,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } ], - "id": 2166, + "id": 2210, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2850:7:18", + "src": "3050:7:18", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 2168, + "id": 2212, "isConstant": false, "isLValue": false, "isPure": false, @@ -2688,7 +2764,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2850:16:18", + "src": "3050:16:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2697,14 +2773,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 2169, + "id": 2213, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2868:1:18", + "src": "3068:1:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -2714,12 +2790,12 @@ }, { "argumentTypes": null, - "id": 2170, + "id": 2214, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2129, - "src": "2871:4:18", + "referencedDeclaration": 2171, + "src": "3071:4:18", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -2731,18 +2807,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2171, + "id": 2215, "name": "Enum", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 30, - "src": "2877:4:18", + "src": "3077:4:18", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_Enum_$30_$", "typeString": "type(contract Enum)" } }, - "id": 2172, + "id": 2216, "isConstant": false, "isLValue": false, "isPure": false, @@ -2750,13 +2826,13 @@ "memberName": "Operation", "nodeType": "MemberAccess", "referencedDeclaration": 29, - "src": "2877:14:18", + "src": "3077:14:18", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_Operation_$29_$", "typeString": "type(enum Enum.Operation)" } }, - "id": 2173, + "id": 2217, "isConstant": false, "isLValue": false, "isPure": true, @@ -2764,7 +2840,7 @@ "memberName": "Call", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2877:19:18", + "src": "3077:19:18", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -2792,32 +2868,32 @@ ], "expression": { "argumentTypes": null, - "id": 2164, + "id": 2208, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 717, - "src": "2816:7:18", + "referencedDeclaration": 727, + "src": "3016:7:18", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } }, - "id": 2165, + "id": 2209, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "execTransactionFromModule", "nodeType": "MemberAccess", - "referencedDeclaration": 927, - "src": "2816:33:18", + "referencedDeclaration": 945, + "src": "3016:33:18", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation) external returns (bool)" } }, - "id": 2174, + "id": 2218, "isConstant": false, "isLValue": false, "isPure": false, @@ -2825,11 +2901,29 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2816:81:18", + "src": "3016:81:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "436f756c64206e6f742065786563757465207265636f76657279", + "id": 2219, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3099:28:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_3515587d60c3ee9920dfa4bee22a25e99aacbb3cec35d7cbe6c839f5b9ffdff1", + "typeString": "literal_string \"Could not execute recovery\"" + }, + "value": "Could not execute recovery" } ], "expression": { @@ -2837,23 +2931,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_3515587d60c3ee9920dfa4bee22a25e99aacbb3cec35d7cbe6c839f5b9ffdff1", + "typeString": "literal_string \"Could not execute recovery\"" } ], - "id": 2163, + "id": 2207, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "2808:7:18", + "referencedDeclaration": 2658, + "src": "3008:7:18", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 2175, + "id": 2220, "isConstant": false, "isLValue": false, "isPure": false, @@ -2861,37 +2959,57 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2808:90:18", + "src": "3008:120:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2176, + "id": 2221, "nodeType": "ExpressionStatement", - "src": "2808:90:18" + "src": "3008:120:18" } ] }, "documentation": "@dev Returns if Safe transaction is a valid owner replacement transaction.\n @param prevOwner Owner that pointed to the owner to be replaced in the linked list\n @param oldOwner Owner address to be replaced.\n @param newOwner New owner address.\n @return Returns if transaction can be executed.", - "id": 2178, + "id": 2223, "implemented": true, "isConstructor": false, "isDeclaredConst": false, - "modifiers": [], + "modifiers": [ + { + "arguments": null, + "id": 2168, + "modifierName": { + "argumentTypes": null, + "id": 2167, + "name": "onlyFriend", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2059, + "src": "2611:10:18", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "2611:10:18" + } + ], "name": "recoverAccess", "nodeType": "FunctionDefinition", "parameters": { - "id": 2119, + "id": 2166, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2114, + "id": 2161, "name": "prevOwner", "nodeType": "VariableDeclaration", - "scope": 2178, - "src": "2319:17:18", + "scope": 2223, + "src": "2533:17:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2899,10 +3017,10 @@ "typeString": "address" }, "typeName": { - "id": 2113, + "id": 2160, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2319:7:18", + "src": "2533:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2913,11 +3031,11 @@ }, { "constant": false, - "id": 2116, + "id": 2163, "name": "oldOwner", "nodeType": "VariableDeclaration", - "scope": 2178, - "src": "2338:16:18", + "scope": 2223, + "src": "2552:16:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2925,10 +3043,10 @@ "typeString": "address" }, "typeName": { - "id": 2115, + "id": 2162, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2338:7:18", + "src": "2552:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2939,11 +3057,11 @@ }, { "constant": false, - "id": 2118, + "id": 2165, "name": "newOwner", "nodeType": "VariableDeclaration", - "scope": 2178, - "src": "2356:16:18", + "scope": 2223, + "src": "2570:16:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2951,10 +3069,10 @@ "typeString": "address" }, "typeName": { - "id": 2117, + "id": 2164, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2356:7:18", + "src": "2570:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2964,37 +3082,37 @@ "visibility": "internal" } ], - "src": "2318:55:18" + "src": "2532:55:18" }, "payable": false, "returnParameters": { - "id": 2120, + "id": 2169, "nodeType": "ParameterList", "parameters": [], - "src": "2393:0:18" + "src": "2626:0:18" }, - "scope": 2234, - "src": "2296:609:18", + "scope": 2279, + "src": "2510:625:18", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2220, + "id": 2265, "nodeType": "Block", - "src": "3177:294:18", + "src": "3407:294:18", "statements": [ { "assignments": [], "declarations": [ { "constant": false, - "id": 2186, + "id": 2231, "name": "confirmationCount", "nodeType": "VariableDeclaration", - "scope": 2221, - "src": "3187:25:18", + "scope": 2266, + "src": "3417:25:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3002,10 +3120,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2185, + "id": 2230, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3187:7:18", + "src": "3417:7:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3015,16 +3133,16 @@ "visibility": "internal" } ], - "id": 2187, + "id": 2232, "initialValue": null, "nodeType": "VariableDeclarationStatement", - "src": "3187:25:18" + "src": "3417:25:18" }, { "body": { - "id": 2216, + "id": 2261, "nodeType": "Block", - "src": "3267:176:18", + "src": "3497:176:18", "statements": [ { "condition": { @@ -3033,26 +3151,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2199, + "id": 2244, "name": "isConfirmed", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2006, - "src": "3285:11:18", + "referencedDeclaration": 2047, + "src": "3515:11:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(bytes32 => mapping(address => bool))" } }, - "id": 2201, + "id": 2246, "indexExpression": { "argumentTypes": null, - "id": 2200, + "id": 2245, "name": "dataHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2180, - "src": "3297:8:18", + "referencedDeclaration": 2225, + "src": "3527:8:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3063,37 +3181,37 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3285:21:18", + "src": "3515:21:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2205, + "id": 2250, "indexExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2202, + "id": 2247, "name": "friends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1992, - "src": "3307:7:18", + "referencedDeclaration": 2033, + "src": "3537:7:18", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 2204, + "id": 2249, "indexExpression": { "argumentTypes": null, - "id": 2203, + "id": 2248, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2189, - "src": "3315:1:18", + "referencedDeclaration": 2234, + "src": "3545:1:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3104,7 +3222,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3307:10:18", + "src": "3537:10:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3115,20 +3233,20 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3285:33:18", + "src": "3515:33:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 2209, + "id": 2254, "nodeType": "IfStatement", - "src": "3281:74:18", + "src": "3511:74:18", "trueBody": { "expression": { "argumentTypes": null, - "id": 2207, + "id": 2252, "isConstant": false, "isLValue": false, "isPure": false, @@ -3136,15 +3254,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "3336:19:18", + "src": "3566:19:18", "subExpression": { "argumentTypes": null, - "id": 2206, + "id": 2251, "name": "confirmationCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2186, - "src": "3336:17:18", + "referencedDeclaration": 2231, + "src": "3566:17:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3155,9 +3273,9 @@ "typeString": "uint256" } }, - "id": 2208, + "id": 2253, "nodeType": "ExpressionStatement", - "src": "3336:19:18" + "src": "3566:19:18" } }, { @@ -3167,19 +3285,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 2212, + "id": 2257, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2210, + "id": 2255, "name": "confirmationCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2186, - "src": "3373:17:18", + "referencedDeclaration": 2231, + "src": "3603:17:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3189,39 +3307,39 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 2211, + "id": 2256, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1989, - "src": "3394:9:18", + "referencedDeclaration": 2030, + "src": "3624:9:18", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "3373:30:18", + "src": "3603:30:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 2215, + "id": 2260, "nodeType": "IfStatement", - "src": "3369:63:18", + "src": "3599:63:18", "trueBody": { "expression": { "argumentTypes": null, "hexValue": "74727565", - "id": 2213, + "id": 2258, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "3428:4:18", + "src": "3658:4:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -3229,10 +3347,10 @@ }, "value": "true" }, - "functionReturnParameters": 2184, - "id": 2214, + "functionReturnParameters": 2229, + "id": 2259, "nodeType": "Return", - "src": "3421:11:18" + "src": "3651:11:18" } } ] @@ -3243,19 +3361,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 2195, + "id": 2240, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2192, + "id": 2237, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2189, - "src": "3242:1:18", + "referencedDeclaration": 2234, + "src": "3472:1:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3267,18 +3385,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2193, + "id": 2238, "name": "friends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1992, - "src": "3246:7:18", + "referencedDeclaration": 2033, + "src": "3476:7:18", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 2194, + "id": 2239, "isConstant": false, "isLValue": true, "isPure": false, @@ -3286,31 +3404,31 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3246:14:18", + "src": "3476:14:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3242:18:18", + "src": "3472:18:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2217, + "id": 2262, "initializationExpression": { "assignments": [ - 2189 + 2234 ], "declarations": [ { "constant": false, - "id": 2189, + "id": 2234, "name": "i", "nodeType": "VariableDeclaration", - "scope": 2221, - "src": "3227:9:18", + "scope": 2266, + "src": "3457:9:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3318,10 +3436,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2188, + "id": 2233, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3227:7:18", + "src": "3457:7:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3331,18 +3449,18 @@ "visibility": "internal" } ], - "id": 2191, + "id": 2236, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 2190, + "id": 2235, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3239:1:18", + "src": "3469:1:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -3351,12 +3469,12 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "3227:13:18" + "src": "3457:13:18" }, "loopExpression": { "expression": { "argumentTypes": null, - "id": 2197, + "id": 2242, "isConstant": false, "isLValue": false, "isPure": false, @@ -3364,15 +3482,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "3262:3:18", + "src": "3492:3:18", "subExpression": { "argumentTypes": null, - "id": 2196, + "id": 2241, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2189, - "src": "3262:1:18", + "referencedDeclaration": 2234, + "src": "3492:1:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3383,25 +3501,25 @@ "typeString": "uint256" } }, - "id": 2198, + "id": 2243, "nodeType": "ExpressionStatement", - "src": "3262:3:18" + "src": "3492:3:18" }, "nodeType": "ForStatement", - "src": "3222:221:18" + "src": "3452:221:18" }, { "expression": { "argumentTypes": null, "hexValue": "66616c7365", - "id": 2218, + "id": 2263, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "3459:5:18", + "src": "3689:5:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -3409,15 +3527,15 @@ }, "value": "false" }, - "functionReturnParameters": 2184, - "id": 2219, + "functionReturnParameters": 2229, + "id": 2264, "nodeType": "Return", - "src": "3452:12:18" + "src": "3682:12:18" } ] }, "documentation": "@dev Returns if Safe transaction is a valid owner replacement transaction.\n @param dataHash Data hash.\n @return Confirmation status.", - "id": 2221, + "id": 2266, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -3425,16 +3543,16 @@ "name": "isConfirmedByRequiredFriends", "nodeType": "FunctionDefinition", "parameters": { - "id": 2181, + "id": 2226, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2180, + "id": 2225, "name": "dataHash", "nodeType": "VariableDeclaration", - "scope": 2221, - "src": "3104:16:18", + "scope": 2266, + "src": "3334:16:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3442,10 +3560,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 2179, + "id": 2224, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "3104:7:18", + "src": "3334:7:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3455,20 +3573,20 @@ "visibility": "internal" } ], - "src": "3103:18:18" + "src": "3333:18:18" }, "payable": false, "returnParameters": { - "id": 2184, + "id": 2229, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2183, + "id": 2228, "name": "", "nodeType": "VariableDeclaration", - "scope": 2221, - "src": "3167:4:18", + "scope": 2266, + "src": "3397:4:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3476,10 +3594,10 @@ "typeString": "bool" }, "typeName": { - "id": 2182, + "id": 2227, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "3167:4:18", + "src": "3397:4:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3489,19 +3607,19 @@ "visibility": "internal" } ], - "src": "3166:6:18" + "src": "3396:6:18" }, - "scope": 2234, - "src": "3066:405:18", + "scope": 2279, + "src": "3296:405:18", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2232, + "id": 2277, "nodeType": "Block", - "src": "3691:39:18", + "src": "3921:39:18", "statements": [ { "expression": { @@ -3509,12 +3627,12 @@ "arguments": [ { "argumentTypes": null, - "id": 2229, + "id": 2274, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2223, - "src": "3718:4:18", + "referencedDeclaration": 2268, + "src": "3948:4:18", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -3528,18 +3646,18 @@ "typeString": "bytes memory" } ], - "id": 2228, + "id": 2273, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2592, - "src": "3708:9:18", + "referencedDeclaration": 2648, + "src": "3938:9:18", "typeDescriptions": { "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", "typeString": "function () pure returns (bytes32)" } }, - "id": 2230, + "id": 2275, "isConstant": false, "isLValue": false, "isPure": false, @@ -3547,21 +3665,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3708:15:18", + "src": "3938:15:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "functionReturnParameters": 2227, - "id": 2231, + "functionReturnParameters": 2272, + "id": 2276, "nodeType": "Return", - "src": "3701:22:18" + "src": "3931:22:18" } ] }, "documentation": "@dev Returns hash of data encoding owner replacement.\n @param data Data payload.\n @return Data hash.", - "id": 2233, + "id": 2278, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -3569,16 +3687,16 @@ "name": "getDataHash", "nodeType": "FunctionDefinition", "parameters": { - "id": 2224, + "id": 2269, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2223, + "id": 2268, "name": "data", "nodeType": "VariableDeclaration", - "scope": 2233, - "src": "3621:10:18", + "scope": 2278, + "src": "3851:10:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3586,10 +3704,10 @@ "typeString": "bytes" }, "typeName": { - "id": 2222, + "id": 2267, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "3621:5:18", + "src": "3851:5:18", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -3599,20 +3717,20 @@ "visibility": "internal" } ], - "src": "3620:12:18" + "src": "3850:12:18" }, "payable": false, "returnParameters": { - "id": 2227, + "id": 2272, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2226, + "id": 2271, "name": "", "nodeType": "VariableDeclaration", - "scope": 2233, - "src": "3678:7:18", + "scope": 2278, + "src": "3908:7:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3620,10 +3738,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 2225, + "id": 2270, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "3678:7:18", + "src": "3908:7:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3633,33 +3751,33 @@ "visibility": "internal" } ], - "src": "3677:9:18" + "src": "3907:9:18" }, - "scope": 2234, - "src": "3600:130:18", + "scope": 2279, + "src": "3830:130:18", "stateMutability": "pure", "superFunction": null, "visibility": "public" } ], - "scope": 2235, - "src": "306:3426:18" + "scope": 2280, + "src": "306:3656:18" } ], - "src": "0:3733:18" + "src": "0:3963:18" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/SocialRecoveryModule.sol", "exportedSymbols": { "SocialRecoveryModule": [ - 2234 + 2279 ] }, - "id": 2235, + "id": 2280, "nodeType": "SourceUnit", "nodes": [ { - "id": 1975, + "id": 2016, "literals": [ "solidity", "0.4", @@ -3671,9 +3789,9 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Enum.sol", "file": "../Enum.sol", - "id": 1976, + "id": 2017, "nodeType": "ImportDirective", - "scope": 2235, + "scope": 2280, "sourceUnit": 31, "src": "24:21:18", "symbolAliases": [], @@ -3682,10 +3800,10 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "file": "../Module.sol", - "id": 1977, + "id": 2018, "nodeType": "ImportDirective", - "scope": 2235, - "sourceUnit": 751, + "scope": 2280, + "sourceUnit": 763, "src": "46:23:18", "symbolAliases": [], "unitAlias": "" @@ -3693,10 +3811,10 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ModuleManager.sol", "file": "../ModuleManager.sol", - "id": 1978, + "id": 2019, "nodeType": "ImportDirective", - "scope": 2235, - "sourceUnit": 1101, + "scope": 2280, + "sourceUnit": 1119, "src": "70:30:18", "symbolAliases": [], "unitAlias": "" @@ -3704,10 +3822,10 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", "file": "../OwnerManager.sol", - "id": 1979, + "id": 2020, "nodeType": "ImportDirective", - "scope": 2235, - "sourceUnit": 1473, + "scope": 2280, + "sourceUnit": 1505, "src": "101:29:18", "symbolAliases": [], "unitAlias": "" @@ -3718,45 +3836,45 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 1980, + "id": 2021, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 750, + "referencedDeclaration": 762, "src": "339:6:18", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } }, - "id": 1981, + "id": 2022, "nodeType": "InheritanceSpecifier", "src": "339:6:18" } ], "contractDependencies": [ - 652, - 750, - 1619 + 662, + 762, + 1654 ], "contractKind": "contract", "documentation": "@title Social Recovery Module - Allows to replace an owner without Safe confirmations if friends approve the replacement.\n @author Stefan George - ", "fullyImplemented": true, - "id": 2234, + "id": 2279, "linearizedBaseContracts": [ - 2234, - 750, - 652, - 1619 + 2279, + 762, + 662, + 1654 ], "name": "SocialRecoveryModule", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, - "id": 1984, + "id": 2025, "name": "NAME", "nodeType": "VariableDeclaration", - "scope": 2234, + "scope": 2279, "src": "353:54:18", "stateVariable": true, "storageLocation": "default", @@ -3765,7 +3883,7 @@ "typeString": "string" }, "typeName": { - "id": 1982, + "id": 2023, "name": "string", "nodeType": "ElementaryTypeName", "src": "353:6:18", @@ -3777,7 +3895,7 @@ "value": { "argumentTypes": null, "hexValue": "536f6369616c205265636f76657279204d6f64756c65", - "id": 1983, + "id": 2024, "isConstant": false, "isLValue": false, "isPure": true, @@ -3796,10 +3914,10 @@ }, { "constant": true, - "id": 1987, + "id": 2028, "name": "VERSION", "nodeType": "VariableDeclaration", - "scope": 2234, + "scope": 2279, "src": "413:40:18", "stateVariable": true, "storageLocation": "default", @@ -3808,7 +3926,7 @@ "typeString": "string" }, "typeName": { - "id": 1985, + "id": 2026, "name": "string", "nodeType": "ElementaryTypeName", "src": "413:6:18", @@ -3820,7 +3938,7 @@ "value": { "argumentTypes": null, "hexValue": "302e302e31", - "id": 1986, + "id": 2027, "isConstant": false, "isLValue": false, "isPure": true, @@ -3839,10 +3957,10 @@ }, { "constant": false, - "id": 1989, + "id": 2030, "name": "threshold", "nodeType": "VariableDeclaration", - "scope": 2234, + "scope": 2279, "src": "460:22:18", "stateVariable": true, "storageLocation": "default", @@ -3851,7 +3969,7 @@ "typeString": "uint8" }, "typeName": { - "id": 1988, + "id": 2029, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "460:5:18", @@ -3865,10 +3983,10 @@ }, { "constant": false, - "id": 1992, + "id": 2033, "name": "friends", "nodeType": "VariableDeclaration", - "scope": 2234, + "scope": 2279, "src": "488:24:18", "stateVariable": true, "storageLocation": "default", @@ -3878,7 +3996,7 @@ }, "typeName": { "baseType": { - "id": 1990, + "id": 2031, "name": "address", "nodeType": "ElementaryTypeName", "src": "488:7:18", @@ -3887,7 +4005,7 @@ "typeString": "address" } }, - "id": 1991, + "id": 2032, "length": null, "nodeType": "ArrayTypeName", "src": "488:9:18", @@ -3901,10 +4019,10 @@ }, { "constant": false, - "id": 1996, + "id": 2037, "name": "isFriend", "nodeType": "VariableDeclaration", - "scope": 2234, + "scope": 2279, "src": "583:41:18", "stateVariable": true, "storageLocation": "default", @@ -3913,9 +4031,9 @@ "typeString": "mapping(address => bool)" }, "typeName": { - "id": 1995, + "id": 2036, "keyType": { - "id": 1993, + "id": 2034, "name": "address", "nodeType": "ElementaryTypeName", "src": "592:7:18", @@ -3931,7 +4049,7 @@ "typeString": "mapping(address => bool)" }, "valueType": { - "id": 1994, + "id": 2035, "name": "bool", "nodeType": "ElementaryTypeName", "src": "603:4:18", @@ -3946,10 +4064,10 @@ }, { "constant": false, - "id": 2000, + "id": 2041, "name": "isExecuted", "nodeType": "VariableDeclaration", - "scope": 2234, + "scope": 2279, "src": "692:43:18", "stateVariable": true, "storageLocation": "default", @@ -3958,9 +4076,9 @@ "typeString": "mapping(bytes32 => bool)" }, "typeName": { - "id": 1999, + "id": 2040, "keyType": { - "id": 1997, + "id": 2038, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "701:7:18", @@ -3976,7 +4094,7 @@ "typeString": "mapping(bytes32 => bool)" }, "valueType": { - "id": 1998, + "id": 2039, "name": "bool", "nodeType": "ElementaryTypeName", "src": "712:4:18", @@ -3991,10 +4109,10 @@ }, { "constant": false, - "id": 2006, + "id": 2047, "name": "isConfirmed", "nodeType": "VariableDeclaration", - "scope": 2234, + "scope": 2279, "src": "827:65:18", "stateVariable": true, "storageLocation": "default", @@ -4003,9 +4121,9 @@ "typeString": "mapping(bytes32 => mapping(address => bool))" }, "typeName": { - "id": 2005, + "id": 2046, "keyType": { - "id": 2001, + "id": 2042, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "836:7:18", @@ -4021,9 +4139,9 @@ "typeString": "mapping(bytes32 => mapping(address => bool))" }, "valueType": { - "id": 2004, + "id": 2045, "keyType": { - "id": 2002, + "id": 2043, "name": "address", "nodeType": "ElementaryTypeName", "src": "856:7:18", @@ -4039,7 +4157,7 @@ "typeString": "mapping(address => bool)" }, "valueType": { - "id": 2003, + "id": 2044, "name": "bool", "nodeType": "ElementaryTypeName", "src": "867:4:18", @@ -4055,9 +4173,9 @@ }, { "body": { - "id": 2016, + "id": 2058, "nodeType": "Block", - "src": "921:57:18", + "src": "921:98:18", "statements": [ { "expression": { @@ -4067,34 +4185,34 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2009, + "id": 2050, "name": "isFriend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1996, + "referencedDeclaration": 2037, "src": "939:8:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2012, + "id": 2053, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2010, + "id": 2051, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2598, + "referencedDeclaration": 2654, "src": "948:3:18", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 2011, + "id": 2052, "isConstant": false, "isLValue": false, "isPure": false, @@ -4118,6 +4236,24 @@ "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "4d6574686f642063616e206f6e6c792062652063616c6c6564206279206120667269656e64", + "id": 2054, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "961:39:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_b1b9fb59ab33eb5ed22c2a9ea6a84e946973f30df026a85494e13c73883cce0a", + "typeString": "literal_string \"Method can only be called by a friend\"" + }, + "value": "Method can only be called by a friend" } ], "expression": { @@ -4125,23 +4261,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_b1b9fb59ab33eb5ed22c2a9ea6a84e946973f30df026a85494e13c73883cce0a", + "typeString": "literal_string \"Method can only be called by a friend\"" } ], - "id": 2008, + "id": 2049, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, + "referencedDeclaration": 2658, "src": "931:7:18", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 2013, + "id": 2055, "isConstant": false, "isLValue": false, "isPure": false, @@ -4149,41 +4289,41 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "931:29:18", + "src": "931:70:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2014, + "id": 2056, "nodeType": "ExpressionStatement", - "src": "931:29:18" + "src": "931:70:18" }, { - "id": 2015, + "id": 2057, "nodeType": "PlaceholderStatement", - "src": "970:1:18" + "src": "1011:1:18" } ] }, "documentation": null, - "id": 2017, + "id": 2059, "name": "onlyFriend", "nodeType": "ModifierDefinition", "parameters": { - "id": 2007, + "id": 2048, "nodeType": "ParameterList", "parameters": [], "src": "918:2:18" }, - "src": "899:79:18", + "src": "899:120:18", "visibility": "internal" }, { "body": { - "id": 2087, + "id": 2133, "nodeType": "Block", - "src": "1247:422:18", + "src": "1288:566:18", "statements": [ { "expression": { @@ -4195,19 +4335,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 2029, + "id": 2071, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2026, + "id": 2068, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2022, - "src": "1265:10:18", + "referencedDeclaration": 2064, + "src": "1306:10:18", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -4219,18 +4359,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2027, + "id": 2069, "name": "_friends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2020, - "src": "1279:8:18", + "referencedDeclaration": 2062, + "src": "1320:8:18", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 2028, + "id": 2070, "isConstant": false, "isLValue": false, "isPure": false, @@ -4238,17 +4378,35 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1279:15:18", + "src": "1320:15:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1265:29:18", + "src": "1306:29:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "5468726573686f6c642063616e6e6f742065786365656420667269656e647320636f756e74", + "id": 2072, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1337:39:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_8268a65eab991df6bae5d0e671467a9ef945396e4d495dc52153cedea41ef257", + "typeString": "literal_string \"Threshold cannot exceed friends count\"" + }, + "value": "Threshold cannot exceed friends count" } ], "expression": { @@ -4256,23 +4414,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_8268a65eab991df6bae5d0e671467a9ef945396e4d495dc52153cedea41ef257", + "typeString": "literal_string \"Threshold cannot exceed friends count\"" } ], - "id": 2025, + "id": 2067, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "1257:7:18", + "referencedDeclaration": 2658, + "src": "1298:7:18", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 2030, + "id": 2073, "isConstant": false, "isLValue": false, "isPure": false, @@ -4280,15 +4442,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1257:38:18", + "src": "1298:79:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2031, + "id": 2074, "nodeType": "ExpressionStatement", - "src": "1257:38:18" + "src": "1298:79:18" }, { "expression": { @@ -4300,19 +4462,19 @@ "typeIdentifier": "t_uint8", "typeString": "uint8" }, - "id": 2035, + "id": 2078, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2033, + "id": 2076, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2022, - "src": "1313:10:18", + "referencedDeclaration": 2064, + "src": "1395:10:18", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -4323,14 +4485,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "32", - "id": 2034, + "id": 2077, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1327:1:18", + "src": "1409:1:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_2_by_1", @@ -4338,11 +4500,29 @@ }, "value": "2" }, - "src": "1313:15:18", + "src": "1395:15:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "4174206c65617374203220667269656e6473207265717569726564", + "id": 2079, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1412:29:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_2dca24eb5124987015b2480219c9ac2baf747f0e8ae6537e9852d3e3b2773773", + "typeString": "literal_string \"At least 2 friends required\"" + }, + "value": "At least 2 friends required" } ], "expression": { @@ -4350,23 +4530,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_2dca24eb5124987015b2480219c9ac2baf747f0e8ae6537e9852d3e3b2773773", + "typeString": "literal_string \"At least 2 friends required\"" } ], - "id": 2032, + "id": 2075, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "1305:7:18", + "referencedDeclaration": 2658, + "src": "1387:7:18", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 2036, + "id": 2080, "isConstant": false, "isLValue": false, "isPure": false, @@ -4374,15 +4558,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1305:24:18", + "src": "1387:55:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2037, + "id": 2081, "nodeType": "ExpressionStatement", - "src": "1305:24:18" + "src": "1387:55:18" }, { "expression": { @@ -4390,18 +4574,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 2038, + "id": 2082, "name": "setManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 749, - "src": "1339:10:18", + "referencedDeclaration": 761, + "src": "1452:10:18", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 2039, + "id": 2083, "isConstant": false, "isLValue": false, "isPure": false, @@ -4409,34 +4593,34 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1339:12:18", + "src": "1452:12:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2040, + "id": 2084, "nodeType": "ExpressionStatement", - "src": "1339:12:18" + "src": "1452:12:18" }, { "body": { - "id": 2077, + "id": 2123, "nodeType": "Block", - "src": "1439:164:18", + "src": "1552:236:18", "statements": [ { "assignments": [ - 2053 + 2097 ], "declarations": [ { "constant": false, - "id": 2053, + "id": 2097, "name": "friend", "nodeType": "VariableDeclaration", - "scope": 2088, - "src": "1453:14:18", + "scope": 2134, + "src": "1566:14:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4444,10 +4628,10 @@ "typeString": "address" }, "typeName": { - "id": 2052, + "id": 2096, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1453:7:18", + "src": "1566:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4457,31 +4641,31 @@ "visibility": "internal" } ], - "id": 2057, + "id": 2101, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2054, + "id": 2098, "name": "_friends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2020, - "src": "1470:8:18", + "referencedDeclaration": 2062, + "src": "1583:8:18", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 2056, + "id": 2100, "indexExpression": { "argumentTypes": null, - "id": 2055, + "id": 2099, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2042, - "src": "1479:1:18", + "referencedDeclaration": 2086, + "src": "1592:1:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4492,14 +4676,14 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1470:11:18", + "src": "1583:11:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "1453:28:18" + "src": "1566:28:18" }, { "expression": { @@ -4511,19 +4695,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 2061, + "id": 2105, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2059, + "id": 2103, "name": "friend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2053, - "src": "1503:6:18", + "referencedDeclaration": 2097, + "src": "1616:6:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4534,14 +4718,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 2060, + "id": 2104, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1513:1:18", + "src": "1626:1:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -4549,11 +4733,29 @@ }, "value": "0" }, - "src": "1503:11:18", + "src": "1616:11:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "496e76616c696420667269656e6420616464726573732070726f7669646564", + "id": 2106, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1629:33:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_5d50911068dfec2dd53f3e08d7dec23b50affd69b91cf3e5d1e699c56bca7a55", + "typeString": "literal_string \"Invalid friend address provided\"" + }, + "value": "Invalid friend address provided" } ], "expression": { @@ -4561,23 +4763,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_5d50911068dfec2dd53f3e08d7dec23b50affd69b91cf3e5d1e699c56bca7a55", + "typeString": "literal_string \"Invalid friend address provided\"" } ], - "id": 2058, + "id": 2102, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "1495:7:18", + "referencedDeclaration": 2658, + "src": "1608:7:18", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 2062, + "id": 2107, "isConstant": false, "isLValue": false, "isPure": false, @@ -4585,15 +4791,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1495:20:18", + "src": "1608:55:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2063, + "id": 2108, "nodeType": "ExpressionStatement", - "src": "1495:20:18" + "src": "1608:55:18" }, { "expression": { @@ -4601,7 +4807,7 @@ "arguments": [ { "argumentTypes": null, - "id": 2068, + "id": 2113, "isConstant": false, "isLValue": false, "isPure": false, @@ -4609,31 +4815,31 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "1537:17:18", + "src": "1685:17:18", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2065, + "id": 2110, "name": "isFriend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1996, - "src": "1538:8:18", + "referencedDeclaration": 2037, + "src": "1686:8:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2067, + "id": 2112, "indexExpression": { "argumentTypes": null, - "id": 2066, + "id": 2111, "name": "friend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2053, - "src": "1547:6:18", + "referencedDeclaration": 2097, + "src": "1695:6:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4644,7 +4850,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1538:16:18", + "src": "1686:16:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4654,6 +4860,24 @@ "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "4475706c696361746520667269656e6420616464726573732070726f7669646564", + "id": 2114, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1704:35:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_78a0468a6f4bfa8018f886880a93f836f50f407cd02c2e42c43779f87d3af4d3", + "typeString": "literal_string \"Duplicate friend address provided\"" + }, + "value": "Duplicate friend address provided" } ], "expression": { @@ -4661,23 +4885,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_78a0468a6f4bfa8018f886880a93f836f50f407cd02c2e42c43779f87d3af4d3", + "typeString": "literal_string \"Duplicate friend address provided\"" } ], - "id": 2064, + "id": 2109, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "1529:7:18", + "referencedDeclaration": 2658, + "src": "1677:7:18", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 2069, + "id": 2115, "isConstant": false, "isLValue": false, "isPure": false, @@ -4685,20 +4913,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1529:26:18", + "src": "1677:63:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2070, + "id": 2116, "nodeType": "ExpressionStatement", - "src": "1529:26:18" + "src": "1677:63:18" }, { "expression": { "argumentTypes": null, - "id": 2075, + "id": 2121, "isConstant": false, "isLValue": false, "isPure": false, @@ -4707,26 +4935,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2071, + "id": 2117, "name": "isFriend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1996, - "src": "1569:8:18", + "referencedDeclaration": 2037, + "src": "1754:8:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2073, + "id": 2119, "indexExpression": { "argumentTypes": null, - "id": 2072, + "id": 2118, "name": "friend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2053, - "src": "1578:6:18", + "referencedDeclaration": 2097, + "src": "1763:6:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4737,7 +4965,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1569:16:18", + "src": "1754:16:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4748,14 +4976,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 2074, + "id": 2120, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "1588:4:18", + "src": "1773:4:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -4763,15 +4991,15 @@ }, "value": "true" }, - "src": "1569:23:18", + "src": "1754:23:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2076, + "id": 2122, "nodeType": "ExpressionStatement", - "src": "1569:23:18" + "src": "1754:23:18" } ] }, @@ -4781,19 +5009,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 2048, + "id": 2092, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2045, + "id": 2089, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2042, - "src": "1413:1:18", + "referencedDeclaration": 2086, + "src": "1526:1:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4805,18 +5033,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2046, + "id": 2090, "name": "_friends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2020, - "src": "1417:8:18", + "referencedDeclaration": 2062, + "src": "1530:8:18", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 2047, + "id": 2091, "isConstant": false, "isLValue": false, "isPure": false, @@ -4824,31 +5052,31 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1417:15:18", + "src": "1530:15:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "1413:19:18", + "src": "1526:19:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2078, + "id": 2124, "initializationExpression": { "assignments": [ - 2042 + 2086 ], "declarations": [ { "constant": false, - "id": 2042, + "id": 2086, "name": "i", "nodeType": "VariableDeclaration", - "scope": 2088, - "src": "1398:9:18", + "scope": 2134, + "src": "1511:9:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4856,10 +5084,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2041, + "id": 2085, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1398:7:18", + "src": "1511:7:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4869,18 +5097,18 @@ "visibility": "internal" } ], - "id": 2044, + "id": 2088, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 2043, + "id": 2087, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1410:1:18", + "src": "1523:1:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -4889,12 +5117,12 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "1398:13:18" + "src": "1511:13:18" }, "loopExpression": { "expression": { "argumentTypes": null, - "id": 2050, + "id": 2094, "isConstant": false, "isLValue": false, "isPure": false, @@ -4902,15 +5130,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "1434:3:18", + "src": "1547:3:18", "subExpression": { "argumentTypes": null, - "id": 2049, + "id": 2093, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2042, - "src": "1434:1:18", + "referencedDeclaration": 2086, + "src": "1547:1:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4921,29 +5149,29 @@ "typeString": "uint256" } }, - "id": 2051, + "id": 2095, "nodeType": "ExpressionStatement", - "src": "1434:3:18" + "src": "1547:3:18" }, "nodeType": "ForStatement", - "src": "1393:210:18" + "src": "1506:282:18" }, { "expression": { "argumentTypes": null, - "id": 2081, + "id": 2127, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 2079, + "id": 2125, "name": "friends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1992, - "src": "1612:7:18", + "referencedDeclaration": 2033, + "src": "1797:7:18", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" @@ -4953,43 +5181,43 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 2080, + "id": 2126, "name": "_friends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2020, - "src": "1622:8:18", + "referencedDeclaration": 2062, + "src": "1807:8:18", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "src": "1612:18:18", + "src": "1797:18:18", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 2082, + "id": 2128, "nodeType": "ExpressionStatement", - "src": "1612:18:18" + "src": "1797:18:18" }, { "expression": { "argumentTypes": null, - "id": 2085, + "id": 2131, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 2083, + "id": 2129, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1989, - "src": "1640:9:18", + "referencedDeclaration": 2030, + "src": "1825:9:18", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -4999,31 +5227,31 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 2084, + "id": 2130, "name": "_threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2022, - "src": "1652:10:18", + "referencedDeclaration": 2064, + "src": "1837:10:18", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "1640:22:18", + "src": "1825:22:18", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "id": 2086, + "id": 2132, "nodeType": "ExpressionStatement", - "src": "1640:22:18" + "src": "1825:22:18" } ] }, "documentation": "@dev Setup function sets initial storage of contract.\n @param _friends List of friends' addresses.\n @param _threshold Required number of friends to confirm replacement.", - "id": 2088, + "id": 2134, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -5031,16 +5259,16 @@ "name": "setup", "nodeType": "FunctionDefinition", "parameters": { - "id": 2023, + "id": 2065, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2020, + "id": 2062, "name": "_friends", "nodeType": "VariableDeclaration", - "scope": 2088, - "src": "1190:18:18", + "scope": 2134, + "src": "1231:18:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5049,19 +5277,19 @@ }, "typeName": { "baseType": { - "id": 2018, + "id": 2060, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1190:7:18", + "src": "1231:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 2019, + "id": 2061, "length": null, "nodeType": "ArrayTypeName", - "src": "1190:9:18", + "src": "1231:9:18", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr", "typeString": "address[]" @@ -5072,11 +5300,11 @@ }, { "constant": false, - "id": 2022, + "id": 2064, "name": "_threshold", "nodeType": "VariableDeclaration", - "scope": 2088, - "src": "1210:16:18", + "scope": 2134, + "src": "1251:16:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5084,10 +5312,10 @@ "typeString": "uint8" }, "typeName": { - "id": 2021, + "id": 2063, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "1210:5:18", + "src": "1251:5:18", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -5097,26 +5325,26 @@ "visibility": "internal" } ], - "src": "1189:38:18" + "src": "1230:38:18" }, "payable": false, "returnParameters": { - "id": 2024, + "id": 2066, "nodeType": "ParameterList", "parameters": [], - "src": "1247:0:18" + "src": "1288:0:18" }, - "scope": 2234, - "src": "1175:494:18", + "scope": 2279, + "src": "1216:638:18", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2111, + "id": 2158, "nodeType": "Block", - "src": "1866:97:18", + "src": "2051:126:18", "statements": [ { "expression": { @@ -5124,7 +5352,7 @@ "arguments": [ { "argumentTypes": null, - "id": 2099, + "id": 2145, "isConstant": false, "isLValue": false, "isPure": false, @@ -5132,31 +5360,31 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "1884:21:18", + "src": "2069:21:18", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2096, + "id": 2142, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2000, - "src": "1885:10:18", + "referencedDeclaration": 2041, + "src": "2070:10:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 2098, + "id": 2144, "indexExpression": { "argumentTypes": null, - "id": 2097, + "id": 2143, "name": "dataHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2090, - "src": "1896:8:18", + "referencedDeclaration": 2136, + "src": "2081:8:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -5167,7 +5395,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1885:20:18", + "src": "2070:20:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5177,6 +5405,24 @@ "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "5265636f7665727920616c7265616479206578656375746564", + "id": 2146, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2092:27:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c2f19da1619c37eda5c6f4f3abcc466ec30065da4e2523bb6c81cc850dedac38", + "typeString": "literal_string \"Recovery already executed\"" + }, + "value": "Recovery already executed" } ], "expression": { @@ -5184,23 +5430,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_c2f19da1619c37eda5c6f4f3abcc466ec30065da4e2523bb6c81cc850dedac38", + "typeString": "literal_string \"Recovery already executed\"" } ], - "id": 2095, + "id": 2141, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "1876:7:18", + "referencedDeclaration": 2658, + "src": "2061:7:18", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 2100, + "id": 2147, "isConstant": false, "isLValue": false, "isPure": false, @@ -5208,20 +5458,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1876:30:18", + "src": "2061:59:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2101, + "id": 2148, "nodeType": "ExpressionStatement", - "src": "1876:30:18" + "src": "2061:59:18" }, { "expression": { "argumentTypes": null, - "id": 2109, + "id": 2156, "isConstant": false, "isLValue": false, "isPure": false, @@ -5232,26 +5482,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2102, + "id": 2149, "name": "isConfirmed", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2006, - "src": "1916:11:18", + "referencedDeclaration": 2047, + "src": "2130:11:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(bytes32 => mapping(address => bool))" } }, - "id": 2106, + "id": 2153, "indexExpression": { "argumentTypes": null, - "id": 2103, + "id": 2150, "name": "dataHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2090, - "src": "1928:8:18", + "referencedDeclaration": 2136, + "src": "2142:8:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -5262,29 +5512,29 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1916:21:18", + "src": "2130:21:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2107, + "id": 2154, "indexExpression": { "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2104, + "id": 2151, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2598, - "src": "1938:3:18", + "referencedDeclaration": 2654, + "src": "2152:3:18", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 2105, + "id": 2152, "isConstant": false, "isLValue": false, "isPure": false, @@ -5292,7 +5542,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "1938:10:18", + "src": "2152:10:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5303,7 +5553,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1916:33:18", + "src": "2130:33:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5314,14 +5564,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 2108, + "id": 2155, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "1952:4:18", + "src": "2166:4:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -5329,57 +5579,57 @@ }, "value": "true" }, - "src": "1916:40:18", + "src": "2130:40:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2110, + "id": 2157, "nodeType": "ExpressionStatement", - "src": "1916:40:18" + "src": "2130:40:18" } ] }, "documentation": "@dev Allows a friend to confirm a Safe transaction.\n @param dataHash Safe transaction hash.", - "id": 2112, + "id": 2159, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 2093, + "id": 2139, "modifierName": { "argumentTypes": null, - "id": 2092, + "id": 2138, "name": "onlyFriend", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2017, - "src": "1851:10:18", + "referencedDeclaration": 2059, + "src": "2036:10:18", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1851:10:18" + "src": "2036:10:18" } ], "name": "confirmTransaction", "nodeType": "FunctionDefinition", "parameters": { - "id": 2091, + "id": 2137, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2090, + "id": 2136, "name": "dataHash", "nodeType": "VariableDeclaration", - "scope": 2112, - "src": "1810:16:18", + "scope": 2159, + "src": "1995:16:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5387,10 +5637,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 2089, + "id": 2135, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1810:7:18", + "src": "1995:7:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -5400,139 +5650,39 @@ "visibility": "internal" } ], - "src": "1809:18:18" + "src": "1994:18:18" }, "payable": false, "returnParameters": { - "id": 2094, + "id": 2140, "nodeType": "ParameterList", "parameters": [], - "src": "1866:0:18" + "src": "2051:0:18" }, - "scope": 2234, - "src": "1782:181:18", + "scope": 2279, + "src": "1967:210:18", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2177, + "id": 2222, "nodeType": "Block", - "src": "2393:512:18", + "src": "2626:509:18", "statements": [ - { - "expression": { - "argumentTypes": null, - "arguments": [ - { - "argumentTypes": null, - "baseExpression": { - "argumentTypes": null, - "id": 2122, - "name": "isFriend", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 1996, - "src": "2475:8:18", - "typeDescriptions": { - "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", - "typeString": "mapping(address => bool)" - } - }, - "id": 2125, - "indexExpression": { - "argumentTypes": null, - "expression": { - "argumentTypes": null, - "id": 2123, - "name": "msg", - "nodeType": "Identifier", - "overloadedDeclarations": [], - "referencedDeclaration": 2598, - "src": "2484:3:18", - "typeDescriptions": { - "typeIdentifier": "t_magic_message", - "typeString": "msg" - } - }, - "id": 2124, - "isConstant": false, - "isLValue": false, - "isPure": false, - "lValueRequested": false, - "memberName": "sender", - "nodeType": "MemberAccess", - "referencedDeclaration": null, - "src": "2484:10:18", - "typeDescriptions": { - "typeIdentifier": "t_address", - "typeString": "address" - } - }, - "isConstant": false, - "isLValue": true, - "isPure": false, - "lValueRequested": false, - "nodeType": "IndexAccess", - "src": "2475:20:18", - "typeDescriptions": { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - } - ], - "expression": { - "argumentTypes": [ - { - "typeIdentifier": "t_bool", - "typeString": "bool" - } - ], - "id": 2121, - "name": "require", - "nodeType": "Identifier", - "overloadedDeclarations": [ - 2601, - 2602 - ], - "referencedDeclaration": 2601, - "src": "2467:7:18", - "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" - } - }, - "id": 2126, - "isConstant": false, - "isLValue": false, - "isPure": false, - "kind": "functionCall", - "lValueRequested": false, - "names": [], - "nodeType": "FunctionCall", - "src": "2467:29:18", - "typeDescriptions": { - "typeIdentifier": "t_tuple$__$", - "typeString": "tuple()" - } - }, - "id": 2127, - "nodeType": "ExpressionStatement", - "src": "2467:29:18" - }, { "assignments": [ - 2129 + 2171 ], "declarations": [ { "constant": false, - "id": 2129, + "id": 2171, "name": "data", "nodeType": "VariableDeclaration", - "scope": 2178, - "src": "2506:17:18", + "scope": 2223, + "src": "2636:17:18", "stateVariable": false, "storageLocation": "memory", "typeDescriptions": { @@ -5540,10 +5690,10 @@ "typeString": "bytes" }, "typeName": { - "id": 2128, + "id": 2170, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "2506:5:18", + "src": "2636:5:18", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -5553,21 +5703,21 @@ "visibility": "internal" } ], - "id": 2137, + "id": 2179, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "737761704f776e657228616464726573732c616464726573732c6164647265737329", - "id": 2132, + "id": 2174, "isConstant": false, "isLValue": false, "isPure": true, "kind": "string", "lValueRequested": false, "nodeType": "Literal", - "src": "2550:36:18", + "src": "2680:36:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_stringliteral_e318b52b9bee2870ac7ee0af86866eb2e8f9569b34de6028eb487e7983ba6df8", @@ -5577,12 +5727,12 @@ }, { "argumentTypes": null, - "id": 2133, + "id": 2175, "name": "prevOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2114, - "src": "2588:9:18", + "referencedDeclaration": 2161, + "src": "2718:9:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5590,12 +5740,12 @@ }, { "argumentTypes": null, - "id": 2134, + "id": 2176, "name": "oldOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2116, - "src": "2599:8:18", + "referencedDeclaration": 2163, + "src": "2729:8:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5603,12 +5753,12 @@ }, { "argumentTypes": null, - "id": 2135, + "id": 2177, "name": "newOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2118, - "src": "2609:8:18", + "referencedDeclaration": 2165, + "src": "2739:8:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5636,18 +5786,18 @@ ], "expression": { "argumentTypes": null, - "id": 2130, + "id": 2172, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2585, - "src": "2526:3:18", + "referencedDeclaration": 2641, + "src": "2656:3:18", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, - "id": 2131, + "id": 2173, "isConstant": false, "isLValue": false, "isPure": true, @@ -5655,13 +5805,13 @@ "memberName": "encodeWithSignature", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2526:23:18", + "src": "2656:23:18", "typeDescriptions": { "typeIdentifier": "t_function_abiencodewithsignature_pure$_t_string_memory_ptr_$returns$_t_bytes_memory_ptr_$", "typeString": "function (string memory) pure returns (bytes memory)" } }, - "id": 2136, + "id": 2178, "isConstant": false, "isLValue": false, "isPure": false, @@ -5669,27 +5819,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2526:92:18", + "src": "2656:92:18", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" } }, "nodeType": "VariableDeclarationStatement", - "src": "2506:112:18" + "src": "2636:112:18" }, { "assignments": [ - 2139 + 2181 ], "declarations": [ { "constant": false, - "id": 2139, + "id": 2181, "name": "dataHash", "nodeType": "VariableDeclaration", - "scope": 2178, - "src": "2628:16:18", + "scope": 2223, + "src": "2758:16:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5697,10 +5847,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 2138, + "id": 2180, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "2628:7:18", + "src": "2758:7:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -5710,18 +5860,18 @@ "visibility": "internal" } ], - "id": 2143, + "id": 2185, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 2141, + "id": 2183, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2129, - "src": "2659:4:18", + "referencedDeclaration": 2171, + "src": "2789:4:18", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -5735,18 +5885,18 @@ "typeString": "bytes memory" } ], - "id": 2140, + "id": 2182, "name": "getDataHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2233, - "src": "2647:11:18", + "referencedDeclaration": 2278, + "src": "2777:11:18", "typeDescriptions": { "typeIdentifier": "t_function_internal_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$", "typeString": "function (bytes memory) pure returns (bytes32)" } }, - "id": 2142, + "id": 2184, "isConstant": false, "isLValue": false, "isPure": false, @@ -5754,14 +5904,14 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2647:17:18", + "src": "2777:17:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, "nodeType": "VariableDeclarationStatement", - "src": "2628:36:18" + "src": "2758:36:18" }, { "expression": { @@ -5769,7 +5919,7 @@ "arguments": [ { "argumentTypes": null, - "id": 2148, + "id": 2190, "isConstant": false, "isLValue": false, "isPure": false, @@ -5777,31 +5927,31 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "2682:21:18", + "src": "2812:21:18", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2145, + "id": 2187, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2000, - "src": "2683:10:18", + "referencedDeclaration": 2041, + "src": "2813:10:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 2147, + "id": 2189, "indexExpression": { "argumentTypes": null, - "id": 2146, + "id": 2188, "name": "dataHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2139, - "src": "2694:8:18", + "referencedDeclaration": 2181, + "src": "2824:8:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -5812,7 +5962,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2683:20:18", + "src": "2813:20:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -5822,6 +5972,24 @@ "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "5265636f7665727920616c7265616479206578656375746564", + "id": 2191, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2835:27:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_c2f19da1619c37eda5c6f4f3abcc466ec30065da4e2523bb6c81cc850dedac38", + "typeString": "literal_string \"Recovery already executed\"" + }, + "value": "Recovery already executed" } ], "expression": { @@ -5829,23 +5997,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_c2f19da1619c37eda5c6f4f3abcc466ec30065da4e2523bb6c81cc850dedac38", + "typeString": "literal_string \"Recovery already executed\"" } ], - "id": 2144, + "id": 2186, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "2674:7:18", + "referencedDeclaration": 2658, + "src": "2804:7:18", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 2149, + "id": 2192, "isConstant": false, "isLValue": false, "isPure": false, @@ -5853,15 +6025,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2674:30:18", + "src": "2804:59:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2150, + "id": 2193, "nodeType": "ExpressionStatement", - "src": "2674:30:18" + "src": "2804:59:18" }, { "expression": { @@ -5872,12 +6044,12 @@ "arguments": [ { "argumentTypes": null, - "id": 2153, + "id": 2196, "name": "dataHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2139, - "src": "2751:8:18", + "referencedDeclaration": 2181, + "src": "2910:8:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -5891,18 +6063,18 @@ "typeString": "bytes32" } ], - "id": 2152, + "id": 2195, "name": "isConfirmedByRequiredFriends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2221, - "src": "2722:28:18", + "referencedDeclaration": 2266, + "src": "2881:28:18", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_bool_$", "typeString": "function (bytes32) view returns (bool)" } }, - "id": 2154, + "id": 2197, "isConstant": false, "isLValue": false, "isPure": false, @@ -5910,11 +6082,29 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2722:38:18", + "src": "2881:38:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "5265636f7665727920686173206e6f7420656e6f75676820636f6e6669726d6174696f6e73", + "id": 2198, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2921:39:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_cb12b81371f920ba15a762526f9a95cbe925aecb372a64dbeac8ce5c02e0c0e8", + "typeString": "literal_string \"Recovery has not enough confirmations\"" + }, + "value": "Recovery has not enough confirmations" } ], "expression": { @@ -5922,23 +6112,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_cb12b81371f920ba15a762526f9a95cbe925aecb372a64dbeac8ce5c02e0c0e8", + "typeString": "literal_string \"Recovery has not enough confirmations\"" } ], - "id": 2151, + "id": 2194, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "2714:7:18", + "referencedDeclaration": 2658, + "src": "2873:7:18", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 2155, + "id": 2199, "isConstant": false, "isLValue": false, "isPure": false, @@ -5946,20 +6140,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2714:47:18", + "src": "2873:88:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2156, + "id": 2200, "nodeType": "ExpressionStatement", - "src": "2714:47:18" + "src": "2873:88:18" }, { "expression": { "argumentTypes": null, - "id": 2161, + "id": 2205, "isConstant": false, "isLValue": false, "isPure": false, @@ -5968,26 +6162,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2157, + "id": 2201, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2000, - "src": "2771:10:18", + "referencedDeclaration": 2041, + "src": "2971:10:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 2159, + "id": 2203, "indexExpression": { "argumentTypes": null, - "id": 2158, + "id": 2202, "name": "dataHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2139, - "src": "2782:8:18", + "referencedDeclaration": 2181, + "src": "2982:8:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -5998,7 +6192,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "2771:20:18", + "src": "2971:20:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6009,14 +6203,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 2160, + "id": 2204, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "2794:4:18", + "src": "2994:4:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -6024,15 +6218,15 @@ }, "value": "true" }, - "src": "2771:27:18", + "src": "2971:27:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2162, + "id": 2206, "nodeType": "ExpressionStatement", - "src": "2771:27:18" + "src": "2971:27:18" }, { "expression": { @@ -6046,14 +6240,14 @@ "arguments": [ { "argumentTypes": null, - "id": 2167, + "id": 2211, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 717, - "src": "2858:7:18", + "referencedDeclaration": 727, + "src": "3058:7:18", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } } @@ -6061,24 +6255,24 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } ], - "id": 2166, + "id": 2210, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2850:7:18", + "src": "3050:7:18", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 2168, + "id": 2212, "isConstant": false, "isLValue": false, "isPure": false, @@ -6086,7 +6280,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2850:16:18", + "src": "3050:16:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6095,14 +6289,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 2169, + "id": 2213, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2868:1:18", + "src": "3068:1:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -6112,12 +6306,12 @@ }, { "argumentTypes": null, - "id": 2170, + "id": 2214, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2129, - "src": "2871:4:18", + "referencedDeclaration": 2171, + "src": "3071:4:18", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -6129,18 +6323,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2171, + "id": 2215, "name": "Enum", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 30, - "src": "2877:4:18", + "src": "3077:4:18", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_Enum_$30_$", "typeString": "type(contract Enum)" } }, - "id": 2172, + "id": 2216, "isConstant": false, "isLValue": false, "isPure": false, @@ -6148,13 +6342,13 @@ "memberName": "Operation", "nodeType": "MemberAccess", "referencedDeclaration": 29, - "src": "2877:14:18", + "src": "3077:14:18", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_Operation_$29_$", "typeString": "type(enum Enum.Operation)" } }, - "id": 2173, + "id": 2217, "isConstant": false, "isLValue": false, "isPure": true, @@ -6162,7 +6356,7 @@ "memberName": "Call", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2877:19:18", + "src": "3077:19:18", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -6190,32 +6384,32 @@ ], "expression": { "argumentTypes": null, - "id": 2164, + "id": 2208, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 717, - "src": "2816:7:18", + "referencedDeclaration": 727, + "src": "3016:7:18", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } }, - "id": 2165, + "id": 2209, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "execTransactionFromModule", "nodeType": "MemberAccess", - "referencedDeclaration": 927, - "src": "2816:33:18", + "referencedDeclaration": 945, + "src": "3016:33:18", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation) external returns (bool)" } }, - "id": 2174, + "id": 2218, "isConstant": false, "isLValue": false, "isPure": false, @@ -6223,11 +6417,29 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2816:81:18", + "src": "3016:81:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "436f756c64206e6f742065786563757465207265636f76657279", + "id": 2219, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "3099:28:18", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_3515587d60c3ee9920dfa4bee22a25e99aacbb3cec35d7cbe6c839f5b9ffdff1", + "typeString": "literal_string \"Could not execute recovery\"" + }, + "value": "Could not execute recovery" } ], "expression": { @@ -6235,23 +6447,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_3515587d60c3ee9920dfa4bee22a25e99aacbb3cec35d7cbe6c839f5b9ffdff1", + "typeString": "literal_string \"Could not execute recovery\"" } ], - "id": 2163, + "id": 2207, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "2808:7:18", + "referencedDeclaration": 2658, + "src": "3008:7:18", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 2175, + "id": 2220, "isConstant": false, "isLValue": false, "isPure": false, @@ -6259,37 +6475,57 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2808:90:18", + "src": "3008:120:18", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2176, + "id": 2221, "nodeType": "ExpressionStatement", - "src": "2808:90:18" + "src": "3008:120:18" } ] }, "documentation": "@dev Returns if Safe transaction is a valid owner replacement transaction.\n @param prevOwner Owner that pointed to the owner to be replaced in the linked list\n @param oldOwner Owner address to be replaced.\n @param newOwner New owner address.\n @return Returns if transaction can be executed.", - "id": 2178, + "id": 2223, "implemented": true, "isConstructor": false, "isDeclaredConst": false, - "modifiers": [], + "modifiers": [ + { + "arguments": null, + "id": 2168, + "modifierName": { + "argumentTypes": null, + "id": 2167, + "name": "onlyFriend", + "nodeType": "Identifier", + "overloadedDeclarations": [], + "referencedDeclaration": 2059, + "src": "2611:10:18", + "typeDescriptions": { + "typeIdentifier": "t_modifier$__$", + "typeString": "modifier ()" + } + }, + "nodeType": "ModifierInvocation", + "src": "2611:10:18" + } + ], "name": "recoverAccess", "nodeType": "FunctionDefinition", "parameters": { - "id": 2119, + "id": 2166, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2114, + "id": 2161, "name": "prevOwner", "nodeType": "VariableDeclaration", - "scope": 2178, - "src": "2319:17:18", + "scope": 2223, + "src": "2533:17:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6297,10 +6533,10 @@ "typeString": "address" }, "typeName": { - "id": 2113, + "id": 2160, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2319:7:18", + "src": "2533:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6311,11 +6547,11 @@ }, { "constant": false, - "id": 2116, + "id": 2163, "name": "oldOwner", "nodeType": "VariableDeclaration", - "scope": 2178, - "src": "2338:16:18", + "scope": 2223, + "src": "2552:16:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6323,10 +6559,10 @@ "typeString": "address" }, "typeName": { - "id": 2115, + "id": 2162, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2338:7:18", + "src": "2552:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6337,11 +6573,11 @@ }, { "constant": false, - "id": 2118, + "id": 2165, "name": "newOwner", "nodeType": "VariableDeclaration", - "scope": 2178, - "src": "2356:16:18", + "scope": 2223, + "src": "2570:16:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6349,10 +6585,10 @@ "typeString": "address" }, "typeName": { - "id": 2117, + "id": 2164, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2356:7:18", + "src": "2570:7:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6362,37 +6598,37 @@ "visibility": "internal" } ], - "src": "2318:55:18" + "src": "2532:55:18" }, "payable": false, "returnParameters": { - "id": 2120, + "id": 2169, "nodeType": "ParameterList", "parameters": [], - "src": "2393:0:18" + "src": "2626:0:18" }, - "scope": 2234, - "src": "2296:609:18", + "scope": 2279, + "src": "2510:625:18", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2220, + "id": 2265, "nodeType": "Block", - "src": "3177:294:18", + "src": "3407:294:18", "statements": [ { "assignments": [], "declarations": [ { "constant": false, - "id": 2186, + "id": 2231, "name": "confirmationCount", "nodeType": "VariableDeclaration", - "scope": 2221, - "src": "3187:25:18", + "scope": 2266, + "src": "3417:25:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6400,10 +6636,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2185, + "id": 2230, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3187:7:18", + "src": "3417:7:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6413,16 +6649,16 @@ "visibility": "internal" } ], - "id": 2187, + "id": 2232, "initialValue": null, "nodeType": "VariableDeclarationStatement", - "src": "3187:25:18" + "src": "3417:25:18" }, { "body": { - "id": 2216, + "id": 2261, "nodeType": "Block", - "src": "3267:176:18", + "src": "3497:176:18", "statements": [ { "condition": { @@ -6431,26 +6667,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2199, + "id": 2244, "name": "isConfirmed", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2006, - "src": "3285:11:18", + "referencedDeclaration": 2047, + "src": "3515:11:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_mapping$_t_address_$_t_bool_$_$", "typeString": "mapping(bytes32 => mapping(address => bool))" } }, - "id": 2201, + "id": 2246, "indexExpression": { "argumentTypes": null, - "id": 2200, + "id": 2245, "name": "dataHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2180, - "src": "3297:8:18", + "referencedDeclaration": 2225, + "src": "3527:8:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -6461,37 +6697,37 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3285:21:18", + "src": "3515:21:18", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2205, + "id": 2250, "indexExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2202, + "id": 2247, "name": "friends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1992, - "src": "3307:7:18", + "referencedDeclaration": 2033, + "src": "3537:7:18", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 2204, + "id": 2249, "indexExpression": { "argumentTypes": null, - "id": 2203, + "id": 2248, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2189, - "src": "3315:1:18", + "referencedDeclaration": 2234, + "src": "3545:1:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6502,7 +6738,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3307:10:18", + "src": "3537:10:18", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -6513,20 +6749,20 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "3285:33:18", + "src": "3515:33:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 2209, + "id": 2254, "nodeType": "IfStatement", - "src": "3281:74:18", + "src": "3511:74:18", "trueBody": { "expression": { "argumentTypes": null, - "id": 2207, + "id": 2252, "isConstant": false, "isLValue": false, "isPure": false, @@ -6534,15 +6770,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "3336:19:18", + "src": "3566:19:18", "subExpression": { "argumentTypes": null, - "id": 2206, + "id": 2251, "name": "confirmationCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2186, - "src": "3336:17:18", + "referencedDeclaration": 2231, + "src": "3566:17:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6553,9 +6789,9 @@ "typeString": "uint256" } }, - "id": 2208, + "id": 2253, "nodeType": "ExpressionStatement", - "src": "3336:19:18" + "src": "3566:19:18" } }, { @@ -6565,19 +6801,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 2212, + "id": 2257, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2210, + "id": 2255, "name": "confirmationCount", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2186, - "src": "3373:17:18", + "referencedDeclaration": 2231, + "src": "3603:17:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6587,39 +6823,39 @@ "operator": "==", "rightExpression": { "argumentTypes": null, - "id": 2211, + "id": 2256, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1989, - "src": "3394:9:18", + "referencedDeclaration": 2030, + "src": "3624:9:18", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "3373:30:18", + "src": "3603:30:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, "falseBody": null, - "id": 2215, + "id": 2260, "nodeType": "IfStatement", - "src": "3369:63:18", + "src": "3599:63:18", "trueBody": { "expression": { "argumentTypes": null, "hexValue": "74727565", - "id": 2213, + "id": 2258, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "3428:4:18", + "src": "3658:4:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -6627,10 +6863,10 @@ }, "value": "true" }, - "functionReturnParameters": 2184, - "id": 2214, + "functionReturnParameters": 2229, + "id": 2259, "nodeType": "Return", - "src": "3421:11:18" + "src": "3651:11:18" } } ] @@ -6641,19 +6877,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 2195, + "id": 2240, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2192, + "id": 2237, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2189, - "src": "3242:1:18", + "referencedDeclaration": 2234, + "src": "3472:1:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6665,18 +6901,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2193, + "id": 2238, "name": "friends", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1992, - "src": "3246:7:18", + "referencedDeclaration": 2033, + "src": "3476:7:18", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_storage", "typeString": "address[] storage ref" } }, - "id": 2194, + "id": 2239, "isConstant": false, "isLValue": true, "isPure": false, @@ -6684,31 +6920,31 @@ "memberName": "length", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3246:14:18", + "src": "3476:14:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "src": "3242:18:18", + "src": "3472:18:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2217, + "id": 2262, "initializationExpression": { "assignments": [ - 2189 + 2234 ], "declarations": [ { "constant": false, - "id": 2189, + "id": 2234, "name": "i", "nodeType": "VariableDeclaration", - "scope": 2221, - "src": "3227:9:18", + "scope": 2266, + "src": "3457:9:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6716,10 +6952,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2188, + "id": 2233, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "3227:7:18", + "src": "3457:7:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6729,18 +6965,18 @@ "visibility": "internal" } ], - "id": 2191, + "id": 2236, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 2190, + "id": 2235, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3239:1:18", + "src": "3469:1:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -6749,12 +6985,12 @@ "value": "0" }, "nodeType": "VariableDeclarationStatement", - "src": "3227:13:18" + "src": "3457:13:18" }, "loopExpression": { "expression": { "argumentTypes": null, - "id": 2197, + "id": 2242, "isConstant": false, "isLValue": false, "isPure": false, @@ -6762,15 +6998,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "3262:3:18", + "src": "3492:3:18", "subExpression": { "argumentTypes": null, - "id": 2196, + "id": 2241, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2189, - "src": "3262:1:18", + "referencedDeclaration": 2234, + "src": "3492:1:18", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -6781,25 +7017,25 @@ "typeString": "uint256" } }, - "id": 2198, + "id": 2243, "nodeType": "ExpressionStatement", - "src": "3262:3:18" + "src": "3492:3:18" }, "nodeType": "ForStatement", - "src": "3222:221:18" + "src": "3452:221:18" }, { "expression": { "argumentTypes": null, "hexValue": "66616c7365", - "id": 2218, + "id": 2263, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "3459:5:18", + "src": "3689:5:18", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -6807,15 +7043,15 @@ }, "value": "false" }, - "functionReturnParameters": 2184, - "id": 2219, + "functionReturnParameters": 2229, + "id": 2264, "nodeType": "Return", - "src": "3452:12:18" + "src": "3682:12:18" } ] }, "documentation": "@dev Returns if Safe transaction is a valid owner replacement transaction.\n @param dataHash Data hash.\n @return Confirmation status.", - "id": 2221, + "id": 2266, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -6823,16 +7059,16 @@ "name": "isConfirmedByRequiredFriends", "nodeType": "FunctionDefinition", "parameters": { - "id": 2181, + "id": 2226, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2180, + "id": 2225, "name": "dataHash", "nodeType": "VariableDeclaration", - "scope": 2221, - "src": "3104:16:18", + "scope": 2266, + "src": "3334:16:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6840,10 +7076,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 2179, + "id": 2224, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "3104:7:18", + "src": "3334:7:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -6853,20 +7089,20 @@ "visibility": "internal" } ], - "src": "3103:18:18" + "src": "3333:18:18" }, "payable": false, "returnParameters": { - "id": 2184, + "id": 2229, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2183, + "id": 2228, "name": "", "nodeType": "VariableDeclaration", - "scope": 2221, - "src": "3167:4:18", + "scope": 2266, + "src": "3397:4:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6874,10 +7110,10 @@ "typeString": "bool" }, "typeName": { - "id": 2182, + "id": 2227, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "3167:4:18", + "src": "3397:4:18", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -6887,19 +7123,19 @@ "visibility": "internal" } ], - "src": "3166:6:18" + "src": "3396:6:18" }, - "scope": 2234, - "src": "3066:405:18", + "scope": 2279, + "src": "3296:405:18", "stateMutability": "view", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2232, + "id": 2277, "nodeType": "Block", - "src": "3691:39:18", + "src": "3921:39:18", "statements": [ { "expression": { @@ -6907,12 +7143,12 @@ "arguments": [ { "argumentTypes": null, - "id": 2229, + "id": 2274, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2223, - "src": "3718:4:18", + "referencedDeclaration": 2268, + "src": "3948:4:18", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -6926,18 +7162,18 @@ "typeString": "bytes memory" } ], - "id": 2228, + "id": 2273, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2592, - "src": "3708:9:18", + "referencedDeclaration": 2648, + "src": "3938:9:18", "typeDescriptions": { "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", "typeString": "function () pure returns (bytes32)" } }, - "id": 2230, + "id": 2275, "isConstant": false, "isLValue": false, "isPure": false, @@ -6945,21 +7181,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3708:15:18", + "src": "3938:15:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "functionReturnParameters": 2227, - "id": 2231, + "functionReturnParameters": 2272, + "id": 2276, "nodeType": "Return", - "src": "3701:22:18" + "src": "3931:22:18" } ] }, "documentation": "@dev Returns hash of data encoding owner replacement.\n @param data Data payload.\n @return Data hash.", - "id": 2233, + "id": 2278, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -6967,16 +7203,16 @@ "name": "getDataHash", "nodeType": "FunctionDefinition", "parameters": { - "id": 2224, + "id": 2269, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2223, + "id": 2268, "name": "data", "nodeType": "VariableDeclaration", - "scope": 2233, - "src": "3621:10:18", + "scope": 2278, + "src": "3851:10:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -6984,10 +7220,10 @@ "typeString": "bytes" }, "typeName": { - "id": 2222, + "id": 2267, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "3621:5:18", + "src": "3851:5:18", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -6997,20 +7233,20 @@ "visibility": "internal" } ], - "src": "3620:12:18" + "src": "3850:12:18" }, "payable": false, "returnParameters": { - "id": 2227, + "id": 2272, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2226, + "id": 2271, "name": "", "nodeType": "VariableDeclaration", - "scope": 2233, - "src": "3678:7:18", + "scope": 2278, + "src": "3908:7:18", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -7018,10 +7254,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 2225, + "id": 2270, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "3678:7:18", + "src": "3908:7:18", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -7031,20 +7267,20 @@ "visibility": "internal" } ], - "src": "3677:9:18" + "src": "3907:9:18" }, - "scope": 2234, - "src": "3600:130:18", + "scope": 2279, + "src": "3830:130:18", "stateMutability": "pure", "superFunction": null, "visibility": "public" } ], - "scope": 2235, - "src": "306:3426:18" + "scope": 2280, + "src": "306:3656:18" } ], - "src": "0:3733:18" + "src": "0:3963:18" }, "compiler": { "name": "solc", @@ -7054,22 +7290,16 @@ "4": { "events": {}, "links": {}, - "address": "0xf1f0987c2fb0a6fc7ca75465e34318ff64fb24c6", - "transactionHash": "0x9a1262d8d385b0ec7979a9141249dc703f74e98cf9c9f4060ad16ecd92f67dad" - }, - "1527316019334": { - "events": {}, - "links": {}, - "address": "0x268518ad20d3faa34e233e8685d726ad2ec10b4b", - "transactionHash": "0x3b404f9bf2e58e33eeaba336d431c1d819a719b0765dfe2a33831b97d9036a2e" + "address": "0xfb8c65f09f551b6c00a536ad391f61afe44e460e", + "transactionHash": "0x77a932885adfcce576f0a86d0e018698522df33375d4f0da06b7712cb447e68c" }, "1527420696956": { "events": {}, "links": {}, - "address": "0x99d67fc14c6d86cf065a844515916bfbb3ec764d", - "transactionHash": "0x05db0b84de2c38f22917f5a5372ee159959c99ae966e9b07fb99c11a3e099d4d" + "address": "0x4a5d199c1ab0fbd9050ab73c9ba76ae8917b7034", + "transactionHash": "0xe3892577f4aaae9af20ac6bab117e9f6459576dda208c8290ab8fb55c23d0b99" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-27T11:31:46.341Z" + "updatedAt": "2018-05-28T06:08:59.486Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/StateChannelModule.json b/safe-contracts/build/contracts/StateChannelModule.json index 04194abeb5..8e6ae6677a 100644 --- a/safe-contracts/build/contracts/StateChannelModule.json +++ b/safe-contracts/build/contracts/StateChannelModule.json @@ -163,24 +163,24 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50610ec6806100206000396000f30060806040526004361061008e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806319604647146100935780632b50004114610206578063481c6a75146102cc5780637de7edef14610323578063a3f4df7e14610366578063ba0bba40146103f6578063e52cb36a1461040d578063ffa1ad7414610456575b600080fd5b34801561009f57600080fd5b50610204600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190803590602001909291908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192905050506104e6565b005b34801561021257600080fd5b506102ae600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050610705565b60405180826000191660001916815260200191505060405180910390f35b3480156102d857600080fd5b506102e161098d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561032f57600080fd5b50610364600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109b3565b005b34801561037257600080fd5b5061037b610a78565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103bb5780820151818401526020810190506103a0565b50505050905090810190601f1680156103e85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561040257600080fd5b5061040b610ab1565b005b34801561041957600080fd5b5061043c6004803603810190808035600019169060200190929190505050610abb565b604051808215151515815260200191505060405180910390f35b34801561046257600080fd5b5061046b610adb565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104ab578082015181840152602081019050610490565b50505050905090810190601f1680156104d85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60006104f58989898989610705565b905060026000826000191660001916815260200190815260200160002060009054906101000a900460ff1615151561052c57600080fd5b61053881858585610b14565b600160026000836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a78a8a8a8a6040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200183600281111561062557fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b8381101561066557808201518184015260208101905061064a565b50505050905090810190601f1680156106925780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b1580156106b457600080fd5b505af11580156106c8573d6000803e3d6000fd5b505050506040513d60208110156106de57600080fd5b810190808051906020019092919050505015156106fa57600080fd5b505050505050505050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f01000000000000000000000000000000000000000000000000000000000000000230888888888860405160200180897effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083835b6020831015156108a95780518252602082019150602081019050602083039250610884565b6001836020036101000a0380198251168184511680821785525050505050509050018360028111156108d757fe5b60ff167f0100000000000000000000000000000000000000000000000000000000000000028152600101828152602001985050505050505050506040516020818303038152906040526040518082805190602001908083835b6020831015156109555780518252602082019150602081019050602083039250610930565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020905095945050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610a0f57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610a3557600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6040805190810160405280601481526020017f5374617465204368616e6e656c204d6f64756c6500000000000000000000000081525081565b610ab9610e10565b565b60026020528060005260406000206000915054906101000a900460ff1681565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b60008060008060009350600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e75235b86040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015610ba457600080fd5b505af1158015610bb8573d6000803e3d6000fd5b505050506040513d6020811015610bce57600080fd5b81019080805190602001909291905050509050600091505b8060ff16821015610e06576001888884815181101515610c0257fe5b906020019060200201518885815181101515610c1a57fe5b906020019060200201518886815181101515610c3257fe5b90602001906020020151604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af1158015610cad573d6000803e3d6000fd5b505050602060405103519250600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e846040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015610d7657600080fd5b505af1158015610d8a573d6000803e3d6000fd5b505050506040513d6020811015610da057600080fd5b81019080805190602001909291905050501515610dbc57600080fd5b8373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16111515610df657600080fd5b8293508180600101925050610be6565b5050505050505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610e5757600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505600a165627a7a72305820453c6630df1510723e7c76ad0ed06d384408c3c25066f1e25e55db38ef5842e90029", - "deployedBytecode": "0x60806040526004361061008e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806319604647146100935780632b50004114610206578063481c6a75146102cc5780637de7edef14610323578063a3f4df7e14610366578063ba0bba40146103f6578063e52cb36a1461040d578063ffa1ad7414610456575b600080fd5b34801561009f57600080fd5b50610204600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190803590602001909291908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192905050506104e6565b005b34801561021257600080fd5b506102ae600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff16906020019092919080359060200190929190505050610705565b60405180826000191660001916815260200191505060405180910390f35b3480156102d857600080fd5b506102e161098d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561032f57600080fd5b50610364600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506109b3565b005b34801561037257600080fd5b5061037b610a78565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103bb5780820151818401526020810190506103a0565b50505050905090810190601f1680156103e85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561040257600080fd5b5061040b610ab1565b005b34801561041957600080fd5b5061043c6004803603810190808035600019169060200190929190505050610abb565b604051808215151515815260200191505060405180910390f35b34801561046257600080fd5b5061046b610adb565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104ab578082015181840152602081019050610490565b50505050905090810190601f1680156104d85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60006104f58989898989610705565b905060026000826000191660001916815260200190815260200160002060009054906101000a900460ff1615151561052c57600080fd5b61053881858585610b14565b600160026000836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a78a8a8a8a6040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200183600281111561062557fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b8381101561066557808201518184015260208101905061064a565b50505050905090810190601f1680156106925780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b1580156106b457600080fd5b505af11580156106c8573d6000803e3d6000fd5b505050506040513d60208110156106de57600080fd5b810190808051906020019092919050505015156106fa57600080fd5b505050505050505050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f01000000000000000000000000000000000000000000000000000000000000000230888888888860405160200180897effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083835b6020831015156108a95780518252602082019150602081019050602083039250610884565b6001836020036101000a0380198251168184511680821785525050505050509050018360028111156108d757fe5b60ff167f0100000000000000000000000000000000000000000000000000000000000000028152600101828152602001985050505050505050506040516020818303038152906040526040518082805190602001908083835b6020831015156109555780518252602082019150602081019050602083039250610930565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020905095945050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610a0f57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610a3557600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6040805190810160405280601481526020017f5374617465204368616e6e656c204d6f64756c6500000000000000000000000081525081565b610ab9610e10565b565b60026020528060005260406000206000915054906101000a900460ff1681565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b60008060008060009350600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e75235b86040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015610ba457600080fd5b505af1158015610bb8573d6000803e3d6000fd5b505050506040513d6020811015610bce57600080fd5b81019080805190602001909291905050509050600091505b8060ff16821015610e06576001888884815181101515610c0257fe5b906020019060200201518885815181101515610c1a57fe5b906020019060200201518886815181101515610c3257fe5b90602001906020020151604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af1158015610cad573d6000803e3d6000fd5b505050602060405103519250600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e846040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015610d7657600080fd5b505af1158015610d8a573d6000803e3d6000fd5b505050506040513d6020811015610da057600080fd5b81019080805190602001909291905050501515610dbc57600080fd5b8373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16111515610df657600080fd5b8293508180600101925050610be6565b5050505050505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610e5757600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505600a165627a7a72305820453c6630df1510723e7c76ad0ed06d384408c3c25066f1e25e55db38ef5842e90029", - "sourceMap": "269:2858:19:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;269:2858:19;;;;;;;", - "deployedSourceMap": "269:2858:19:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1265:602;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1265:602:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2796:329;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2796:329:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;262:28:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;262:28:7;;;;;;;;;;;;;;;;;;;;;;;;;;;626:208:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:208:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;314:52:19;;8:9:-1;5:2;;;30:1;27;20:12;5:2;314:52:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;314:52:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;601:65;;8:9:-1;5:2;;;30:1;27;20:12;5:2;601:65:19;;;;;;510:43;;8:9:-1;5:2;;;30:1;27;20:12;5:2;510:43:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;372:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;372:40:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;372:40:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1265:602;1512:23;1538:53;1557:2;1561:5;1568:4;1574:9;1585:5;1538:18;:53::i;:::-;1512:79;;1610:10;:27;1621:15;1610:27;;;;;;;;;;;;;;;;;;;;;;;;;;;1609:28;1601:37;;;;;;;;1648:35;1658:15;1675:1;1678;1681;1648:9;:35::i;:::-;1776:4;1746:10;:27;1757:15;1746:27;;;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;1798:7;;;;;;;;;;;:33;;;1832:2;1836:5;1843:4;1849:9;1798:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;1798:61:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1798:61:19;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1798:61:19;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1798:61:19;;;;;;;;;;;;;;;;1790:70;;;;;;;;1265:602;;;;;;;;;:::o;2796:329::-;2999:7;3061:4;3056:10;;3073:1;3068:7;;3077:4;3083:2;3087:5;3094:4;3100:9;3111:5;3039:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;3039:78:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3039:78:19;;;3029:89;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;3029:89:19;;;;;;;;;;;;;;;;3022:96;;2796:329;;;;;;;:::o;262:28:7:-;;;;;;;;;;;;;:::o;626:208:5:-;359:7:7;;;;;;;;;;;337:30;;:10;:30;;;329:39;;;;;;;;791:1:5;776:11;:16;;;;768:25;;;;;;;;816:11;803:10;;:24;;;;;;;;;;;;;;;;;;626:208;:::o;314:52:19:-;;;;;;;;;;;;;;;;;;;;:::o;601:65::-;647:12;:10;:12::i;:::-;601:65::o;510:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;372:40::-;;;;;;;;;;;;;;;;;;;;:::o;1873:645::-;2050:17;2090:20;2120:9;2139:15;2078:1;2050:30;;2170:7;;;;;;;;;;;2157:34;;;:36;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2157:36:19;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2157:36:19;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2157:36:19;;;;;;;;;;;;;;;;2139:54;;2254:1;2250:5;;2245:267;2261:9;2257:13;;:1;:13;2245:267;;;2306:44;2316:15;2333:1;2335;2333:4;;;;;;;;;;;;;;;;;;2339:1;2341;2339:4;;;;;;;;;;;;;;;;;;2345:1;2347;2345:4;;;;;;;;;;;;;;;;;;2306:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2306:44:19;;;;;;;;2291:59;;2385:7;;;;;;;;;;;2372:29;;;2402:12;2372:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2372:43:19;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2372:43:19;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2372:43:19;;;;;;;;;;;;;;;;2364:52;;;;;;;;2453:9;2438:24;;:12;:24;;;2430:33;;;;;;;;2489:12;2477:24;;2272:3;;;;;;;2245:267;;;1873:645;;;;;;;;:::o;392:268:7:-;606:1;594:7;;;;;;;;;;;586:21;;;578:30;;;;;;;;642:10;618:7;;:35;;;;;;;;;;;;;;;;;;392:268::o", - "source": "pragma solidity 0.4.24;\nimport \"../Module.sol\";\nimport \"../OwnerManager.sol\";\n\n\n/// @title Gnosis Safe State Module - A module that allows interaction with statechannels.\n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract StateChannelModule is Module {\n\n string public constant NAME = \"State Channel Module\";\n string public constant VERSION = \"0.0.1\";\n\n // isExecuted mapping allows to check if a transaction (by hash) was already executed.\n mapping (bytes32 => bool) public isExecuted;\n\n /// @dev Setup function sets manager\n function setup()\n public\n {\n setManager();\n }\n\n /// @dev Allows to execute a Safe transaction confirmed by required number of owners.\n /// @param to Destination address of Safe transaction.\n /// @param value Ether value of Safe transaction.\n /// @param data Data payload of Safe transaction.\n /// @param operation Operation type of Safe transaction.\n /// @param nonce Nonce used for this Safe transaction.\n /// @param v Array of signature V values sorted by owner addresses.\n /// @param r Array of signature R values sorted by owner addresses.\n /// @param s Array of signature S values sorted by owner addresses.\n function execTransaction(\n address to, \n uint256 value, \n bytes data, \n Enum.Operation operation, \n uint256 nonce,\n uint8[] v, \n bytes32[] r, \n bytes32[] s\n )\n public\n {\n bytes32 transactionHash = getTransactionHash(to, value, data, operation, nonce);\n require(!isExecuted[transactionHash]);\n checkHash(transactionHash, v, r, s);\n // Mark as executed and execute transaction.\n isExecuted[transactionHash] = true;\n require(manager.execTransactionFromModule(to, value, data, operation));\n }\n\n function checkHash(bytes32 transactionHash, uint8[] v, bytes32[] r, bytes32[] s)\n internal\n view\n {\n // There cannot be an owner with address 0.\n address lastOwner = address(0);\n address currentOwner;\n uint256 i;\n uint8 threshold = OwnerManager(manager).getThreshold();\n // Validate threshold is reached.\n for (i = 0; i < threshold; i++) {\n currentOwner = ecrecover(transactionHash, v[i], r[i], s[i]);\n require(OwnerManager(manager).isOwner(currentOwner));\n require(currentOwner > lastOwner);\n lastOwner = currentOwner;\n }\n }\n\n /// @dev Returns hash to be signed by owners.\n /// @param to Destination address.\n /// @param value Ether value.\n /// @param data Data payload.\n /// @param operation Operation type.\n /// @param nonce Transaction nonce.\n /// @return Transaction hash.\n function getTransactionHash(\n address to, \n uint256 value, \n bytes data, \n Enum.Operation operation, \n uint256 nonce\n )\n public\n view\n returns (bytes32)\n {\n return keccak256(abi.encodePacked(byte(0x19), byte(0), this, to, value, data, operation, nonce));\n }\n}\n", + "bytecode": "0x608060405234801561001057600080fd5b50611217806100206000396000f30060806040526004361061008e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806319604647146100935780632b50004114610206578063481c6a75146102cc5780637de7edef14610323578063a3f4df7e14610366578063ba0bba40146103f6578063e52cb36a1461040d578063ffa1ad7414610456575b600080fd5b34801561009f57600080fd5b50610204600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190803590602001909291908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192905050506104e6565b005b34801561021257600080fd5b506102ae600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190803590602001909291905050506107d7565b60405180826000191660001916815260200191505060405180910390f35b3480156102d857600080fd5b506102e1610a5f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561032f57600080fd5b50610364600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a85565b005b34801561037257600080fd5b5061037b610c68565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103bb5780820151818401526020810190506103a0565b50505050905090810190601f1680156103e85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561040257600080fd5b5061040b610ca1565b005b34801561041957600080fd5b5061043c6004803603810190808035600019169060200190929190505050610cab565b604051808215151515815260200191505060405180910390f35b34801561046257600080fd5b5061046b610ccb565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104ab578082015181840152602081019050610490565b50505050905090810190601f1680156104d85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60006104f589898989896107d7565b905060026000826000191660001916815260200190815260200160002060009054906101000a900460ff16151515610595576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f5472616e73616374696f6e20616c72656164792065786563757465640000000081525060200191505060405180910390fd5b6105a181858585610d04565b600160026000836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a78a8a8a8a6040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200183600281111561068e57fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b838110156106ce5780820151818401526020810190506106b3565b50505050905090810190601f1680156106fb5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15801561071d57600080fd5b505af1158015610731573d6000803e3d6000fd5b505050506040513d602081101561074757600080fd5b810190808051906020019092919050505015156107cc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f436f756c64206e6f742065786563757465207472616e73616374696f6e00000081525060200191505060405180910390fd5b505050505050505050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f01000000000000000000000000000000000000000000000000000000000000000230888888888860405160200180897effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083835b60208310151561097b5780518252602082019150602081019050602083039250610956565b6001836020036101000a0380198251168184511680821785525050505050509050018360028111156109a957fe5b60ff167f0100000000000000000000000000000000000000000000000000000000000000028152600101828152602001985050505050505050506040516020818303038152906040526040518082805190602001908083835b602083101515610a275780518252602082019150602081019050602083039250610a02565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020905095945050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b70576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206d81526020017f616e61676572000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610c25576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f496e76616c6964206d617374657220636f707920616464726573732070726f7681526020017f696465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6040805190810160405280601481526020017f5374617465204368616e6e656c204d6f64756c6500000000000000000000000081525081565b610ca96110f8565b565b60026020528060005260406000206000915054906101000a900460ff1681565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b60008060008060009350600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e75235b86040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015610d9457600080fd5b505af1158015610da8573d6000803e3d6000fd5b505050506040513d6020811015610dbe57600080fd5b81019080805190602001909291905050509050600091505b8060ff168210156110ee576001888884815181101515610df257fe5b906020019060200201518885815181101515610e0a57fe5b906020019060200201518886815181101515610e2257fe5b90602001906020020151604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af1158015610e9d573d6000803e3d6000fd5b505050602060405103519250600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e846040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015610f6657600080fd5b505af1158015610f7a573d6000803e3d6000fd5b505050506040513d6020811015610f9057600080fd5b81019080805190602001909291905050501515611015576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5369676e6174757265206e6f742070726f7669646564206279206f776e65720081525060200191505060405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161115156110de576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001807f5369676e61747572657320617265206e6f74206f726465726564206279206f7781526020017f6e6572206164647265737300000000000000000000000000000000000000000081525060400191505060405180910390fd5b8293508180600101925050610dd6565b5050505050505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156111a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4d616e616765722068617320616c7265616479206265656e207365740000000081525060200191505060405180910390fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505600a165627a7a723058207007410d8e2ddd28783764eae9dff7067cf71735903032d0f3e19520422ae7010029", + "deployedBytecode": "0x60806040526004361061008e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806319604647146100935780632b50004114610206578063481c6a75146102cc5780637de7edef14610323578063a3f4df7e14610366578063ba0bba40146103f6578063e52cb36a1461040d578063ffa1ad7414610456575b600080fd5b34801561009f57600080fd5b50610204600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190803590602001909291908035906020019082018035906020019080806020026020016040519081016040528093929190818152602001838360200280828437820191505050505050919291929080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192905050506104e6565b005b34801561021257600080fd5b506102ae600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290803560ff169060200190929190803590602001909291905050506107d7565b60405180826000191660001916815260200191505060405180910390f35b3480156102d857600080fd5b506102e1610a5f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561032f57600080fd5b50610364600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a85565b005b34801561037257600080fd5b5061037b610c68565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156103bb5780820151818401526020810190506103a0565b50505050905090810190601f1680156103e85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561040257600080fd5b5061040b610ca1565b005b34801561041957600080fd5b5061043c6004803603810190808035600019169060200190929190505050610cab565b604051808215151515815260200191505060405180910390f35b34801561046257600080fd5b5061046b610ccb565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156104ab578082015181840152602081019050610490565b50505050905090810190601f1680156104d85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60006104f589898989896107d7565b905060026000826000191660001916815260200190815260200160002060009054906101000a900460ff16151515610595576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f5472616e73616374696f6e20616c72656164792065786563757465640000000081525060200191505060405180910390fd5b6105a181858585610d04565b600160026000836000191660001916815260200190815260200160002060006101000a81548160ff021916908315150217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a78a8a8a8a6040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200183600281111561068e57fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b838110156106ce5780820151818401526020810190506106b3565b50505050905090810190601f1680156106fb5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15801561071d57600080fd5b505af1158015610731573d6000803e3d6000fd5b505050506040513d602081101561074757600080fd5b810190808051906020019092919050505015156107cc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f436f756c64206e6f742065786563757465207472616e73616374696f6e00000081525060200191505060405180910390fd5b505050505050505050565b600060197f01000000000000000000000000000000000000000000000000000000000000000260007f01000000000000000000000000000000000000000000000000000000000000000230888888888860405160200180897effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168152600101887effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526001018773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c010000000000000000000000000281526014018673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140185815260200184805190602001908083835b60208310151561097b5780518252602082019150602081019050602083039250610956565b6001836020036101000a0380198251168184511680821785525050505050509050018360028111156109a957fe5b60ff167f0100000000000000000000000000000000000000000000000000000000000000028152600101828152602001985050505050505050506040516020818303038152906040526040518082805190602001908083835b602083101515610a275780518252602082019150602081019050602083039250610a02565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020905095945050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610b70576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206d81526020017f616e61676572000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610c25576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f496e76616c6964206d617374657220636f707920616464726573732070726f7681526020017f696465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6040805190810160405280601481526020017f5374617465204368616e6e656c204d6f64756c6500000000000000000000000081525081565b610ca96110f8565b565b60026020528060005260406000206000915054906101000a900460ff1681565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b60008060008060009350600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e75235b86040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015610d9457600080fd5b505af1158015610da8573d6000803e3d6000fd5b505050506040513d6020811015610dbe57600080fd5b81019080805190602001909291905050509050600091505b8060ff168210156110ee576001888884815181101515610df257fe5b906020019060200201518885815181101515610e0a57fe5b906020019060200201518886815181101515610e2257fe5b90602001906020020151604051600081526020016040526040518085600019166000191681526020018460ff1660ff1681526020018360001916600019168152602001826000191660001916815260200194505050505060206040516020810390808403906000865af1158015610e9d573d6000803e3d6000fd5b505050602060405103519250600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e846040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b158015610f6657600080fd5b505af1158015610f7a573d6000803e3d6000fd5b505050506040513d6020811015610f9057600080fd5b81019080805190602001909291905050501515611015576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f5369676e6174757265206e6f742070726f7669646564206279206f776e65720081525060200191505060405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161115156110de576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001807f5369676e61747572657320617265206e6f74206f726465726564206279206f7781526020017f6e6572206164647265737300000000000000000000000000000000000000000081525060400191505060405180910390fd5b8293508180600101925050610dd6565b5050505050505050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156111a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4d616e616765722068617320616c7265616479206265656e207365740000000081525060200191505060405180910390fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505600a165627a7a723058207007410d8e2ddd28783764eae9dff7067cf71735903032d0f3e19520422ae7010029", + "sourceMap": "269:3005:19:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;269:3005:19;;;;;;;", + "deployedSourceMap": "269:3005:19:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1265:667;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1265:667:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2943:329;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2943:329:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;262:28:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;262:28:7;;;;;;;;;;;;;;;;;;;;;;;;;;;626:248:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:248:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;314:52:19;;8:9:-1;5:2;;;30:1;27;20:12;5:2;314:52:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;314:52:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;601:65;;8:9:-1;5:2;;;30:1;27;20:12;5:2;601:65:19;;;;;;510:43;;8:9:-1;5:2;;;30:1;27;20:12;5:2;510:43:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;372:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;372:40:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;372:40:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1265:667;1512:23;1538:53;1557:2;1561:5;1568:4;1574:9;1585:5;1538:18;:53::i;:::-;1512:79;;1610:10;:27;1621:15;1610:27;;;;;;;;;;;;;;;;;;;;;;;;;;;1609:28;1601:69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1680:35;1690:15;1707:1;1710;1713;1680:9;:35::i;:::-;1808:4;1778:10;:27;1789:15;1778:27;;;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;1830:7;;;;;;;;;;;:33;;;1864:2;1868:5;1875:4;1881:9;1830:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;1830:61:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1830:61:19;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1830:61:19;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1830:61:19;;;;;;;;;;;;;;;;1822:103;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1265:667;;;;;;;;;:::o;2943:329::-;3146:7;3208:4;3203:10;;3220:1;3215:7;;3224:4;3230:2;3234:5;3241:4;3247:9;3258:5;3186:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;3186:78:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3186:78:19;;;3176:89;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;51:19;36:153;;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;3176:89:19;;;;;;;;;;;;;;;;3169:96;;2943:329;;;;;;;:::o;262:28:7:-;;;;;;;;;;;;;:::o;626:248:5:-;359:7:7;;;;;;;;;;;337:30;;:10;:30;;;329:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;791:1:5;776:11;:16;;;;768:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;856:11;843:10;;:24;;;;;;;;;;;;;;;;;;626:248;:::o;314:52:19:-;;;;;;;;;;;;;;;;;;;;:::o;601:65::-;647:12;:10;:12::i;:::-;601:65::o;510:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;372:40::-;;;;;;;;;;;;;;;;;;;;:::o;1938:727::-;2115:17;2155:20;2185:9;2204:15;2143:1;2115:30;;2235:7;;;;;;;;;;;2222:34;;;:36;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2222:36:19;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2222:36:19;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2222:36:19;;;;;;;;;;;;;;;;2204:54;;2319:1;2315:5;;2310:349;2326:9;2322:13;;:1;:13;2310:349;;;2371:44;2381:15;2398:1;2400;2398:4;;;;;;;;;;;;;;;;;;2404:1;2406;2404:4;;;;;;;;;;;;;;;;;;2410:1;2412;2410:4;;;;;;;;;;;;;;;;;;2371:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2371:44:19;;;;;;;;2356:59;;2450:7;;;;;;;;;;;2437:29;;;2467:12;2437:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2437:43:19;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2437:43:19;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2437:43:19;;;;;;;;;;;;;;;;2429:87;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2553:9;2538:24;;:12;:24;;;2530:80;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2636:12;2624:24;;2337:3;;;;;;;2310:349;;;1938:727;;;;;;;;:::o;434:300:7:-;648:1;636:7;;;;;;;;;;;628:21;;;620:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;716:10;692:7;;:35;;;;;;;;;;;;;;;;;;434:300::o", + "source": "pragma solidity 0.4.24;\nimport \"../Module.sol\";\nimport \"../OwnerManager.sol\";\n\n\n/// @title Gnosis Safe State Module - A module that allows interaction with statechannels.\n/// @author Stefan George - \n/// @author Richard Meissner - \ncontract StateChannelModule is Module {\n\n string public constant NAME = \"State Channel Module\";\n string public constant VERSION = \"0.0.1\";\n\n // isExecuted mapping allows to check if a transaction (by hash) was already executed.\n mapping (bytes32 => bool) public isExecuted;\n\n /// @dev Setup function sets manager\n function setup()\n public\n {\n setManager();\n }\n\n /// @dev Allows to execute a Safe transaction confirmed by required number of owners.\n /// @param to Destination address of Safe transaction.\n /// @param value Ether value of Safe transaction.\n /// @param data Data payload of Safe transaction.\n /// @param operation Operation type of Safe transaction.\n /// @param nonce Nonce used for this Safe transaction.\n /// @param v Array of signature V values sorted by owner addresses.\n /// @param r Array of signature R values sorted by owner addresses.\n /// @param s Array of signature S values sorted by owner addresses.\n function execTransaction(\n address to, \n uint256 value, \n bytes data, \n Enum.Operation operation, \n uint256 nonce,\n uint8[] v, \n bytes32[] r, \n bytes32[] s\n )\n public\n {\n bytes32 transactionHash = getTransactionHash(to, value, data, operation, nonce);\n require(!isExecuted[transactionHash], \"Transaction already executed\");\n checkHash(transactionHash, v, r, s);\n // Mark as executed and execute transaction.\n isExecuted[transactionHash] = true;\n require(manager.execTransactionFromModule(to, value, data, operation), \"Could not execute transaction\");\n }\n\n function checkHash(bytes32 transactionHash, uint8[] v, bytes32[] r, bytes32[] s)\n internal\n view\n {\n // There cannot be an owner with address 0.\n address lastOwner = address(0);\n address currentOwner;\n uint256 i;\n uint8 threshold = OwnerManager(manager).getThreshold();\n // Validate threshold is reached.\n for (i = 0; i < threshold; i++) {\n currentOwner = ecrecover(transactionHash, v[i], r[i], s[i]);\n require(OwnerManager(manager).isOwner(currentOwner), \"Signature not provided by owner\");\n require(currentOwner > lastOwner, \"Signatures are not ordered by owner address\");\n lastOwner = currentOwner;\n }\n }\n\n /// @dev Returns hash to be signed by owners.\n /// @param to Destination address.\n /// @param value Ether value.\n /// @param data Data payload.\n /// @param operation Operation type.\n /// @param nonce Transaction nonce.\n /// @return Transaction hash.\n function getTransactionHash(\n address to, \n uint256 value, \n bytes data, \n Enum.Operation operation, \n uint256 nonce\n )\n public\n view\n returns (bytes32)\n {\n return keccak256(abi.encodePacked(byte(0x19), byte(0), this, to, value, data, operation, nonce));\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/StateChannelModule.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/StateChannelModule.sol", "exportedSymbols": { "StateChannelModule": [ - 2436 + 2485 ] }, - "id": 2437, + "id": 2486, "nodeType": "SourceUnit", "nodes": [ { - "id": 2236, + "id": 2281, "literals": [ "solidity", "0.4", @@ -192,10 +192,10 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "file": "../Module.sol", - "id": 2237, + "id": 2282, "nodeType": "ImportDirective", - "scope": 2437, - "sourceUnit": 751, + "scope": 2486, + "sourceUnit": 763, "src": "24:23:19", "symbolAliases": [], "unitAlias": "" @@ -203,10 +203,10 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", "file": "../OwnerManager.sol", - "id": 2238, + "id": 2283, "nodeType": "ImportDirective", - "scope": 2437, - "sourceUnit": 1473, + "scope": 2486, + "sourceUnit": 1505, "src": "48:29:19", "symbolAliases": [], "unitAlias": "" @@ -217,45 +217,45 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 2239, + "id": 2284, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 750, + "referencedDeclaration": 762, "src": "300:6:19", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } }, - "id": 2240, + "id": 2285, "nodeType": "InheritanceSpecifier", "src": "300:6:19" } ], "contractDependencies": [ - 652, - 750, - 1619 + 662, + 762, + 1654 ], "contractKind": "contract", "documentation": "@title Gnosis Safe State Module - A module that allows interaction with statechannels.\n @author Stefan George - \n @author Richard Meissner - ", "fullyImplemented": true, - "id": 2436, + "id": 2485, "linearizedBaseContracts": [ - 2436, - 750, - 652, - 1619 + 2485, + 762, + 662, + 1654 ], "name": "StateChannelModule", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, - "id": 2243, + "id": 2288, "name": "NAME", "nodeType": "VariableDeclaration", - "scope": 2436, + "scope": 2485, "src": "314:52:19", "stateVariable": true, "storageLocation": "default", @@ -264,7 +264,7 @@ "typeString": "string" }, "typeName": { - "id": 2241, + "id": 2286, "name": "string", "nodeType": "ElementaryTypeName", "src": "314:6:19", @@ -276,7 +276,7 @@ "value": { "argumentTypes": null, "hexValue": "5374617465204368616e6e656c204d6f64756c65", - "id": 2242, + "id": 2287, "isConstant": false, "isLValue": false, "isPure": true, @@ -295,10 +295,10 @@ }, { "constant": true, - "id": 2246, + "id": 2291, "name": "VERSION", "nodeType": "VariableDeclaration", - "scope": 2436, + "scope": 2485, "src": "372:40:19", "stateVariable": true, "storageLocation": "default", @@ -307,7 +307,7 @@ "typeString": "string" }, "typeName": { - "id": 2244, + "id": 2289, "name": "string", "nodeType": "ElementaryTypeName", "src": "372:6:19", @@ -319,7 +319,7 @@ "value": { "argumentTypes": null, "hexValue": "302e302e31", - "id": 2245, + "id": 2290, "isConstant": false, "isLValue": false, "isPure": true, @@ -338,10 +338,10 @@ }, { "constant": false, - "id": 2250, + "id": 2295, "name": "isExecuted", "nodeType": "VariableDeclaration", - "scope": 2436, + "scope": 2485, "src": "510:43:19", "stateVariable": true, "storageLocation": "default", @@ -350,9 +350,9 @@ "typeString": "mapping(bytes32 => bool)" }, "typeName": { - "id": 2249, + "id": 2294, "keyType": { - "id": 2247, + "id": 2292, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "519:7:19", @@ -368,7 +368,7 @@ "typeString": "mapping(bytes32 => bool)" }, "valueType": { - "id": 2248, + "id": 2293, "name": "bool", "nodeType": "ElementaryTypeName", "src": "530:4:19", @@ -383,7 +383,7 @@ }, { "body": { - "id": 2256, + "id": 2301, "nodeType": "Block", "src": "637:29:19", "statements": [ @@ -393,18 +393,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 2253, + "id": 2298, "name": "setManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 749, + "referencedDeclaration": 761, "src": "647:10:19", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 2254, + "id": 2299, "isConstant": false, "isLValue": false, "isPure": false, @@ -418,14 +418,14 @@ "typeString": "tuple()" } }, - "id": 2255, + "id": 2300, "nodeType": "ExpressionStatement", "src": "647:12:19" } ] }, "documentation": "@dev Setup function sets manager", - "id": 2257, + "id": 2302, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -433,19 +433,19 @@ "name": "setup", "nodeType": "FunctionDefinition", "parameters": { - "id": 2251, + "id": 2296, "nodeType": "ParameterList", "parameters": [], "src": "615:2:19" }, "payable": false, "returnParameters": { - "id": 2252, + "id": 2297, "nodeType": "ParameterList", "parameters": [], "src": "637:0:19" }, - "scope": 2436, + "scope": 2485, "src": "601:65:19", "stateMutability": "nonpayable", "superFunction": null, @@ -453,21 +453,21 @@ }, { "body": { - "id": 2319, + "id": 2366, "nodeType": "Block", - "src": "1502:365:19", + "src": "1502:430:19", "statements": [ { "assignments": [ - 2280 + 2325 ], "declarations": [ { "constant": false, - "id": 2280, + "id": 2325, "name": "transactionHash", "nodeType": "VariableDeclaration", - "scope": 2320, + "scope": 2367, "src": "1512:23:19", "stateVariable": false, "storageLocation": "default", @@ -476,7 +476,7 @@ "typeString": "bytes32" }, "typeName": { - "id": 2279, + "id": 2324, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1512:7:19", @@ -489,17 +489,17 @@ "visibility": "internal" } ], - "id": 2288, + "id": 2333, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 2282, + "id": 2327, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2259, + "referencedDeclaration": 2304, "src": "1557:2:19", "typeDescriptions": { "typeIdentifier": "t_address", @@ -508,11 +508,11 @@ }, { "argumentTypes": null, - "id": 2283, + "id": 2328, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2261, + "referencedDeclaration": 2306, "src": "1561:5:19", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -521,11 +521,11 @@ }, { "argumentTypes": null, - "id": 2284, + "id": 2329, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2263, + "referencedDeclaration": 2308, "src": "1568:4:19", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", @@ -534,11 +534,11 @@ }, { "argumentTypes": null, - "id": 2285, + "id": 2330, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2265, + "referencedDeclaration": 2310, "src": "1574:9:19", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", @@ -547,11 +547,11 @@ }, { "argumentTypes": null, - "id": 2286, + "id": 2331, "name": "nonce", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2267, + "referencedDeclaration": 2312, "src": "1585:5:19", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -582,18 +582,18 @@ "typeString": "uint256" } ], - "id": 2281, + "id": 2326, "name": "getTransactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2435, + "referencedDeclaration": 2484, "src": "1538:18:19", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bytes32_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) view returns (bytes32)" } }, - "id": 2287, + "id": 2332, "isConstant": false, "isLValue": false, "isPure": false, @@ -616,7 +616,7 @@ "arguments": [ { "argumentTypes": null, - "id": 2293, + "id": 2338, "isConstant": false, "isLValue": false, "isPure": false, @@ -629,25 +629,25 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2290, + "id": 2335, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2250, + "referencedDeclaration": 2295, "src": "1610:10:19", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 2292, + "id": 2337, "indexExpression": { "argumentTypes": null, - "id": 2291, + "id": 2336, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2280, + "referencedDeclaration": 2325, "src": "1621:15:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -669,6 +669,24 @@ "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "5472616e73616374696f6e20616c7265616479206578656375746564", + "id": 2339, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1639:30:19", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_3c3f7cf602281cf7a98efd78d98ba46309975dadee18bcb57e640145699bd800", + "typeString": "literal_string \"Transaction already executed\"" + }, + "value": "Transaction already executed" } ], "expression": { @@ -676,23 +694,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_3c3f7cf602281cf7a98efd78d98ba46309975dadee18bcb57e640145699bd800", + "typeString": "literal_string \"Transaction already executed\"" } ], - "id": 2289, + "id": 2334, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, + "referencedDeclaration": 2658, "src": "1601:7:19", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 2294, + "id": 2340, "isConstant": false, "isLValue": false, "isPure": false, @@ -700,15 +722,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1601:37:19", + "src": "1601:69:19", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2295, + "id": 2341, "nodeType": "ExpressionStatement", - "src": "1601:37:19" + "src": "1601:69:19" }, { "expression": { @@ -716,12 +738,12 @@ "arguments": [ { "argumentTypes": null, - "id": 2297, + "id": 2343, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2280, - "src": "1658:15:19", + "referencedDeclaration": 2325, + "src": "1690:15:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -729,12 +751,12 @@ }, { "argumentTypes": null, - "id": 2298, + "id": 2344, "name": "v", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2270, - "src": "1675:1:19", + "referencedDeclaration": 2315, + "src": "1707:1:19", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", "typeString": "uint8[] memory" @@ -742,12 +764,12 @@ }, { "argumentTypes": null, - "id": 2299, + "id": 2345, "name": "r", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2273, - "src": "1678:1:19", + "referencedDeclaration": 2318, + "src": "1710:1:19", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", "typeString": "bytes32[] memory" @@ -755,12 +777,12 @@ }, { "argumentTypes": null, - "id": 2300, + "id": 2346, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2276, - "src": "1681:1:19", + "referencedDeclaration": 2321, + "src": "1713:1:19", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", "typeString": "bytes32[] memory" @@ -786,18 +808,18 @@ "typeString": "bytes32[] memory" } ], - "id": 2296, + "id": 2342, "name": "checkHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2401, - "src": "1648:9:19", + "referencedDeclaration": 2450, + "src": "1680:9:19", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_array$_t_uint8_$dyn_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$returns$__$", "typeString": "function (bytes32,uint8[] memory,bytes32[] memory,bytes32[] memory) view" } }, - "id": 2301, + "id": 2347, "isConstant": false, "isLValue": false, "isPure": false, @@ -805,20 +827,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1648:35:19", + "src": "1680:35:19", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2302, + "id": 2348, "nodeType": "ExpressionStatement", - "src": "1648:35:19" + "src": "1680:35:19" }, { "expression": { "argumentTypes": null, - "id": 2307, + "id": 2353, "isConstant": false, "isLValue": false, "isPure": false, @@ -827,26 +849,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2303, + "id": 2349, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2250, - "src": "1746:10:19", + "referencedDeclaration": 2295, + "src": "1778:10:19", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 2305, + "id": 2351, "indexExpression": { "argumentTypes": null, - "id": 2304, + "id": 2350, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2280, - "src": "1757:15:19", + "referencedDeclaration": 2325, + "src": "1789:15:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -857,7 +879,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1746:27:19", + "src": "1778:27:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -868,14 +890,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 2306, + "id": 2352, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "1776:4:19", + "src": "1808:4:19", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -883,15 +905,15 @@ }, "value": "true" }, - "src": "1746:34:19", + "src": "1778:34:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2308, + "id": 2354, "nodeType": "ExpressionStatement", - "src": "1746:34:19" + "src": "1778:34:19" }, { "expression": { @@ -902,12 +924,12 @@ "arguments": [ { "argumentTypes": null, - "id": 2312, + "id": 2358, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2259, - "src": "1832:2:19", + "referencedDeclaration": 2304, + "src": "1864:2:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -915,12 +937,12 @@ }, { "argumentTypes": null, - "id": 2313, + "id": 2359, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2261, - "src": "1836:5:19", + "referencedDeclaration": 2306, + "src": "1868:5:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -928,12 +950,12 @@ }, { "argumentTypes": null, - "id": 2314, + "id": 2360, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2263, - "src": "1843:4:19", + "referencedDeclaration": 2308, + "src": "1875:4:19", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -941,12 +963,12 @@ }, { "argumentTypes": null, - "id": 2315, + "id": 2361, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2265, - "src": "1849:9:19", + "referencedDeclaration": 2310, + "src": "1881:9:19", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -974,32 +996,32 @@ ], "expression": { "argumentTypes": null, - "id": 2310, + "id": 2356, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 717, - "src": "1798:7:19", + "referencedDeclaration": 727, + "src": "1830:7:19", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } }, - "id": 2311, + "id": 2357, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "execTransactionFromModule", "nodeType": "MemberAccess", - "referencedDeclaration": 927, - "src": "1798:33:19", + "referencedDeclaration": 945, + "src": "1830:33:19", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation) external returns (bool)" } }, - "id": 2316, + "id": 2362, "isConstant": false, "isLValue": false, "isPure": false, @@ -1007,11 +1029,29 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1798:61:19", + "src": "1830:61:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "436f756c64206e6f742065786563757465207472616e73616374696f6e", + "id": 2363, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1893:31:19", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_b0a2f29e31cc28eee068c27ff93342fb8d9840dcad25c6f669ce8154844930c4", + "typeString": "literal_string \"Could not execute transaction\"" + }, + "value": "Could not execute transaction" } ], "expression": { @@ -1019,23 +1059,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_b0a2f29e31cc28eee068c27ff93342fb8d9840dcad25c6f669ce8154844930c4", + "typeString": "literal_string \"Could not execute transaction\"" } ], - "id": 2309, + "id": 2355, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "1790:7:19", + "referencedDeclaration": 2658, + "src": "1822:7:19", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 2317, + "id": 2364, "isConstant": false, "isLValue": false, "isPure": false, @@ -1043,20 +1087,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1790:70:19", + "src": "1822:103:19", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2318, + "id": 2365, "nodeType": "ExpressionStatement", - "src": "1790:70:19" + "src": "1822:103:19" } ] }, "documentation": "@dev Allows to execute a Safe transaction confirmed by required number of owners.\n @param to Destination address of Safe transaction.\n @param value Ether value of Safe transaction.\n @param data Data payload of Safe transaction.\n @param operation Operation type of Safe transaction.\n @param nonce Nonce used for this Safe transaction.\n @param v Array of signature V values sorted by owner addresses.\n @param r Array of signature R values sorted by owner addresses.\n @param s Array of signature S values sorted by owner addresses.", - "id": 2320, + "id": 2367, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -1064,15 +1108,15 @@ "name": "execTransaction", "nodeType": "FunctionDefinition", "parameters": { - "id": 2277, + "id": 2322, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2259, + "id": 2304, "name": "to", "nodeType": "VariableDeclaration", - "scope": 2320, + "scope": 2367, "src": "1299:10:19", "stateVariable": false, "storageLocation": "default", @@ -1081,7 +1125,7 @@ "typeString": "address" }, "typeName": { - "id": 2258, + "id": 2303, "name": "address", "nodeType": "ElementaryTypeName", "src": "1299:7:19", @@ -1095,10 +1139,10 @@ }, { "constant": false, - "id": 2261, + "id": 2306, "name": "value", "nodeType": "VariableDeclaration", - "scope": 2320, + "scope": 2367, "src": "1320:13:19", "stateVariable": false, "storageLocation": "default", @@ -1107,7 +1151,7 @@ "typeString": "uint256" }, "typeName": { - "id": 2260, + "id": 2305, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1320:7:19", @@ -1121,10 +1165,10 @@ }, { "constant": false, - "id": 2263, + "id": 2308, "name": "data", "nodeType": "VariableDeclaration", - "scope": 2320, + "scope": 2367, "src": "1344:10:19", "stateVariable": false, "storageLocation": "default", @@ -1133,7 +1177,7 @@ "typeString": "bytes" }, "typeName": { - "id": 2262, + "id": 2307, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1344:5:19", @@ -1147,10 +1191,10 @@ }, { "constant": false, - "id": 2265, + "id": 2310, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 2320, + "scope": 2367, "src": "1365:24:19", "stateVariable": false, "storageLocation": "default", @@ -1160,7 +1204,7 @@ }, "typeName": { "contractScope": null, - "id": 2264, + "id": 2309, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 29, @@ -1175,10 +1219,10 @@ }, { "constant": false, - "id": 2267, + "id": 2312, "name": "nonce", "nodeType": "VariableDeclaration", - "scope": 2320, + "scope": 2367, "src": "1400:13:19", "stateVariable": false, "storageLocation": "default", @@ -1187,7 +1231,7 @@ "typeString": "uint256" }, "typeName": { - "id": 2266, + "id": 2311, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1400:7:19", @@ -1201,10 +1245,10 @@ }, { "constant": false, - "id": 2270, + "id": 2315, "name": "v", "nodeType": "VariableDeclaration", - "scope": 2320, + "scope": 2367, "src": "1423:9:19", "stateVariable": false, "storageLocation": "default", @@ -1214,7 +1258,7 @@ }, "typeName": { "baseType": { - "id": 2268, + "id": 2313, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "1423:5:19", @@ -1223,7 +1267,7 @@ "typeString": "uint8" } }, - "id": 2269, + "id": 2314, "length": null, "nodeType": "ArrayTypeName", "src": "1423:7:19", @@ -1237,10 +1281,10 @@ }, { "constant": false, - "id": 2273, + "id": 2318, "name": "r", "nodeType": "VariableDeclaration", - "scope": 2320, + "scope": 2367, "src": "1443:11:19", "stateVariable": false, "storageLocation": "default", @@ -1250,7 +1294,7 @@ }, "typeName": { "baseType": { - "id": 2271, + "id": 2316, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1443:7:19", @@ -1259,7 +1303,7 @@ "typeString": "bytes32" } }, - "id": 2272, + "id": 2317, "length": null, "nodeType": "ArrayTypeName", "src": "1443:9:19", @@ -1273,10 +1317,10 @@ }, { "constant": false, - "id": 2276, + "id": 2321, "name": "s", "nodeType": "VariableDeclaration", - "scope": 2320, + "scope": 2367, "src": "1465:11:19", "stateVariable": false, "storageLocation": "default", @@ -1286,7 +1330,7 @@ }, "typeName": { "baseType": { - "id": 2274, + "id": 2319, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1465:7:19", @@ -1295,7 +1339,7 @@ "typeString": "bytes32" } }, - "id": 2275, + "id": 2320, "length": null, "nodeType": "ArrayTypeName", "src": "1465:9:19", @@ -1312,35 +1356,35 @@ }, "payable": false, "returnParameters": { - "id": 2278, + "id": 2323, "nodeType": "ParameterList", "parameters": [], "src": "1502:0:19" }, - "scope": 2436, - "src": "1265:602:19", + "scope": 2485, + "src": "1265:667:19", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2400, + "id": 2449, "nodeType": "Block", - "src": "1988:530:19", + "src": "2053:612:19", "statements": [ { "assignments": [ - 2335 + 2382 ], "declarations": [ { "constant": false, - "id": 2335, + "id": 2382, "name": "lastOwner", "nodeType": "VariableDeclaration", - "scope": 2401, - "src": "2050:17:19", + "scope": 2450, + "src": "2115:17:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1348,10 +1392,10 @@ "typeString": "address" }, "typeName": { - "id": 2334, + "id": 2381, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2050:7:19", + "src": "2115:7:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1361,21 +1405,21 @@ "visibility": "internal" } ], - "id": 2339, + "id": 2386, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", - "id": 2337, + "id": 2384, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2078:1:19", + "src": "2143:1:19", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -1391,20 +1435,20 @@ "typeString": "int_const 0" } ], - "id": 2336, + "id": 2383, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2070:7:19", + "src": "2135:7:19", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 2338, + "id": 2385, "isConstant": false, "isLValue": false, "isPure": true, @@ -1412,25 +1456,25 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2070:10:19", + "src": "2135:10:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "2050:30:19" + "src": "2115:30:19" }, { "assignments": [], "declarations": [ { "constant": false, - "id": 2341, + "id": 2388, "name": "currentOwner", "nodeType": "VariableDeclaration", - "scope": 2401, - "src": "2090:20:19", + "scope": 2450, + "src": "2155:20:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1438,10 +1482,10 @@ "typeString": "address" }, "typeName": { - "id": 2340, + "id": 2387, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2090:7:19", + "src": "2155:7:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1451,21 +1495,21 @@ "visibility": "internal" } ], - "id": 2342, + "id": 2389, "initialValue": null, "nodeType": "VariableDeclarationStatement", - "src": "2090:20:19" + "src": "2155:20:19" }, { "assignments": [], "declarations": [ { "constant": false, - "id": 2344, + "id": 2391, "name": "i", "nodeType": "VariableDeclaration", - "scope": 2401, - "src": "2120:9:19", + "scope": 2450, + "src": "2185:9:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1473,10 +1517,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2343, + "id": 2390, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2120:7:19", + "src": "2185:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1486,23 +1530,23 @@ "visibility": "internal" } ], - "id": 2345, + "id": 2392, "initialValue": null, "nodeType": "VariableDeclarationStatement", - "src": "2120:9:19" + "src": "2185:9:19" }, { "assignments": [ - 2347 + 2394 ], "declarations": [ { "constant": false, - "id": 2347, + "id": 2394, "name": "threshold", "nodeType": "VariableDeclaration", - "scope": 2401, - "src": "2139:15:19", + "scope": 2450, + "src": "2204:15:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1510,10 +1554,10 @@ "typeString": "uint8" }, "typeName": { - "id": 2346, + "id": 2393, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "2139:5:19", + "src": "2204:5:19", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -1523,7 +1567,7 @@ "visibility": "internal" } ], - "id": 2353, + "id": 2400, "initialValue": { "argumentTypes": null, "arguments": [], @@ -1534,14 +1578,14 @@ "arguments": [ { "argumentTypes": null, - "id": 2349, + "id": 2396, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 717, - "src": "2170:7:19", + "referencedDeclaration": 727, + "src": "2235:7:19", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } } @@ -1549,22 +1593,22 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } ], - "id": 2348, + "id": 2395, "name": "OwnerManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1472, - "src": "2157:12:19", + "referencedDeclaration": 1504, + "src": "2222:12:19", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1472_$", + "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1504_$", "typeString": "type(contract OwnerManager)" } }, - "id": 2350, + "id": 2397, "isConstant": false, "isLValue": false, "isPure": false, @@ -1572,27 +1616,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2157:21:19", + "src": "2222:21:19", "typeDescriptions": { - "typeIdentifier": "t_contract$_OwnerManager_$1472", + "typeIdentifier": "t_contract$_OwnerManager_$1504", "typeString": "contract OwnerManager" } }, - "id": 2351, + "id": 2398, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "getThreshold", "nodeType": "MemberAccess", - "referencedDeclaration": 1408, - "src": "2157:34:19", + "referencedDeclaration": 1440, + "src": "2222:34:19", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$", "typeString": "function () view external returns (uint8)" } }, - "id": 2352, + "id": 2399, "isConstant": false, "isLValue": false, "isPure": false, @@ -1600,37 +1644,37 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2157:36:19", + "src": "2222:36:19", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "VariableDeclarationStatement", - "src": "2139:54:19" + "src": "2204:54:19" }, { "body": { - "id": 2398, + "id": 2447, "nodeType": "Block", - "src": "2277:235:19", + "src": "2342:317:19", "statements": [ { "expression": { "argumentTypes": null, - "id": 2377, + "id": 2424, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 2364, + "id": 2411, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2341, - "src": "2291:12:19", + "referencedDeclaration": 2388, + "src": "2356:12:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1643,12 +1687,12 @@ "arguments": [ { "argumentTypes": null, - "id": 2366, + "id": 2413, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2322, - "src": "2316:15:19", + "referencedDeclaration": 2369, + "src": "2381:15:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1658,26 +1702,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2367, + "id": 2414, "name": "v", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2325, - "src": "2333:1:19", + "referencedDeclaration": 2372, + "src": "2398:1:19", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", "typeString": "uint8[] memory" } }, - "id": 2369, + "id": 2416, "indexExpression": { "argumentTypes": null, - "id": 2368, + "id": 2415, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2344, - "src": "2335:1:19", + "referencedDeclaration": 2391, + "src": "2400:1:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1688,7 +1732,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2333:4:19", + "src": "2398:4:19", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -1698,26 +1742,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2370, + "id": 2417, "name": "r", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2328, - "src": "2339:1:19", + "referencedDeclaration": 2375, + "src": "2404:1:19", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", "typeString": "bytes32[] memory" } }, - "id": 2372, + "id": 2419, "indexExpression": { "argumentTypes": null, - "id": 2371, + "id": 2418, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2344, - "src": "2341:1:19", + "referencedDeclaration": 2391, + "src": "2406:1:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1728,7 +1772,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2339:4:19", + "src": "2404:4:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1738,26 +1782,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2373, + "id": 2420, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2331, - "src": "2345:1:19", + "referencedDeclaration": 2378, + "src": "2410:1:19", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", "typeString": "bytes32[] memory" } }, - "id": 2375, + "id": 2422, "indexExpression": { "argumentTypes": null, - "id": 2374, + "id": 2421, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2344, - "src": "2347:1:19", + "referencedDeclaration": 2391, + "src": "2412:1:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1768,7 +1812,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2345:4:19", + "src": "2410:4:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -1794,18 +1838,18 @@ "typeString": "bytes32" } ], - "id": 2365, + "id": 2412, "name": "ecrecover", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2590, - "src": "2306:9:19", + "referencedDeclaration": 2646, + "src": "2371:9:19", "typeDescriptions": { "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)" } }, - "id": 2376, + "id": 2423, "isConstant": false, "isLValue": false, "isPure": false, @@ -1813,21 +1857,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2306:44:19", + "src": "2371:44:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2291:59:19", + "src": "2356:59:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 2378, + "id": 2425, "nodeType": "ExpressionStatement", - "src": "2291:59:19" + "src": "2356:59:19" }, { "expression": { @@ -1838,12 +1882,12 @@ "arguments": [ { "argumentTypes": null, - "id": 2384, + "id": 2431, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2341, - "src": "2402:12:19", + "referencedDeclaration": 2388, + "src": "2467:12:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1862,14 +1906,14 @@ "arguments": [ { "argumentTypes": null, - "id": 2381, + "id": 2428, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 717, - "src": "2385:7:19", + "referencedDeclaration": 727, + "src": "2450:7:19", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } } @@ -1877,22 +1921,22 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } ], - "id": 2380, + "id": 2427, "name": "OwnerManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1472, - "src": "2372:12:19", + "referencedDeclaration": 1504, + "src": "2437:12:19", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1472_$", + "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1504_$", "typeString": "type(contract OwnerManager)" } }, - "id": 2382, + "id": 2429, "isConstant": false, "isLValue": false, "isPure": false, @@ -1900,27 +1944,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2372:21:19", + "src": "2437:21:19", "typeDescriptions": { - "typeIdentifier": "t_contract$_OwnerManager_$1472", + "typeIdentifier": "t_contract$_OwnerManager_$1504", "typeString": "contract OwnerManager" } }, - "id": 2383, + "id": 2430, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "isOwner", "nodeType": "MemberAccess", - "referencedDeclaration": 1422, - "src": "2372:29:19", + "referencedDeclaration": 1454, + "src": "2437:29:19", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view external returns (bool)" } }, - "id": 2385, + "id": 2432, "isConstant": false, "isLValue": false, "isPure": false, @@ -1928,11 +1972,29 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2372:43:19", + "src": "2437:43:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "5369676e6174757265206e6f742070726f7669646564206279206f776e6572", + "id": 2433, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2482:33:19", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_09247dae670daab7cf1923d3334eea07c14df3c0a8f5233960935c63f47104a9", + "typeString": "literal_string \"Signature not provided by owner\"" + }, + "value": "Signature not provided by owner" } ], "expression": { @@ -1940,23 +2002,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_09247dae670daab7cf1923d3334eea07c14df3c0a8f5233960935c63f47104a9", + "typeString": "literal_string \"Signature not provided by owner\"" } ], - "id": 2379, + "id": 2426, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "2364:7:19", + "referencedDeclaration": 2658, + "src": "2429:7:19", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 2386, + "id": 2434, "isConstant": false, "isLValue": false, "isPure": false, @@ -1964,15 +2030,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2364:52:19", + "src": "2429:87:19", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2387, + "id": 2435, "nodeType": "ExpressionStatement", - "src": "2364:52:19" + "src": "2429:87:19" }, { "expression": { @@ -1984,19 +2050,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 2391, + "id": 2439, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2389, + "id": 2437, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2341, - "src": "2438:12:19", + "referencedDeclaration": 2388, + "src": "2538:12:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2006,22 +2072,40 @@ "operator": ">", "rightExpression": { "argumentTypes": null, - "id": 2390, + "id": 2438, "name": "lastOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2335, - "src": "2453:9:19", + "referencedDeclaration": 2382, + "src": "2553:9:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2438:24:19", + "src": "2538:24:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "5369676e61747572657320617265206e6f74206f726465726564206279206f776e65722061646472657373", + "id": 2440, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2564:45:19", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_597a123a1bc14bc9690387ae0fec99721cc18eefa85fa2531a7593a762444235", + "typeString": "literal_string \"Signatures are not ordered by owner address\"" + }, + "value": "Signatures are not ordered by owner address" } ], "expression": { @@ -2029,23 +2113,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_597a123a1bc14bc9690387ae0fec99721cc18eefa85fa2531a7593a762444235", + "typeString": "literal_string \"Signatures are not ordered by owner address\"" } ], - "id": 2388, + "id": 2436, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "2430:7:19", + "referencedDeclaration": 2658, + "src": "2530:7:19", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 2392, + "id": 2441, "isConstant": false, "isLValue": false, "isPure": false, @@ -2053,32 +2141,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2430:33:19", + "src": "2530:80:19", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2393, + "id": 2442, "nodeType": "ExpressionStatement", - "src": "2430:33:19" + "src": "2530:80:19" }, { "expression": { "argumentTypes": null, - "id": 2396, + "id": 2445, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 2394, + "id": 2443, "name": "lastOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2335, - "src": "2477:9:19", + "referencedDeclaration": 2382, + "src": "2624:9:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2088,26 +2176,26 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 2395, + "id": 2444, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2341, - "src": "2489:12:19", + "referencedDeclaration": 2388, + "src": "2636:12:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2477:24:19", + "src": "2624:24:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 2397, + "id": 2446, "nodeType": "ExpressionStatement", - "src": "2477:24:19" + "src": "2624:24:19" } ] }, @@ -2117,19 +2205,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 2360, + "id": 2407, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2358, + "id": 2405, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2344, - "src": "2257:1:19", + "referencedDeclaration": 2391, + "src": "2322:1:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2139,40 +2227,40 @@ "operator": "<", "rightExpression": { "argumentTypes": null, - "id": 2359, + "id": 2406, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2347, - "src": "2261:9:19", + "referencedDeclaration": 2394, + "src": "2326:9:19", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "2257:13:19", + "src": "2322:13:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2399, + "id": 2448, "initializationExpression": { "expression": { "argumentTypes": null, - "id": 2356, + "id": 2403, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 2354, + "id": 2401, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2344, - "src": "2250:1:19", + "referencedDeclaration": 2391, + "src": "2315:1:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2183,14 +2271,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "30", - "id": 2355, + "id": 2402, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2254:1:19", + "src": "2319:1:19", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -2198,20 +2286,20 @@ }, "value": "0" }, - "src": "2250:5:19", + "src": "2315:5:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 2357, + "id": 2404, "nodeType": "ExpressionStatement", - "src": "2250:5:19" + "src": "2315:5:19" }, "loopExpression": { "expression": { "argumentTypes": null, - "id": 2362, + "id": 2409, "isConstant": false, "isLValue": false, "isPure": false, @@ -2219,15 +2307,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "2272:3:19", + "src": "2337:3:19", "subExpression": { "argumentTypes": null, - "id": 2361, + "id": 2408, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2344, - "src": "2272:1:19", + "referencedDeclaration": 2391, + "src": "2337:1:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2238,17 +2326,17 @@ "typeString": "uint256" } }, - "id": 2363, + "id": 2410, "nodeType": "ExpressionStatement", - "src": "2272:3:19" + "src": "2337:3:19" }, "nodeType": "ForStatement", - "src": "2245:267:19" + "src": "2310:349:19" } ] }, "documentation": null, - "id": 2401, + "id": 2450, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -2256,16 +2344,16 @@ "name": "checkHash", "nodeType": "FunctionDefinition", "parameters": { - "id": 2332, + "id": 2379, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2322, + "id": 2369, "name": "transactionHash", "nodeType": "VariableDeclaration", - "scope": 2401, - "src": "1892:23:19", + "scope": 2450, + "src": "1957:23:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2273,10 +2361,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 2321, + "id": 2368, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1892:7:19", + "src": "1957:7:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2287,11 +2375,11 @@ }, { "constant": false, - "id": 2325, + "id": 2372, "name": "v", "nodeType": "VariableDeclaration", - "scope": 2401, - "src": "1917:9:19", + "scope": 2450, + "src": "1982:9:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2300,19 +2388,19 @@ }, "typeName": { "baseType": { - "id": 2323, + "id": 2370, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "1917:5:19", + "src": "1982:5:19", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "id": 2324, + "id": 2371, "length": null, "nodeType": "ArrayTypeName", - "src": "1917:7:19", + "src": "1982:7:19", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr", "typeString": "uint8[]" @@ -2323,11 +2411,11 @@ }, { "constant": false, - "id": 2328, + "id": 2375, "name": "r", "nodeType": "VariableDeclaration", - "scope": 2401, - "src": "1928:11:19", + "scope": 2450, + "src": "1993:11:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2336,19 +2424,19 @@ }, "typeName": { "baseType": { - "id": 2326, + "id": 2373, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1928:7:19", + "src": "1993:7:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "id": 2327, + "id": 2374, "length": null, "nodeType": "ArrayTypeName", - "src": "1928:9:19", + "src": "1993:9:19", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", "typeString": "bytes32[]" @@ -2359,11 +2447,11 @@ }, { "constant": false, - "id": 2331, + "id": 2378, "name": "s", "nodeType": "VariableDeclaration", - "scope": 2401, - "src": "1941:11:19", + "scope": 2450, + "src": "2006:11:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2372,19 +2460,19 @@ }, "typeName": { "baseType": { - "id": 2329, + "id": 2376, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1941:7:19", + "src": "2006:7:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "id": 2330, + "id": 2377, "length": null, "nodeType": "ArrayTypeName", - "src": "1941:9:19", + "src": "2006:9:19", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", "typeString": "bytes32[]" @@ -2394,26 +2482,26 @@ "visibility": "internal" } ], - "src": "1891:62:19" + "src": "1956:62:19" }, "payable": false, "returnParameters": { - "id": 2333, + "id": 2380, "nodeType": "ParameterList", "parameters": [], - "src": "1988:0:19" + "src": "2053:0:19" }, - "scope": 2436, - "src": "1873:645:19", + "scope": 2485, + "src": "1938:727:19", "stateMutability": "view", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 2434, + "id": 2483, "nodeType": "Block", - "src": "3012:113:19", + "src": "3159:113:19", "statements": [ { "expression": { @@ -2428,14 +2516,14 @@ { "argumentTypes": null, "hexValue": "30783139", - "id": 2420, + "id": 2469, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3061:4:19", + "src": "3208:4:19", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_25_by_1", @@ -2451,20 +2539,20 @@ "typeString": "int_const 25" } ], - "id": 2419, + "id": 2468, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "3056:4:19", + "src": "3203:4:19", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes1_$", "typeString": "type(bytes1)" }, "typeName": "byte" }, - "id": 2421, + "id": 2470, "isConstant": false, "isLValue": false, "isPure": true, @@ -2472,7 +2560,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3056:10:19", + "src": "3203:10:19", "typeDescriptions": { "typeIdentifier": "t_bytes1", "typeString": "bytes1" @@ -2484,14 +2572,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 2423, + "id": 2472, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3073:1:19", + "src": "3220:1:19", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -2507,20 +2595,20 @@ "typeString": "int_const 0" } ], - "id": 2422, + "id": 2471, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "3068:4:19", + "src": "3215:4:19", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes1_$", "typeString": "type(bytes1)" }, "typeName": "byte" }, - "id": 2424, + "id": 2473, "isConstant": false, "isLValue": false, "isPure": true, @@ -2528,7 +2616,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3068:7:19", + "src": "3215:7:19", "typeDescriptions": { "typeIdentifier": "t_bytes1", "typeString": "bytes1" @@ -2536,25 +2624,25 @@ }, { "argumentTypes": null, - "id": 2425, + "id": 2474, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2649, - "src": "3077:4:19", + "referencedDeclaration": 2705, + "src": "3224:4:19", "typeDescriptions": { - "typeIdentifier": "t_contract$_StateChannelModule_$2436", + "typeIdentifier": "t_contract$_StateChannelModule_$2485", "typeString": "contract StateChannelModule" } }, { "argumentTypes": null, - "id": 2426, + "id": 2475, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2403, - "src": "3083:2:19", + "referencedDeclaration": 2452, + "src": "3230:2:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2562,12 +2650,12 @@ }, { "argumentTypes": null, - "id": 2427, + "id": 2476, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2405, - "src": "3087:5:19", + "referencedDeclaration": 2454, + "src": "3234:5:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2575,12 +2663,12 @@ }, { "argumentTypes": null, - "id": 2428, + "id": 2477, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2407, - "src": "3094:4:19", + "referencedDeclaration": 2456, + "src": "3241:4:19", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -2588,12 +2676,12 @@ }, { "argumentTypes": null, - "id": 2429, + "id": 2478, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2409, - "src": "3100:9:19", + "referencedDeclaration": 2458, + "src": "3247:9:19", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -2601,12 +2689,12 @@ }, { "argumentTypes": null, - "id": 2430, + "id": 2479, "name": "nonce", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2411, - "src": "3111:5:19", + "referencedDeclaration": 2460, + "src": "3258:5:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2624,7 +2712,7 @@ "typeString": "bytes1" }, { - "typeIdentifier": "t_contract$_StateChannelModule_$2436", + "typeIdentifier": "t_contract$_StateChannelModule_$2485", "typeString": "contract StateChannelModule" }, { @@ -2650,18 +2738,18 @@ ], "expression": { "argumentTypes": null, - "id": 2417, + "id": 2466, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2585, - "src": "3039:3:19", + "referencedDeclaration": 2641, + "src": "3186:3:19", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, - "id": 2418, + "id": 2467, "isConstant": false, "isLValue": false, "isPure": true, @@ -2669,13 +2757,13 @@ "memberName": "encodePacked", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3039:16:19", + "src": "3186:16:19", "typeDescriptions": { "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)" } }, - "id": 2431, + "id": 2480, "isConstant": false, "isLValue": false, "isPure": false, @@ -2683,7 +2771,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3039:78:19", + "src": "3186:78:19", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -2697,18 +2785,18 @@ "typeString": "bytes memory" } ], - "id": 2416, + "id": 2465, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2592, - "src": "3029:9:19", + "referencedDeclaration": 2648, + "src": "3176:9:19", "typeDescriptions": { "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", "typeString": "function () pure returns (bytes32)" } }, - "id": 2432, + "id": 2481, "isConstant": false, "isLValue": false, "isPure": false, @@ -2716,21 +2804,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3029:89:19", + "src": "3176:89:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "functionReturnParameters": 2415, - "id": 2433, + "functionReturnParameters": 2464, + "id": 2482, "nodeType": "Return", - "src": "3022:96:19" + "src": "3169:96:19" } ] }, "documentation": "@dev Returns hash to be signed by owners.\n @param to Destination address.\n @param value Ether value.\n @param data Data payload.\n @param operation Operation type.\n @param nonce Transaction nonce.\n @return Transaction hash.", - "id": 2435, + "id": 2484, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -2738,16 +2826,16 @@ "name": "getTransactionHash", "nodeType": "FunctionDefinition", "parameters": { - "id": 2412, + "id": 2461, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2403, + "id": 2452, "name": "to", "nodeType": "VariableDeclaration", - "scope": 2435, - "src": "2833:10:19", + "scope": 2484, + "src": "2980:10:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2755,10 +2843,10 @@ "typeString": "address" }, "typeName": { - "id": 2402, + "id": 2451, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2833:7:19", + "src": "2980:7:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2769,11 +2857,11 @@ }, { "constant": false, - "id": 2405, + "id": 2454, "name": "value", "nodeType": "VariableDeclaration", - "scope": 2435, - "src": "2854:13:19", + "scope": 2484, + "src": "3001:13:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2781,10 +2869,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2404, + "id": 2453, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2854:7:19", + "src": "3001:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2795,11 +2883,11 @@ }, { "constant": false, - "id": 2407, + "id": 2456, "name": "data", "nodeType": "VariableDeclaration", - "scope": 2435, - "src": "2878:10:19", + "scope": 2484, + "src": "3025:10:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2807,10 +2895,10 @@ "typeString": "bytes" }, "typeName": { - "id": 2406, + "id": 2455, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "2878:5:19", + "src": "3025:5:19", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -2821,11 +2909,11 @@ }, { "constant": false, - "id": 2409, + "id": 2458, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 2435, - "src": "2899:24:19", + "scope": 2484, + "src": "3046:24:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2834,11 +2922,11 @@ }, "typeName": { "contractScope": null, - "id": 2408, + "id": 2457, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 29, - "src": "2899:14:19", + "src": "3046:14:19", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -2849,11 +2937,11 @@ }, { "constant": false, - "id": 2411, + "id": 2460, "name": "nonce", "nodeType": "VariableDeclaration", - "scope": 2435, - "src": "2934:13:19", + "scope": 2484, + "src": "3081:13:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2861,10 +2949,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2410, + "id": 2459, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2934:7:19", + "src": "3081:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2874,20 +2962,20 @@ "visibility": "internal" } ], - "src": "2823:130:19" + "src": "2970:130:19" }, "payable": false, "returnParameters": { - "id": 2415, + "id": 2464, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2414, + "id": 2463, "name": "", "nodeType": "VariableDeclaration", - "scope": 2435, - "src": "2999:7:19", + "scope": 2484, + "src": "3146:7:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2895,10 +2983,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 2413, + "id": 2462, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "2999:7:19", + "src": "3146:7:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -2908,33 +2996,33 @@ "visibility": "internal" } ], - "src": "2998:9:19" + "src": "3145:9:19" }, - "scope": 2436, - "src": "2796:329:19", + "scope": 2485, + "src": "2943:329:19", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 2437, - "src": "269:2858:19" + "scope": 2486, + "src": "269:3005:19" } ], - "src": "0:3128:19" + "src": "0:3275:19" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/StateChannelModule.sol", "exportedSymbols": { "StateChannelModule": [ - 2436 + 2485 ] }, - "id": 2437, + "id": 2486, "nodeType": "SourceUnit", "nodes": [ { - "id": 2236, + "id": 2281, "literals": [ "solidity", "0.4", @@ -2946,10 +3034,10 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "file": "../Module.sol", - "id": 2237, + "id": 2282, "nodeType": "ImportDirective", - "scope": 2437, - "sourceUnit": 751, + "scope": 2486, + "sourceUnit": 763, "src": "24:23:19", "symbolAliases": [], "unitAlias": "" @@ -2957,10 +3045,10 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", "file": "../OwnerManager.sol", - "id": 2238, + "id": 2283, "nodeType": "ImportDirective", - "scope": 2437, - "sourceUnit": 1473, + "scope": 2486, + "sourceUnit": 1505, "src": "48:29:19", "symbolAliases": [], "unitAlias": "" @@ -2971,45 +3059,45 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 2239, + "id": 2284, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 750, + "referencedDeclaration": 762, "src": "300:6:19", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } }, - "id": 2240, + "id": 2285, "nodeType": "InheritanceSpecifier", "src": "300:6:19" } ], "contractDependencies": [ - 652, - 750, - 1619 + 662, + 762, + 1654 ], "contractKind": "contract", "documentation": "@title Gnosis Safe State Module - A module that allows interaction with statechannels.\n @author Stefan George - \n @author Richard Meissner - ", "fullyImplemented": true, - "id": 2436, + "id": 2485, "linearizedBaseContracts": [ - 2436, - 750, - 652, - 1619 + 2485, + 762, + 662, + 1654 ], "name": "StateChannelModule", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, - "id": 2243, + "id": 2288, "name": "NAME", "nodeType": "VariableDeclaration", - "scope": 2436, + "scope": 2485, "src": "314:52:19", "stateVariable": true, "storageLocation": "default", @@ -3018,7 +3106,7 @@ "typeString": "string" }, "typeName": { - "id": 2241, + "id": 2286, "name": "string", "nodeType": "ElementaryTypeName", "src": "314:6:19", @@ -3030,7 +3118,7 @@ "value": { "argumentTypes": null, "hexValue": "5374617465204368616e6e656c204d6f64756c65", - "id": 2242, + "id": 2287, "isConstant": false, "isLValue": false, "isPure": true, @@ -3049,10 +3137,10 @@ }, { "constant": true, - "id": 2246, + "id": 2291, "name": "VERSION", "nodeType": "VariableDeclaration", - "scope": 2436, + "scope": 2485, "src": "372:40:19", "stateVariable": true, "storageLocation": "default", @@ -3061,7 +3149,7 @@ "typeString": "string" }, "typeName": { - "id": 2244, + "id": 2289, "name": "string", "nodeType": "ElementaryTypeName", "src": "372:6:19", @@ -3073,7 +3161,7 @@ "value": { "argumentTypes": null, "hexValue": "302e302e31", - "id": 2245, + "id": 2290, "isConstant": false, "isLValue": false, "isPure": true, @@ -3092,10 +3180,10 @@ }, { "constant": false, - "id": 2250, + "id": 2295, "name": "isExecuted", "nodeType": "VariableDeclaration", - "scope": 2436, + "scope": 2485, "src": "510:43:19", "stateVariable": true, "storageLocation": "default", @@ -3104,9 +3192,9 @@ "typeString": "mapping(bytes32 => bool)" }, "typeName": { - "id": 2249, + "id": 2294, "keyType": { - "id": 2247, + "id": 2292, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "519:7:19", @@ -3122,7 +3210,7 @@ "typeString": "mapping(bytes32 => bool)" }, "valueType": { - "id": 2248, + "id": 2293, "name": "bool", "nodeType": "ElementaryTypeName", "src": "530:4:19", @@ -3137,7 +3225,7 @@ }, { "body": { - "id": 2256, + "id": 2301, "nodeType": "Block", "src": "637:29:19", "statements": [ @@ -3147,18 +3235,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 2253, + "id": 2298, "name": "setManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 749, + "referencedDeclaration": 761, "src": "647:10:19", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 2254, + "id": 2299, "isConstant": false, "isLValue": false, "isPure": false, @@ -3172,14 +3260,14 @@ "typeString": "tuple()" } }, - "id": 2255, + "id": 2300, "nodeType": "ExpressionStatement", "src": "647:12:19" } ] }, "documentation": "@dev Setup function sets manager", - "id": 2257, + "id": 2302, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -3187,19 +3275,19 @@ "name": "setup", "nodeType": "FunctionDefinition", "parameters": { - "id": 2251, + "id": 2296, "nodeType": "ParameterList", "parameters": [], "src": "615:2:19" }, "payable": false, "returnParameters": { - "id": 2252, + "id": 2297, "nodeType": "ParameterList", "parameters": [], "src": "637:0:19" }, - "scope": 2436, + "scope": 2485, "src": "601:65:19", "stateMutability": "nonpayable", "superFunction": null, @@ -3207,21 +3295,21 @@ }, { "body": { - "id": 2319, + "id": 2366, "nodeType": "Block", - "src": "1502:365:19", + "src": "1502:430:19", "statements": [ { "assignments": [ - 2280 + 2325 ], "declarations": [ { "constant": false, - "id": 2280, + "id": 2325, "name": "transactionHash", "nodeType": "VariableDeclaration", - "scope": 2320, + "scope": 2367, "src": "1512:23:19", "stateVariable": false, "storageLocation": "default", @@ -3230,7 +3318,7 @@ "typeString": "bytes32" }, "typeName": { - "id": 2279, + "id": 2324, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1512:7:19", @@ -3243,17 +3331,17 @@ "visibility": "internal" } ], - "id": 2288, + "id": 2333, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, - "id": 2282, + "id": 2327, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2259, + "referencedDeclaration": 2304, "src": "1557:2:19", "typeDescriptions": { "typeIdentifier": "t_address", @@ -3262,11 +3350,11 @@ }, { "argumentTypes": null, - "id": 2283, + "id": 2328, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2261, + "referencedDeclaration": 2306, "src": "1561:5:19", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -3275,11 +3363,11 @@ }, { "argumentTypes": null, - "id": 2284, + "id": 2329, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2263, + "referencedDeclaration": 2308, "src": "1568:4:19", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", @@ -3288,11 +3376,11 @@ }, { "argumentTypes": null, - "id": 2285, + "id": 2330, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2265, + "referencedDeclaration": 2310, "src": "1574:9:19", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", @@ -3301,11 +3389,11 @@ }, { "argumentTypes": null, - "id": 2286, + "id": 2331, "name": "nonce", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2267, + "referencedDeclaration": 2312, "src": "1585:5:19", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -3336,18 +3424,18 @@ "typeString": "uint256" } ], - "id": 2281, + "id": 2326, "name": "getTransactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2435, + "referencedDeclaration": 2484, "src": "1538:18:19", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$_t_uint256_$returns$_t_bytes32_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation,uint256) view returns (bytes32)" } }, - "id": 2287, + "id": 2332, "isConstant": false, "isLValue": false, "isPure": false, @@ -3370,7 +3458,7 @@ "arguments": [ { "argumentTypes": null, - "id": 2293, + "id": 2338, "isConstant": false, "isLValue": false, "isPure": false, @@ -3383,25 +3471,25 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2290, + "id": 2335, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2250, + "referencedDeclaration": 2295, "src": "1610:10:19", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 2292, + "id": 2337, "indexExpression": { "argumentTypes": null, - "id": 2291, + "id": 2336, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2280, + "referencedDeclaration": 2325, "src": "1621:15:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", @@ -3423,6 +3511,24 @@ "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "5472616e73616374696f6e20616c7265616479206578656375746564", + "id": 2339, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1639:30:19", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_3c3f7cf602281cf7a98efd78d98ba46309975dadee18bcb57e640145699bd800", + "typeString": "literal_string \"Transaction already executed\"" + }, + "value": "Transaction already executed" } ], "expression": { @@ -3430,23 +3536,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_3c3f7cf602281cf7a98efd78d98ba46309975dadee18bcb57e640145699bd800", + "typeString": "literal_string \"Transaction already executed\"" } ], - "id": 2289, + "id": 2334, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, + "referencedDeclaration": 2658, "src": "1601:7:19", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 2294, + "id": 2340, "isConstant": false, "isLValue": false, "isPure": false, @@ -3454,15 +3564,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1601:37:19", + "src": "1601:69:19", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2295, + "id": 2341, "nodeType": "ExpressionStatement", - "src": "1601:37:19" + "src": "1601:69:19" }, { "expression": { @@ -3470,12 +3580,12 @@ "arguments": [ { "argumentTypes": null, - "id": 2297, + "id": 2343, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2280, - "src": "1658:15:19", + "referencedDeclaration": 2325, + "src": "1690:15:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3483,12 +3593,12 @@ }, { "argumentTypes": null, - "id": 2298, + "id": 2344, "name": "v", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2270, - "src": "1675:1:19", + "referencedDeclaration": 2315, + "src": "1707:1:19", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", "typeString": "uint8[] memory" @@ -3496,12 +3606,12 @@ }, { "argumentTypes": null, - "id": 2299, + "id": 2345, "name": "r", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2273, - "src": "1678:1:19", + "referencedDeclaration": 2318, + "src": "1710:1:19", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", "typeString": "bytes32[] memory" @@ -3509,12 +3619,12 @@ }, { "argumentTypes": null, - "id": 2300, + "id": 2346, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2276, - "src": "1681:1:19", + "referencedDeclaration": 2321, + "src": "1713:1:19", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", "typeString": "bytes32[] memory" @@ -3540,18 +3650,18 @@ "typeString": "bytes32[] memory" } ], - "id": 2296, + "id": 2342, "name": "checkHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2401, - "src": "1648:9:19", + "referencedDeclaration": 2450, + "src": "1680:9:19", "typeDescriptions": { "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_array$_t_uint8_$dyn_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$_t_array$_t_bytes32_$dyn_memory_ptr_$returns$__$", "typeString": "function (bytes32,uint8[] memory,bytes32[] memory,bytes32[] memory) view" } }, - "id": 2301, + "id": 2347, "isConstant": false, "isLValue": false, "isPure": false, @@ -3559,20 +3669,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1648:35:19", + "src": "1680:35:19", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2302, + "id": 2348, "nodeType": "ExpressionStatement", - "src": "1648:35:19" + "src": "1680:35:19" }, { "expression": { "argumentTypes": null, - "id": 2307, + "id": 2353, "isConstant": false, "isLValue": false, "isPure": false, @@ -3581,26 +3691,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2303, + "id": 2349, "name": "isExecuted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2250, - "src": "1746:10:19", + "referencedDeclaration": 2295, + "src": "1778:10:19", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$", "typeString": "mapping(bytes32 => bool)" } }, - "id": 2305, + "id": 2351, "indexExpression": { "argumentTypes": null, - "id": 2304, + "id": 2350, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2280, - "src": "1757:15:19", + "referencedDeclaration": 2325, + "src": "1789:15:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -3611,7 +3721,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1746:27:19", + "src": "1778:27:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3622,14 +3732,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 2306, + "id": 2352, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "1776:4:19", + "src": "1808:4:19", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -3637,15 +3747,15 @@ }, "value": "true" }, - "src": "1746:34:19", + "src": "1778:34:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2308, + "id": 2354, "nodeType": "ExpressionStatement", - "src": "1746:34:19" + "src": "1778:34:19" }, { "expression": { @@ -3656,12 +3766,12 @@ "arguments": [ { "argumentTypes": null, - "id": 2312, + "id": 2358, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2259, - "src": "1832:2:19", + "referencedDeclaration": 2304, + "src": "1864:2:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3669,12 +3779,12 @@ }, { "argumentTypes": null, - "id": 2313, + "id": 2359, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2261, - "src": "1836:5:19", + "referencedDeclaration": 2306, + "src": "1868:5:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3682,12 +3792,12 @@ }, { "argumentTypes": null, - "id": 2314, + "id": 2360, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2263, - "src": "1843:4:19", + "referencedDeclaration": 2308, + "src": "1875:4:19", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -3695,12 +3805,12 @@ }, { "argumentTypes": null, - "id": 2315, + "id": 2361, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2265, - "src": "1849:9:19", + "referencedDeclaration": 2310, + "src": "1881:9:19", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -3728,32 +3838,32 @@ ], "expression": { "argumentTypes": null, - "id": 2310, + "id": 2356, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 717, - "src": "1798:7:19", + "referencedDeclaration": 727, + "src": "1830:7:19", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } }, - "id": 2311, + "id": 2357, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "execTransactionFromModule", "nodeType": "MemberAccess", - "referencedDeclaration": 927, - "src": "1798:33:19", + "referencedDeclaration": 945, + "src": "1830:33:19", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation) external returns (bool)" } }, - "id": 2316, + "id": 2362, "isConstant": false, "isLValue": false, "isPure": false, @@ -3761,11 +3871,29 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1798:61:19", + "src": "1830:61:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "436f756c64206e6f742065786563757465207472616e73616374696f6e", + "id": 2363, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1893:31:19", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_b0a2f29e31cc28eee068c27ff93342fb8d9840dcad25c6f669ce8154844930c4", + "typeString": "literal_string \"Could not execute transaction\"" + }, + "value": "Could not execute transaction" } ], "expression": { @@ -3773,23 +3901,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_b0a2f29e31cc28eee068c27ff93342fb8d9840dcad25c6f669ce8154844930c4", + "typeString": "literal_string \"Could not execute transaction\"" } ], - "id": 2309, + "id": 2355, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "1790:7:19", + "referencedDeclaration": 2658, + "src": "1822:7:19", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 2317, + "id": 2364, "isConstant": false, "isLValue": false, "isPure": false, @@ -3797,20 +3929,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1790:70:19", + "src": "1822:103:19", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2318, + "id": 2365, "nodeType": "ExpressionStatement", - "src": "1790:70:19" + "src": "1822:103:19" } ] }, "documentation": "@dev Allows to execute a Safe transaction confirmed by required number of owners.\n @param to Destination address of Safe transaction.\n @param value Ether value of Safe transaction.\n @param data Data payload of Safe transaction.\n @param operation Operation type of Safe transaction.\n @param nonce Nonce used for this Safe transaction.\n @param v Array of signature V values sorted by owner addresses.\n @param r Array of signature R values sorted by owner addresses.\n @param s Array of signature S values sorted by owner addresses.", - "id": 2320, + "id": 2367, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -3818,15 +3950,15 @@ "name": "execTransaction", "nodeType": "FunctionDefinition", "parameters": { - "id": 2277, + "id": 2322, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2259, + "id": 2304, "name": "to", "nodeType": "VariableDeclaration", - "scope": 2320, + "scope": 2367, "src": "1299:10:19", "stateVariable": false, "storageLocation": "default", @@ -3835,7 +3967,7 @@ "typeString": "address" }, "typeName": { - "id": 2258, + "id": 2303, "name": "address", "nodeType": "ElementaryTypeName", "src": "1299:7:19", @@ -3849,10 +3981,10 @@ }, { "constant": false, - "id": 2261, + "id": 2306, "name": "value", "nodeType": "VariableDeclaration", - "scope": 2320, + "scope": 2367, "src": "1320:13:19", "stateVariable": false, "storageLocation": "default", @@ -3861,7 +3993,7 @@ "typeString": "uint256" }, "typeName": { - "id": 2260, + "id": 2305, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1320:7:19", @@ -3875,10 +4007,10 @@ }, { "constant": false, - "id": 2263, + "id": 2308, "name": "data", "nodeType": "VariableDeclaration", - "scope": 2320, + "scope": 2367, "src": "1344:10:19", "stateVariable": false, "storageLocation": "default", @@ -3887,7 +4019,7 @@ "typeString": "bytes" }, "typeName": { - "id": 2262, + "id": 2307, "name": "bytes", "nodeType": "ElementaryTypeName", "src": "1344:5:19", @@ -3901,10 +4033,10 @@ }, { "constant": false, - "id": 2265, + "id": 2310, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 2320, + "scope": 2367, "src": "1365:24:19", "stateVariable": false, "storageLocation": "default", @@ -3914,7 +4046,7 @@ }, "typeName": { "contractScope": null, - "id": 2264, + "id": 2309, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 29, @@ -3929,10 +4061,10 @@ }, { "constant": false, - "id": 2267, + "id": 2312, "name": "nonce", "nodeType": "VariableDeclaration", - "scope": 2320, + "scope": 2367, "src": "1400:13:19", "stateVariable": false, "storageLocation": "default", @@ -3941,7 +4073,7 @@ "typeString": "uint256" }, "typeName": { - "id": 2266, + "id": 2311, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1400:7:19", @@ -3955,10 +4087,10 @@ }, { "constant": false, - "id": 2270, + "id": 2315, "name": "v", "nodeType": "VariableDeclaration", - "scope": 2320, + "scope": 2367, "src": "1423:9:19", "stateVariable": false, "storageLocation": "default", @@ -3968,7 +4100,7 @@ }, "typeName": { "baseType": { - "id": 2268, + "id": 2313, "name": "uint8", "nodeType": "ElementaryTypeName", "src": "1423:5:19", @@ -3977,7 +4109,7 @@ "typeString": "uint8" } }, - "id": 2269, + "id": 2314, "length": null, "nodeType": "ArrayTypeName", "src": "1423:7:19", @@ -3991,10 +4123,10 @@ }, { "constant": false, - "id": 2273, + "id": 2318, "name": "r", "nodeType": "VariableDeclaration", - "scope": 2320, + "scope": 2367, "src": "1443:11:19", "stateVariable": false, "storageLocation": "default", @@ -4004,7 +4136,7 @@ }, "typeName": { "baseType": { - "id": 2271, + "id": 2316, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1443:7:19", @@ -4013,7 +4145,7 @@ "typeString": "bytes32" } }, - "id": 2272, + "id": 2317, "length": null, "nodeType": "ArrayTypeName", "src": "1443:9:19", @@ -4027,10 +4159,10 @@ }, { "constant": false, - "id": 2276, + "id": 2321, "name": "s", "nodeType": "VariableDeclaration", - "scope": 2320, + "scope": 2367, "src": "1465:11:19", "stateVariable": false, "storageLocation": "default", @@ -4040,7 +4172,7 @@ }, "typeName": { "baseType": { - "id": 2274, + "id": 2319, "name": "bytes32", "nodeType": "ElementaryTypeName", "src": "1465:7:19", @@ -4049,7 +4181,7 @@ "typeString": "bytes32" } }, - "id": 2275, + "id": 2320, "length": null, "nodeType": "ArrayTypeName", "src": "1465:9:19", @@ -4066,35 +4198,35 @@ }, "payable": false, "returnParameters": { - "id": 2278, + "id": 2323, "nodeType": "ParameterList", "parameters": [], "src": "1502:0:19" }, - "scope": 2436, - "src": "1265:602:19", + "scope": 2485, + "src": "1265:667:19", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2400, + "id": 2449, "nodeType": "Block", - "src": "1988:530:19", + "src": "2053:612:19", "statements": [ { "assignments": [ - 2335 + 2382 ], "declarations": [ { "constant": false, - "id": 2335, + "id": 2382, "name": "lastOwner", "nodeType": "VariableDeclaration", - "scope": 2401, - "src": "2050:17:19", + "scope": 2450, + "src": "2115:17:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4102,10 +4234,10 @@ "typeString": "address" }, "typeName": { - "id": 2334, + "id": 2381, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2050:7:19", + "src": "2115:7:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4115,21 +4247,21 @@ "visibility": "internal" } ], - "id": 2339, + "id": 2386, "initialValue": { "argumentTypes": null, "arguments": [ { "argumentTypes": null, "hexValue": "30", - "id": 2337, + "id": 2384, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2078:1:19", + "src": "2143:1:19", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -4145,20 +4277,20 @@ "typeString": "int_const 0" } ], - "id": 2336, + "id": 2383, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "2070:7:19", + "src": "2135:7:19", "typeDescriptions": { "typeIdentifier": "t_type$_t_address_$", "typeString": "type(address)" }, "typeName": "address" }, - "id": 2338, + "id": 2385, "isConstant": false, "isLValue": false, "isPure": true, @@ -4166,25 +4298,25 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2070:10:19", + "src": "2135:10:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "nodeType": "VariableDeclarationStatement", - "src": "2050:30:19" + "src": "2115:30:19" }, { "assignments": [], "declarations": [ { "constant": false, - "id": 2341, + "id": 2388, "name": "currentOwner", "nodeType": "VariableDeclaration", - "scope": 2401, - "src": "2090:20:19", + "scope": 2450, + "src": "2155:20:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4192,10 +4324,10 @@ "typeString": "address" }, "typeName": { - "id": 2340, + "id": 2387, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2090:7:19", + "src": "2155:7:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4205,21 +4337,21 @@ "visibility": "internal" } ], - "id": 2342, + "id": 2389, "initialValue": null, "nodeType": "VariableDeclarationStatement", - "src": "2090:20:19" + "src": "2155:20:19" }, { "assignments": [], "declarations": [ { "constant": false, - "id": 2344, + "id": 2391, "name": "i", "nodeType": "VariableDeclaration", - "scope": 2401, - "src": "2120:9:19", + "scope": 2450, + "src": "2185:9:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4227,10 +4359,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2343, + "id": 2390, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2120:7:19", + "src": "2185:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4240,23 +4372,23 @@ "visibility": "internal" } ], - "id": 2345, + "id": 2392, "initialValue": null, "nodeType": "VariableDeclarationStatement", - "src": "2120:9:19" + "src": "2185:9:19" }, { "assignments": [ - 2347 + 2394 ], "declarations": [ { "constant": false, - "id": 2347, + "id": 2394, "name": "threshold", "nodeType": "VariableDeclaration", - "scope": 2401, - "src": "2139:15:19", + "scope": 2450, + "src": "2204:15:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -4264,10 +4396,10 @@ "typeString": "uint8" }, "typeName": { - "id": 2346, + "id": 2393, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "2139:5:19", + "src": "2204:5:19", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -4277,7 +4409,7 @@ "visibility": "internal" } ], - "id": 2353, + "id": 2400, "initialValue": { "argumentTypes": null, "arguments": [], @@ -4288,14 +4420,14 @@ "arguments": [ { "argumentTypes": null, - "id": 2349, + "id": 2396, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 717, - "src": "2170:7:19", + "referencedDeclaration": 727, + "src": "2235:7:19", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } } @@ -4303,22 +4435,22 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } ], - "id": 2348, + "id": 2395, "name": "OwnerManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1472, - "src": "2157:12:19", + "referencedDeclaration": 1504, + "src": "2222:12:19", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1472_$", + "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1504_$", "typeString": "type(contract OwnerManager)" } }, - "id": 2350, + "id": 2397, "isConstant": false, "isLValue": false, "isPure": false, @@ -4326,27 +4458,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2157:21:19", + "src": "2222:21:19", "typeDescriptions": { - "typeIdentifier": "t_contract$_OwnerManager_$1472", + "typeIdentifier": "t_contract$_OwnerManager_$1504", "typeString": "contract OwnerManager" } }, - "id": 2351, + "id": 2398, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "getThreshold", "nodeType": "MemberAccess", - "referencedDeclaration": 1408, - "src": "2157:34:19", + "referencedDeclaration": 1440, + "src": "2222:34:19", "typeDescriptions": { "typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$", "typeString": "function () view external returns (uint8)" } }, - "id": 2352, + "id": 2399, "isConstant": false, "isLValue": false, "isPure": false, @@ -4354,37 +4486,37 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2157:36:19", + "src": "2222:36:19", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, "nodeType": "VariableDeclarationStatement", - "src": "2139:54:19" + "src": "2204:54:19" }, { "body": { - "id": 2398, + "id": 2447, "nodeType": "Block", - "src": "2277:235:19", + "src": "2342:317:19", "statements": [ { "expression": { "argumentTypes": null, - "id": 2377, + "id": 2424, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 2364, + "id": 2411, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2341, - "src": "2291:12:19", + "referencedDeclaration": 2388, + "src": "2356:12:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4397,12 +4529,12 @@ "arguments": [ { "argumentTypes": null, - "id": 2366, + "id": 2413, "name": "transactionHash", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2322, - "src": "2316:15:19", + "referencedDeclaration": 2369, + "src": "2381:15:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -4412,26 +4544,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2367, + "id": 2414, "name": "v", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2325, - "src": "2333:1:19", + "referencedDeclaration": 2372, + "src": "2398:1:19", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint8_$dyn_memory_ptr", "typeString": "uint8[] memory" } }, - "id": 2369, + "id": 2416, "indexExpression": { "argumentTypes": null, - "id": 2368, + "id": 2415, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2344, - "src": "2335:1:19", + "referencedDeclaration": 2391, + "src": "2400:1:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4442,7 +4574,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2333:4:19", + "src": "2398:4:19", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" @@ -4452,26 +4584,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2370, + "id": 2417, "name": "r", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2328, - "src": "2339:1:19", + "referencedDeclaration": 2375, + "src": "2404:1:19", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", "typeString": "bytes32[] memory" } }, - "id": 2372, + "id": 2419, "indexExpression": { "argumentTypes": null, - "id": 2371, + "id": 2418, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2344, - "src": "2341:1:19", + "referencedDeclaration": 2391, + "src": "2406:1:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4482,7 +4614,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2339:4:19", + "src": "2404:4:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -4492,26 +4624,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2373, + "id": 2420, "name": "s", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2331, - "src": "2345:1:19", + "referencedDeclaration": 2378, + "src": "2410:1:19", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr", "typeString": "bytes32[] memory" } }, - "id": 2375, + "id": 2422, "indexExpression": { "argumentTypes": null, - "id": 2374, + "id": 2421, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2344, - "src": "2347:1:19", + "referencedDeclaration": 2391, + "src": "2412:1:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4522,7 +4654,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2345:4:19", + "src": "2410:4:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -4548,18 +4680,18 @@ "typeString": "bytes32" } ], - "id": 2365, + "id": 2412, "name": "ecrecover", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2590, - "src": "2306:9:19", + "referencedDeclaration": 2646, + "src": "2371:9:19", "typeDescriptions": { "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$", "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)" } }, - "id": 2376, + "id": 2423, "isConstant": false, "isLValue": false, "isPure": false, @@ -4567,21 +4699,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2306:44:19", + "src": "2371:44:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2291:59:19", + "src": "2356:59:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 2378, + "id": 2425, "nodeType": "ExpressionStatement", - "src": "2291:59:19" + "src": "2356:59:19" }, { "expression": { @@ -4592,12 +4724,12 @@ "arguments": [ { "argumentTypes": null, - "id": 2384, + "id": 2431, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2341, - "src": "2402:12:19", + "referencedDeclaration": 2388, + "src": "2467:12:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4616,14 +4748,14 @@ "arguments": [ { "argumentTypes": null, - "id": 2381, + "id": 2428, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 717, - "src": "2385:7:19", + "referencedDeclaration": 727, + "src": "2450:7:19", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } } @@ -4631,22 +4763,22 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } ], - "id": 2380, + "id": 2427, "name": "OwnerManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1472, - "src": "2372:12:19", + "referencedDeclaration": 1504, + "src": "2437:12:19", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1472_$", + "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1504_$", "typeString": "type(contract OwnerManager)" } }, - "id": 2382, + "id": 2429, "isConstant": false, "isLValue": false, "isPure": false, @@ -4654,27 +4786,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2372:21:19", + "src": "2437:21:19", "typeDescriptions": { - "typeIdentifier": "t_contract$_OwnerManager_$1472", + "typeIdentifier": "t_contract$_OwnerManager_$1504", "typeString": "contract OwnerManager" } }, - "id": 2383, + "id": 2430, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "isOwner", "nodeType": "MemberAccess", - "referencedDeclaration": 1422, - "src": "2372:29:19", + "referencedDeclaration": 1454, + "src": "2437:29:19", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view external returns (bool)" } }, - "id": 2385, + "id": 2432, "isConstant": false, "isLValue": false, "isPure": false, @@ -4682,11 +4814,29 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2372:43:19", + "src": "2437:43:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "5369676e6174757265206e6f742070726f7669646564206279206f776e6572", + "id": 2433, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2482:33:19", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_09247dae670daab7cf1923d3334eea07c14df3c0a8f5233960935c63f47104a9", + "typeString": "literal_string \"Signature not provided by owner\"" + }, + "value": "Signature not provided by owner" } ], "expression": { @@ -4694,23 +4844,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_09247dae670daab7cf1923d3334eea07c14df3c0a8f5233960935c63f47104a9", + "typeString": "literal_string \"Signature not provided by owner\"" } ], - "id": 2379, + "id": 2426, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "2364:7:19", + "referencedDeclaration": 2658, + "src": "2429:7:19", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 2386, + "id": 2434, "isConstant": false, "isLValue": false, "isPure": false, @@ -4718,15 +4872,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2364:52:19", + "src": "2429:87:19", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2387, + "id": 2435, "nodeType": "ExpressionStatement", - "src": "2364:52:19" + "src": "2429:87:19" }, { "expression": { @@ -4738,19 +4892,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 2391, + "id": 2439, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2389, + "id": 2437, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2341, - "src": "2438:12:19", + "referencedDeclaration": 2388, + "src": "2538:12:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4760,22 +4914,40 @@ "operator": ">", "rightExpression": { "argumentTypes": null, - "id": 2390, + "id": 2438, "name": "lastOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2335, - "src": "2453:9:19", + "referencedDeclaration": 2382, + "src": "2553:9:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2438:24:19", + "src": "2538:24:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "5369676e61747572657320617265206e6f74206f726465726564206279206f776e65722061646472657373", + "id": 2440, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2564:45:19", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_597a123a1bc14bc9690387ae0fec99721cc18eefa85fa2531a7593a762444235", + "typeString": "literal_string \"Signatures are not ordered by owner address\"" + }, + "value": "Signatures are not ordered by owner address" } ], "expression": { @@ -4783,23 +4955,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_597a123a1bc14bc9690387ae0fec99721cc18eefa85fa2531a7593a762444235", + "typeString": "literal_string \"Signatures are not ordered by owner address\"" } ], - "id": 2388, + "id": 2436, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "2430:7:19", + "referencedDeclaration": 2658, + "src": "2530:7:19", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 2392, + "id": 2441, "isConstant": false, "isLValue": false, "isPure": false, @@ -4807,32 +4983,32 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2430:33:19", + "src": "2530:80:19", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2393, + "id": 2442, "nodeType": "ExpressionStatement", - "src": "2430:33:19" + "src": "2530:80:19" }, { "expression": { "argumentTypes": null, - "id": 2396, + "id": 2445, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 2394, + "id": 2443, "name": "lastOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2335, - "src": "2477:9:19", + "referencedDeclaration": 2382, + "src": "2624:9:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -4842,26 +5018,26 @@ "operator": "=", "rightHandSide": { "argumentTypes": null, - "id": 2395, + "id": 2444, "name": "currentOwner", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2341, - "src": "2489:12:19", + "referencedDeclaration": 2388, + "src": "2636:12:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "src": "2477:24:19", + "src": "2624:24:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, - "id": 2397, + "id": 2446, "nodeType": "ExpressionStatement", - "src": "2477:24:19" + "src": "2624:24:19" } ] }, @@ -4871,19 +5047,19 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 2360, + "id": 2407, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2358, + "id": 2405, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2344, - "src": "2257:1:19", + "referencedDeclaration": 2391, + "src": "2322:1:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4893,40 +5069,40 @@ "operator": "<", "rightExpression": { "argumentTypes": null, - "id": 2359, + "id": 2406, "name": "threshold", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2347, - "src": "2261:9:19", + "referencedDeclaration": 2394, + "src": "2326:9:19", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "src": "2257:13:19", + "src": "2322:13:19", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2399, + "id": 2448, "initializationExpression": { "expression": { "argumentTypes": null, - "id": 2356, + "id": 2403, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "argumentTypes": null, - "id": 2354, + "id": 2401, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2344, - "src": "2250:1:19", + "referencedDeclaration": 2391, + "src": "2315:1:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4937,14 +5113,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "30", - "id": 2355, + "id": 2402, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "2254:1:19", + "src": "2319:1:19", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -4952,20 +5128,20 @@ }, "value": "0" }, - "src": "2250:5:19", + "src": "2315:5:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } }, - "id": 2357, + "id": 2404, "nodeType": "ExpressionStatement", - "src": "2250:5:19" + "src": "2315:5:19" }, "loopExpression": { "expression": { "argumentTypes": null, - "id": 2362, + "id": 2409, "isConstant": false, "isLValue": false, "isPure": false, @@ -4973,15 +5149,15 @@ "nodeType": "UnaryOperation", "operator": "++", "prefix": false, - "src": "2272:3:19", + "src": "2337:3:19", "subExpression": { "argumentTypes": null, - "id": 2361, + "id": 2408, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2344, - "src": "2272:1:19", + "referencedDeclaration": 2391, + "src": "2337:1:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -4992,17 +5168,17 @@ "typeString": "uint256" } }, - "id": 2363, + "id": 2410, "nodeType": "ExpressionStatement", - "src": "2272:3:19" + "src": "2337:3:19" }, "nodeType": "ForStatement", - "src": "2245:267:19" + "src": "2310:349:19" } ] }, "documentation": null, - "id": 2401, + "id": 2450, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -5010,16 +5186,16 @@ "name": "checkHash", "nodeType": "FunctionDefinition", "parameters": { - "id": 2332, + "id": 2379, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2322, + "id": 2369, "name": "transactionHash", "nodeType": "VariableDeclaration", - "scope": 2401, - "src": "1892:23:19", + "scope": 2450, + "src": "1957:23:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5027,10 +5203,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 2321, + "id": 2368, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1892:7:19", + "src": "1957:7:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -5041,11 +5217,11 @@ }, { "constant": false, - "id": 2325, + "id": 2372, "name": "v", "nodeType": "VariableDeclaration", - "scope": 2401, - "src": "1917:9:19", + "scope": 2450, + "src": "1982:9:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5054,19 +5230,19 @@ }, "typeName": { "baseType": { - "id": 2323, + "id": 2370, "name": "uint8", "nodeType": "ElementaryTypeName", - "src": "1917:5:19", + "src": "1982:5:19", "typeDescriptions": { "typeIdentifier": "t_uint8", "typeString": "uint8" } }, - "id": 2324, + "id": 2371, "length": null, "nodeType": "ArrayTypeName", - "src": "1917:7:19", + "src": "1982:7:19", "typeDescriptions": { "typeIdentifier": "t_array$_t_uint8_$dyn_storage_ptr", "typeString": "uint8[]" @@ -5077,11 +5253,11 @@ }, { "constant": false, - "id": 2328, + "id": 2375, "name": "r", "nodeType": "VariableDeclaration", - "scope": 2401, - "src": "1928:11:19", + "scope": 2450, + "src": "1993:11:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5090,19 +5266,19 @@ }, "typeName": { "baseType": { - "id": 2326, + "id": 2373, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1928:7:19", + "src": "1993:7:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "id": 2327, + "id": 2374, "length": null, "nodeType": "ArrayTypeName", - "src": "1928:9:19", + "src": "1993:9:19", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", "typeString": "bytes32[]" @@ -5113,11 +5289,11 @@ }, { "constant": false, - "id": 2331, + "id": 2378, "name": "s", "nodeType": "VariableDeclaration", - "scope": 2401, - "src": "1941:11:19", + "scope": 2450, + "src": "2006:11:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5126,19 +5302,19 @@ }, "typeName": { "baseType": { - "id": 2329, + "id": 2376, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "1941:7:19", + "src": "2006:7:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "id": 2330, + "id": 2377, "length": null, "nodeType": "ArrayTypeName", - "src": "1941:9:19", + "src": "2006:9:19", "typeDescriptions": { "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr", "typeString": "bytes32[]" @@ -5148,26 +5324,26 @@ "visibility": "internal" } ], - "src": "1891:62:19" + "src": "1956:62:19" }, "payable": false, "returnParameters": { - "id": 2333, + "id": 2380, "nodeType": "ParameterList", "parameters": [], - "src": "1988:0:19" + "src": "2053:0:19" }, - "scope": 2436, - "src": "1873:645:19", + "scope": 2485, + "src": "1938:727:19", "stateMutability": "view", "superFunction": null, "visibility": "internal" }, { "body": { - "id": 2434, + "id": 2483, "nodeType": "Block", - "src": "3012:113:19", + "src": "3159:113:19", "statements": [ { "expression": { @@ -5182,14 +5358,14 @@ { "argumentTypes": null, "hexValue": "30783139", - "id": 2420, + "id": 2469, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3061:4:19", + "src": "3208:4:19", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_25_by_1", @@ -5205,20 +5381,20 @@ "typeString": "int_const 25" } ], - "id": 2419, + "id": 2468, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "3056:4:19", + "src": "3203:4:19", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes1_$", "typeString": "type(bytes1)" }, "typeName": "byte" }, - "id": 2421, + "id": 2470, "isConstant": false, "isLValue": false, "isPure": true, @@ -5226,7 +5402,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3056:10:19", + "src": "3203:10:19", "typeDescriptions": { "typeIdentifier": "t_bytes1", "typeString": "bytes1" @@ -5238,14 +5414,14 @@ { "argumentTypes": null, "hexValue": "30", - "id": 2423, + "id": 2472, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "3073:1:19", + "src": "3220:1:19", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -5261,20 +5437,20 @@ "typeString": "int_const 0" } ], - "id": 2422, + "id": 2471, "isConstant": false, "isLValue": false, "isPure": true, "lValueRequested": false, "nodeType": "ElementaryTypeNameExpression", - "src": "3068:4:19", + "src": "3215:4:19", "typeDescriptions": { "typeIdentifier": "t_type$_t_bytes1_$", "typeString": "type(bytes1)" }, "typeName": "byte" }, - "id": 2424, + "id": 2473, "isConstant": false, "isLValue": false, "isPure": true, @@ -5282,7 +5458,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3068:7:19", + "src": "3215:7:19", "typeDescriptions": { "typeIdentifier": "t_bytes1", "typeString": "bytes1" @@ -5290,25 +5466,25 @@ }, { "argumentTypes": null, - "id": 2425, + "id": 2474, "name": "this", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2649, - "src": "3077:4:19", + "referencedDeclaration": 2705, + "src": "3224:4:19", "typeDescriptions": { - "typeIdentifier": "t_contract$_StateChannelModule_$2436", + "typeIdentifier": "t_contract$_StateChannelModule_$2485", "typeString": "contract StateChannelModule" } }, { "argumentTypes": null, - "id": 2426, + "id": 2475, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2403, - "src": "3083:2:19", + "referencedDeclaration": 2452, + "src": "3230:2:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5316,12 +5492,12 @@ }, { "argumentTypes": null, - "id": 2427, + "id": 2476, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2405, - "src": "3087:5:19", + "referencedDeclaration": 2454, + "src": "3234:5:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5329,12 +5505,12 @@ }, { "argumentTypes": null, - "id": 2428, + "id": 2477, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2407, - "src": "3094:4:19", + "referencedDeclaration": 2456, + "src": "3241:4:19", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -5342,12 +5518,12 @@ }, { "argumentTypes": null, - "id": 2429, + "id": 2478, "name": "operation", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2409, - "src": "3100:9:19", + "referencedDeclaration": 2458, + "src": "3247:9:19", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -5355,12 +5531,12 @@ }, { "argumentTypes": null, - "id": 2430, + "id": 2479, "name": "nonce", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2411, - "src": "3111:5:19", + "referencedDeclaration": 2460, + "src": "3258:5:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5378,7 +5554,7 @@ "typeString": "bytes1" }, { - "typeIdentifier": "t_contract$_StateChannelModule_$2436", + "typeIdentifier": "t_contract$_StateChannelModule_$2485", "typeString": "contract StateChannelModule" }, { @@ -5404,18 +5580,18 @@ ], "expression": { "argumentTypes": null, - "id": 2417, + "id": 2466, "name": "abi", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2585, - "src": "3039:3:19", + "referencedDeclaration": 2641, + "src": "3186:3:19", "typeDescriptions": { "typeIdentifier": "t_magic_abi", "typeString": "abi" } }, - "id": 2418, + "id": 2467, "isConstant": false, "isLValue": false, "isPure": true, @@ -5423,13 +5599,13 @@ "memberName": "encodePacked", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "3039:16:19", + "src": "3186:16:19", "typeDescriptions": { "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$", "typeString": "function () pure returns (bytes memory)" } }, - "id": 2431, + "id": 2480, "isConstant": false, "isLValue": false, "isPure": false, @@ -5437,7 +5613,7 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3039:78:19", + "src": "3186:78:19", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -5451,18 +5627,18 @@ "typeString": "bytes memory" } ], - "id": 2416, + "id": 2465, "name": "keccak256", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2592, - "src": "3029:9:19", + "referencedDeclaration": 2648, + "src": "3176:9:19", "typeDescriptions": { "typeIdentifier": "t_function_sha3_pure$__$returns$_t_bytes32_$", "typeString": "function () pure returns (bytes32)" } }, - "id": 2432, + "id": 2481, "isConstant": false, "isLValue": false, "isPure": false, @@ -5470,21 +5646,21 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "3029:89:19", + "src": "3176:89:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" } }, - "functionReturnParameters": 2415, - "id": 2433, + "functionReturnParameters": 2464, + "id": 2482, "nodeType": "Return", - "src": "3022:96:19" + "src": "3169:96:19" } ] }, "documentation": "@dev Returns hash to be signed by owners.\n @param to Destination address.\n @param value Ether value.\n @param data Data payload.\n @param operation Operation type.\n @param nonce Transaction nonce.\n @return Transaction hash.", - "id": 2435, + "id": 2484, "implemented": true, "isConstructor": false, "isDeclaredConst": true, @@ -5492,16 +5668,16 @@ "name": "getTransactionHash", "nodeType": "FunctionDefinition", "parameters": { - "id": 2412, + "id": 2461, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2403, + "id": 2452, "name": "to", "nodeType": "VariableDeclaration", - "scope": 2435, - "src": "2833:10:19", + "scope": 2484, + "src": "2980:10:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5509,10 +5685,10 @@ "typeString": "address" }, "typeName": { - "id": 2402, + "id": 2451, "name": "address", "nodeType": "ElementaryTypeName", - "src": "2833:7:19", + "src": "2980:7:19", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -5523,11 +5699,11 @@ }, { "constant": false, - "id": 2405, + "id": 2454, "name": "value", "nodeType": "VariableDeclaration", - "scope": 2435, - "src": "2854:13:19", + "scope": 2484, + "src": "3001:13:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5535,10 +5711,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2404, + "id": 2453, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2854:7:19", + "src": "3001:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5549,11 +5725,11 @@ }, { "constant": false, - "id": 2407, + "id": 2456, "name": "data", "nodeType": "VariableDeclaration", - "scope": 2435, - "src": "2878:10:19", + "scope": 2484, + "src": "3025:10:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5561,10 +5737,10 @@ "typeString": "bytes" }, "typeName": { - "id": 2406, + "id": 2455, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "2878:5:19", + "src": "3025:5:19", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -5575,11 +5751,11 @@ }, { "constant": false, - "id": 2409, + "id": 2458, "name": "operation", "nodeType": "VariableDeclaration", - "scope": 2435, - "src": "2899:24:19", + "scope": 2484, + "src": "3046:24:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5588,11 +5764,11 @@ }, "typeName": { "contractScope": null, - "id": 2408, + "id": 2457, "name": "Enum.Operation", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 29, - "src": "2899:14:19", + "src": "3046:14:19", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -5603,11 +5779,11 @@ }, { "constant": false, - "id": 2411, + "id": 2460, "name": "nonce", "nodeType": "VariableDeclaration", - "scope": 2435, - "src": "2934:13:19", + "scope": 2484, + "src": "3081:13:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5615,10 +5791,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2410, + "id": 2459, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "2934:7:19", + "src": "3081:7:19", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -5628,20 +5804,20 @@ "visibility": "internal" } ], - "src": "2823:130:19" + "src": "2970:130:19" }, "payable": false, "returnParameters": { - "id": 2415, + "id": 2464, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2414, + "id": 2463, "name": "", "nodeType": "VariableDeclaration", - "scope": 2435, - "src": "2999:7:19", + "scope": 2484, + "src": "3146:7:19", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -5649,10 +5825,10 @@ "typeString": "bytes32" }, "typeName": { - "id": 2413, + "id": 2462, "name": "bytes32", "nodeType": "ElementaryTypeName", - "src": "2999:7:19", + "src": "3146:7:19", "typeDescriptions": { "typeIdentifier": "t_bytes32", "typeString": "bytes32" @@ -5662,20 +5838,20 @@ "visibility": "internal" } ], - "src": "2998:9:19" + "src": "3145:9:19" }, - "scope": 2436, - "src": "2796:329:19", + "scope": 2485, + "src": "2943:329:19", "stateMutability": "view", "superFunction": null, "visibility": "public" } ], - "scope": 2437, - "src": "269:2858:19" + "scope": 2486, + "src": "269:3005:19" } ], - "src": "0:3128:19" + "src": "0:3275:19" }, "compiler": { "name": "solc", @@ -5685,22 +5861,16 @@ "4": { "events": {}, "links": {}, - "address": "0x8790f40ca24d228e6b81870eea3a67f4dc607035", - "transactionHash": "0x6ddc49abc9c794831925c1069990a2074a9700e60084596eef8e43a16c226be2" - }, - "1527316019334": { - "events": {}, - "links": {}, - "address": "0x529daa14f15a5933ca1eccb5ddc077bb4c5c3e1e", - "transactionHash": "0x22f672e547fdb05f8c0c62f8f442864b8f3b650302c22409a90cb7f64adb6fd6" + "address": "0x150afab1d4c9deb45b9009244eed9ba852f9f34c", + "transactionHash": "0x2f4a4207220d01673bdb674fd6631d370dc249066687c8c5d09d04312e8a3840" }, "1527420696956": { "events": {}, "links": {}, - "address": "0xef54fbda842be606286a8cfa51632312bc605b7d", - "transactionHash": "0x7f30a995aef0c0cf18b0ec902dde55e53b6ffd35610b06b23136ca628e430373" + "address": "0x36548eaaea06b7d2c55d596cc9ba1ecd4867e97c", + "transactionHash": "0xad5ee4c64c0071c994cfd5dfd5158880ef6449ca7dd8fde4e8c262501758aa4c" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-27T11:31:46.242Z" + "updatedAt": "2018-05-28T06:08:59.474Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/WhitelistModule.json b/safe-contracts/build/contracts/WhitelistModule.json index dc00657600..e852e85bc2 100644 --- a/safe-contracts/build/contracts/WhitelistModule.json +++ b/safe-contracts/build/contracts/WhitelistModule.json @@ -146,24 +146,24 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b50610c78806100206000396000f300608060405260043610610099576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632f2f3be11461009e5780633af32abf14610149578063481c6a75146101a45780637de7edef146101fb5780638ab1d6811461023e578063a3f4df7e14610281578063bd5b853b14610311578063e43252d714610377578063ffa1ad74146103ba575b600080fd5b3480156100aa57600080fd5b5061012f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061044a565b604051808215151515815260200191505060405180910390f35b34801561015557600080fd5b5061018a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061073d565b604051808215151515815260200191505060405180910390f35b3480156101b057600080fd5b506101b961075d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561020757600080fd5b5061023c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610783565b005b34801561024a57600080fd5b5061027f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610848565b005b34801561028d57600080fd5b50610296610957565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102d65780820151818401526020810190506102bb565b50505050905090810190601f1680156103035780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561031d57600080fd5b5061037560048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050610990565b005b34801561038357600080fd5b506103b8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a53565b005b3480156103c657600080fd5b506103cf610b89565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561040f5780820151818401526020810190506103f4565b50505050905090810190601f16801561043c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561050957600080fd5b505af115801561051d573d6000803e3d6000fd5b505050506040513d602081101561053357600080fd5b8101908080519060200190929190505050151561054f57600080fd5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156105a757600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a785858560006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200183600281111561066157fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b838110156106a1578082015181840152602081019050610686565b50505050905090810190601f1680156106ce5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b1580156106f057600080fd5b505af1158015610704573d6000803e3d6000fd5b505050506040513d602081101561071a57600080fd5b8101908080519060200190929190505050151561073657600080fd5b9392505050565b60026020528060005260406000206000915054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156107df57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561080557600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156108a457600080fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156108fc57600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6040805190810160405280601081526020017f57686974656c697374204d6f64756c650000000000000000000000000000000081525081565b60008061099b610bc2565b600091505b8251821015610a4e5782828151811015156109b757fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff16141515156109e957600080fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555081806001019250506109a0565b505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610aaf57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610ad557600080fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610b2e57600080fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610c0957600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505600a165627a7a72305820a2e4acc18c7392c4cdfa06bb162c1c255b8fd38cb3756ecc9215b556928a15c10029", - "deployedBytecode": "0x608060405260043610610099576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632f2f3be11461009e5780633af32abf14610149578063481c6a75146101a45780637de7edef146101fb5780638ab1d6811461023e578063a3f4df7e14610281578063bd5b853b14610311578063e43252d714610377578063ffa1ad74146103ba575b600080fd5b3480156100aa57600080fd5b5061012f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061044a565b604051808215151515815260200191505060405180910390f35b34801561015557600080fd5b5061018a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061073d565b604051808215151515815260200191505060405180910390f35b3480156101b057600080fd5b506101b961075d565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561020757600080fd5b5061023c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610783565b005b34801561024a57600080fd5b5061027f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610848565b005b34801561028d57600080fd5b50610296610957565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102d65780820151818401526020810190506102bb565b50505050905090810190601f1680156103035780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561031d57600080fd5b5061037560048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050610990565b005b34801561038357600080fd5b506103b8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a53565b005b3480156103c657600080fd5b506103cf610b89565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561040f5780820151818401526020810190506103f4565b50505050905090810190601f16801561043c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561050957600080fd5b505af115801561051d573d6000803e3d6000fd5b505050506040513d602081101561053357600080fd5b8101908080519060200190929190505050151561054f57600080fd5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156105a757600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a785858560006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200183600281111561066157fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b838110156106a1578082015181840152602081019050610686565b50505050905090810190601f1680156106ce5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b1580156106f057600080fd5b505af1158015610704573d6000803e3d6000fd5b505050506040513d602081101561071a57600080fd5b8101908080519060200190929190505050151561073657600080fd5b9392505050565b60026020528060005260406000206000915054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156107df57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff161415151561080557600080fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156108a457600080fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156108fc57600080fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6040805190810160405280601081526020017f57686974656c697374204d6f64756c650000000000000000000000000000000081525081565b60008061099b610bc2565b600091505b8251821015610a4e5782828151811015156109b757fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff16141515156109e957600080fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555081806001019250506109a0565b505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610aaf57600080fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610ad557600080fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515610b2e57600080fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610c0957600080fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505600a165627a7a72305820a2e4acc18c7392c4cdfa06bb162c1c255b8fd38cb3756ecc9215b556928a15c10029", - "sourceMap": "289:1968:20:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;289:1968:20;;;;;;;", - "deployedSourceMap": "289:1968:20:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1864:391;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1864:391:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;498:46;;8:9:-1;5:2;;;30:1;27;20:12;5:2;498:46:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;262:28:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;262:28:7;;;;;;;;;;;;;;;;;;;;;;;;;;;626:208:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:208:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;1438:172:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1438:172:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;331:48;;8:9:-1;5:2;;;30:1;27;20:12;5:2;331:48:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;331:48:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;667:270;;8:9:-1;5:2;;;30:1;27;20:12;5:2;667:270:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1086:198;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1086:198:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;385:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;385:40:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;385:40:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1864:391;1963:4;2093:7;;;;;;;;;;;2080:29;;;2110:10;2080:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2080:41:20;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2080:41:20;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2080:41:20;;;;;;;;;;;;;;;;2072:50;;;;;;;;2140:13;:17;2154:2;2140:17;;;;;;;;;;;;;;;;;;;;;;;;;2132:26;;;;;;;;2176:7;;;;;;;;;;;:33;;;2210:2;2214:5;2221:4;2227:19;2176:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;2176:71:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2176:71:20;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2176:71:20;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2176:71:20;;;;;;;;;;;;;;;;2168:80;;;;;;;;1864:391;;;;;:::o;498:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;262:28:7:-;;;;;;;;;;;;;:::o;626:208:5:-;359:7:7;;;;;;;;;;;337:30;;:10;:30;;;329:39;;;;;;;;791:1:5;776:11;:16;;;;768:25;;;;;;;;816:11;803:10;;:24;;;;;;;;;;;;;;;;;;626:208;:::o;1438:172:20:-;359:7:7;;;;;;;;;;;337:30;;:10;:30;;;329:39;;;;;;;;1540:13:20;:22;1554:7;1540:22;;;;;;;;;;;;;;;;;;;;;;;;;1532:31;;;;;;;;1598:5;1573:13;:22;1587:7;1573:22;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;1438:172;:::o;331:48::-;;;;;;;;;;;;;;;;;;;;:::o;667:270::-;758:9;813:15;731:12;:10;:12::i;:::-;770:1;758:13;;753:178;777:8;:15;773:1;:19;753:178;;;831:8;840:1;831:11;;;;;;;;;;;;;;;;;;813:29;;875:1;864:7;:12;;;;856:21;;;;;;;;916:4;891:13;:22;905:7;891:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;794:3;;;;;;;753:178;;;667:270;;;:::o;1086:198::-;359:7:7;;;;;;;;;;;337:30;;:10;:30;;;329:39;;;;;;;;1194:1:20;1183:7;:12;;;;1175:21;;;;;;;;1215:13;:22;1229:7;1215:22;;;;;;;;;;;;;;;;;;;;;;;;;1214:23;1206:32;;;;;;;;1273:4;1248:13;:22;1262:7;1248:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;1086:198;:::o;385:40::-;;;;;;;;;;;;;;;;;;;;:::o;392:268:7:-;606:1;594:7;;;;;;;;;;;586:21;;;578:30;;;;;;;;642:10;618:7;;:35;;;;;;;;;;;;;;;;;;392:268::o", - "source": "pragma solidity 0.4.24;\nimport \"../Enum.sol\";\nimport \"../Module.sol\";\nimport \"../ModuleManager.sol\";\nimport \"../OwnerManager.sol\";\n\n\n/// @title Whitelist Module - Allows to execute transactions to whitelisted addresses without confirmations.\n/// @author Stefan George - \ncontract WhitelistModule is Module {\n\n string public constant NAME = \"Whitelist Module\";\n string public constant VERSION = \"0.0.1\";\n\n // isWhitelisted mapping maps destination address to boolean.\n mapping (address => bool) public isWhitelisted;\n\n /// @dev Setup function sets initial storage of contract.\n /// @param accounts List of whitelisted accounts.\n function setup(address[] accounts)\n public\n {\n setManager();\n for (uint256 i = 0; i < accounts.length; i++) {\n address account = accounts[i];\n require(account != 0);\n isWhitelisted[account] = true;\n }\n }\n\n /// @dev Allows to add destination to whitelist. This can only be done via a Safe transaction.\n /// @param account Destination address.\n function addToWhitelist(address account)\n public\n authorized\n {\n require(account != 0);\n require(!isWhitelisted[account]);\n isWhitelisted[account] = true;\n }\n\n /// @dev Allows to remove destination from whitelist. This can only be done via a Safe transaction.\n /// @param account Destination address.\n function removeFromWhitelist(address account)\n public\n authorized\n {\n require(isWhitelisted[account]);\n isWhitelisted[account] = false;\n }\n\n /// @dev Returns if Safe transaction is to a whitelisted destination.\n /// @param to Whitelisted destination address.\n /// @param value Not checked.\n /// @param data Not checked.\n /// @return Returns if transaction can be executed.\n function executeWhitelisted(address to, uint256 value, bytes data)\n public\n returns (bool)\n {\n // Only Safe owners are allowed to execute transactions to whitelisted accounts.\n require(OwnerManager(manager).isOwner(msg.sender));\n require(isWhitelisted[to]);\n require(manager.execTransactionFromModule(to, value, data, Enum.Operation.Call));\n }\n}\n", + "bytecode": "0x608060405234801561001057600080fd5b50611248806100206000396000f300608060405260043610610099576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632f2f3be11461009e5780633af32abf14610149578063481c6a75146101a45780637de7edef146101fb5780638ab1d6811461023e578063a3f4df7e14610281578063bd5b853b14610311578063e43252d714610377578063ffa1ad74146103ba575b600080fd5b3480156100aa57600080fd5b5061012f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061044a565b604051808215151515815260200191505060405180910390f35b34801561015557600080fd5b5061018a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506108c4565b604051808215151515815260200191505060405180910390f35b3480156101b057600080fd5b506101b96108e4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561020757600080fd5b5061023c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061090a565b005b34801561024a57600080fd5b5061027f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610aed565b005b34801561028d57600080fd5b50610296610cf4565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102d65780820151818401526020810190506102bb565b50505050905090810190601f1680156103035780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561031d57600080fd5b5061037560048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050610d2d565b005b34801561038357600080fd5b506103b8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e59565b005b3480156103c657600080fd5b506103cf6110f0565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561040f5780820151818401526020810190506103f4565b50505050905090810190601f16801561043c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561050957600080fd5b505af115801561051d573d6000803e3d6000fd5b505050506040513d602081101561053357600080fd5b810190808051906020019092919050505015156105de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f4d6574686f642063616e206f6e6c792062652063616c6c656420627920616e2081526020017f6f776e657200000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156106c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f546172676574206163636f756e74206973206e6f742077686974656c6973746581526020017f640000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a785858560006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200183600281111561077f57fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b838110156107bf5780820151818401526020810190506107a4565b50505050905090810190601f1680156107ec5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15801561080e57600080fd5b505af1158015610822573d6000803e3d6000fd5b505050506040513d602081101561083857600080fd5b810190808051906020019092919050505015156108bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f436f756c64206e6f742065786563757465207472616e73616374696f6e00000081525060200191505060405180910390fd5b9392505050565b60026020528060005260406000206000915054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156109f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206d81526020017f616e61676572000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610aaa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f496e76616c6964206d617374657220636f707920616464726573732070726f7681526020017f696465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610bd8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206d81526020017f616e61676572000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610c99576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f4163636f756e74206973206e6f742077686974656c697374656400000000000081525060200191505060405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6040805190810160405280601081526020017f57686974656c697374204d6f64756c650000000000000000000000000000000081525081565b600080610d38611129565b600091505b8251821015610e54578282815181101515610d5457fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff1614151515610def576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f496e76616c6964206163636f756e742070726f7669646564000000000000000081525060200191505060405180910390fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508180600101925050610d3d565b505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610f44576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206d81526020017f616e61676572000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610fd3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f496e76616c6964206163636f756e742070726f7669646564000000000000000081525060200191505060405180910390fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515611095576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f4163636f756e7420697320616c72656164792077686974656c6973746564000081525060200191505060405180910390fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156111d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4d616e616765722068617320616c7265616479206265656e207365740000000081525060200191505060405180910390fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505600a165627a7a72305820f1cf02fadc29a305d77859a993b36d76fd1e81179c7d76dcd7c94ab25793e5ae0029", + "deployedBytecode": "0x608060405260043610610099576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632f2f3be11461009e5780633af32abf14610149578063481c6a75146101a45780637de7edef146101fb5780638ab1d6811461023e578063a3f4df7e14610281578063bd5b853b14610311578063e43252d714610377578063ffa1ad74146103ba575b600080fd5b3480156100aa57600080fd5b5061012f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f016020809104026020016040519081016040528093929190818152602001838380828437820191505050505050919291929050505061044a565b604051808215151515815260200191505060405180910390f35b34801561015557600080fd5b5061018a600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506108c4565b604051808215151515815260200191505060405180910390f35b3480156101b057600080fd5b506101b96108e4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561020757600080fd5b5061023c600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061090a565b005b34801561024a57600080fd5b5061027f600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610aed565b005b34801561028d57600080fd5b50610296610cf4565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102d65780820151818401526020810190506102bb565b50505050905090810190601f1680156103035780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561031d57600080fd5b5061037560048036038101908080359060200190820180359060200190808060200260200160405190810160405280939291908181526020018383602002808284378201915050505050509192919290505050610d2d565b005b34801561038357600080fd5b506103b8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610e59565b005b3480156103c657600080fd5b506103cf6110f0565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561040f5780820151818401526020810190506103f4565b50505050905090810190601f16801561043c5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632f54bf6e336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801561050957600080fd5b505af115801561051d573d6000803e3d6000fd5b505050506040513d602081101561053357600080fd5b810190808051906020019092919050505015156105de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f4d6574686f642063616e206f6e6c792062652063616c6c656420627920616e2081526020017f6f776e657200000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615156106c5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f546172676574206163636f756e74206973206e6f742077686974656c6973746581526020017f640000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663468721a785858560006040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018060200183600281111561077f57fe5b60ff168152602001828103825284818151815260200191508051906020019080838360005b838110156107bf5780820151818401526020810190506107a4565b50505050905090810190601f1680156107ec5780820380516001836020036101000a031916815260200191505b5095505050505050602060405180830381600087803b15801561080e57600080fd5b505af1158015610822573d6000803e3d6000fd5b505050506040513d602081101561083857600080fd5b810190808051906020019092919050505015156108bd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f436f756c64206e6f742065786563757465207472616e73616374696f6e00000081525060200191505060405180910390fd5b9392505050565b60026020528060005260406000206000915054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156109f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206d81526020017f616e61676572000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610aaa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001807f496e76616c6964206d617374657220636f707920616464726573732070726f7681526020017f696465640000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610bd8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206d81526020017f616e61676572000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515610c99576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f4163636f756e74206973206e6f742077686974656c697374656400000000000081525060200191505060405180910390fd5b6000600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6040805190810160405280601081526020017f57686974656c697374204d6f64756c650000000000000000000000000000000081525081565b600080610d38611129565b600091505b8251821015610e54578282815181101515610d5457fe5b90602001906020020151905060008173ffffffffffffffffffffffffffffffffffffffff1614151515610def576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f496e76616c6964206163636f756e742070726f7669646564000000000000000081525060200191505060405180910390fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508180600101925050610d3d565b505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610f44576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001807f4d6574686f642063616e206f6e6c792062652063616c6c65642066726f6d206d81526020017f616e61676572000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60008173ffffffffffffffffffffffffffffffffffffffff1614151515610fd3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260188152602001807f496e76616c6964206163636f756e742070726f7669646564000000000000000081525060200191505060405180910390fd5b600260008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151515611095576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f4163636f756e7420697320616c72656164792077686974656c6973746564000081525060200191505060405180910390fd5b6001600260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6040805190810160405280600581526020017f302e302e3100000000000000000000000000000000000000000000000000000081525081565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415156111d9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4d616e616765722068617320616c7265616479206265656e207365740000000081525060200191505060405180910390fd5b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505600a165627a7a72305820f1cf02fadc29a305d77859a993b36d76fd1e81179c7d76dcd7c94ab25793e5ae0029", + "sourceMap": "289:2199:20:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;289:2199:20;;;;;;;", + "deployedSourceMap": "289:2199:20:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1984:502;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1984:502:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;498:46;;8:9:-1;5:2;;;30:1;27;20:12;5:2;498:46:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;262:28:7;;8:9:-1;5:2;;;30:1;27;20:12;5:2;262:28:7;;;;;;;;;;;;;;;;;;;;;;;;;;;626:248:5;;8:9:-1;5:2;;;30:1;27;20:12;5:2;626:248:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;1528:202:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1528:202:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;331:48;;8:9:-1;5:2;;;30:1;27;20:12;5:2;331:48:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;331:48:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;667:298;;8:9:-1;5:2;;;30:1;27;20:12;5:2;667:298:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1114:260;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1114:260:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;385:40;;8:9:-1;5:2;;;30:1;27;20:12;5:2;385:40:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;385:40:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1984:502;2083:4;2213:7;;;;;;;;;;;2200:29;;;2230:10;2200:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2200:41:20;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2200:41:20;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2200:41:20;;;;;;;;;;;;;;;;2192:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2301:13;:17;2315:2;2301:17;;;;;;;;;;;;;;;;;;;;;;;;;2293:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2374:7;;;;;;;;;;;:33;;;2408:2;2412:5;2419:4;2425:19;2374:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;2374:71:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2374:71:20;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2374:71:20;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2374:71:20;;;;;;;;;;;;;;;;2366:113;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1984:502;;;;;:::o;498:46::-;;;;;;;;;;;;;;;;;;;;;;:::o;262:28:7:-;;;;;;;;;;;;;:::o;626:248:5:-;359:7:7;;;;;;;;;;;337:30;;:10;:30;;;329:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;791:1:5;776:11;:16;;;;768:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;856:11;843:10;;:24;;;;;;;;;;;;;;;;;;626:248;:::o;1528:202:20:-;359:7:7;;;;;;;;;;;337:30;;:10;:30;;;329:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1630:13:20;:22;1644:7;1630:22;;;;;;;;;;;;;;;;;;;;;;;;;1622:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1718:5;1693:13;:22;1707:7;1693:22;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;1528:202;:::o;331:48::-;;;;;;;;;;;;;;;;;;;;:::o;667:298::-;758:9;813:15;731:12;:10;:12::i;:::-;770:1;758:13;;753:206;777:8;:15;773:1;:19;753:206;;;831:8;840:1;831:11;;;;;;;;;;;;;;;;;;813:29;;875:1;864:7;:12;;;;856:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;944:4;919:13;:22;933:7;919:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;794:3;;;;;;;753:206;;;667:298;;;:::o;1114:260::-;359:7:7;;;;;;;;;;;337:30;;:10;:30;;;329:81;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1222:1:20;1211:7;:12;;;;1203:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1271:13;:22;1285:7;1271:22;;;;;;;;;;;;;;;;;;;;;;;;;1270:23;1262:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1363:4;1338:13;:22;1352:7;1338:22;;;;;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;1114:260;:::o;385:40::-;;;;;;;;;;;;;;;;;;;;:::o;434:300:7:-;648:1;636:7;;;;;;;;;;;628:21;;;620:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;716:10;692:7;;:35;;;;;;;;;;;;;;;;;;434:300::o", + "source": "pragma solidity 0.4.24;\nimport \"../Enum.sol\";\nimport \"../Module.sol\";\nimport \"../ModuleManager.sol\";\nimport \"../OwnerManager.sol\";\n\n\n/// @title Whitelist Module - Allows to execute transactions to whitelisted addresses without confirmations.\n/// @author Stefan George - \ncontract WhitelistModule is Module {\n\n string public constant NAME = \"Whitelist Module\";\n string public constant VERSION = \"0.0.1\";\n\n // isWhitelisted mapping maps destination address to boolean.\n mapping (address => bool) public isWhitelisted;\n\n /// @dev Setup function sets initial storage of contract.\n /// @param accounts List of whitelisted accounts.\n function setup(address[] accounts)\n public\n {\n setManager();\n for (uint256 i = 0; i < accounts.length; i++) {\n address account = accounts[i];\n require(account != 0, \"Invalid account provided\");\n isWhitelisted[account] = true;\n }\n }\n\n /// @dev Allows to add destination to whitelist. This can only be done via a Safe transaction.\n /// @param account Destination address.\n function addToWhitelist(address account)\n public\n authorized\n {\n require(account != 0, \"Invalid account provided\");\n require(!isWhitelisted[account], \"Account is already whitelisted\");\n isWhitelisted[account] = true;\n }\n\n /// @dev Allows to remove destination from whitelist. This can only be done via a Safe transaction.\n /// @param account Destination address.\n function removeFromWhitelist(address account)\n public\n authorized\n {\n require(isWhitelisted[account], \"Account is not whitelisted\");\n isWhitelisted[account] = false;\n }\n\n /// @dev Returns if Safe transaction is to a whitelisted destination.\n /// @param to Whitelisted destination address.\n /// @param value Not checked.\n /// @param data Not checked.\n /// @return Returns if transaction can be executed.\n function executeWhitelisted(address to, uint256 value, bytes data)\n public\n returns (bool)\n {\n // Only Safe owners are allowed to execute transactions to whitelisted accounts.\n require(OwnerManager(manager).isOwner(msg.sender), \"Method can only be called by an owner\");\n require(isWhitelisted[to], \"Target account is not whitelisted\");\n require(manager.execTransactionFromModule(to, value, data, Enum.Operation.Call), \"Could not execute transaction\");\n }\n}\n", "sourcePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/WhitelistModule.sol", "ast": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/WhitelistModule.sol", "exportedSymbols": { "WhitelistModule": [ - 2583 + 2639 ] }, - "id": 2584, + "id": 2640, "nodeType": "SourceUnit", "nodes": [ { - "id": 2438, + "id": 2487, "literals": [ "solidity", "0.4", @@ -175,9 +175,9 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Enum.sol", "file": "../Enum.sol", - "id": 2439, + "id": 2488, "nodeType": "ImportDirective", - "scope": 2584, + "scope": 2640, "sourceUnit": 31, "src": "24:21:20", "symbolAliases": [], @@ -186,10 +186,10 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "file": "../Module.sol", - "id": 2440, + "id": 2489, "nodeType": "ImportDirective", - "scope": 2584, - "sourceUnit": 751, + "scope": 2640, + "sourceUnit": 763, "src": "46:23:20", "symbolAliases": [], "unitAlias": "" @@ -197,10 +197,10 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ModuleManager.sol", "file": "../ModuleManager.sol", - "id": 2441, + "id": 2490, "nodeType": "ImportDirective", - "scope": 2584, - "sourceUnit": 1101, + "scope": 2640, + "sourceUnit": 1119, "src": "70:30:20", "symbolAliases": [], "unitAlias": "" @@ -208,10 +208,10 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", "file": "../OwnerManager.sol", - "id": 2442, + "id": 2491, "nodeType": "ImportDirective", - "scope": 2584, - "sourceUnit": 1473, + "scope": 2640, + "sourceUnit": 1505, "src": "101:29:20", "symbolAliases": [], "unitAlias": "" @@ -222,45 +222,45 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 2443, + "id": 2492, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 750, + "referencedDeclaration": 762, "src": "317:6:20", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } }, - "id": 2444, + "id": 2493, "nodeType": "InheritanceSpecifier", "src": "317:6:20" } ], "contractDependencies": [ - 652, - 750, - 1619 + 662, + 762, + 1654 ], "contractKind": "contract", "documentation": "@title Whitelist Module - Allows to execute transactions to whitelisted addresses without confirmations.\n @author Stefan George - ", "fullyImplemented": true, - "id": 2583, + "id": 2639, "linearizedBaseContracts": [ - 2583, - 750, - 652, - 1619 + 2639, + 762, + 662, + 1654 ], "name": "WhitelistModule", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, - "id": 2447, + "id": 2496, "name": "NAME", "nodeType": "VariableDeclaration", - "scope": 2583, + "scope": 2639, "src": "331:48:20", "stateVariable": true, "storageLocation": "default", @@ -269,7 +269,7 @@ "typeString": "string" }, "typeName": { - "id": 2445, + "id": 2494, "name": "string", "nodeType": "ElementaryTypeName", "src": "331:6:20", @@ -281,7 +281,7 @@ "value": { "argumentTypes": null, "hexValue": "57686974656c697374204d6f64756c65", - "id": 2446, + "id": 2495, "isConstant": false, "isLValue": false, "isPure": true, @@ -300,10 +300,10 @@ }, { "constant": true, - "id": 2450, + "id": 2499, "name": "VERSION", "nodeType": "VariableDeclaration", - "scope": 2583, + "scope": 2639, "src": "385:40:20", "stateVariable": true, "storageLocation": "default", @@ -312,7 +312,7 @@ "typeString": "string" }, "typeName": { - "id": 2448, + "id": 2497, "name": "string", "nodeType": "ElementaryTypeName", "src": "385:6:20", @@ -324,7 +324,7 @@ "value": { "argumentTypes": null, "hexValue": "302e302e31", - "id": 2449, + "id": 2498, "isConstant": false, "isLValue": false, "isPure": true, @@ -343,10 +343,10 @@ }, { "constant": false, - "id": 2454, + "id": 2503, "name": "isWhitelisted", "nodeType": "VariableDeclaration", - "scope": 2583, + "scope": 2639, "src": "498:46:20", "stateVariable": true, "storageLocation": "default", @@ -355,9 +355,9 @@ "typeString": "mapping(address => bool)" }, "typeName": { - "id": 2453, + "id": 2502, "keyType": { - "id": 2451, + "id": 2500, "name": "address", "nodeType": "ElementaryTypeName", "src": "507:7:20", @@ -373,7 +373,7 @@ "typeString": "mapping(address => bool)" }, "valueType": { - "id": 2452, + "id": 2501, "name": "bool", "nodeType": "ElementaryTypeName", "src": "518:4:20", @@ -388,9 +388,9 @@ }, { "body": { - "id": 2494, + "id": 2544, "nodeType": "Block", - "src": "721:216:20", + "src": "721:244:20", "statements": [ { "expression": { @@ -398,18 +398,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 2460, + "id": 2509, "name": "setManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 749, + "referencedDeclaration": 761, "src": "731:10:20", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 2461, + "id": 2510, "isConstant": false, "isLValue": false, "isPure": false, @@ -423,27 +423,27 @@ "typeString": "tuple()" } }, - "id": 2462, + "id": 2511, "nodeType": "ExpressionStatement", "src": "731:12:20" }, { "body": { - "id": 2492, + "id": 2542, "nodeType": "Block", - "src": "799:132:20", + "src": "799:160:20", "statements": [ { "assignments": [ - 2475 + 2524 ], "declarations": [ { "constant": false, - "id": 2475, + "id": 2524, "name": "account", "nodeType": "VariableDeclaration", - "scope": 2495, + "scope": 2545, "src": "813:15:20", "stateVariable": false, "storageLocation": "default", @@ -452,7 +452,7 @@ "typeString": "address" }, "typeName": { - "id": 2474, + "id": 2523, "name": "address", "nodeType": "ElementaryTypeName", "src": "813:7:20", @@ -465,30 +465,30 @@ "visibility": "internal" } ], - "id": 2479, + "id": 2528, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2476, + "id": 2525, "name": "accounts", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2457, + "referencedDeclaration": 2506, "src": "831:8:20", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 2478, + "id": 2527, "indexExpression": { "argumentTypes": null, - "id": 2477, + "id": 2526, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2464, + "referencedDeclaration": 2513, "src": "840:1:20", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -519,18 +519,18 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 2483, + "id": 2532, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2481, + "id": 2530, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2475, + "referencedDeclaration": 2524, "src": "864:7:20", "typeDescriptions": { "typeIdentifier": "t_address", @@ -542,7 +542,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 2482, + "id": 2531, "isConstant": false, "isLValue": false, "isPure": true, @@ -562,6 +562,24 @@ "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "496e76616c6964206163636f756e742070726f7669646564", + "id": 2533, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "878:26:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_da3a197794c99763c55550690a7eddbab5a672fb560947793aaf405a2b5f9490", + "typeString": "literal_string \"Invalid account provided\"" + }, + "value": "Invalid account provided" } ], "expression": { @@ -569,23 +587,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_da3a197794c99763c55550690a7eddbab5a672fb560947793aaf405a2b5f9490", + "typeString": "literal_string \"Invalid account provided\"" } ], - "id": 2480, + "id": 2529, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, + "referencedDeclaration": 2658, "src": "856:7:20", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 2484, + "id": 2534, "isConstant": false, "isLValue": false, "isPure": false, @@ -593,20 +615,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "856:21:20", + "src": "856:49:20", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2485, + "id": 2535, "nodeType": "ExpressionStatement", - "src": "856:21:20" + "src": "856:49:20" }, { "expression": { "argumentTypes": null, - "id": 2490, + "id": 2540, "isConstant": false, "isLValue": false, "isPure": false, @@ -615,26 +637,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2486, + "id": 2536, "name": "isWhitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2454, - "src": "891:13:20", + "referencedDeclaration": 2503, + "src": "919:13:20", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2488, + "id": 2538, "indexExpression": { "argumentTypes": null, - "id": 2487, + "id": 2537, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2475, - "src": "905:7:20", + "referencedDeclaration": 2524, + "src": "933:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -645,7 +667,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "891:22:20", + "src": "919:22:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -656,14 +678,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 2489, + "id": 2539, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "916:4:20", + "src": "944:4:20", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -671,15 +693,15 @@ }, "value": "true" }, - "src": "891:29:20", + "src": "919:29:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2491, + "id": 2541, "nodeType": "ExpressionStatement", - "src": "891:29:20" + "src": "919:29:20" } ] }, @@ -689,18 +711,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 2470, + "id": 2519, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2467, + "id": 2516, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2464, + "referencedDeclaration": 2513, "src": "773:1:20", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -713,18 +735,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2468, + "id": 2517, "name": "accounts", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2457, + "referencedDeclaration": 2506, "src": "777:8:20", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 2469, + "id": 2518, "isConstant": false, "isLValue": false, "isPure": false, @@ -744,18 +766,18 @@ "typeString": "bool" } }, - "id": 2493, + "id": 2543, "initializationExpression": { "assignments": [ - 2464 + 2513 ], "declarations": [ { "constant": false, - "id": 2464, + "id": 2513, "name": "i", "nodeType": "VariableDeclaration", - "scope": 2495, + "scope": 2545, "src": "758:9:20", "stateVariable": false, "storageLocation": "default", @@ -764,7 +786,7 @@ "typeString": "uint256" }, "typeName": { - "id": 2463, + "id": 2512, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "758:7:20", @@ -777,11 +799,11 @@ "visibility": "internal" } ], - "id": 2466, + "id": 2515, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 2465, + "id": 2514, "isConstant": false, "isLValue": false, "isPure": true, @@ -802,7 +824,7 @@ "loopExpression": { "expression": { "argumentTypes": null, - "id": 2472, + "id": 2521, "isConstant": false, "isLValue": false, "isPure": false, @@ -813,11 +835,11 @@ "src": "794:3:20", "subExpression": { "argumentTypes": null, - "id": 2471, + "id": 2520, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2464, + "referencedDeclaration": 2513, "src": "794:1:20", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -829,17 +851,17 @@ "typeString": "uint256" } }, - "id": 2473, + "id": 2522, "nodeType": "ExpressionStatement", "src": "794:3:20" }, "nodeType": "ForStatement", - "src": "753:178:20" + "src": "753:206:20" } ] }, "documentation": "@dev Setup function sets initial storage of contract.\n @param accounts List of whitelisted accounts.", - "id": 2495, + "id": 2545, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -847,15 +869,15 @@ "name": "setup", "nodeType": "FunctionDefinition", "parameters": { - "id": 2458, + "id": 2507, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2457, + "id": 2506, "name": "accounts", "nodeType": "VariableDeclaration", - "scope": 2495, + "scope": 2545, "src": "682:18:20", "stateVariable": false, "storageLocation": "default", @@ -865,7 +887,7 @@ }, "typeName": { "baseType": { - "id": 2455, + "id": 2504, "name": "address", "nodeType": "ElementaryTypeName", "src": "682:7:20", @@ -874,7 +896,7 @@ "typeString": "address" } }, - "id": 2456, + "id": 2505, "length": null, "nodeType": "ArrayTypeName", "src": "682:9:20", @@ -891,22 +913,22 @@ }, "payable": false, "returnParameters": { - "id": 2459, + "id": 2508, "nodeType": "ParameterList", "parameters": [], "src": "721:0:20" }, - "scope": 2583, - "src": "667:270:20", + "scope": 2639, + "src": "667:298:20", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2521, + "id": 2573, "nodeType": "Block", - "src": "1165:119:20", + "src": "1193:181:20", "statements": [ { "expression": { @@ -918,19 +940,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 2505, + "id": 2555, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2503, + "id": 2553, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2497, - "src": "1183:7:20", + "referencedDeclaration": 2547, + "src": "1211:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -941,14 +963,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 2504, + "id": 2554, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1194:1:20", + "src": "1222:1:20", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -956,11 +978,29 @@ }, "value": "0" }, - "src": "1183:12:20", + "src": "1211:12:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "496e76616c6964206163636f756e742070726f7669646564", + "id": 2556, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1225:26:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_da3a197794c99763c55550690a7eddbab5a672fb560947793aaf405a2b5f9490", + "typeString": "literal_string \"Invalid account provided\"" + }, + "value": "Invalid account provided" } ], "expression": { @@ -968,23 +1008,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_da3a197794c99763c55550690a7eddbab5a672fb560947793aaf405a2b5f9490", + "typeString": "literal_string \"Invalid account provided\"" } ], - "id": 2502, + "id": 2552, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "1175:7:20", + "referencedDeclaration": 2658, + "src": "1203:7:20", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 2506, + "id": 2557, "isConstant": false, "isLValue": false, "isPure": false, @@ -992,15 +1036,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1175:21:20", + "src": "1203:49:20", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2507, + "id": 2558, "nodeType": "ExpressionStatement", - "src": "1175:21:20" + "src": "1203:49:20" }, { "expression": { @@ -1008,7 +1052,7 @@ "arguments": [ { "argumentTypes": null, - "id": 2512, + "id": 2563, "isConstant": false, "isLValue": false, "isPure": false, @@ -1016,31 +1060,31 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "1214:23:20", + "src": "1270:23:20", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2509, + "id": 2560, "name": "isWhitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2454, - "src": "1215:13:20", + "referencedDeclaration": 2503, + "src": "1271:13:20", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2511, + "id": 2562, "indexExpression": { "argumentTypes": null, - "id": 2510, + "id": 2561, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2497, - "src": "1229:7:20", + "referencedDeclaration": 2547, + "src": "1285:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1051,7 +1095,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1215:22:20", + "src": "1271:22:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1061,6 +1105,24 @@ "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "4163636f756e7420697320616c72656164792077686974656c6973746564", + "id": 2564, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1295:32:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_42f0c01c0b06bc5e652009543318e4fd67cfba114702c7f55fad1ff0c3c82ad8", + "typeString": "literal_string \"Account is already whitelisted\"" + }, + "value": "Account is already whitelisted" } ], "expression": { @@ -1068,23 +1130,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_42f0c01c0b06bc5e652009543318e4fd67cfba114702c7f55fad1ff0c3c82ad8", + "typeString": "literal_string \"Account is already whitelisted\"" } ], - "id": 2508, + "id": 2559, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "1206:7:20", + "referencedDeclaration": 2658, + "src": "1262:7:20", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 2513, + "id": 2565, "isConstant": false, "isLValue": false, "isPure": false, @@ -1092,20 +1158,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1206:32:20", + "src": "1262:66:20", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2514, + "id": 2566, "nodeType": "ExpressionStatement", - "src": "1206:32:20" + "src": "1262:66:20" }, { "expression": { "argumentTypes": null, - "id": 2519, + "id": 2571, "isConstant": false, "isLValue": false, "isPure": false, @@ -1114,26 +1180,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2515, + "id": 2567, "name": "isWhitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2454, - "src": "1248:13:20", + "referencedDeclaration": 2503, + "src": "1338:13:20", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2517, + "id": 2569, "indexExpression": { "argumentTypes": null, - "id": 2516, + "id": 2568, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2497, - "src": "1262:7:20", + "referencedDeclaration": 2547, + "src": "1352:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1144,7 +1210,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1248:22:20", + "src": "1338:22:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1155,14 +1221,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 2518, + "id": 2570, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "1273:4:20", + "src": "1363:4:20", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -1170,57 +1236,57 @@ }, "value": "true" }, - "src": "1248:29:20", + "src": "1338:29:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2520, + "id": 2572, "nodeType": "ExpressionStatement", - "src": "1248:29:20" + "src": "1338:29:20" } ] }, "documentation": "@dev Allows to add destination to whitelist. This can only be done via a Safe transaction.\n @param account Destination address.", - "id": 2522, + "id": 2574, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 2500, + "id": 2550, "modifierName": { "argumentTypes": null, - "id": 2499, + "id": 2549, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 730, - "src": "1150:10:20", + "referencedDeclaration": 741, + "src": "1178:10:20", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1150:10:20" + "src": "1178:10:20" } ], "name": "addToWhitelist", "nodeType": "FunctionDefinition", "parameters": { - "id": 2498, + "id": 2548, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2497, + "id": 2547, "name": "account", "nodeType": "VariableDeclaration", - "scope": 2522, - "src": "1110:15:20", + "scope": 2574, + "src": "1138:15:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1228,10 +1294,10 @@ "typeString": "address" }, "typeName": { - "id": 2496, + "id": 2546, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1110:7:20", + "src": "1138:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1241,26 +1307,26 @@ "visibility": "internal" } ], - "src": "1109:17:20" + "src": "1137:17:20" }, "payable": false, "returnParameters": { - "id": 2501, + "id": 2551, "nodeType": "ParameterList", "parameters": [], - "src": "1165:0:20" + "src": "1193:0:20" }, - "scope": 2583, - "src": "1086:198:20", + "scope": 2639, + "src": "1114:260:20", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2541, + "id": 2594, "nodeType": "Block", - "src": "1522:88:20", + "src": "1612:118:20", "statements": [ { "expression": { @@ -1270,26 +1336,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2530, + "id": 2582, "name": "isWhitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2454, - "src": "1540:13:20", + "referencedDeclaration": 2503, + "src": "1630:13:20", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2532, + "id": 2584, "indexExpression": { "argumentTypes": null, - "id": 2531, + "id": 2583, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2524, - "src": "1554:7:20", + "referencedDeclaration": 2576, + "src": "1644:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1300,11 +1366,29 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1540:22:20", + "src": "1630:22:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "4163636f756e74206973206e6f742077686974656c6973746564", + "id": 2585, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1654:28:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_2f56605dd36b69a55672cdc762e8d3959c002a474a30a6774bba38bb65f718e1", + "typeString": "literal_string \"Account is not whitelisted\"" + }, + "value": "Account is not whitelisted" } ], "expression": { @@ -1312,23 +1396,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_2f56605dd36b69a55672cdc762e8d3959c002a474a30a6774bba38bb65f718e1", + "typeString": "literal_string \"Account is not whitelisted\"" } ], - "id": 2529, + "id": 2581, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "1532:7:20", + "referencedDeclaration": 2658, + "src": "1622:7:20", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 2533, + "id": 2586, "isConstant": false, "isLValue": false, "isPure": false, @@ -1336,20 +1424,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1532:31:20", + "src": "1622:61:20", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2534, + "id": 2587, "nodeType": "ExpressionStatement", - "src": "1532:31:20" + "src": "1622:61:20" }, { "expression": { "argumentTypes": null, - "id": 2539, + "id": 2592, "isConstant": false, "isLValue": false, "isPure": false, @@ -1358,26 +1446,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2535, + "id": 2588, "name": "isWhitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2454, - "src": "1573:13:20", + "referencedDeclaration": 2503, + "src": "1693:13:20", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2537, + "id": 2590, "indexExpression": { "argumentTypes": null, - "id": 2536, + "id": 2589, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2524, - "src": "1587:7:20", + "referencedDeclaration": 2576, + "src": "1707:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1388,7 +1476,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1573:22:20", + "src": "1693:22:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -1399,14 +1487,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "66616c7365", - "id": 2538, + "id": 2591, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "1598:5:20", + "src": "1718:5:20", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -1414,57 +1502,57 @@ }, "value": "false" }, - "src": "1573:30:20", + "src": "1693:30:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2540, + "id": 2593, "nodeType": "ExpressionStatement", - "src": "1573:30:20" + "src": "1693:30:20" } ] }, "documentation": "@dev Allows to remove destination from whitelist. This can only be done via a Safe transaction.\n @param account Destination address.", - "id": 2542, + "id": 2595, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 2527, + "id": 2579, "modifierName": { "argumentTypes": null, - "id": 2526, + "id": 2578, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 730, - "src": "1507:10:20", + "referencedDeclaration": 741, + "src": "1597:10:20", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1507:10:20" + "src": "1597:10:20" } ], "name": "removeFromWhitelist", "nodeType": "FunctionDefinition", "parameters": { - "id": 2525, + "id": 2577, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2524, + "id": 2576, "name": "account", "nodeType": "VariableDeclaration", - "scope": 2542, - "src": "1467:15:20", + "scope": 2595, + "src": "1557:15:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1472,10 +1560,10 @@ "typeString": "address" }, "typeName": { - "id": 2523, + "id": 2575, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1467:7:20", + "src": "1557:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1485,26 +1573,26 @@ "visibility": "internal" } ], - "src": "1466:17:20" + "src": "1556:17:20" }, "payable": false, "returnParameters": { - "id": 2528, + "id": 2580, "nodeType": "ParameterList", "parameters": [], - "src": "1522:0:20" + "src": "1612:0:20" }, - "scope": 2583, - "src": "1438:172:20", + "scope": 2639, + "src": "1528:202:20", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2581, + "id": 2637, "nodeType": "Block", - "src": "1973:282:20", + "src": "2093:393:20", "statements": [ { "expression": { @@ -1517,18 +1605,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2558, + "id": 2611, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2598, - "src": "2110:3:20", + "referencedDeclaration": 2654, + "src": "2230:3:20", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 2559, + "id": 2612, "isConstant": false, "isLValue": false, "isPure": false, @@ -1536,7 +1624,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2110:10:20", + "src": "2230:10:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1555,14 +1643,14 @@ "arguments": [ { "argumentTypes": null, - "id": 2555, + "id": 2608, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 717, - "src": "2093:7:20", + "referencedDeclaration": 727, + "src": "2213:7:20", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } } @@ -1570,22 +1658,22 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } ], - "id": 2554, + "id": 2607, "name": "OwnerManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1472, - "src": "2080:12:20", + "referencedDeclaration": 1504, + "src": "2200:12:20", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1472_$", + "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1504_$", "typeString": "type(contract OwnerManager)" } }, - "id": 2556, + "id": 2609, "isConstant": false, "isLValue": false, "isPure": false, @@ -1593,27 +1681,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2080:21:20", + "src": "2200:21:20", "typeDescriptions": { - "typeIdentifier": "t_contract$_OwnerManager_$1472", + "typeIdentifier": "t_contract$_OwnerManager_$1504", "typeString": "contract OwnerManager" } }, - "id": 2557, + "id": 2610, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "isOwner", "nodeType": "MemberAccess", - "referencedDeclaration": 1422, - "src": "2080:29:20", + "referencedDeclaration": 1454, + "src": "2200:29:20", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view external returns (bool)" } }, - "id": 2560, + "id": 2613, "isConstant": false, "isLValue": false, "isPure": false, @@ -1621,11 +1709,29 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2080:41:20", + "src": "2200:41:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "4d6574686f642063616e206f6e6c792062652063616c6c656420627920616e206f776e6572", + "id": 2614, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2243:39:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_4df072353ff501a1071e1cc3e2eb3ee0ebb21a35321efe90c0960bf2f4356640", + "typeString": "literal_string \"Method can only be called by an owner\"" + }, + "value": "Method can only be called by an owner" } ], "expression": { @@ -1633,23 +1739,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_4df072353ff501a1071e1cc3e2eb3ee0ebb21a35321efe90c0960bf2f4356640", + "typeString": "literal_string \"Method can only be called by an owner\"" } ], - "id": 2553, + "id": 2606, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "2072:7:20", + "referencedDeclaration": 2658, + "src": "2192:7:20", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 2561, + "id": 2615, "isConstant": false, "isLValue": false, "isPure": false, @@ -1657,15 +1767,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2072:50:20", + "src": "2192:91:20", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2562, + "id": 2616, "nodeType": "ExpressionStatement", - "src": "2072:50:20" + "src": "2192:91:20" }, { "expression": { @@ -1675,26 +1785,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2564, + "id": 2618, "name": "isWhitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2454, - "src": "2140:13:20", + "referencedDeclaration": 2503, + "src": "2301:13:20", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2566, + "id": 2620, "indexExpression": { "argumentTypes": null, - "id": 2565, + "id": 2619, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2544, - "src": "2154:2:20", + "referencedDeclaration": 2597, + "src": "2315:2:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1705,11 +1815,29 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2140:17:20", + "src": "2301:17:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "546172676574206163636f756e74206973206e6f742077686974656c6973746564", + "id": 2621, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2320:35:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_9a154d7dadc01125e34b410c8bdd8fd2546fbbac90b22b0d92787a072cf6fc42", + "typeString": "literal_string \"Target account is not whitelisted\"" + }, + "value": "Target account is not whitelisted" } ], "expression": { @@ -1717,23 +1845,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_9a154d7dadc01125e34b410c8bdd8fd2546fbbac90b22b0d92787a072cf6fc42", + "typeString": "literal_string \"Target account is not whitelisted\"" } ], - "id": 2563, + "id": 2617, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "2132:7:20", + "referencedDeclaration": 2658, + "src": "2293:7:20", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 2567, + "id": 2622, "isConstant": false, "isLValue": false, "isPure": false, @@ -1741,15 +1873,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2132:26:20", + "src": "2293:63:20", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2568, + "id": 2623, "nodeType": "ExpressionStatement", - "src": "2132:26:20" + "src": "2293:63:20" }, { "expression": { @@ -1760,12 +1892,12 @@ "arguments": [ { "argumentTypes": null, - "id": 2572, + "id": 2627, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2544, - "src": "2210:2:20", + "referencedDeclaration": 2597, + "src": "2408:2:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1773,12 +1905,12 @@ }, { "argumentTypes": null, - "id": 2573, + "id": 2628, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2546, - "src": "2214:5:20", + "referencedDeclaration": 2599, + "src": "2412:5:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -1786,12 +1918,12 @@ }, { "argumentTypes": null, - "id": 2574, + "id": 2629, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2548, - "src": "2221:4:20", + "referencedDeclaration": 2601, + "src": "2419:4:20", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -1803,18 +1935,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2575, + "id": 2630, "name": "Enum", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 30, - "src": "2227:4:20", + "src": "2425:4:20", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_Enum_$30_$", "typeString": "type(contract Enum)" } }, - "id": 2576, + "id": 2631, "isConstant": false, "isLValue": false, "isPure": false, @@ -1822,13 +1954,13 @@ "memberName": "Operation", "nodeType": "MemberAccess", "referencedDeclaration": 29, - "src": "2227:14:20", + "src": "2425:14:20", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_Operation_$29_$", "typeString": "type(enum Enum.Operation)" } }, - "id": 2577, + "id": 2632, "isConstant": false, "isLValue": false, "isPure": true, @@ -1836,7 +1968,7 @@ "memberName": "Call", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2227:19:20", + "src": "2425:19:20", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -1864,32 +1996,32 @@ ], "expression": { "argumentTypes": null, - "id": 2570, + "id": 2625, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 717, - "src": "2176:7:20", + "referencedDeclaration": 727, + "src": "2374:7:20", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } }, - "id": 2571, + "id": 2626, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "execTransactionFromModule", "nodeType": "MemberAccess", - "referencedDeclaration": 927, - "src": "2176:33:20", + "referencedDeclaration": 945, + "src": "2374:33:20", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation) external returns (bool)" } }, - "id": 2578, + "id": 2633, "isConstant": false, "isLValue": false, "isPure": false, @@ -1897,11 +2029,29 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2176:71:20", + "src": "2374:71:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "436f756c64206e6f742065786563757465207472616e73616374696f6e", + "id": 2634, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2447:31:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_b0a2f29e31cc28eee068c27ff93342fb8d9840dcad25c6f669ce8154844930c4", + "typeString": "literal_string \"Could not execute transaction\"" + }, + "value": "Could not execute transaction" } ], "expression": { @@ -1909,23 +2059,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_b0a2f29e31cc28eee068c27ff93342fb8d9840dcad25c6f669ce8154844930c4", + "typeString": "literal_string \"Could not execute transaction\"" } ], - "id": 2569, + "id": 2624, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "2168:7:20", + "referencedDeclaration": 2658, + "src": "2366:7:20", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 2579, + "id": 2635, "isConstant": false, "isLValue": false, "isPure": false, @@ -1933,20 +2087,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2168:80:20", + "src": "2366:113:20", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2580, + "id": 2636, "nodeType": "ExpressionStatement", - "src": "2168:80:20" + "src": "2366:113:20" } ] }, "documentation": "@dev Returns if Safe transaction is to a whitelisted destination.\n @param to Whitelisted destination address.\n @param value Not checked.\n @param data Not checked.\n @return Returns if transaction can be executed.", - "id": 2582, + "id": 2638, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -1954,16 +2108,16 @@ "name": "executeWhitelisted", "nodeType": "FunctionDefinition", "parameters": { - "id": 2549, + "id": 2602, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2544, + "id": 2597, "name": "to", "nodeType": "VariableDeclaration", - "scope": 2582, - "src": "1892:10:20", + "scope": 2638, + "src": "2012:10:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1971,10 +2125,10 @@ "typeString": "address" }, "typeName": { - "id": 2543, + "id": 2596, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1892:7:20", + "src": "2012:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -1985,11 +2139,11 @@ }, { "constant": false, - "id": 2546, + "id": 2599, "name": "value", "nodeType": "VariableDeclaration", - "scope": 2582, - "src": "1904:13:20", + "scope": 2638, + "src": "2024:13:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -1997,10 +2151,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2545, + "id": 2598, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1904:7:20", + "src": "2024:7:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -2011,11 +2165,11 @@ }, { "constant": false, - "id": 2548, + "id": 2601, "name": "data", "nodeType": "VariableDeclaration", - "scope": 2582, - "src": "1919:10:20", + "scope": 2638, + "src": "2039:10:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2023,10 +2177,10 @@ "typeString": "bytes" }, "typeName": { - "id": 2547, + "id": 2600, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "1919:5:20", + "src": "2039:5:20", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -2036,20 +2190,20 @@ "visibility": "internal" } ], - "src": "1891:39:20" + "src": "2011:39:20" }, "payable": false, "returnParameters": { - "id": 2552, + "id": 2605, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2551, + "id": 2604, "name": "", "nodeType": "VariableDeclaration", - "scope": 2582, - "src": "1963:4:20", + "scope": 2638, + "src": "2083:4:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -2057,10 +2211,10 @@ "typeString": "bool" }, "typeName": { - "id": 2550, + "id": 2603, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "1963:4:20", + "src": "2083:4:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2070,33 +2224,33 @@ "visibility": "internal" } ], - "src": "1962:6:20" + "src": "2082:6:20" }, - "scope": 2583, - "src": "1864:391:20", + "scope": 2639, + "src": "1984:502:20", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 2584, - "src": "289:1968:20" + "scope": 2640, + "src": "289:2199:20" } ], - "src": "0:2258:20" + "src": "0:2489:20" }, "legacyAST": { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/modules/WhitelistModule.sol", "exportedSymbols": { "WhitelistModule": [ - 2583 + 2639 ] }, - "id": 2584, + "id": 2640, "nodeType": "SourceUnit", "nodes": [ { - "id": 2438, + "id": 2487, "literals": [ "solidity", "0.4", @@ -2108,9 +2262,9 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Enum.sol", "file": "../Enum.sol", - "id": 2439, + "id": 2488, "nodeType": "ImportDirective", - "scope": 2584, + "scope": 2640, "sourceUnit": 31, "src": "24:21:20", "symbolAliases": [], @@ -2119,10 +2273,10 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/Module.sol", "file": "../Module.sol", - "id": 2440, + "id": 2489, "nodeType": "ImportDirective", - "scope": 2584, - "sourceUnit": 751, + "scope": 2640, + "sourceUnit": 763, "src": "46:23:20", "symbolAliases": [], "unitAlias": "" @@ -2130,10 +2284,10 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/ModuleManager.sol", "file": "../ModuleManager.sol", - "id": 2441, + "id": 2490, "nodeType": "ImportDirective", - "scope": 2584, - "sourceUnit": 1101, + "scope": 2640, + "sourceUnit": 1119, "src": "70:30:20", "symbolAliases": [], "unitAlias": "" @@ -2141,10 +2295,10 @@ { "absolutePath": "/Users/apanizo/git/gnosis/safe-contracts/contracts/OwnerManager.sol", "file": "../OwnerManager.sol", - "id": 2442, + "id": 2491, "nodeType": "ImportDirective", - "scope": 2584, - "sourceUnit": 1473, + "scope": 2640, + "sourceUnit": 1505, "src": "101:29:20", "symbolAliases": [], "unitAlias": "" @@ -2155,45 +2309,45 @@ "arguments": null, "baseName": { "contractScope": null, - "id": 2443, + "id": 2492, "name": "Module", "nodeType": "UserDefinedTypeName", - "referencedDeclaration": 750, + "referencedDeclaration": 762, "src": "317:6:20", "typeDescriptions": { - "typeIdentifier": "t_contract$_Module_$750", + "typeIdentifier": "t_contract$_Module_$762", "typeString": "contract Module" } }, - "id": 2444, + "id": 2493, "nodeType": "InheritanceSpecifier", "src": "317:6:20" } ], "contractDependencies": [ - 652, - 750, - 1619 + 662, + 762, + 1654 ], "contractKind": "contract", "documentation": "@title Whitelist Module - Allows to execute transactions to whitelisted addresses without confirmations.\n @author Stefan George - ", "fullyImplemented": true, - "id": 2583, + "id": 2639, "linearizedBaseContracts": [ - 2583, - 750, - 652, - 1619 + 2639, + 762, + 662, + 1654 ], "name": "WhitelistModule", "nodeType": "ContractDefinition", "nodes": [ { "constant": true, - "id": 2447, + "id": 2496, "name": "NAME", "nodeType": "VariableDeclaration", - "scope": 2583, + "scope": 2639, "src": "331:48:20", "stateVariable": true, "storageLocation": "default", @@ -2202,7 +2356,7 @@ "typeString": "string" }, "typeName": { - "id": 2445, + "id": 2494, "name": "string", "nodeType": "ElementaryTypeName", "src": "331:6:20", @@ -2214,7 +2368,7 @@ "value": { "argumentTypes": null, "hexValue": "57686974656c697374204d6f64756c65", - "id": 2446, + "id": 2495, "isConstant": false, "isLValue": false, "isPure": true, @@ -2233,10 +2387,10 @@ }, { "constant": true, - "id": 2450, + "id": 2499, "name": "VERSION", "nodeType": "VariableDeclaration", - "scope": 2583, + "scope": 2639, "src": "385:40:20", "stateVariable": true, "storageLocation": "default", @@ -2245,7 +2399,7 @@ "typeString": "string" }, "typeName": { - "id": 2448, + "id": 2497, "name": "string", "nodeType": "ElementaryTypeName", "src": "385:6:20", @@ -2257,7 +2411,7 @@ "value": { "argumentTypes": null, "hexValue": "302e302e31", - "id": 2449, + "id": 2498, "isConstant": false, "isLValue": false, "isPure": true, @@ -2276,10 +2430,10 @@ }, { "constant": false, - "id": 2454, + "id": 2503, "name": "isWhitelisted", "nodeType": "VariableDeclaration", - "scope": 2583, + "scope": 2639, "src": "498:46:20", "stateVariable": true, "storageLocation": "default", @@ -2288,9 +2442,9 @@ "typeString": "mapping(address => bool)" }, "typeName": { - "id": 2453, + "id": 2502, "keyType": { - "id": 2451, + "id": 2500, "name": "address", "nodeType": "ElementaryTypeName", "src": "507:7:20", @@ -2306,7 +2460,7 @@ "typeString": "mapping(address => bool)" }, "valueType": { - "id": 2452, + "id": 2501, "name": "bool", "nodeType": "ElementaryTypeName", "src": "518:4:20", @@ -2321,9 +2475,9 @@ }, { "body": { - "id": 2494, + "id": 2544, "nodeType": "Block", - "src": "721:216:20", + "src": "721:244:20", "statements": [ { "expression": { @@ -2331,18 +2485,18 @@ "arguments": [], "expression": { "argumentTypes": [], - "id": 2460, + "id": 2509, "name": "setManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 749, + "referencedDeclaration": 761, "src": "731:10:20", "typeDescriptions": { "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$", "typeString": "function ()" } }, - "id": 2461, + "id": 2510, "isConstant": false, "isLValue": false, "isPure": false, @@ -2356,27 +2510,27 @@ "typeString": "tuple()" } }, - "id": 2462, + "id": 2511, "nodeType": "ExpressionStatement", "src": "731:12:20" }, { "body": { - "id": 2492, + "id": 2542, "nodeType": "Block", - "src": "799:132:20", + "src": "799:160:20", "statements": [ { "assignments": [ - 2475 + 2524 ], "declarations": [ { "constant": false, - "id": 2475, + "id": 2524, "name": "account", "nodeType": "VariableDeclaration", - "scope": 2495, + "scope": 2545, "src": "813:15:20", "stateVariable": false, "storageLocation": "default", @@ -2385,7 +2539,7 @@ "typeString": "address" }, "typeName": { - "id": 2474, + "id": 2523, "name": "address", "nodeType": "ElementaryTypeName", "src": "813:7:20", @@ -2398,30 +2552,30 @@ "visibility": "internal" } ], - "id": 2479, + "id": 2528, "initialValue": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2476, + "id": 2525, "name": "accounts", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2457, + "referencedDeclaration": 2506, "src": "831:8:20", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 2478, + "id": 2527, "indexExpression": { "argumentTypes": null, - "id": 2477, + "id": 2526, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2464, + "referencedDeclaration": 2513, "src": "840:1:20", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -2452,18 +2606,18 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 2483, + "id": 2532, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2481, + "id": 2530, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2475, + "referencedDeclaration": 2524, "src": "864:7:20", "typeDescriptions": { "typeIdentifier": "t_address", @@ -2475,7 +2629,7 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 2482, + "id": 2531, "isConstant": false, "isLValue": false, "isPure": true, @@ -2495,6 +2649,24 @@ "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "496e76616c6964206163636f756e742070726f7669646564", + "id": 2533, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "878:26:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_da3a197794c99763c55550690a7eddbab5a672fb560947793aaf405a2b5f9490", + "typeString": "literal_string \"Invalid account provided\"" + }, + "value": "Invalid account provided" } ], "expression": { @@ -2502,23 +2674,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_da3a197794c99763c55550690a7eddbab5a672fb560947793aaf405a2b5f9490", + "typeString": "literal_string \"Invalid account provided\"" } ], - "id": 2480, + "id": 2529, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, + "referencedDeclaration": 2658, "src": "856:7:20", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 2484, + "id": 2534, "isConstant": false, "isLValue": false, "isPure": false, @@ -2526,20 +2702,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "856:21:20", + "src": "856:49:20", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2485, + "id": 2535, "nodeType": "ExpressionStatement", - "src": "856:21:20" + "src": "856:49:20" }, { "expression": { "argumentTypes": null, - "id": 2490, + "id": 2540, "isConstant": false, "isLValue": false, "isPure": false, @@ -2548,26 +2724,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2486, + "id": 2536, "name": "isWhitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2454, - "src": "891:13:20", + "referencedDeclaration": 2503, + "src": "919:13:20", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2488, + "id": 2538, "indexExpression": { "argumentTypes": null, - "id": 2487, + "id": 2537, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2475, - "src": "905:7:20", + "referencedDeclaration": 2524, + "src": "933:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2578,7 +2754,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "891:22:20", + "src": "919:22:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2589,14 +2765,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 2489, + "id": 2539, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "916:4:20", + "src": "944:4:20", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -2604,15 +2780,15 @@ }, "value": "true" }, - "src": "891:29:20", + "src": "919:29:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2491, + "id": 2541, "nodeType": "ExpressionStatement", - "src": "891:29:20" + "src": "919:29:20" } ] }, @@ -2622,18 +2798,18 @@ "typeIdentifier": "t_uint256", "typeString": "uint256" }, - "id": 2470, + "id": 2519, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2467, + "id": 2516, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2464, + "referencedDeclaration": 2513, "src": "773:1:20", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -2646,18 +2822,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2468, + "id": 2517, "name": "accounts", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2457, + "referencedDeclaration": 2506, "src": "777:8:20", "typeDescriptions": { "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr", "typeString": "address[] memory" } }, - "id": 2469, + "id": 2518, "isConstant": false, "isLValue": false, "isPure": false, @@ -2677,18 +2853,18 @@ "typeString": "bool" } }, - "id": 2493, + "id": 2543, "initializationExpression": { "assignments": [ - 2464 + 2513 ], "declarations": [ { "constant": false, - "id": 2464, + "id": 2513, "name": "i", "nodeType": "VariableDeclaration", - "scope": 2495, + "scope": 2545, "src": "758:9:20", "stateVariable": false, "storageLocation": "default", @@ -2697,7 +2873,7 @@ "typeString": "uint256" }, "typeName": { - "id": 2463, + "id": 2512, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "758:7:20", @@ -2710,11 +2886,11 @@ "visibility": "internal" } ], - "id": 2466, + "id": 2515, "initialValue": { "argumentTypes": null, "hexValue": "30", - "id": 2465, + "id": 2514, "isConstant": false, "isLValue": false, "isPure": true, @@ -2735,7 +2911,7 @@ "loopExpression": { "expression": { "argumentTypes": null, - "id": 2472, + "id": 2521, "isConstant": false, "isLValue": false, "isPure": false, @@ -2746,11 +2922,11 @@ "src": "794:3:20", "subExpression": { "argumentTypes": null, - "id": 2471, + "id": 2520, "name": "i", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2464, + "referencedDeclaration": 2513, "src": "794:1:20", "typeDescriptions": { "typeIdentifier": "t_uint256", @@ -2762,17 +2938,17 @@ "typeString": "uint256" } }, - "id": 2473, + "id": 2522, "nodeType": "ExpressionStatement", "src": "794:3:20" }, "nodeType": "ForStatement", - "src": "753:178:20" + "src": "753:206:20" } ] }, "documentation": "@dev Setup function sets initial storage of contract.\n @param accounts List of whitelisted accounts.", - "id": 2495, + "id": 2545, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -2780,15 +2956,15 @@ "name": "setup", "nodeType": "FunctionDefinition", "parameters": { - "id": 2458, + "id": 2507, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2457, + "id": 2506, "name": "accounts", "nodeType": "VariableDeclaration", - "scope": 2495, + "scope": 2545, "src": "682:18:20", "stateVariable": false, "storageLocation": "default", @@ -2798,7 +2974,7 @@ }, "typeName": { "baseType": { - "id": 2455, + "id": 2504, "name": "address", "nodeType": "ElementaryTypeName", "src": "682:7:20", @@ -2807,7 +2983,7 @@ "typeString": "address" } }, - "id": 2456, + "id": 2505, "length": null, "nodeType": "ArrayTypeName", "src": "682:9:20", @@ -2824,22 +3000,22 @@ }, "payable": false, "returnParameters": { - "id": 2459, + "id": 2508, "nodeType": "ParameterList", "parameters": [], "src": "721:0:20" }, - "scope": 2583, - "src": "667:270:20", + "scope": 2639, + "src": "667:298:20", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2521, + "id": 2573, "nodeType": "Block", - "src": "1165:119:20", + "src": "1193:181:20", "statements": [ { "expression": { @@ -2851,19 +3027,19 @@ "typeIdentifier": "t_address", "typeString": "address" }, - "id": 2505, + "id": 2555, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftExpression": { "argumentTypes": null, - "id": 2503, + "id": 2553, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2497, - "src": "1183:7:20", + "referencedDeclaration": 2547, + "src": "1211:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2874,14 +3050,14 @@ "rightExpression": { "argumentTypes": null, "hexValue": "30", - "id": 2504, + "id": 2554, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", - "src": "1194:1:20", + "src": "1222:1:20", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_rational_0_by_1", @@ -2889,11 +3065,29 @@ }, "value": "0" }, - "src": "1183:12:20", + "src": "1211:12:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "496e76616c6964206163636f756e742070726f7669646564", + "id": 2556, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1225:26:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_da3a197794c99763c55550690a7eddbab5a672fb560947793aaf405a2b5f9490", + "typeString": "literal_string \"Invalid account provided\"" + }, + "value": "Invalid account provided" } ], "expression": { @@ -2901,23 +3095,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_da3a197794c99763c55550690a7eddbab5a672fb560947793aaf405a2b5f9490", + "typeString": "literal_string \"Invalid account provided\"" } ], - "id": 2502, + "id": 2552, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "1175:7:20", + "referencedDeclaration": 2658, + "src": "1203:7:20", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 2506, + "id": 2557, "isConstant": false, "isLValue": false, "isPure": false, @@ -2925,15 +3123,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1175:21:20", + "src": "1203:49:20", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2507, + "id": 2558, "nodeType": "ExpressionStatement", - "src": "1175:21:20" + "src": "1203:49:20" }, { "expression": { @@ -2941,7 +3139,7 @@ "arguments": [ { "argumentTypes": null, - "id": 2512, + "id": 2563, "isConstant": false, "isLValue": false, "isPure": false, @@ -2949,31 +3147,31 @@ "nodeType": "UnaryOperation", "operator": "!", "prefix": true, - "src": "1214:23:20", + "src": "1270:23:20", "subExpression": { "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2509, + "id": 2560, "name": "isWhitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2454, - "src": "1215:13:20", + "referencedDeclaration": 2503, + "src": "1271:13:20", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2511, + "id": 2562, "indexExpression": { "argumentTypes": null, - "id": 2510, + "id": 2561, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2497, - "src": "1229:7:20", + "referencedDeclaration": 2547, + "src": "1285:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -2984,7 +3182,7 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1215:22:20", + "src": "1271:22:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -2994,6 +3192,24 @@ "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "4163636f756e7420697320616c72656164792077686974656c6973746564", + "id": 2564, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1295:32:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_42f0c01c0b06bc5e652009543318e4fd67cfba114702c7f55fad1ff0c3c82ad8", + "typeString": "literal_string \"Account is already whitelisted\"" + }, + "value": "Account is already whitelisted" } ], "expression": { @@ -3001,23 +3217,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_42f0c01c0b06bc5e652009543318e4fd67cfba114702c7f55fad1ff0c3c82ad8", + "typeString": "literal_string \"Account is already whitelisted\"" } ], - "id": 2508, + "id": 2559, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "1206:7:20", + "referencedDeclaration": 2658, + "src": "1262:7:20", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 2513, + "id": 2565, "isConstant": false, "isLValue": false, "isPure": false, @@ -3025,20 +3245,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1206:32:20", + "src": "1262:66:20", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2514, + "id": 2566, "nodeType": "ExpressionStatement", - "src": "1206:32:20" + "src": "1262:66:20" }, { "expression": { "argumentTypes": null, - "id": 2519, + "id": 2571, "isConstant": false, "isLValue": false, "isPure": false, @@ -3047,26 +3267,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2515, + "id": 2567, "name": "isWhitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2454, - "src": "1248:13:20", + "referencedDeclaration": 2503, + "src": "1338:13:20", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2517, + "id": 2569, "indexExpression": { "argumentTypes": null, - "id": 2516, + "id": 2568, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2497, - "src": "1262:7:20", + "referencedDeclaration": 2547, + "src": "1352:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3077,7 +3297,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1248:22:20", + "src": "1338:22:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3088,14 +3308,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "74727565", - "id": 2518, + "id": 2570, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "1273:4:20", + "src": "1363:4:20", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -3103,57 +3323,57 @@ }, "value": "true" }, - "src": "1248:29:20", + "src": "1338:29:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2520, + "id": 2572, "nodeType": "ExpressionStatement", - "src": "1248:29:20" + "src": "1338:29:20" } ] }, "documentation": "@dev Allows to add destination to whitelist. This can only be done via a Safe transaction.\n @param account Destination address.", - "id": 2522, + "id": 2574, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 2500, + "id": 2550, "modifierName": { "argumentTypes": null, - "id": 2499, + "id": 2549, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 730, - "src": "1150:10:20", + "referencedDeclaration": 741, + "src": "1178:10:20", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1150:10:20" + "src": "1178:10:20" } ], "name": "addToWhitelist", "nodeType": "FunctionDefinition", "parameters": { - "id": 2498, + "id": 2548, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2497, + "id": 2547, "name": "account", "nodeType": "VariableDeclaration", - "scope": 2522, - "src": "1110:15:20", + "scope": 2574, + "src": "1138:15:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3161,10 +3381,10 @@ "typeString": "address" }, "typeName": { - "id": 2496, + "id": 2546, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1110:7:20", + "src": "1138:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3174,26 +3394,26 @@ "visibility": "internal" } ], - "src": "1109:17:20" + "src": "1137:17:20" }, "payable": false, "returnParameters": { - "id": 2501, + "id": 2551, "nodeType": "ParameterList", "parameters": [], - "src": "1165:0:20" + "src": "1193:0:20" }, - "scope": 2583, - "src": "1086:198:20", + "scope": 2639, + "src": "1114:260:20", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2541, + "id": 2594, "nodeType": "Block", - "src": "1522:88:20", + "src": "1612:118:20", "statements": [ { "expression": { @@ -3203,26 +3423,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2530, + "id": 2582, "name": "isWhitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2454, - "src": "1540:13:20", + "referencedDeclaration": 2503, + "src": "1630:13:20", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2532, + "id": 2584, "indexExpression": { "argumentTypes": null, - "id": 2531, + "id": 2583, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2524, - "src": "1554:7:20", + "referencedDeclaration": 2576, + "src": "1644:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3233,11 +3453,29 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "1540:22:20", + "src": "1630:22:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "4163636f756e74206973206e6f742077686974656c6973746564", + "id": 2585, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "1654:28:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_2f56605dd36b69a55672cdc762e8d3959c002a474a30a6774bba38bb65f718e1", + "typeString": "literal_string \"Account is not whitelisted\"" + }, + "value": "Account is not whitelisted" } ], "expression": { @@ -3245,23 +3483,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_2f56605dd36b69a55672cdc762e8d3959c002a474a30a6774bba38bb65f718e1", + "typeString": "literal_string \"Account is not whitelisted\"" } ], - "id": 2529, + "id": 2581, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "1532:7:20", + "referencedDeclaration": 2658, + "src": "1622:7:20", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 2533, + "id": 2586, "isConstant": false, "isLValue": false, "isPure": false, @@ -3269,20 +3511,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "1532:31:20", + "src": "1622:61:20", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2534, + "id": 2587, "nodeType": "ExpressionStatement", - "src": "1532:31:20" + "src": "1622:61:20" }, { "expression": { "argumentTypes": null, - "id": 2539, + "id": 2592, "isConstant": false, "isLValue": false, "isPure": false, @@ -3291,26 +3533,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2535, + "id": 2588, "name": "isWhitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2454, - "src": "1573:13:20", + "referencedDeclaration": 2503, + "src": "1693:13:20", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2537, + "id": 2590, "indexExpression": { "argumentTypes": null, - "id": 2536, + "id": 2589, "name": "account", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2524, - "src": "1587:7:20", + "referencedDeclaration": 2576, + "src": "1707:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3321,7 +3563,7 @@ "isPure": false, "lValueRequested": true, "nodeType": "IndexAccess", - "src": "1573:22:20", + "src": "1693:22:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -3332,14 +3574,14 @@ "rightHandSide": { "argumentTypes": null, "hexValue": "66616c7365", - "id": 2538, + "id": 2591, "isConstant": false, "isLValue": false, "isPure": true, "kind": "bool", "lValueRequested": false, "nodeType": "Literal", - "src": "1598:5:20", + "src": "1718:5:20", "subdenomination": null, "typeDescriptions": { "typeIdentifier": "t_bool", @@ -3347,57 +3589,57 @@ }, "value": "false" }, - "src": "1573:30:20", + "src": "1693:30:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } }, - "id": 2540, + "id": 2593, "nodeType": "ExpressionStatement", - "src": "1573:30:20" + "src": "1693:30:20" } ] }, "documentation": "@dev Allows to remove destination from whitelist. This can only be done via a Safe transaction.\n @param account Destination address.", - "id": 2542, + "id": 2595, "implemented": true, "isConstructor": false, "isDeclaredConst": false, "modifiers": [ { "arguments": null, - "id": 2527, + "id": 2579, "modifierName": { "argumentTypes": null, - "id": 2526, + "id": 2578, "name": "authorized", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 730, - "src": "1507:10:20", + "referencedDeclaration": 741, + "src": "1597:10:20", "typeDescriptions": { "typeIdentifier": "t_modifier$__$", "typeString": "modifier ()" } }, "nodeType": "ModifierInvocation", - "src": "1507:10:20" + "src": "1597:10:20" } ], "name": "removeFromWhitelist", "nodeType": "FunctionDefinition", "parameters": { - "id": 2525, + "id": 2577, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2524, + "id": 2576, "name": "account", "nodeType": "VariableDeclaration", - "scope": 2542, - "src": "1467:15:20", + "scope": 2595, + "src": "1557:15:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3405,10 +3647,10 @@ "typeString": "address" }, "typeName": { - "id": 2523, + "id": 2575, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1467:7:20", + "src": "1557:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3418,26 +3660,26 @@ "visibility": "internal" } ], - "src": "1466:17:20" + "src": "1556:17:20" }, "payable": false, "returnParameters": { - "id": 2528, + "id": 2580, "nodeType": "ParameterList", "parameters": [], - "src": "1522:0:20" + "src": "1612:0:20" }, - "scope": 2583, - "src": "1438:172:20", + "scope": 2639, + "src": "1528:202:20", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" }, { "body": { - "id": 2581, + "id": 2637, "nodeType": "Block", - "src": "1973:282:20", + "src": "2093:393:20", "statements": [ { "expression": { @@ -3450,18 +3692,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2558, + "id": 2611, "name": "msg", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2598, - "src": "2110:3:20", + "referencedDeclaration": 2654, + "src": "2230:3:20", "typeDescriptions": { "typeIdentifier": "t_magic_message", "typeString": "msg" } }, - "id": 2559, + "id": 2612, "isConstant": false, "isLValue": false, "isPure": false, @@ -3469,7 +3711,7 @@ "memberName": "sender", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2110:10:20", + "src": "2230:10:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3488,14 +3730,14 @@ "arguments": [ { "argumentTypes": null, - "id": 2555, + "id": 2608, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 717, - "src": "2093:7:20", + "referencedDeclaration": 727, + "src": "2213:7:20", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } } @@ -3503,22 +3745,22 @@ "expression": { "argumentTypes": [ { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } ], - "id": 2554, + "id": 2607, "name": "OwnerManager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 1472, - "src": "2080:12:20", + "referencedDeclaration": 1504, + "src": "2200:12:20", "typeDescriptions": { - "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1472_$", + "typeIdentifier": "t_type$_t_contract$_OwnerManager_$1504_$", "typeString": "type(contract OwnerManager)" } }, - "id": 2556, + "id": 2609, "isConstant": false, "isLValue": false, "isPure": false, @@ -3526,27 +3768,27 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2080:21:20", + "src": "2200:21:20", "typeDescriptions": { - "typeIdentifier": "t_contract$_OwnerManager_$1472", + "typeIdentifier": "t_contract$_OwnerManager_$1504", "typeString": "contract OwnerManager" } }, - "id": 2557, + "id": 2610, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "isOwner", "nodeType": "MemberAccess", - "referencedDeclaration": 1422, - "src": "2080:29:20", + "referencedDeclaration": 1454, + "src": "2200:29:20", "typeDescriptions": { "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$", "typeString": "function (address) view external returns (bool)" } }, - "id": 2560, + "id": 2613, "isConstant": false, "isLValue": false, "isPure": false, @@ -3554,11 +3796,29 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2080:41:20", + "src": "2200:41:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "4d6574686f642063616e206f6e6c792062652063616c6c656420627920616e206f776e6572", + "id": 2614, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2243:39:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_4df072353ff501a1071e1cc3e2eb3ee0ebb21a35321efe90c0960bf2f4356640", + "typeString": "literal_string \"Method can only be called by an owner\"" + }, + "value": "Method can only be called by an owner" } ], "expression": { @@ -3566,23 +3826,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_4df072353ff501a1071e1cc3e2eb3ee0ebb21a35321efe90c0960bf2f4356640", + "typeString": "literal_string \"Method can only be called by an owner\"" } ], - "id": 2553, + "id": 2606, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "2072:7:20", + "referencedDeclaration": 2658, + "src": "2192:7:20", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 2561, + "id": 2615, "isConstant": false, "isLValue": false, "isPure": false, @@ -3590,15 +3854,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2072:50:20", + "src": "2192:91:20", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2562, + "id": 2616, "nodeType": "ExpressionStatement", - "src": "2072:50:20" + "src": "2192:91:20" }, { "expression": { @@ -3608,26 +3872,26 @@ "argumentTypes": null, "baseExpression": { "argumentTypes": null, - "id": 2564, + "id": 2618, "name": "isWhitelisted", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2454, - "src": "2140:13:20", + "referencedDeclaration": 2503, + "src": "2301:13:20", "typeDescriptions": { "typeIdentifier": "t_mapping$_t_address_$_t_bool_$", "typeString": "mapping(address => bool)" } }, - "id": 2566, + "id": 2620, "indexExpression": { "argumentTypes": null, - "id": 2565, + "id": 2619, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2544, - "src": "2154:2:20", + "referencedDeclaration": 2597, + "src": "2315:2:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3638,11 +3902,29 @@ "isPure": false, "lValueRequested": false, "nodeType": "IndexAccess", - "src": "2140:17:20", + "src": "2301:17:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "546172676574206163636f756e74206973206e6f742077686974656c6973746564", + "id": 2621, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2320:35:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_9a154d7dadc01125e34b410c8bdd8fd2546fbbac90b22b0d92787a072cf6fc42", + "typeString": "literal_string \"Target account is not whitelisted\"" + }, + "value": "Target account is not whitelisted" } ], "expression": { @@ -3650,23 +3932,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_9a154d7dadc01125e34b410c8bdd8fd2546fbbac90b22b0d92787a072cf6fc42", + "typeString": "literal_string \"Target account is not whitelisted\"" } ], - "id": 2563, + "id": 2617, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "2132:7:20", + "referencedDeclaration": 2658, + "src": "2293:7:20", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 2567, + "id": 2622, "isConstant": false, "isLValue": false, "isPure": false, @@ -3674,15 +3960,15 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2132:26:20", + "src": "2293:63:20", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2568, + "id": 2623, "nodeType": "ExpressionStatement", - "src": "2132:26:20" + "src": "2293:63:20" }, { "expression": { @@ -3693,12 +3979,12 @@ "arguments": [ { "argumentTypes": null, - "id": 2572, + "id": 2627, "name": "to", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2544, - "src": "2210:2:20", + "referencedDeclaration": 2597, + "src": "2408:2:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3706,12 +3992,12 @@ }, { "argumentTypes": null, - "id": 2573, + "id": 2628, "name": "value", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2546, - "src": "2214:5:20", + "referencedDeclaration": 2599, + "src": "2412:5:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3719,12 +4005,12 @@ }, { "argumentTypes": null, - "id": 2574, + "id": 2629, "name": "data", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 2548, - "src": "2221:4:20", + "referencedDeclaration": 2601, + "src": "2419:4:20", "typeDescriptions": { "typeIdentifier": "t_bytes_memory_ptr", "typeString": "bytes memory" @@ -3736,18 +4022,18 @@ "argumentTypes": null, "expression": { "argumentTypes": null, - "id": 2575, + "id": 2630, "name": "Enum", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 30, - "src": "2227:4:20", + "src": "2425:4:20", "typeDescriptions": { "typeIdentifier": "t_type$_t_contract$_Enum_$30_$", "typeString": "type(contract Enum)" } }, - "id": 2576, + "id": 2631, "isConstant": false, "isLValue": false, "isPure": false, @@ -3755,13 +4041,13 @@ "memberName": "Operation", "nodeType": "MemberAccess", "referencedDeclaration": 29, - "src": "2227:14:20", + "src": "2425:14:20", "typeDescriptions": { "typeIdentifier": "t_type$_t_enum$_Operation_$29_$", "typeString": "type(enum Enum.Operation)" } }, - "id": 2577, + "id": 2632, "isConstant": false, "isLValue": false, "isPure": true, @@ -3769,7 +4055,7 @@ "memberName": "Call", "nodeType": "MemberAccess", "referencedDeclaration": null, - "src": "2227:19:20", + "src": "2425:19:20", "typeDescriptions": { "typeIdentifier": "t_enum$_Operation_$29", "typeString": "enum Enum.Operation" @@ -3797,32 +4083,32 @@ ], "expression": { "argumentTypes": null, - "id": 2570, + "id": 2625, "name": "manager", "nodeType": "Identifier", "overloadedDeclarations": [], - "referencedDeclaration": 717, - "src": "2176:7:20", + "referencedDeclaration": 727, + "src": "2374:7:20", "typeDescriptions": { - "typeIdentifier": "t_contract$_ModuleManager_$1100", + "typeIdentifier": "t_contract$_ModuleManager_$1118", "typeString": "contract ModuleManager" } }, - "id": 2571, + "id": 2626, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "memberName": "execTransactionFromModule", "nodeType": "MemberAccess", - "referencedDeclaration": 927, - "src": "2176:33:20", + "referencedDeclaration": 945, + "src": "2374:33:20", "typeDescriptions": { "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$_t_enum$_Operation_$29_$returns$_t_bool_$", "typeString": "function (address,uint256,bytes memory,enum Enum.Operation) external returns (bool)" } }, - "id": 2578, + "id": 2633, "isConstant": false, "isLValue": false, "isPure": false, @@ -3830,11 +4116,29 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2176:71:20", + "src": "2374:71:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" } + }, + { + "argumentTypes": null, + "hexValue": "436f756c64206e6f742065786563757465207472616e73616374696f6e", + "id": 2634, + "isConstant": false, + "isLValue": false, + "isPure": true, + "kind": "string", + "lValueRequested": false, + "nodeType": "Literal", + "src": "2447:31:20", + "subdenomination": null, + "typeDescriptions": { + "typeIdentifier": "t_stringliteral_b0a2f29e31cc28eee068c27ff93342fb8d9840dcad25c6f669ce8154844930c4", + "typeString": "literal_string \"Could not execute transaction\"" + }, + "value": "Could not execute transaction" } ], "expression": { @@ -3842,23 +4146,27 @@ { "typeIdentifier": "t_bool", "typeString": "bool" + }, + { + "typeIdentifier": "t_stringliteral_b0a2f29e31cc28eee068c27ff93342fb8d9840dcad25c6f669ce8154844930c4", + "typeString": "literal_string \"Could not execute transaction\"" } ], - "id": 2569, + "id": 2624, "name": "require", "nodeType": "Identifier", "overloadedDeclarations": [ - 2601, - 2602 + 2657, + 2658 ], - "referencedDeclaration": 2601, - "src": "2168:7:20", + "referencedDeclaration": 2658, + "src": "2366:7:20", "typeDescriptions": { - "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$", - "typeString": "function (bool) pure" + "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$", + "typeString": "function (bool,string memory) pure" } }, - "id": 2579, + "id": 2635, "isConstant": false, "isLValue": false, "isPure": false, @@ -3866,20 +4174,20 @@ "lValueRequested": false, "names": [], "nodeType": "FunctionCall", - "src": "2168:80:20", + "src": "2366:113:20", "typeDescriptions": { "typeIdentifier": "t_tuple$__$", "typeString": "tuple()" } }, - "id": 2580, + "id": 2636, "nodeType": "ExpressionStatement", - "src": "2168:80:20" + "src": "2366:113:20" } ] }, "documentation": "@dev Returns if Safe transaction is to a whitelisted destination.\n @param to Whitelisted destination address.\n @param value Not checked.\n @param data Not checked.\n @return Returns if transaction can be executed.", - "id": 2582, + "id": 2638, "implemented": true, "isConstructor": false, "isDeclaredConst": false, @@ -3887,16 +4195,16 @@ "name": "executeWhitelisted", "nodeType": "FunctionDefinition", "parameters": { - "id": 2549, + "id": 2602, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2544, + "id": 2597, "name": "to", "nodeType": "VariableDeclaration", - "scope": 2582, - "src": "1892:10:20", + "scope": 2638, + "src": "2012:10:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3904,10 +4212,10 @@ "typeString": "address" }, "typeName": { - "id": 2543, + "id": 2596, "name": "address", "nodeType": "ElementaryTypeName", - "src": "1892:7:20", + "src": "2012:7:20", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" @@ -3918,11 +4226,11 @@ }, { "constant": false, - "id": 2546, + "id": 2599, "name": "value", "nodeType": "VariableDeclaration", - "scope": 2582, - "src": "1904:13:20", + "scope": 2638, + "src": "2024:13:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3930,10 +4238,10 @@ "typeString": "uint256" }, "typeName": { - "id": 2545, + "id": 2598, "name": "uint256", "nodeType": "ElementaryTypeName", - "src": "1904:7:20", + "src": "2024:7:20", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" @@ -3944,11 +4252,11 @@ }, { "constant": false, - "id": 2548, + "id": 2601, "name": "data", "nodeType": "VariableDeclaration", - "scope": 2582, - "src": "1919:10:20", + "scope": 2638, + "src": "2039:10:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3956,10 +4264,10 @@ "typeString": "bytes" }, "typeName": { - "id": 2547, + "id": 2600, "name": "bytes", "nodeType": "ElementaryTypeName", - "src": "1919:5:20", + "src": "2039:5:20", "typeDescriptions": { "typeIdentifier": "t_bytes_storage_ptr", "typeString": "bytes" @@ -3969,20 +4277,20 @@ "visibility": "internal" } ], - "src": "1891:39:20" + "src": "2011:39:20" }, "payable": false, "returnParameters": { - "id": 2552, + "id": 2605, "nodeType": "ParameterList", "parameters": [ { "constant": false, - "id": 2551, + "id": 2604, "name": "", "nodeType": "VariableDeclaration", - "scope": 2582, - "src": "1963:4:20", + "scope": 2638, + "src": "2083:4:20", "stateVariable": false, "storageLocation": "default", "typeDescriptions": { @@ -3990,10 +4298,10 @@ "typeString": "bool" }, "typeName": { - "id": 2550, + "id": 2603, "name": "bool", "nodeType": "ElementaryTypeName", - "src": "1963:4:20", + "src": "2083:4:20", "typeDescriptions": { "typeIdentifier": "t_bool", "typeString": "bool" @@ -4003,20 +4311,20 @@ "visibility": "internal" } ], - "src": "1962:6:20" + "src": "2082:6:20" }, - "scope": 2583, - "src": "1864:391:20", + "scope": 2639, + "src": "1984:502:20", "stateMutability": "nonpayable", "superFunction": null, "visibility": "public" } ], - "scope": 2584, - "src": "289:1968:20" + "scope": 2640, + "src": "289:2199:20" } ], - "src": "0:2258:20" + "src": "0:2489:20" }, "compiler": { "name": "solc", @@ -4026,22 +4334,16 @@ "4": { "events": {}, "links": {}, - "address": "0xc9ecedc3f0aa6ec4dc9b6a46bace62480a607617", - "transactionHash": "0xe39c78298afab44ba85b809e6c6d8050d841d420a98a45615afc3c69a7733e05" - }, - "1527316019334": { - "events": {}, - "links": {}, - "address": "0xa0a04217f63fe5026bc20445af8ded0dffaccbc2", - "transactionHash": "0x10a442e0b3d7b44501719f123d9180db28c9206bfaf6163dfbfc2b987eb0e33f" + "address": "0x81e3453ff605a922a05d9a585c1b2275f7fdff55", + "transactionHash": "0xaa34677376db9fb4b3ff557b445167e4603ce321123da7fdeb5ab56e0897d547" }, "1527420696956": { "events": {}, "links": {}, - "address": "0x00d378002af4eccf8548c93aaf9d2b42d7d57239", - "transactionHash": "0x37296a82258f36484727e72673860ef6ed238e3754263014e3f3ff9a8997b64b" + "address": "0xb361f92c5e54c601ebcc5364dfb57403ed80c65f", + "transactionHash": "0xcb780345b12e792b1e68aeca7100e57f1c01cfc4f65cc1205f3e82c967d7c526" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-27T11:31:46.258Z" + "updatedAt": "2018-05-28T06:08:59.490Z" } \ No newline at end of file From a7076b9a1ac699bfc0a3e4851d3dce26085c191d Mon Sep 17 00:00:00 2001 From: apanizo Date: Tue, 29 May 2018 09:01:04 +0200 Subject: [PATCH 111/138] WA-238 Implementing mustBeInteger validator on threshold and num of owners --- src/components/forms/validator.js | 5 ++++- src/routes/open/components/SafeForm/Confirmations/index.jsx | 4 ++-- src/routes/open/components/SafeForm/DailyLimit/index.jsx | 4 ++-- src/routes/open/components/SafeForm/Owners/index.jsx | 4 ++-- .../safe/component/AddTransaction/MultisigForm/index.jsx | 4 ++-- src/routes/safe/component/Withdrawn/WithdrawnForm/index.jsx | 4 ++-- 6 files changed, 14 insertions(+), 11 deletions(-) diff --git a/src/components/forms/validator.js b/src/components/forms/validator.js index e5a54d22c6..ba609f24a5 100644 --- a/src/components/forms/validator.js +++ b/src/components/forms/validator.js @@ -5,7 +5,10 @@ type Field = boolean | string export const required = (value: Field) => (value ? undefined : 'Required') -export const mustBeNumber = (value: number) => +export const mustBeInteger = (value: string) => + (!Number.isInteger(Number(value)) || value.includes('.') ? 'Must be an integer' : undefined) + +export const mustBeFloat = (value: number) => (Number.isNaN(Number(value)) ? 'Must be a number' : undefined) export const greaterThan = (min: number) => (value: string) => { diff --git a/src/routes/open/components/SafeForm/Confirmations/index.jsx b/src/routes/open/components/SafeForm/Confirmations/index.jsx index 68f59761c6..b757faa615 100644 --- a/src/routes/open/components/SafeForm/Confirmations/index.jsx +++ b/src/routes/open/components/SafeForm/Confirmations/index.jsx @@ -2,7 +2,7 @@ import * as React from 'react' import { Field } from 'react-final-form' import TextField from '~/components/forms/TextField' -import { composeValidators, minValue, mustBeNumber, required } from '~/components/forms/validator' +import { composeValidators, minValue, mustBeInteger, required } from '~/components/forms/validator' import Block from '~/components/layout/Block' import { FIELD_CONFIRMATIONS } from '~/routes/open/components/fields' @@ -14,7 +14,7 @@ const Confirmations = () => ( type="text" validate={composeValidators( required, - mustBeNumber, + mustBeInteger, minValue(1), )} placeholder="Required confirmations*" diff --git a/src/routes/open/components/SafeForm/DailyLimit/index.jsx b/src/routes/open/components/SafeForm/DailyLimit/index.jsx index 34dbd15322..6c26b0353f 100644 --- a/src/routes/open/components/SafeForm/DailyLimit/index.jsx +++ b/src/routes/open/components/SafeForm/DailyLimit/index.jsx @@ -2,7 +2,7 @@ import * as React from 'react' import Field from '~/components/forms/Field' import TextField from '~/components/forms/TextField' -import { composeValidators, mustBeNumber, required, minValue } from '~/components/forms/validator' +import { composeValidators, mustBeFloat, required, minValue } from '~/components/forms/validator' import Block from '~/components/layout/Block' import { FIELD_DAILY_LIMIT } from '~/routes/open/components/fields' @@ -12,7 +12,7 @@ const DailyLimit = () => ( name={FIELD_DAILY_LIMIT} component={TextField} type="text" - validate={composeValidators(required, mustBeNumber, minValue(0))} + validate={composeValidators(required, mustBeFloat, minValue(0))} placeholder="Daily Limit*" text="Daily Limit" /> diff --git a/src/routes/open/components/SafeForm/Owners/index.jsx b/src/routes/open/components/SafeForm/Owners/index.jsx index 71928dcf29..fa51f1b3c4 100644 --- a/src/routes/open/components/SafeForm/Owners/index.jsx +++ b/src/routes/open/components/SafeForm/Owners/index.jsx @@ -6,7 +6,7 @@ import { composeValidators, minValue, maxValue, - mustBeNumber, + mustBeInteger, mustBeEthereumAddress, required, uniqueAddress, @@ -45,7 +45,7 @@ const Owners = (props: Props) => { name={FIELD_OWNERS} component={TextField} type="text" - validate={composeValidators(required, mustBeNumber, maxValue(MAX_NUMBER_OWNERS), minValue(1))} + validate={composeValidators(required, mustBeInteger, maxValue(MAX_NUMBER_OWNERS), minValue(1))} placeholder="Number of owners*" text="Number of owners" /> diff --git a/src/routes/safe/component/AddTransaction/MultisigForm/index.jsx b/src/routes/safe/component/AddTransaction/MultisigForm/index.jsx index f0393c33c0..20dcd46691 100644 --- a/src/routes/safe/component/AddTransaction/MultisigForm/index.jsx +++ b/src/routes/safe/component/AddTransaction/MultisigForm/index.jsx @@ -2,7 +2,7 @@ import * as React from 'react' import Field from '~/components/forms/Field' import TextField from '~/components/forms/TextField' -import { composeValidators, inLimit, mustBeNumber, required, greaterThan, mustBeEthereumAddress } from '~/components/forms/validator' +import { composeValidators, inLimit, mustBeFloat, required, greaterThan, mustBeEthereumAddress } from '~/components/forms/validator' import Block from '~/components/layout/Block' import Heading from '~/components/layout/Heading' import { TX_NAME_PARAM, TX_DESTINATION_PARAM, TX_VALUE_PARAM } from '~/routes/safe/component/AddTransaction/createTransactions' @@ -56,7 +56,7 @@ const WithdrawnForm = ({ balance }: Props) => () => ( name={TX_VALUE_PARAM} component={TextField} type="text" - validate={composeValidators(required, mustBeNumber, greaterThan(0), inLimit(balance, 0, 'available balance'))} + validate={composeValidators(required, mustBeFloat, greaterThan(0), inLimit(balance, 0, 'available balance'))} placeholder="Amount in ETH*" text="Amount in ETH" /> diff --git a/src/routes/safe/component/Withdrawn/WithdrawnForm/index.jsx b/src/routes/safe/component/Withdrawn/WithdrawnForm/index.jsx index df5dbf3992..12f0ae26b8 100644 --- a/src/routes/safe/component/Withdrawn/WithdrawnForm/index.jsx +++ b/src/routes/safe/component/Withdrawn/WithdrawnForm/index.jsx @@ -2,7 +2,7 @@ import * as React from 'react' import Field from '~/components/forms/Field' import TextField from '~/components/forms/TextField' -import { composeValidators, inLimit, mustBeNumber, required, greaterThan, mustBeEthereumAddress } from '~/components/forms/validator' +import { composeValidators, inLimit, mustBeFloat, required, greaterThan, mustBeEthereumAddress } from '~/components/forms/validator' import Block from '~/components/layout/Block' import Heading from '~/components/layout/Heading' import { DESTINATION_PARAM, VALUE_PARAM } from '~/routes/safe/component/Withdrawn/withdrawn' @@ -37,7 +37,7 @@ const WithdrawnForm = ({ limit, spentToday }: Props) => () => ( name={VALUE_PARAM} component={TextField} type="text" - validate={composeValidators(required, mustBeNumber, greaterThan(0), inLimit(limit, spentToday, 'daily limit'))} + validate={composeValidators(required, mustBeFloat, greaterThan(0), inLimit(limit, spentToday, 'daily limit'))} placeholder="Amount in ETH*" text="Amount in ETH" /> From cfdbc8a76115780b5a00cbf4b74f7aee212352b6 Mon Sep 17 00:00:00 2001 From: apanizo Date: Tue, 29 May 2018 09:31:48 +0200 Subject: [PATCH 112/138] WA-238 Fixing error of safes 1+ owners and threshold 1 when sending txs --- .../AddTransaction/createTransactions.js | 3 +- .../Transactions/Collapsed/Confirmations.jsx | 57 +++++++++---------- .../Transactions/Collapsed/index.jsx | 5 +- .../Transactions/Transaction/index.jsx | 1 + 4 files changed, 33 insertions(+), 33 deletions(-) diff --git a/src/routes/safe/component/AddTransaction/createTransactions.js b/src/routes/safe/component/AddTransaction/createTransactions.js index f13db071ae..aa7fb2980c 100644 --- a/src/routes/safe/component/AddTransaction/createTransactions.js +++ b/src/routes/safe/component/AddTransaction/createTransactions.js @@ -94,7 +94,8 @@ export const createTransaction = async ( const valueInWei = web3.toWei(txValue, 'ether') const CALL = 0 - if (hasOneOwner(safe)) { + const thresholdIsOne = safe.get('confirmations') === 1 + if (hasOneOwner(safe) || thresholdIsOne) { const txReceipt = await gnosisSafe.execTransactionIfApproved(txDestination, valueInWei, '0x', CALL, nonce, { from: user, gas: '5000000' }) const executedConfirmations: List = buildExecutedConfirmationFrom(safe.get('owners'), user) return storeTransaction(txName, nonce, txDestination, txValue, user, executedConfirmations, txReceipt.tx, safeAddress, safe.get('confirmations')) diff --git a/src/routes/safe/component/Transactions/Collapsed/Confirmations.jsx b/src/routes/safe/component/Transactions/Collapsed/Confirmations.jsx index 8822cffb98..0b79b3d776 100644 --- a/src/routes/safe/component/Transactions/Collapsed/Confirmations.jsx +++ b/src/routes/safe/component/Transactions/Collapsed/Confirmations.jsx @@ -21,6 +21,7 @@ const styles = { type Props = Open & WithStyles & { confirmations: List, + threshold: number, } const GnoConfirmation = ({ owner, status, hash }: ConfirmationProps) => { @@ -45,35 +46,31 @@ const GnoConfirmation = ({ owner, status, hash }: ConfirmationProps) => { } const Confirmaitons = openHoc(({ - open, toggle, confirmations, -}: Props) => { - const threshold = confirmations.count() - - return ( - - - - - - - - {open ? : } - - - - - {confirmations.map(confirmation => ( - - ))} - - - - ) -}) + open, toggle, confirmations, threshold, +}: Props) => ( + + + + + + + + {open ? : } + + + + + {confirmations.map(confirmation => ( + + ))} + + + +)) export default withStyles(styles)(Confirmaitons) diff --git a/src/routes/safe/component/Transactions/Collapsed/index.jsx b/src/routes/safe/component/Transactions/Collapsed/index.jsx index 21761f4793..b92a0635a2 100644 --- a/src/routes/safe/component/Transactions/Collapsed/index.jsx +++ b/src/routes/safe/component/Transactions/Collapsed/index.jsx @@ -15,6 +15,7 @@ type Props = { safeName: string, confirmations: ImmutableList, destination: string, + threshold: number, } const listStyle = { @@ -24,7 +25,7 @@ const listStyle = { class Collapsed extends React.PureComponent { render() { const { - confirmations, destination, safeName, + confirmations, destination, safeName, threshold, } = this.props return ( @@ -35,7 +36,7 @@ class Collapsed extends React.PureComponent { - + diff --git a/src/routes/safe/component/Transactions/Transaction/index.jsx b/src/routes/safe/component/Transactions/Transaction/index.jsx index be4a18d548..5d5650f454 100644 --- a/src/routes/safe/component/Transactions/Transaction/index.jsx +++ b/src/routes/safe/component/Transactions/Transaction/index.jsx @@ -82,6 +82,7 @@ class GnoTransaction extends React.PureComponent { safeName={safeName} confirmations={transaction.get('confirmations')} destination={transaction.get('destination')} + threshold={transaction.get('threshold')} /> } From 37c4076d00fec69f99c7951d65de77a7bd0b412c Mon Sep 17 00:00:00 2001 From: apanizo Date: Tue, 29 May 2018 09:33:36 +0200 Subject: [PATCH 113/138] WA-238 Updating smart contracts --- safe-contracts/build/contracts/CreateAndAddModules.json | 6 +++--- safe-contracts/build/contracts/DailyLimitModule.json | 6 +++--- .../build/contracts/GnosisSafePersonalEdition.json | 6 +++--- safe-contracts/build/contracts/GnosisSafeTeamEdition.json | 6 +++--- safe-contracts/build/contracts/Migrations.json | 6 +++--- safe-contracts/build/contracts/MultiSend.json | 6 +++--- safe-contracts/build/contracts/ProxyFactory.json | 6 +++--- safe-contracts/build/contracts/SocialRecoveryModule.json | 6 +++--- safe-contracts/build/contracts/StateChannelModule.json | 6 +++--- safe-contracts/build/contracts/WhitelistModule.json | 6 +++--- 10 files changed, 30 insertions(+), 30 deletions(-) diff --git a/safe-contracts/build/contracts/CreateAndAddModules.json b/safe-contracts/build/contracts/CreateAndAddModules.json index 864dd5f32b..ba596bafd7 100644 --- a/safe-contracts/build/contracts/CreateAndAddModules.json +++ b/safe-contracts/build/contracts/CreateAndAddModules.json @@ -1262,10 +1262,10 @@ "1527420696956": { "events": {}, "links": {}, - "address": "0x6b95b8c9f47aed9b889c543cec1f0b36cba22b95", - "transactionHash": "0x43e2d4d7da24019e4bcdd3c8e6a4a633566d5c2a7519d87f20ba1fc39b5c748c" + "address": "0x251be274c3a4580fc02223ee33edfa9a2dc386e5", + "transactionHash": "0x7e0d20efecc34a31abf9e22cedf9e709811549a444d77d4889739930ad68ffb3" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-28T06:08:59.481Z" + "updatedAt": "2018-05-28T13:58:28.822Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/DailyLimitModule.json b/safe-contracts/build/contracts/DailyLimitModule.json index d0fd032463..7d5a69add2 100644 --- a/safe-contracts/build/contracts/DailyLimitModule.json +++ b/safe-contracts/build/contracts/DailyLimitModule.json @@ -6685,10 +6685,10 @@ "1527420696956": { "events": {}, "links": {}, - "address": "0x557498e7ad8193f837dd25e1c1a056282004314a", - "transactionHash": "0x609ccb6f82d0ea07fe6a3dbe55f81e0b5bf70b08b12a64a681bb2667c0da7713" + "address": "0x904a781310cc19b414bafa5499628cd10173cbad", + "transactionHash": "0x2ec83a0174a651dec98e783aa4e23d0b97e8487f788329f82789da4d5067c614" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-28T06:08:59.478Z" + "updatedAt": "2018-05-28T13:58:28.821Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/GnosisSafePersonalEdition.json b/safe-contracts/build/contracts/GnosisSafePersonalEdition.json index 60a03dae2c..4f153f1201 100644 --- a/safe-contracts/build/contracts/GnosisSafePersonalEdition.json +++ b/safe-contracts/build/contracts/GnosisSafePersonalEdition.json @@ -9850,10 +9850,10 @@ "1527420696956": { "events": {}, "links": {}, - "address": "0x58ae455dab5137699c13bc2cf9637714c2172cb6", - "transactionHash": "0xfda1becb511b1d4beeb0f6f7a9d1b95aad7ee26b0d43dfbfb93e244853299a6c" + "address": "0x5aba3ebfac41cb9be55a7ab67b506c960982e427", + "transactionHash": "0x370c8b71ac770f90d44d7bc1f447930a01806b3d8d7b218b21e4020865c45321" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-28T06:08:59.465Z" + "updatedAt": "2018-05-28T13:58:28.830Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/GnosisSafeTeamEdition.json b/safe-contracts/build/contracts/GnosisSafeTeamEdition.json index 7cffce252a..5332bcd2d5 100644 --- a/safe-contracts/build/contracts/GnosisSafeTeamEdition.json +++ b/safe-contracts/build/contracts/GnosisSafeTeamEdition.json @@ -6862,10 +6862,10 @@ "1527420696956": { "events": {}, "links": {}, - "address": "0x951aad4e4620ce64d8c072f551fcaed12425fe85", - "transactionHash": "0x1817ac338c1a78b56552121e12b7bc3e6968e8d9fdfa73c48dd482bfa1cc2827" + "address": "0xb25140d7a0383c103745ce78d394f13ba4cf05ce", + "transactionHash": "0x6443dda4014bb6968582b264cb829cade880976d4c08e3f3c038cbc7d180f619" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-28T06:08:59.455Z" + "updatedAt": "2018-05-28T13:58:28.817Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/Migrations.json b/safe-contracts/build/contracts/Migrations.json index f182f637da..201d10442e 100644 --- a/safe-contracts/build/contracts/Migrations.json +++ b/safe-contracts/build/contracts/Migrations.json @@ -1384,10 +1384,10 @@ "1527420696956": { "events": {}, "links": {}, - "address": "0xf73d9d696980438e73abe252b508f2db3ad4c72b", - "transactionHash": "0x91576b3419f784105bdd4f493f68d2cc6f57975bd21641a7433eb6e705180b3b" + "address": "0x3058a32c81f9e74ace6fa808b1906af0252c7638", + "transactionHash": "0x025b6461e9bfe4546ffada7cbf308b8eb4c12287d93fd6079297fb9c847de4df" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-28T06:08:59.489Z" + "updatedAt": "2018-05-28T13:58:28.833Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/MultiSend.json b/safe-contracts/build/contracts/MultiSend.json index 6dae71099e..e47d2fe301 100644 --- a/safe-contracts/build/contracts/MultiSend.json +++ b/safe-contracts/build/contracts/MultiSend.json @@ -346,10 +346,10 @@ "1527420696956": { "events": {}, "links": {}, - "address": "0xdcf4ea4891d890a882fbeb6bab32192bac5b54e7", - "transactionHash": "0x172dfa14dab8d0f5c74e8a33b1bcecd25b4dd2a8a71a9e361889a5944d4c5b86" + "address": "0xe423b2291101fb206218ce4eeb03150e94446086", + "transactionHash": "0xa78e4749df5af5dff57145c85a9c9ca882d3b61e6125da675388fdda421622a2" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-28T06:08:59.482Z" + "updatedAt": "2018-05-28T13:58:28.823Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/ProxyFactory.json b/safe-contracts/build/contracts/ProxyFactory.json index ac92cb35f0..f736d28350 100644 --- a/safe-contracts/build/contracts/ProxyFactory.json +++ b/safe-contracts/build/contracts/ProxyFactory.json @@ -997,10 +997,10 @@ "1527420696956": { "events": {}, "links": {}, - "address": "0xac9c7e3390e950803f64d89033b844a248921cb9", - "transactionHash": "0x9e8ad0a8a820c5873b5bd340b74a0bc1c13f39929c67fba109070c785feb5661" + "address": "0x1f7aea763a0714a857aa537a630aa9c1489a9e8d", + "transactionHash": "0xe6856fb57fd2c5da970b640fe9a5f8ee38444b5dbc381bb11bef2bb9cb80d648" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-28T06:08:59.451Z" + "updatedAt": "2018-05-28T13:58:28.811Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/SocialRecoveryModule.json b/safe-contracts/build/contracts/SocialRecoveryModule.json index 3f0dcaa697..2fa5946a35 100644 --- a/safe-contracts/build/contracts/SocialRecoveryModule.json +++ b/safe-contracts/build/contracts/SocialRecoveryModule.json @@ -7296,10 +7296,10 @@ "1527420696956": { "events": {}, "links": {}, - "address": "0x4a5d199c1ab0fbd9050ab73c9ba76ae8917b7034", - "transactionHash": "0xe3892577f4aaae9af20ac6bab117e9f6459576dda208c8290ab8fb55c23d0b99" + "address": "0xaba91d2c011e7cc4e8a7b89c7731fc355f5733f4", + "transactionHash": "0x274449b108fc18df74c77e6dcd670fa9c486c1dd6ad7aece13cbedea6a77f75d" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-28T06:08:59.486Z" + "updatedAt": "2018-05-28T13:58:28.837Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/StateChannelModule.json b/safe-contracts/build/contracts/StateChannelModule.json index 8e6ae6677a..5e3d6992db 100644 --- a/safe-contracts/build/contracts/StateChannelModule.json +++ b/safe-contracts/build/contracts/StateChannelModule.json @@ -5867,10 +5867,10 @@ "1527420696956": { "events": {}, "links": {}, - "address": "0x36548eaaea06b7d2c55d596cc9ba1ecd4867e97c", - "transactionHash": "0xad5ee4c64c0071c994cfd5dfd5158880ef6449ca7dd8fde4e8c262501758aa4c" + "address": "0x54385cc32f3e1cf1167a00d1031713005b58810d", + "transactionHash": "0x5f41f6fd32694378659292b40446fc88ab574830bb99b43380355fd9b2454ca4" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-28T06:08:59.474Z" + "updatedAt": "2018-05-28T13:58:28.813Z" } \ No newline at end of file diff --git a/safe-contracts/build/contracts/WhitelistModule.json b/safe-contracts/build/contracts/WhitelistModule.json index e852e85bc2..60fc9c8b73 100644 --- a/safe-contracts/build/contracts/WhitelistModule.json +++ b/safe-contracts/build/contracts/WhitelistModule.json @@ -4340,10 +4340,10 @@ "1527420696956": { "events": {}, "links": {}, - "address": "0xb361f92c5e54c601ebcc5364dfb57403ed80c65f", - "transactionHash": "0xcb780345b12e792b1e68aeca7100e57f1c01cfc4f65cc1205f3e82c967d7c526" + "address": "0x68493ac3f7b340768f44d3924cbf6f303a104107", + "transactionHash": "0x45669293d5726d8b49af10473522b1c3d6232f5cbded6b626e24d366214501c8" } }, "schemaVersion": "2.0.0", - "updatedAt": "2018-05-28T06:08:59.490Z" + "updatedAt": "2018-05-28T13:58:28.834Z" } \ No newline at end of file From 649243c0d38391c2e042549c9f5873af080bee61 Mon Sep 17 00:00:00 2001 From: apanizo Date: Wed, 30 May 2018 09:29:22 +0200 Subject: [PATCH 114/138] WA-238 Fixing problem increasing threshold in UI Transaction's view --- src/routes/safe/component/Transactions/processTransactions.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/routes/safe/component/Transactions/processTransactions.js b/src/routes/safe/component/Transactions/processTransactions.js index b84ebb538b..f8a611dc74 100644 --- a/src/routes/safe/component/Transactions/processTransactions.js +++ b/src/routes/safe/component/Transactions/processTransactions.js @@ -125,6 +125,6 @@ export const processTransaction = async ( executedConfirmations, txReceipt.tx, safeAddress, - threshold + 1, + threshold, ) } From 557a2e17af4985597863b9ea5ec78f5322c2c9cf Mon Sep 17 00:00:00 2001 From: apanizo Date: Wed, 30 May 2018 09:36:28 +0200 Subject: [PATCH 115/138] WA-238 Not allowing user who has confirmed tx do it again --- .../Transactions/Transaction/index.jsx | 17 +++++++++++++++-- .../Transactions/Transaction/selector.js | 3 +++ 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/routes/safe/component/Transactions/Transaction/index.jsx b/src/routes/safe/component/Transactions/Transaction/index.jsx index 5d5650f454..7ee4883384 100644 --- a/src/routes/safe/component/Transactions/Transaction/index.jsx +++ b/src/routes/safe/component/Transactions/Transaction/index.jsx @@ -1,5 +1,6 @@ // @flow import * as React from 'react' +import { List } from 'immutable' import { connect } from 'react-redux' import openHoc, { type Open } from '~/components/hoc/OpenHoc' import ExpandLess from 'material-ui-icons/ExpandLess' @@ -16,6 +17,8 @@ import Collapsed from '~/routes/safe/component/Transactions/Collapsed' import { type Transaction } from '~/routes/safe/store/model/transaction' import Hairline from '~/components/layout/Hairline/index' import Button from '~/components/layout/Button' +import { sameAddress } from '~/wallets/ethAddresses' +import { type Confirmation } from '~/routes/safe/store/model/confirmation' import selector, { type SelectorProps } from './selector' type Props = Open & SelectorProps & { @@ -29,13 +32,17 @@ export const PROCESS_TXS = 'PROCESS TRANSACTION' class GnoTransaction extends React.PureComponent { onProccesClick = () => this.props.onProcessTx(this.props.transaction, this.props.confirmed) + hasConfirmed = (userAddress: string, confirmations: List): boolean => + confirmations.filter((conf: Confirmation) => sameAddress(userAddress, conf.get('owner').get('address')) && conf.get('status')).count() > 0 + render() { const { - open, toggle, transaction, confirmed, safeName, + open, toggle, transaction, confirmed, safeName, userAddress, } = this.props const txHash = transaction.get('tx') const confirmationText = txHash ? 'Already executed' : `${confirmed} of the ${transaction.get('threshold')} confirmations needed` + const userConfirmed = this.hasConfirmed(userAddress, transaction.get('confirmations')) return ( @@ -66,7 +73,13 @@ class GnoTransaction extends React.PureComponent { } - { !txHash && + { !txHash && userConfirmed && + + + + + } + { !txHash && !userConfirmed &&